# byte-ui > Reusable UI component patterns for Byte Integration Hub. Use when building new UI components, views, or layouts. Provides Card, Badge, Button, Input, Modal, EmptyState, StatusIndicator, ProgressBar, Spinner, SplitView, SidebarLayout, and FilterBar patterns matching Byte's cyan/teal design system. - Author: kristopher-sdk - Repository: kristopher-sdk/Byte_Integration_Hub - Version: 20251227085304 - Stars: 0 - Forks: 0 - Last Updated: 2026-02-07 - Source: https://github.com/kristopher-sdk/Byte_Integration_Hub - Web: https://mule.run/skillshub/@@kristopher-sdk/Byte_Integration_Hub~byte-ui:20251227085304 --- --- name: byte-ui description: Reusable UI component patterns for Byte Integration Hub. Use when building new UI components, views, or layouts. Provides Card, Badge, Button, Input, Modal, EmptyState, StatusIndicator, ProgressBar, Spinner, SplitView, SidebarLayout, and FilterBar patterns matching Byte's cyan/teal design system. --- # Byte UI Components Provides reusable UI component patterns that match Byte's design system. ## Core Component Patterns ```jsx // Card Component const Card = ({ children, className = '' }) => (
{children}
); // Badge Component const Badge = ({ children, color = 'cyan' }) => { const colors = { cyan: 'bg-cyan-500/20 text-cyan-400 border-cyan-500/30', teal: 'bg-teal-500/20 text-teal-400 border-teal-500/30', indigo: 'bg-indigo-500/20 text-indigo-400 border-indigo-500/30', orange: 'bg-orange-500/20 text-orange-400 border-orange-500/30', red: 'bg-red-500/20 text-red-400 border-red-500/30', }; return ( {children} ); }; // Button Component const Button = ({ children, variant = 'primary', size = 'md', ...props }) => { const variants = { primary: 'bg-cyan-500 hover:bg-cyan-400 text-slate-900 font-medium', secondary: 'bg-slate-800 hover:bg-slate-700 text-white', ghost: 'hover:bg-slate-800 text-slate-400 hover:text-white', danger: 'bg-red-500/20 hover:bg-red-500/30 text-red-400', }; const sizes = { sm: 'px-3 py-1.5 text-sm', md: 'px-4 py-2 text-sm', lg: 'px-6 py-3 text-base', }; return ( ); }; // Input Component const Input = ({ icon: Icon, ...props }) => (
{Icon && }
); // Status Indicator const StatusIndicator = ({ status }) => { const colors = { online: 'bg-teal-400', running: 'bg-cyan-400 animate-pulse', idle: 'bg-slate-500', error: 'bg-red-400', }; return
; }; // Progress Bar const ProgressBar = ({ value, color = 'cyan' }) => (
); // Modal/Overlay const Modal = ({ isOpen, onClose, title, children }) => { if (!isOpen) return null; return ( <>

{title}

{children}
); }; // Empty State const EmptyState = ({ icon: Icon, title, description, action }) => (

{title}

{description}

{action}
); // Loading Spinner const Spinner = ({ size = 'md' }) => { const sizes = { sm: 'w-4 h-4', md: 'w-6 h-6', lg: 'w-8 h-8' }; return ; }; ``` ## Layout Patterns ```jsx // Split View (used in Prototype) const SplitView = ({ left, right, ratio = 50 }) => (
{left}
{right}
); // Sidebar Layout (used in Agents) const SidebarLayout = ({ sidebar, main, sidebarWidth = 384 }) => (
{sidebar}
{main}
); // Filter Bar const FilterBar = ({ filters, active, onChange }) => (
{filters.map(filter => ( ))}
); ``` ## Color System ```javascript const BYTE_COLORS = { // Primary cyan: { 400: '#22d3ee', 500: '#06b6d4' }, teal: { 400: '#2dd4bf', 500: '#14b8a6' }, // Accent indigo: { 400: '#818cf8', 500: '#6366f1' }, // Background slate: { 700: '#334155', 800: '#1e293b', 900: '#0f172a', 950: '#020617' }, // Status success: 'teal-400', warning: 'orange-400', error: 'red-400', info: 'cyan-400' }; ``` ## Instructions When building UI: 1. Use existing component patterns - don't reinvent 2. Maintain consistent spacing (p-4, p-6, gap-3, gap-4) 3. Use slate-800/30 for card backgrounds, slate-900/30 for surfaces 4. Always include hover states and transitions 5. Use backdrop-blur-xl for overlays 6. Icons should be 4-5 px for inline, 8 px for standalone 7. Test responsive behavior - use hidden lg:block for sidebars