UNPKG

@anthonybir/birhaus-navigation

Version:

BIRHAUS Navigation Components - FourThreeOneNav implementing 4-3-1 cognitive rule

1 lines 34.3 kB
{"version":3,"sources":["../src/components/FourThreeOneNav.tsx"],"names":["cn","classes","BirhausButton","children","variant","size","disabled","loading","onClick","className","baseClasses","variantClasses","sizeClasses","jsxs","jsx","BirhausBadge","FourThreeOneNav","navigationItems","contextualActions","primaryAction","logo","logoHref","onLogoClick","searchPlaceholder","onSearchClick","showSearch","showCommandPalette","onCommandPaletteToggle","commandPaletteShortcut","mobileBreakpoint","collapsible","menuLabel","closeMenuLabel","searchLabel","commandPaletteLabel","overflowBehavior","overflowLabel","isMobileMenuOpen","setIsMobileMenuOpen","useState","activeSubmenu","setActiveSubmenu","useEffect","visibleNavItems","overflowNavItems","hasOverflow","visibleContextualActions","bp","handleNavItemClick","item","handleKeyDown","ChevronDown","subitem","Search","Command","action","X","Menu","useFourThreeOneNav","activeItem","setActiveItem","itemId","prev"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client'\n\nimport { useState, ReactNode, useEffect } from 'react'\nimport { ChevronDown, Menu, X, Search, Command } from 'lucide-react'\n\n/**\n * BIRHAUS FourThreeOneNav Component\n * \n * Implements BIRHAUS principle #1: \"Form serves flow\" with 4-3-1 cognitive rule:\n * - Maximum 4 primary navigation items (Miller's Law: 7±2, optimized for 4)\n * - Maximum 3 contextual actions per view\n * - 1 primary action (clearly highlighted)\n * \n * Features:\n * - Spanish-first internationalization\n * - Mobile-first responsive design\n * - Progressive disclosure for overflow items\n * - WCAG AA+ accessibility compliance\n * - Command palette integration (⌘K)\n */\n\n// BIRHAUS: Utility function (replaces @/lib/utils cn)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ')\n}\n\nexport interface NavigationItem {\n id: string\n label: string\n labelEn?: string // Optional English translation\n icon?: ReactNode\n href?: string\n onClick?: () => void\n active?: boolean\n disabled?: boolean\n badge?: string | number // Notification count/label\n submenu?: NavigationItem[]\n}\n\nexport interface ContextualAction {\n id: string\n label: string\n labelEn?: string\n icon?: ReactNode\n onClick: () => void\n variant?: 'default' | 'secondary' | 'destructive'\n disabled?: boolean\n loading?: boolean\n}\n\nexport interface PrimaryAction {\n label: string\n labelEn?: string\n icon?: ReactNode\n onClick: () => void\n disabled?: boolean\n loading?: boolean\n}\n\nexport interface FourThreeOneNavProps {\n // BIRHAUS: Maximum 4 navigation items\n navigationItems: NavigationItem[]\n \n // BIRHAUS: Maximum 3 contextual actions \n contextualActions?: ContextualAction[]\n \n // BIRHAUS: 1 primary action\n primaryAction?: PrimaryAction\n \n // Logo/Brand\n logo?: ReactNode\n logoHref?: string\n onLogoClick?: () => void\n \n // Search integration\n searchPlaceholder?: string\n onSearchClick?: () => void\n showSearch?: boolean\n \n // Command palette\n showCommandPalette?: boolean\n onCommandPaletteToggle?: () => void\n commandPaletteShortcut?: string\n \n // Mobile behavior\n mobileBreakpoint?: 'sm' | 'md' | 'lg'\n collapsible?: boolean\n \n // Spanish-first labels\n menuLabel?: string\n closeMenuLabel?: string\n searchLabel?: string\n commandPaletteLabel?: string\n \n // Styling\n className?: string\n variant?: 'default' | 'minimal' | 'elevated'\n \n // Overflow behavior (when > 4 nav items)\n overflowBehavior?: 'hide' | 'collapse' | 'scroll'\n overflowLabel?: string\n}\n\n// BIRHAUS: Self-contained Button component\nfunction BirhausButton({\n children,\n variant = 'default',\n size = 'default',\n disabled = false,\n loading = false,\n onClick,\n className = ''\n}: {\n children: ReactNode\n variant?: 'default' | 'secondary' | 'destructive' | 'ghost' | 'primary'\n size?: 'sm' | 'default' | 'lg'\n disabled?: boolean\n loading?: boolean\n onClick?: () => void\n className?: string\n}) {\n const baseClasses = \"inline-flex items-center justify-center font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\"\n \n const variantClasses = {\n default: \"bg-white border border-gray-300 text-gray-900 hover:bg-gray-50 focus-visible:ring-blue-500\",\n secondary: \"bg-gray-100 text-gray-900 hover:bg-gray-200 focus-visible:ring-gray-500\",\n destructive: \"bg-red-600 text-white hover:bg-red-700 focus-visible:ring-red-500\",\n ghost: \"text-gray-600 hover:text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-500\",\n primary: \"bg-blue-600 text-white hover:bg-blue-700 focus-visible:ring-blue-500\"\n }\n \n const sizeClasses = {\n sm: \"h-8 px-3 text-sm rounded-md\",\n default: \"h-10 px-4 py-2 text-sm rounded-md\", \n lg: \"h-12 px-6 text-base rounded-lg\"\n }\n \n return (\n <button\n onClick={onClick}\n disabled={disabled || loading}\n className={cn(baseClasses, variantClasses[variant], sizeClasses[size], className)}\n >\n {loading ? (\n <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-current mr-2\"></div>\n ) : null}\n {children}\n </button>\n )\n}\n\n// BIRHAUS: Self-contained Badge component\nfunction BirhausBadge({\n children,\n variant = 'default',\n className = ''\n}: {\n children: ReactNode\n variant?: 'default' | 'secondary' | 'destructive'\n className?: string\n}) {\n const baseClasses = \"inline-flex items-center rounded-full px-2 py-1 text-xs font-medium\"\n \n const variantClasses = {\n default: \"bg-blue-100 text-blue-800\",\n secondary: \"bg-gray-100 text-gray-800\",\n destructive: \"bg-red-100 text-red-800\"\n }\n \n return (\n <span className={cn(baseClasses, variantClasses[variant], className)}>\n {children}\n </span>\n )\n}\n\nexport function FourThreeOneNav({\n navigationItems,\n contextualActions = [],\n primaryAction,\n logo,\n logoHref,\n onLogoClick,\n searchPlaceholder = 'Buscar...',\n onSearchClick,\n showSearch = true,\n showCommandPalette = true,\n onCommandPaletteToggle,\n commandPaletteShortcut = '⌘K',\n mobileBreakpoint = 'md',\n collapsible = true,\n menuLabel = 'Menú',\n closeMenuLabel = 'Cerrar menú',\n searchLabel = 'Buscar',\n commandPaletteLabel = 'Abrir paleta de comandos',\n className = '',\n variant = 'default',\n overflowBehavior = 'collapse',\n overflowLabel = 'Más opciones'\n}: FourThreeOneNavProps) {\n \n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)\n const [activeSubmenu, setActiveSubmenu] = useState<string | null>(null)\n \n // BIRHAUS: Enforce 4-3-1 rule with warnings\n useEffect(() => {\n if (navigationItems.length > 4) {\n console.warn(\n `BIRHAUS 4-3-1 Rule Violation: Navigation has ${navigationItems.length} items (max 4). ` +\n `Consider using overflowBehavior to handle excess items.`\n )\n }\n \n if (contextualActions.length > 3) {\n console.warn(\n `BIRHAUS 4-3-1 Rule Violation: ${contextualActions.length} contextual actions (max 3). ` +\n `Reduce cognitive load by consolidating actions.`\n )\n }\n }, [navigationItems.length, contextualActions.length])\n \n // BIRHAUS: Handle overflow navigation items\n const visibleNavItems = navigationItems.slice(0, 4)\n const overflowNavItems = navigationItems.slice(4)\n const hasOverflow = overflowNavItems.length > 0\n \n // BIRHAUS: Limit contextual actions to 3\n const visibleContextualActions = contextualActions.slice(0, 3)\n \n const breakpointClasses = {\n sm: 'sm',\n md: 'md', \n lg: 'lg'\n }\n const bp = breakpointClasses[mobileBreakpoint]\n \n const variantClasses = {\n default: 'bg-white border-b border-gray-200',\n minimal: 'bg-transparent',\n elevated: 'bg-white shadow-sm border-b border-gray-200'\n }\n \n const handleNavItemClick = (item: NavigationItem) => {\n if (item.disabled) return\n \n if (item.submenu && item.submenu.length > 0) {\n setActiveSubmenu(activeSubmenu === item.id ? null : item.id)\n } else {\n item.onClick?.()\n setIsMobileMenuOpen(false)\n }\n }\n \n const handleKeyDown = (e: KeyboardEvent) => {\n // Command palette shortcut\n if ((e.metaKey || e.ctrlKey) && e.key === 'k' && showCommandPalette) {\n e.preventDefault()\n onCommandPaletteToggle?.()\n }\n }\n \n useEffect(() => {\n document.addEventListener('keydown', handleKeyDown)\n return () => document.removeEventListener('keydown', handleKeyDown)\n }, [showCommandPalette, onCommandPaletteToggle])\n \n return (\n <nav \n className={cn(\n 'relative w-full',\n variantClasses[variant],\n className\n )}\n data-birhaus-component=\"four-three-one-nav\"\n aria-label=\"Navegación principal\"\n >\n <div className=\"max-w-7xl mx-auto px-4 sm:px-6 lg:px-8\">\n <div className=\"flex items-center justify-between h-16\">\n \n {/* Logo/Brand */}\n <div className=\"flex-shrink-0\">\n {logo && (\n <div className=\"flex items-center\">\n {logoHref ? (\n <a href={logoHref} className=\"flex items-center\">\n {logo}\n </a>\n ) : (\n <button \n onClick={onLogoClick}\n className=\"flex items-center focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded\"\n >\n {logo}\n </button>\n )}\n </div>\n )}\n </div>\n \n {/* BIRHAUS: Desktop Navigation (max 4 items) */}\n <div className={cn('hidden', `${bp}:flex`, 'items-center space-x-8')}>\n {visibleNavItems.map((item) => (\n <div key={item.id} className=\"relative\">\n <button\n onClick={() => handleNavItemClick(item)}\n disabled={item.disabled}\n className={cn(\n \"flex items-center space-x-1 px-3 py-2 rounded-md text-sm font-medium transition-colors\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\",\n item.active \n ? \"text-blue-700 bg-blue-50\"\n : \"text-gray-700 hover:text-gray-900 hover:bg-gray-50\",\n item.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n aria-current={item.active ? 'page' : undefined}\n aria-expanded={item.submenu ? activeSubmenu === item.id : undefined}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge && (\n <BirhausBadge variant=\"default\" className=\"ml-1\">\n {item.badge}\n </BirhausBadge>\n )}\n {item.submenu && (\n <ChevronDown className=\"ml-1 h-4 w-4 flex-shrink-0\" />\n )}\n </button>\n \n {/* Submenu */}\n {item.submenu && activeSubmenu === item.id && (\n <div className=\"absolute top-full left-0 mt-1 w-64 bg-white border border-gray-200 rounded-md shadow-lg z-50\">\n <div className=\"py-1\">\n {item.submenu.map((subitem) => (\n <button\n key={subitem.id}\n onClick={() => {\n subitem.onClick?.()\n setActiveSubmenu(null)\n }}\n disabled={subitem.disabled}\n className={cn(\n \"w-full text-left px-4 py-2 text-sm transition-colors\",\n \"hover:bg-gray-50 focus:outline-none focus:bg-gray-50\",\n subitem.active && \"text-blue-700 bg-blue-50\",\n subitem.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <div className=\"flex items-center space-x-2\">\n {subitem.icon && <span className=\"flex-shrink-0\">{subitem.icon}</span>}\n <span>{subitem.label}</span>\n {subitem.badge && (\n <BirhausBadge variant=\"secondary\" className=\"ml-auto\">\n {subitem.badge}\n </BirhausBadge>\n )}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n ))}\n \n {/* BIRHAUS: Overflow menu for items > 4 */}\n {hasOverflow && overflowBehavior === 'collapse' && (\n <div className=\"relative\">\n <button\n onClick={() => setActiveSubmenu(activeSubmenu === 'overflow' ? null : 'overflow')}\n className=\"flex items-center space-x-1 px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-gray-900 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\"\n >\n <span>{overflowLabel}</span>\n <ChevronDown className=\"ml-1 h-4 w-4\" />\n </button>\n \n {activeSubmenu === 'overflow' && (\n <div className=\"absolute top-full right-0 mt-1 w-64 bg-white border border-gray-200 rounded-md shadow-lg z-50\">\n <div className=\"py-1\">\n {overflowNavItems.map((item) => (\n <button\n key={item.id}\n onClick={() => {\n handleNavItemClick(item)\n setActiveSubmenu(null)\n }}\n disabled={item.disabled}\n className={cn(\n \"w-full text-left px-4 py-2 text-sm transition-colors\",\n \"hover:bg-gray-50 focus:outline-none focus:bg-gray-50\",\n item.active && \"text-blue-700 bg-blue-50\",\n item.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n <div className=\"flex items-center space-x-2\">\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span>{item.label}</span>\n {item.badge && (\n <BirhausBadge variant=\"secondary\" className=\"ml-auto\">\n {item.badge}\n </BirhausBadge>\n )}\n </div>\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n \n {/* BIRHAUS: Actions Section (Search + 3 contextual + 1 primary) */}\n <div className=\"flex items-center space-x-3\">\n \n {/* Search */}\n {showSearch && (\n <button\n onClick={onSearchClick}\n className=\"p-2 text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded\"\n aria-label={searchLabel}\n >\n <Search className=\"h-5 w-5\" />\n </button>\n )}\n \n {/* Command Palette */}\n {showCommandPalette && (\n <button\n onClick={onCommandPaletteToggle}\n className={cn(\n 'hidden', `${bp}:flex`,\n 'items-center space-x-2 px-3 py-1 text-sm text-gray-600 bg-gray-50 hover:bg-gray-100 rounded-md transition-colors',\n 'focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500'\n )}\n aria-label={commandPaletteLabel}\n >\n <Command className=\"h-4 w-4\" />\n <span className=\"text-xs\">{commandPaletteShortcut}</span>\n </button>\n )}\n \n {/* BIRHAUS: Contextual Actions (max 3) */}\n <div className={cn('hidden', `${bp}:flex`, 'items-center space-x-2')}>\n {visibleContextualActions.map((action) => (\n <BirhausButton\n key={action.id}\n onClick={action.onClick}\n variant={action.variant === 'destructive' ? 'destructive' : 'ghost'}\n disabled={action.disabled}\n loading={action.loading}\n size=\"sm\"\n >\n {action.icon && <span className=\"mr-1\">{action.icon}</span>}\n {action.label}\n </BirhausButton>\n ))}\n </div>\n \n {/* BIRHAUS: Primary Action */}\n {primaryAction && (\n <BirhausButton\n onClick={primaryAction.onClick}\n variant=\"primary\"\n disabled={primaryAction.disabled}\n loading={primaryAction.loading}\n className={cn('hidden', `${bp}:inline-flex`)}\n >\n {primaryAction.icon && <span className=\"mr-2\">{primaryAction.icon}</span>}\n {primaryAction.label}\n </BirhausButton>\n )}\n \n {/* Mobile menu button */}\n {collapsible && (\n <button\n onClick={() => setIsMobileMenuOpen(!isMobileMenuOpen)}\n className={cn(\n `${bp}:hidden`,\n 'p-2 text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 rounded'\n )}\n aria-expanded={isMobileMenuOpen}\n aria-label={isMobileMenuOpen ? closeMenuLabel : menuLabel}\n >\n {isMobileMenuOpen ? (\n <X className=\"h-6 w-6\" />\n ) : (\n <Menu className=\"h-6 w-6\" />\n )}\n </button>\n )}\n </div>\n </div>\n \n {/* BIRHAUS: Mobile Navigation */}\n {collapsible && isMobileMenuOpen && (\n <div className={cn(`${bp}:hidden`, 'border-t border-gray-200 pt-4 pb-4')}>\n <div className=\"space-y-1\">\n {navigationItems.map((item) => (\n <button\n key={item.id}\n onClick={() => handleNavItemClick(item)}\n disabled={item.disabled}\n className={cn(\n \"w-full text-left flex items-center space-x-3 px-3 py-2 rounded-md text-base font-medium transition-colors\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500\",\n item.active \n ? \"text-blue-700 bg-blue-50\"\n : \"text-gray-700 hover:text-gray-900 hover:bg-gray-50\",\n item.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n aria-current={item.active ? 'page' : undefined}\n >\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\n <span className=\"flex-1\">{item.label}</span>\n {item.badge && (\n <BirhausBadge variant=\"default\">\n {item.badge}\n </BirhausBadge>\n )}\n </button>\n ))}\n </div>\n \n {/* Mobile Actions */}\n {(visibleContextualActions.length > 0 || primaryAction) && (\n <div className=\"mt-4 pt-4 border-t border-gray-200 space-y-2\">\n {visibleContextualActions.map((action) => (\n <BirhausButton\n key={action.id}\n onClick={() => {\n action.onClick()\n setIsMobileMenuOpen(false)\n }}\n variant={action.variant === 'destructive' ? 'destructive' : 'secondary'}\n disabled={action.disabled}\n loading={action.loading}\n className=\"w-full justify-center\"\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </BirhausButton>\n ))}\n \n {primaryAction && (\n <BirhausButton\n onClick={() => {\n primaryAction.onClick()\n setIsMobileMenuOpen(false)\n }}\n variant=\"primary\"\n disabled={primaryAction.disabled}\n loading={primaryAction.loading}\n className=\"w-full justify-center\"\n >\n {primaryAction.icon && <span className=\"mr-2\">{primaryAction.icon}</span>}\n {primaryAction.label}\n </BirhausButton>\n )}\n </div>\n )}\n </div>\n )}\n </div>\n </nav>\n )\n}\n\n// BIRHAUS: Hook for managing navigation state\nexport function useFourThreeOneNav() {\n const [activeItem, setActiveItem] = useState<string | null>(null)\n const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false)\n \n const activateItem = (itemId: string) => {\n setActiveItem(itemId)\n setIsMobileMenuOpen(false)\n }\n \n const toggleMobileMenu = () => {\n setIsMobileMenuOpen(prev => !prev)\n }\n \n const closeMobileMenu = () => {\n setIsMobileMenuOpen(false)\n }\n \n return {\n activeItem,\n isMobileMenuOpen,\n activateItem,\n toggleMobileMenu,\n closeMobileMenu,\n setActiveItem\n }\n}\n\n// Components and hooks are exported via individual export declarations above"]}