{"version":3,"sources":["../src/components/BirhausButton.tsx","../src/components/BirhausInput.tsx","../src/components/BirhausSelect.tsx","../src/components/BirhausCard.tsx","../src/components/BirhausDialog.tsx","../src/components/BirhausTable.tsx","../src/components/BirhausCheckbox.tsx","../src/components/BirhausTabs.tsx","../src/components/BirhausCombobox.tsx","../src/constants/performance.ts"],"names":["cn","classes","BirhausButton","forwardRef","label","labelEs","labelEn","variant","size","isPrimaryAction","loading","loadingText","loadingTextEs","loadingTextEn","destructive","undoAction","undoTimeoutMs","showSuccessState","successText","successTextEs","successTextEn","describedBy","describedByEs","describedByEn","icon","iconPosition","fullWidth","trackCognitiveLoad","cognitiveLoadLevel","className","disabled","onClick","children","props","ref","showUndoPrompt","setShowUndoPrompt","useState","isUndoing","setIsUndoing","showSuccess","setShowSuccess","undoTimeoutRef","useRef","resolveText","spanish","english","fallback","displayLabel","displayLoadingText","displaySuccessText","displayDescription","baseClasses","sizeClasses","variantClasses","cognitiveLoadIndicator","handleClick","event","result","error","handleUndo","useEffect","jsxs","jsx","AlertTriangle","Undo2","Loader2","Check","useBirhausButton","setLoading","success","setSuccess","action","BirhausInput","description","descriptionEs","descriptionEn","errorEs","errorEn","solution","solutionEs","solutionEn","autoSave","autoSaveDelay","onAutoSave","validateOnChange","validateOnBlur","validationRules","prefix","suffix","showPasswordToggle","showClearButton","helpText","helpTextEs","helpTextEn","fieldPriority","cognitiveWeight","type","value","defaultValue","onChange","onBlur","onFocus","required","currentValue","setCurrentValue","showPassword","setShowPassword","isFocused","setIsFocused","validationError","setValidationError","validationSolution","setValidationSolution","autoSaveStatus","setAutoSaveStatus","autoSaveTimeoutRef","inputRef","displayError","displaySolution","displayHelpText","validateValue","val","rule","triggerAutoSave","handleChange","newValue","handleBlur","handleFocus","handleClear","hasError","hasSuccess","stateClasses","priorityClasses","baseInputClasses","CheckCircle2","AlertCircle","EyeOff","Eye","X","Info","birhausValidationRules","fieldName","min","BirhausSelect","options","placeholder","placeholderEs","placeholderEn","multiple","maxSelections","searchable","searchPlaceholder","searchPlaceholderEs","searchPlaceholderEn","showCognitiveWarning","clearable","closeOnSelect","id","isOpen","setIsOpen","searchTerm","setSearchTerm","selectedValues","setSelectedValues","containerRef","searchInputRef","displayPlaceholder","displaySearchPlaceholder","MILLER_LAW_LIMIT","filteredOptions","option","visibleOptions","hasMoreOptions","cognitiveLoad","handleOptionSelect","optionValue","newValues","v","handleClickOutside","selectedLabels","opt","displayValue","triggerClasses","e","ChevronDown","Search","isSelected","optionLabel","optionDescription","useBirhausSelect","setValue","createBirhausOptionGroups","groupBy","groups","groupKey","groupName","groupOptions","BirhausCard","title","titleEs","titleEn","subtitle","subtitleEs","subtitleEn","header","footer","aside","primaryAction","secondaryActions","collapsible","defaultExpanded","expandedContent","status","statusMessage","statusMessageEs","statusMessageEn","skeleton","lazyLoad","selectable","selected","onSelect","badge","badgeVariant","timestamp","author","category","informationDensity","isExpanded","setIsExpanded","displayTitle","displaySubtitle","displayStatusMessage","actionCount","statusClasses","statusIcons","badgeClasses","densityClasses","Clock","MoreVertical","ChevronUp","useBirhausCard","expanded","setExpanded","setSelected","prev","createBirhausCardAction","BirhausDialog","open","onOpenChange","undoConfig","position","closeOnOverlayClick","closeOnEscape","persistent","role","ariaLabelledBy","ariaDescribedBy","overlayClassName","isUndoActive","setIsUndoActive","undoTimeRemaining","setUndoTimeRemaining","timeout","interval","handleKeyDown","handleAction","positionClasses","currentVariant","undoMessage","undoLabel","useBirhausDialog","setOpen","undoActive","setUndoActive","createBirhausDialogAction","BirhausTable","data","columns","emptyMessage","emptyMessageEs","emptyMessageEn","loadingMessage","loadingMessageEs","loadingMessageEn","maxVisibleColumns","sortable","filterable","selectedRows","onRowSelect","onRowsSelect","pagination","sortConfig","onSort","filters","onFilter","searchValue","onSearch","getRowId","item","index","rowActions","hiddenColumns","setHiddenColumns","localSortConfig","setLocalSortConfig","displayEmptyMessage","displayLoadingMessage","visibleColumns","hiddenColumnCount","useMemo","priorityOrder","sortedColumns","a","b","aPriority","bPriority","aWeight","bWeight","visible","col","hidden","avgCognitiveWeight","sum","load","handleSort","columnId","direction","handleRowSelect","rowId","handleSelectAll","allIds","getCellValue","column","formatCellValue","_","i","MoreHorizontal","formattedValue","useBirhausTable","initialData","setData","setSelectedRows","setSortConfig","setFilters","setSearchValue","newSelected","ids","BirhausCheckbox","indeterminate","labelPosition","showStateIcon","errorMessage","errorMessageEs","errorMessageEn","successMessage","successMessageEs","successMessageEn","checked","labelClassName","internalChecked","setInternalChecked","isChecked","isControlled","displayErrorMessage","displaySuccessMessage","newChecked","currentSize","checkboxClasses","labelClasses","containerClasses","Minus","BirhausSwitch","showLabels","onLabel","onLabelEs","onLabelEn","offLabel","offLabelEs","offLabelEn","displayOnLabel","displayOffLabel","trackClasses","thumbClasses","useBirhausCheckbox","initialChecked","setChecked","setError","BirhausTabs","tabs","activeTab","onTabChange","maxVisibleTabs","orientation","activateOnHover","lazy","overflowBehavior","contentPadding","tabListClassName","tabClassName","contentClassName","internalActiveTab","setInternalActiveTab","showOverflowMenu","setShowOverflowMenu","currentActiveTab","visibleTabs","overflowTabs","sortedTabs","tab","overflow","handleTabChange","tabId","t","handleTabHover","activeTabData","orientationClasses","currentOrientation","renderTab","isActive","BirhausTab","Fragment","useBirhausTabs","initialActiveTab","setActiveTab","tabHistory","setTabHistory","previousTab","defaultTab","createBirhausTabItem","content","BirhausCombobox","onValueChange","maxVisibleOptions","filterFunction","dropdownPosition","dropdownClassName","focusedIndex","setFocusedIndex","internalValue","setInternalValue","dropdownRef","filterFunc","search","searchLower","additionalTerms","hiddenCount","filtered","selectedOption","handleValueChange","inputClasses","useBirhausCombobox","initialValue","createBirhausComboboxOption","BIRHAUS_PERFORMANCE","BIRHAUS_SCORING","DEFAULT_BIRHAUS_CONFIG","BIRHAUS_ENV_CONFIG"],"mappings":"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","file":"index.mjs","sourcesContent":["'use client'\n\nimport { forwardRef, ReactNode, useState, useRef, useEffect } from 'react'\nimport { Loader2, Undo2, AlertTriangle, Check } from 'lucide-react'\n\n/**\n * BIRHAUS Button Component\n * \n * Enhanced button implementing all 10 BIRHAUS principles:\n * - Cognitive load reduction through clear visual hierarchy\n * - Spanish-first labeling with optional English\n * - Undo integration for destructive actions\n * - Loading states with progress indication\n * - Accessibility compliance (WCAG AA+)\n * - Performance optimized with minimal re-renders\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\n  // BIRHAUS Principle #7: Bilingual by design\n  label?: string\n  labelEs?: string\n  labelEn?: string\n  \n  // BIRHAUS Principle #1: Form serves flow\n  variant?: 'primary' | 'secondary' | 'destructive' | 'outline' | 'ghost'\n  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl'\n  \n  // BIRHAUS Principle #3: One clear action\n  isPrimaryAction?: boolean\n  \n  // BIRHAUS Principle #8: Performance is UX\n  loading?: boolean\n  loadingText?: string\n  loadingTextEs?: string\n  loadingTextEn?: string\n  \n  // BIRHAUS Principle #5: Undo over confirm\n  destructive?: boolean\n  undoAction?: () => Promise<void>\n  undoTimeoutMs?: number\n  \n  // BIRHAUS Principle #4: Progressive disclosure\n  showSuccessState?: boolean\n  successText?: string\n  successTextEs?: string\n  successTextEn?: string\n  \n  // BIRHAUS Principle #6: Accessibility = dignity\n  describedBy?: string\n  describedByEs?: string\n  describedByEn?: string\n  \n  // Enhanced functionality\n  icon?: ReactNode\n  iconPosition?: 'left' | 'right'\n  fullWidth?: boolean\n  \n  // Cognitive load tracking\n  trackCognitiveLoad?: boolean\n  cognitiveLoadLevel?: 'low' | 'medium' | 'high'\n  \n  children?: ReactNode\n}\n\nexport const BirhausButton = forwardRef<HTMLButtonElement, BirhausButtonProps>(({\n  // Labels (Spanish-first)\n  label,\n  labelEs,\n  labelEn,\n  \n  // Appearance\n  variant = 'secondary',\n  size = 'md',\n  isPrimaryAction = false,\n  \n  // States\n  loading = false,\n  loadingText,\n  loadingTextEs,\n  loadingTextEn,\n  \n  // Undo functionality\n  destructive = false,\n  undoAction,\n  undoTimeoutMs = 10000,\n  \n  // Success state\n  showSuccessState = false,\n  successText,\n  successTextEs,\n  successTextEn,\n  \n  // Accessibility\n  describedBy,\n  describedByEs,\n  describedByEn,\n  \n  // Enhanced props\n  icon,\n  iconPosition = 'left',\n  fullWidth = false,\n  \n  // Cognitive load\n  trackCognitiveLoad = false,\n  cognitiveLoadLevel = 'medium',\n  \n  // Standard props\n  className,\n  disabled,\n  onClick,\n  children,\n  ...props\n}, ref) => {\n  \n  // BIRHAUS: State management for undo functionality\n  const [showUndoPrompt, setShowUndoPrompt] = useState(false)\n  const [isUndoing, setIsUndoing] = useState(false)\n  const [showSuccess, setShowSuccess] = useState(false)\n  const undoTimeoutRef = useRef<NodeJS.Timeout>()\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || labelEs || english || labelEn || fallback || ''\n  }\n  \n  const displayLabel = resolveText(labelEs, labelEn, label)\n  const displayLoadingText = resolveText(\n    loadingTextEs || 'Procesando...',\n    loadingTextEn || 'Processing...',\n    loadingText\n  )\n  const displaySuccessText = resolveText(\n    successTextEs || 'Completado',\n    successTextEn || 'Completed',\n    successText\n  )\n  const displayDescription = resolveText(describedByEs, describedByEn, describedBy)\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const baseClasses = `\n    inline-flex items-center justify-center gap-2 rounded-lg font-medium \n    transition-all duration-200 ease-in-out\n    focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2\n    disabled:pointer-events-none disabled:opacity-50\n    ${fullWidth ? 'w-full' : ''}\n  `.trim()\n  \n  const sizeClasses = {\n    xs: 'h-7 px-2 text-xs',\n    sm: 'h-8 px-3 text-sm',\n    md: 'h-10 px-4 text-sm',\n    lg: 'h-11 px-6 text-base',\n    xl: 'h-12 px-8 text-base'\n  }\n  \n  // BIRHAUS Principle #3: One clear action (primary action gets special treatment)\n  const variantClasses = {\n    primary: isPrimaryAction \n      ? 'bg-blue-600 text-white hover:bg-blue-700 focus-visible:ring-blue-500 shadow-md hover:shadow-lg'\n      : 'bg-blue-600 text-white hover:bg-blue-700 focus-visible:ring-blue-500',\n    secondary: 'bg-white border border-gray-300 text-gray-700 hover:bg-gray-50 focus-visible:ring-gray-500',\n    destructive: 'bg-red-600 text-white hover:bg-red-700 focus-visible:ring-red-500',\n    outline: 'border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-50 focus-visible:ring-gray-500',\n    ghost: 'text-gray-600 hover:text-gray-900 hover:bg-gray-100 focus-visible:ring-gray-500'\n  }\n  \n  // BIRHAUS: Cognitive load visual indicators\n  const cognitiveLoadIndicator = trackCognitiveLoad ? {\n    low: 'ring-1 ring-green-300',\n    medium: 'ring-1 ring-yellow-300', \n    high: 'ring-1 ring-red-300'\n  }[cognitiveLoadLevel] : ''\n  \n  // BIRHAUS Principle #5: Undo over confirm - Handle destructive actions\n  const handleClick = async (event: React.MouseEvent<HTMLButtonElement>) => {\n    if (destructive && undoAction && !showUndoPrompt) {\n      // Execute destructive action immediately, then show undo option\n      await onClick?.(event)\n      \n      setShowUndoPrompt(true)\n      \n      // Set timeout to hide undo option\n      undoTimeoutRef.current = setTimeout(() => {\n        setShowUndoPrompt(false)\n      }, undoTimeoutMs)\n      \n      return\n    }\n    \n    // Regular action\n    const result = onClick?.(event)\n    \n    // Show success state if configured\n    if (showSuccessState && result && typeof result === 'object' && 'then' in result) {\n      try {\n        await result\n        setShowSuccess(true)\n        setTimeout(() => setShowSuccess(false), 2000)\n      } catch (error) {\n        // Handle error state\n        console.error('Action failed:', error)\n      }\n    }\n  }\n  \n  // Handle undo action\n  const handleUndo = async () => {\n    if (!undoAction) return\n    \n    setIsUndoing(true)\n    \n    try {\n      await undoAction()\n      setShowUndoPrompt(false)\n      \n      // Clear timeout\n      if (undoTimeoutRef.current) {\n        clearTimeout(undoTimeoutRef.current)\n      }\n    } catch (error) {\n      console.error('Undo failed:', error)\n    } finally {\n      setIsUndoing(false)\n    }\n  }\n  \n  // Cleanup timeout on unmount\n  useEffect(() => {\n    return () => {\n      if (undoTimeoutRef.current) {\n        clearTimeout(undoTimeoutRef.current)\n      }\n    }\n  }, [])\n  \n  // BIRHAUS: Show undo prompt instead of button when destructive action executed\n  if (showUndoPrompt) {\n    return (\n      <div className=\"inline-flex items-center gap-2 p-2 bg-red-50 border border-red-200 rounded-lg\">\n        <AlertTriangle className=\"h-4 w-4 text-red-600\" />\n        <span className=\"text-sm text-red-800\">Acción completada</span>\n        <button\n          onClick={handleUndo}\n          disabled={isUndoing}\n          className=\"inline-flex items-center gap-1 px-3 py-1 text-sm font-medium text-red-700 bg-white border border-red-300 rounded hover:bg-red-50 disabled:opacity-50\"\n        >\n          <Undo2 className=\"h-3 w-3\" />\n          {isUndoing ? 'Deshaciendo...' : 'Deshacer'}\n        </button>\n      </div>\n    )\n  }\n  \n  return (\n    <button\n      ref={ref}\n      className={cn(\n        baseClasses,\n        sizeClasses[size],\n        variantClasses[variant],\n        cognitiveLoadIndicator,\n        className\n      )}\n      disabled={disabled || loading}\n      onClick={handleClick}\n      aria-describedby={displayDescription ? `${props.id}-desc` : undefined}\n      data-birhaus-component=\"button\"\n      data-birhaus-variant={variant}\n      data-birhaus-primary={isPrimaryAction}\n      data-cognitive-load={trackCognitiveLoad ? cognitiveLoadLevel : undefined}\n      {...props}\n    >\n      {/* Loading state */}\n      {loading && <Loader2 className=\"h-4 w-4 animate-spin\" />}\n      \n      {/* Success state */}\n      {showSuccess && <Check className=\"h-4 w-4 text-green-600\" />}\n      \n      {/* Icon */}\n      {icon && iconPosition === 'left' && !loading && !showSuccess && (\n        <span className=\"flex-shrink-0\">{icon}</span>\n      )}\n      \n      {/* Button content */}\n      <span>\n        {loading \n          ? displayLoadingText\n          : showSuccess \n            ? displaySuccessText\n            : children || displayLabel\n        }\n      </span>\n      \n      {/* Icon right */}\n      {icon && iconPosition === 'right' && !loading && !showSuccess && (\n        <span className=\"flex-shrink-0\">{icon}</span>\n      )}\n      \n      {/* Accessibility description */}\n      {displayDescription && (\n        <span id={`${props.id}-desc`} className=\"sr-only\">\n          {displayDescription}\n        </span>\n      )}\n    </button>\n  )\n})\n\nBirhausButton.displayName = 'BirhausButton'\n\n// BIRHAUS: Hook for managing button state\nexport function useBirhausButton() {\n  const [loading, setLoading] = useState(false)\n  const [success, setSuccess] = useState(false)\n  \n  const executeAction = async (action: () => Promise<void>) => {\n    setLoading(true)\n    try {\n      await action()\n      setSuccess(true)\n      setTimeout(() => setSuccess(false), 2000)\n    } catch (error) {\n      console.error('Button action failed:', error)\n      throw error\n    } finally {\n      setLoading(false)\n    }\n  }\n  \n  return {\n    loading,\n    success,\n    executeAction,\n    setLoading,\n    setSuccess\n  }\n}\n\n// Component and hook are exported via individual export declarations above","'use client'\n\nimport { forwardRef, useState, useEffect, useRef, ReactNode } from 'react'\nimport { Eye, EyeOff, AlertCircle, CheckCircle2, Info, Search, X } from 'lucide-react'\n\n/**\n * BIRHAUS Input Component\n * \n * Enhanced input implementing all 10 BIRHAUS principles:\n * - Progressive validation with Spanish-first error messages\n * - Cognitive load reduction through clear visual feedback\n * - Auto-save functionality with status indicators\n * - Accessibility compliance (WCAG AA+)\n * - Spanish-first labeling and error handling\n * - Performance optimized with debounced validation\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix' | 'autoSave'> {\n  // BIRHAUS Principle #7: Bilingual by design\n  label?: string\n  labelEs?: string\n  labelEn?: string\n  \n  // BIRHAUS Principle #4: Progressive disclosure\n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  \n  // BIRHAUS Principle #2: Honest data\n  error?: string\n  errorEs?: string\n  errorEn?: string\n  \n  // Spanish-first error patterns: \"Qué pasó + cómo resolver\"\n  solution?: string\n  solutionEs?: string\n  solutionEn?: string\n  \n  // BIRHAUS Principle #8: Performance is UX\n  autoSave?: boolean\n  autoSaveDelay?: number\n  onAutoSave?: (value: string) => Promise<void>\n  \n  // Progressive validation\n  validateOnChange?: boolean\n  validateOnBlur?: boolean\n  validationRules?: ValidationRule[]\n  \n  // BIRHAUS Principle #1: Form serves flow\n  size?: 'sm' | 'md' | 'lg'\n  variant?: 'default' | 'filled' | 'minimal'\n  \n  // Enhanced functionality\n  prefix?: ReactNode\n  suffix?: ReactNode\n  showPasswordToggle?: boolean\n  showClearButton?: boolean\n  \n  // BIRHAUS Principle #6: Accessibility = dignity\n  helpText?: string\n  helpTextEs?: string\n  helpTextEn?: string\n  \n  // Status indicators\n  loading?: boolean\n  success?: boolean\n  \n  // Cognitive load tracking\n  fieldPriority?: 'required' | 'optional' | 'progressive'\n  cognitiveWeight?: number\n}\n\nexport interface ValidationRule {\n  test: (value: string) => boolean\n  errorEs: string\n  errorEn?: string\n  solutionEs?: string\n  solutionEn?: string\n  severity?: 'error' | 'warning' | 'info'\n}\n\nexport const BirhausInput = forwardRef<HTMLInputElement, BirhausInputProps>(({\n  // Labels (Spanish-first)\n  label,\n  labelEs,\n  labelEn,\n  \n  // Descriptions\n  description,\n  descriptionEs,\n  descriptionEn,\n  \n  // Error handling\n  error,\n  errorEs,\n  errorEn,\n  solution,\n  solutionEs,\n  solutionEn,\n  \n  // Auto-save\n  autoSave = false,\n  autoSaveDelay = 1000,\n  onAutoSave,\n  \n  // Validation\n  validateOnChange = true,\n  validateOnBlur = true,\n  validationRules = [],\n  \n  // Appearance\n  size = 'md',\n  variant = 'default',\n  \n  // Enhanced props\n  prefix,\n  suffix,\n  showPasswordToggle = false,\n  showClearButton = false,\n  \n  // Help text\n  helpText,\n  helpTextEs,\n  helpTextEn,\n  \n  // Status\n  loading = false,\n  success = false,\n  \n  // Cognitive load\n  fieldPriority = 'optional',\n  cognitiveWeight = 1,\n  \n  // Standard props\n  className,\n  type = 'text',\n  value,\n  defaultValue,\n  onChange,\n  onBlur,\n  onFocus,\n  disabled,\n  required,\n  ...props\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [currentValue, setCurrentValue] = useState(value || defaultValue || '')\n  const [showPassword, setShowPassword] = useState(false)\n  const [isFocused, setIsFocused] = useState(false)\n  const [validationError, setValidationError] = useState<string>('')\n  const [validationSolution, setValidationSolution] = useState<string>('')\n  const [autoSaveStatus, setAutoSaveStatus] = useState<'idle' | 'saving' | 'saved' | 'error'>('idle')\n  \n  const autoSaveTimeoutRef = useRef<NodeJS.Timeout>()\n  const inputRef = useRef<HTMLInputElement>(null)\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayLabel = resolveText(labelEs, labelEn, label)\n  const displayDescription = resolveText(descriptionEs, descriptionEn, description)\n  const displayError = resolveText(errorEs, errorEn, error) || validationError\n  const displaySolution = resolveText(solutionEs, solutionEn, solution) || validationSolution\n  const displayHelpText = resolveText(helpTextEs, helpTextEn, helpText)\n  \n  // BIRHAUS: Progressive validation\n  const validateValue = (val: string) => {\n    if (!validationRules.length) return\n    \n    for (const rule of validationRules) {\n      if (!rule.test(val)) {\n        setValidationError(rule.errorEs || rule.errorEn || '')\n        setValidationSolution(rule.solutionEs || rule.solutionEn || '')\n        return\n      }\n    }\n    \n    setValidationError('')\n    setValidationSolution('')\n  }\n  \n  // BIRHAUS: Auto-save functionality\n  const triggerAutoSave = (val: string) => {\n    if (!autoSave || !onAutoSave) return\n    \n    // Clear existing timeout\n    if (autoSaveTimeoutRef.current) {\n      clearTimeout(autoSaveTimeoutRef.current)\n    }\n    \n    // Set new timeout\n    autoSaveTimeoutRef.current = setTimeout(async () => {\n      setAutoSaveStatus('saving')\n      try {\n        await onAutoSave(val)\n        setAutoSaveStatus('saved')\n        setTimeout(() => setAutoSaveStatus('idle'), 2000)\n      } catch (error) {\n        setAutoSaveStatus('error')\n        setTimeout(() => setAutoSaveStatus('idle'), 3000)\n      }\n    }, autoSaveDelay)\n  }\n  \n  // Handle value change\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const newValue = event.target.value\n    setCurrentValue(newValue)\n    \n    // Progressive validation\n    if (validateOnChange) {\n      validateValue(newValue)\n    }\n    \n    // Auto-save\n    if (autoSave) {\n      triggerAutoSave(newValue)\n    }\n    \n    onChange?.(event)\n  }\n  \n  // Handle blur\n  const handleBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n    setIsFocused(false)\n    \n    if (validateOnBlur) {\n      validateValue(currentValue as string)\n    }\n    \n    onBlur?.(event)\n  }\n  \n  // Handle focus\n  const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n    setIsFocused(true)\n    onFocus?.(event)\n  }\n  \n  // Clear input\n  const handleClear = () => {\n    setCurrentValue('')\n    setValidationError('')\n    setValidationSolution('')\n    if (inputRef.current) {\n      inputRef.current.focus()\n    }\n  }\n  \n  // Cleanup on unmount\n  useEffect(() => {\n    return () => {\n      if (autoSaveTimeoutRef.current) {\n        clearTimeout(autoSaveTimeoutRef.current)\n      }\n    }\n  }, [])\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: 'h-8 px-3 text-sm',\n    md: 'h-10 px-4 text-sm',\n    lg: 'h-12 px-4 text-base'\n  }\n  \n  const variantClasses = {\n    default: 'border border-gray-300 bg-white',\n    filled: 'border-0 bg-gray-100',\n    minimal: 'border-0 border-b border-gray-300 bg-transparent rounded-none'\n  }\n  \n  // BIRHAUS: Error state styling\n  const hasError = !!(displayError || error)\n  const hasSuccess = success && !hasError\n  \n  const stateClasses = hasError \n    ? 'border-red-500 focus:border-red-500 focus:ring-red-500'\n    : hasSuccess\n    ? 'border-green-500 focus:border-green-500 focus:ring-green-500'\n    : 'focus:border-blue-500 focus:ring-blue-500'\n  \n  // Priority visual indicators\n  const priorityClasses = {\n    required: 'ring-2 ring-red-100',\n    optional: '',\n    progressive: 'ring-1 ring-blue-100'\n  }\n  \n  const baseInputClasses = cn(\n    'w-full rounded-lg transition-all duration-200',\n    'focus:outline-none focus:ring-2 focus:ring-offset-1',\n    'disabled:cursor-not-allowed disabled:opacity-50',\n    'placeholder:text-gray-400',\n    sizeClasses[size],\n    variantClasses[variant],\n    stateClasses,\n    priorityClasses[fieldPriority],\n    className\n  )\n  \n  return (\n    <div className=\"space-y-2\">\n      {/* Label and description */}\n      {displayLabel && (\n        <div className=\"flex items-center justify-between\">\n          <label \n            htmlFor={props.id}\n            className={cn(\n              'block text-sm font-medium text-gray-700',\n              required && \"after:content-['*'] after:ml-1 after:text-red-500\"\n            )}\n          >\n            {displayLabel}\n            {fieldPriority === 'required' && (\n              <span className=\"ml-1 text-xs text-red-600\">(requerido)</span>\n            )}\n            {fieldPriority === 'optional' && (\n              <span className=\"ml-1 text-xs text-gray-500\">(opcional)</span>\n            )}\n          </label>\n          \n          {/* Auto-save status */}\n          {autoSave && (\n            <div className=\"flex items-center gap-1 text-xs\">\n              {autoSaveStatus === 'saving' && (\n                <span className=\"text-blue-600\">Guardando...</span>\n              )}\n              {autoSaveStatus === 'saved' && (\n                <span className=\"text-green-600 flex items-center gap-1\">\n                  <CheckCircle2 className=\"h-3 w-3\" />\n                  Guardado\n                </span>\n              )}\n              {autoSaveStatus === 'error' && (\n                <span className=\"text-red-600\">Error al guardar</span>\n              )}\n            </div>\n          )}\n        </div>\n      )}\n      \n      {/* Description */}\n      {displayDescription && (\n        <p className=\"text-sm text-gray-600\">{displayDescription}</p>\n      )}\n      \n      {/* Input container */}\n      <div className=\"relative\">\n        {/* Prefix */}\n        {prefix && (\n          <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-gray-400\">\n            {prefix}\n          </div>\n        )}\n        \n        {/* Input */}\n        <input\n          ref={ref || inputRef}\n          type={showPasswordToggle ? (showPassword ? 'text' : 'password') : type}\n          value={value || currentValue}\n          onChange={handleChange}\n          onBlur={handleBlur}\n          onFocus={handleFocus}\n          disabled={disabled || loading}\n          required={required}\n          className={cn(\n            baseInputClasses,\n            prefix ? 'pl-10' : '',\n            (suffix || showPasswordToggle || showClearButton) ? 'pr-10' : ''\n          )}\n          data-birhaus-component=\"input\"\n          data-birhaus-priority={fieldPriority}\n          data-cognitive-weight={cognitiveWeight}\n          {...props}\n        />\n        \n        {/* Loading indicator */}\n        {loading && (\n          <div className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n            <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600\" />\n          </div>\n        )}\n        \n        {/* Success indicator */}\n        {hasSuccess && (\n          <div className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n            <CheckCircle2 className=\"h-4 w-4 text-green-500\" />\n          </div>\n        )}\n        \n        {/* Error indicator */}\n        {hasError && (\n          <div className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n            <AlertCircle className=\"h-4 w-4 text-red-500\" />\n          </div>\n        )}\n        \n        {/* Password toggle */}\n        {showPasswordToggle && type === 'password' && !loading && !hasError && !hasSuccess && (\n          <button\n            type=\"button\"\n            onClick={() => setShowPassword(!showPassword)}\n            className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600\"\n            aria-label={showPassword ? 'Ocultar contraseña' : 'Mostrar contraseña'}\n          >\n            {showPassword ? <EyeOff className=\"h-4 w-4\" /> : <Eye className=\"h-4 w-4\" />}\n          </button>\n        )}\n        \n        {/* Clear button */}\n        {showClearButton && currentValue && !loading && !hasError && !showPasswordToggle && (\n          <button\n            type=\"button\"\n            onClick={handleClear}\n            className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600\"\n            aria-label=\"Limpiar campo\"\n          >\n            <X className=\"h-4 w-4\" />\n          </button>\n        )}\n        \n        {/* Suffix */}\n        {suffix && !showPasswordToggle && !showClearButton && !loading && !hasError && !hasSuccess && (\n          <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400\">\n            {suffix}\n          </div>\n        )}\n      </div>\n      \n      {/* Error message with solution */}\n      {displayError && (\n        <div className=\"flex items-start gap-2 p-3 bg-red-50 border border-red-200 rounded-lg\">\n          <AlertCircle className=\"h-4 w-4 text-red-600 mt-0.5 flex-shrink-0\" />\n          <div className=\"flex-1 text-sm\">\n            <p className=\"text-red-800 font-medium\">Qué pasó: {displayError}</p>\n            {displaySolution && (\n              <p className=\"text-red-700 mt-1\">Cómo resolver: {displaySolution}</p>\n            )}\n          </div>\n        </div>\n      )}\n      \n      {/* Help text */}\n      {displayHelpText && !displayError && (\n        <div className=\"flex items-start gap-2 text-sm text-gray-600\">\n          <Info className=\"h-4 w-4 mt-0.5 flex-shrink-0\" />\n          <p>{displayHelpText}</p>\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausInput.displayName = 'BirhausInput'\n\n// BIRHAUS: Common validation rules in Spanish\nexport const birhausValidationRules = {\n  required: (fieldName: string): ValidationRule => ({\n    test: (value) => value.trim().length > 0,\n    errorEs: `${fieldName} es requerido`,\n    errorEn: `${fieldName} is required`,\n    solutionEs: `Ingrese un valor para ${fieldName.toLowerCase()}`,\n    solutionEn: `Enter a value for ${fieldName.toLowerCase()}`\n  }),\n  \n  email: (): ValidationRule => ({\n    test: (value) => /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(value),\n    errorEs: 'El formato del email no es válido',\n    errorEn: 'Email format is not valid',\n    solutionEs: 'Use el formato: usuario@ejemplo.com',\n    solutionEn: 'Use the format: user@example.com'\n  }),\n  \n  minLength: (min: number): ValidationRule => ({\n    test: (value) => value.length >= min,\n    errorEs: `Debe tener al menos ${min} caracteres`,\n    errorEn: `Must be at least ${min} characters`,\n    solutionEs: `Agregue al menos ${min} caracteres`,\n    solutionEn: `Add at least ${min} characters`\n  }),\n  \n  paraguayPhone: (): ValidationRule => ({\n    test: (value) => /^(\\+595|0)(9[0-9]{8}|[2-9][1-8][0-9]{5,6})$/.test(value.replace(/\\s/g, '')),\n    errorEs: 'El número de teléfono no es válido para Paraguay',\n    errorEn: 'Phone number is not valid for Paraguay',\n    solutionEs: 'Use el formato: 0981123456 o +595981123456',\n    solutionEn: 'Use the format: 0981123456 or +595981123456'\n  }),\n  \n  ruc: (): ValidationRule => ({\n    test: (value) => /^[0-9]{1,8}-[0-9]$/.test(value),\n    errorEs: 'El formato de RUC no es válido',\n    errorEn: 'RUC format is not valid',\n    solutionEs: 'Use el formato: 12345678-9',\n    solutionEn: 'Use the format: 12345678-9'\n  })\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, useState, useRef, useEffect, ReactNode } from 'react'\nimport { ChevronDown, Search, Check, AlertCircle, Info, X } from 'lucide-react'\n\n/**\n * BIRHAUS Select Component\n * \n * Enhanced select implementing all 10 BIRHAUS principles:\n * - Miller's Law: Maximum 7 visible options (7±2 cognitive limit)\n * - Spanish-first labeling and option text\n * - Progressive disclosure with search when >7 options\n * - Accessibility compliance (WCAG AA+)\n * - Cognitive load warnings when exceeding limits\n * - Performance optimized with virtual scrolling for large lists\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausSelectOption {\n  value: string\n  label: string\n  labelEs?: string\n  labelEn?: string\n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  disabled?: boolean\n  icon?: ReactNode\n  group?: string\n}\n\nexport interface BirhausSelectProps {\n  // BIRHAUS Principle #7: Bilingual by design\n  label?: string\n  labelEs?: string\n  labelEn?: string\n  \n  // BIRHAUS Principle #4: Progressive disclosure\n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  \n  // Options (Miller's Law enforcement)\n  options: BirhausSelectOption[]\n  value?: string | string[]\n  defaultValue?: string | string[]\n  onChange?: (value: string | string[]) => void\n  \n  // BIRHAUS Principle #2: Honest data\n  error?: string\n  errorEs?: string\n  errorEn?: string\n  \n  // Placeholder text\n  placeholder?: string\n  placeholderEs?: string\n  placeholderEn?: string\n  \n  // Multi-select\n  multiple?: boolean\n  maxSelections?: number\n  \n  // BIRHAUS Principle #8: Performance is UX\n  searchable?: boolean\n  searchPlaceholder?: string\n  searchPlaceholderEs?: string\n  searchPlaceholderEn?: string\n  \n  // BIRHAUS Principle #1: Form serves flow\n  size?: 'sm' | 'md' | 'lg'\n  variant?: 'default' | 'filled' | 'minimal'\n  \n  // BIRHAUS Principle #6: Accessibility = dignity\n  helpText?: string\n  helpTextEs?: string\n  helpTextEn?: string\n  \n  // State\n  disabled?: boolean\n  required?: boolean\n  loading?: boolean\n  \n  // Cognitive load management\n  cognitiveLoadLevel?: 'low' | 'medium' | 'high'\n  showCognitiveWarning?: boolean\n  \n  // Enhanced functionality\n  clearable?: boolean\n  closeOnSelect?: boolean\n  \n  // Styling\n  className?: string\n  id?: string\n}\n\nexport const BirhausSelect = forwardRef<HTMLButtonElement, BirhausSelectProps>(({\n  // Labels (Spanish-first)\n  label,\n  labelEs,\n  labelEn,\n  \n  // Descriptions\n  description,\n  descriptionEs,\n  descriptionEn,\n  \n  // Data\n  options = [],\n  value,\n  defaultValue,\n  onChange,\n  \n  // Error handling\n  error,\n  errorEs,\n  errorEn,\n  \n  // Placeholder\n  placeholder,\n  placeholderEs,\n  placeholderEn,\n  \n  // Multi-select\n  multiple = false,\n  maxSelections,\n  \n  // Search\n  searchable = false,\n  searchPlaceholder,\n  searchPlaceholderEs,\n  searchPlaceholderEn,\n  \n  // Appearance\n  size = 'md',\n  variant = 'default',\n  \n  // Help text\n  helpText,\n  helpTextEs,\n  helpTextEn,\n  \n  // State\n  disabled = false,\n  required = false,\n  loading = false,\n  \n  // Cognitive load\n  cognitiveLoadLevel = 'medium',\n  showCognitiveWarning = true,\n  \n  // Enhanced\n  clearable = false,\n  closeOnSelect = true,\n  \n  // Styling\n  className,\n  id,\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [isOpen, setIsOpen] = useState(false)\n  const [searchTerm, setSearchTerm] = useState('')\n  const [selectedValues, setSelectedValues] = useState<string[]>(\n    Array.isArray(value) ? value :\n    Array.isArray(defaultValue) ? defaultValue :\n    value ? [value] :\n    defaultValue ? [defaultValue] :\n    []\n  )\n  \n  const containerRef = useRef<HTMLDivElement>(null)\n  const searchInputRef = useRef<HTMLInputElement>(null)\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayLabel = resolveText(labelEs, labelEn, label)\n  const displayDescription = resolveText(descriptionEs, descriptionEn, description)\n  const displayError = resolveText(errorEs, errorEn, error)\n  const displayPlaceholder = resolveText(\n    placeholderEs || 'Seleccionar opción...',\n    placeholderEn || 'Select option...',\n    placeholder\n  )\n  const displaySearchPlaceholder = resolveText(\n    searchPlaceholderEs || 'Buscar opciones...',\n    searchPlaceholderEn || 'Search options...',\n    searchPlaceholder\n  )\n  const displayHelpText = resolveText(helpTextEs, helpTextEn, helpText)\n  \n  // BIRHAUS: Miller's Law enforcement\n  const MILLER_LAW_LIMIT = 7\n  const filteredOptions = options.filter(option =>\n    searchTerm === '' || \n    option.label.toLowerCase().includes(searchTerm.toLowerCase()) ||\n    option.labelEs?.toLowerCase().includes(searchTerm.toLowerCase()) ||\n    option.labelEn?.toLowerCase().includes(searchTerm.toLowerCase())\n  )\n  \n  const visibleOptions = filteredOptions.slice(0, searchable ? filteredOptions.length : MILLER_LAW_LIMIT)\n  const hasMoreOptions = filteredOptions.length > MILLER_LAW_LIMIT\n  \n  // BIRHAUS: Cognitive load warning\n  const cognitiveLoad = options.length > MILLER_LAW_LIMIT ? 'high' : \n                       options.length > 4 ? 'medium' : 'low'\n  \n  // Handle option selection\n  const handleOptionSelect = (optionValue: string) => {\n    let newValues: string[]\n    \n    if (multiple) {\n      if (selectedValues.includes(optionValue)) {\n        newValues = selectedValues.filter(v => v !== optionValue)\n      } else {\n        if (maxSelections && selectedValues.length >= maxSelections) {\n          return // Don't allow more selections\n        }\n        newValues = [...selectedValues, optionValue]\n      }\n    } else {\n      newValues = [optionValue]\n      if (closeOnSelect) {\n        setIsOpen(false)\n      }\n    }\n    \n    setSelectedValues(newValues)\n    onChange?.(multiple ? newValues : newValues[0] || '')\n  }\n  \n  // Clear selection\n  const handleClear = () => {\n    setSelectedValues([])\n    onChange?.(multiple ? [] : '')\n  }\n  \n  // Handle outside click\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n        setIsOpen(false)\n      }\n    }\n    \n    document.addEventListener('mousedown', handleClickOutside)\n    return () => document.removeEventListener('mousedown', handleClickOutside)\n  }, [])\n  \n  // Auto-focus search when opened\n  useEffect(() => {\n    if (isOpen && searchable && searchInputRef.current) {\n      searchInputRef.current.focus()\n    }\n  }, [isOpen, searchable])\n  \n  // Get selected option labels\n  const getSelectedLabels = () => {\n    return selectedValues.map(val => {\n      const option = options.find(opt => opt.value === val)\n      return option ? (option.labelEs || option.label) : val\n    })\n  }\n  \n  const selectedLabels = getSelectedLabels()\n  const displayValue = selectedLabels.length > 0 ? selectedLabels.join(', ') : displayPlaceholder\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: 'h-8 px-3 text-sm',\n    md: 'h-10 px-4 text-sm',\n    lg: 'h-12 px-4 text-base'\n  }\n  \n  const variantClasses = {\n    default: 'border border-gray-300 bg-white',\n    filled: 'border-0 bg-gray-100',\n    minimal: 'border-0 border-b border-gray-300 bg-transparent rounded-none'\n  }\n  \n  // Error state styling\n  const hasError = !!displayError\n  const stateClasses = hasError \n    ? 'border-red-500 focus:border-red-500 focus:ring-red-500'\n    : 'focus:border-blue-500 focus:ring-blue-500'\n  \n  const triggerClasses = cn(\n    'w-full rounded-lg transition-all duration-200 flex items-center justify-between',\n    'focus:outline-none focus:ring-2 focus:ring-offset-1',\n    'disabled:cursor-not-allowed disabled:opacity-50',\n    sizeClasses[size],\n    variantClasses[variant],\n    stateClasses,\n    className\n  )\n  \n  return (\n    <div className=\"space-y-2\">\n      {/* Label and cognitive load warning */}\n      {(displayLabel || (showCognitiveWarning && cognitiveLoad === 'high')) && (\n        <div className=\"flex items-center justify-between\">\n          {displayLabel && (\n            <label \n              htmlFor={id}\n              className={cn(\n                'block text-sm font-medium text-gray-700',\n                required && \"after:content-['*'] after:ml-1 after:text-red-500\"\n              )}\n            >\n              {displayLabel}\n            </label>\n          )}\n          \n          {/* BIRHAUS: Cognitive load warning */}\n          {showCognitiveWarning && cognitiveLoad === 'high' && (\n            <div className=\"flex items-center gap-1 text-xs text-amber-600\">\n              <AlertCircle className=\"h-3 w-3\" />\n              <span>+{options.length - MILLER_LAW_LIMIT} opciones (considera agrupar)</span>\n            </div>\n          )}\n        </div>\n      )}\n      \n      {/* Description */}\n      {displayDescription && (\n        <p className=\"text-sm text-gray-600\">{displayDescription}</p>\n      )}\n      \n      {/* Select container */}\n      <div ref={containerRef} className=\"relative\">\n        <button\n          ref={ref}\n          type=\"button\"\n          onClick={() => setIsOpen(!isOpen)}\n          disabled={disabled || loading}\n          className={triggerClasses}\n          data-birhaus-component=\"select\"\n          data-cognitive-load={cognitiveLoad}\n          aria-expanded={isOpen}\n          aria-haspopup=\"listbox\"\n          id={id}\n        >\n          <span className={cn(\n            'truncate text-left',\n            selectedValues.length === 0 && 'text-gray-400'\n          )}>\n            {displayValue}\n          </span>\n          \n          <div className=\"flex items-center gap-2\">\n            {/* Clear button */}\n            {clearable && selectedValues.length > 0 && (\n              <button\n                type=\"button\"\n                onClick={(e) => {\n                  e.stopPropagation()\n                  handleClear()\n                }}\n                className=\"text-gray-400 hover:text-gray-600\"\n                aria-label=\"Limpiar selección\"\n              >\n                <X className=\"h-4 w-4\" />\n              </button>\n            )}\n            \n            {/* Loading indicator */}\n            {loading ? (\n              <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600\" />\n            ) : (\n              <ChevronDown className={cn(\n                'h-4 w-4 text-gray-400 transition-transform duration-200',\n                isOpen && 'rotate-180'\n              )} />\n            )}\n          </div>\n        </button>\n        \n        {/* Dropdown */}\n        {isOpen && (\n          <div className=\"absolute z-50 w-full mt-1 bg-white border border-gray-300 rounded-lg shadow-lg max-h-60 overflow-hidden\">\n            {/* Search input */}\n            {searchable && (\n              <div className=\"p-2 border-b border-gray-200\">\n                <div className=\"relative\">\n                  <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-gray-400\" />\n                  <input\n                    ref={searchInputRef}\n                    type=\"text\"\n                    value={searchTerm}\n                    onChange={(e) => setSearchTerm(e.target.value)}\n                    placeholder={displaySearchPlaceholder}\n                    className=\"w-full pl-9 pr-3 py-2 text-sm border border-gray-300 rounded focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500\"\n                  />\n                </div>\n              </div>\n            )}\n            \n            {/* Options list */}\n            <div className=\"max-h-48 overflow-y-auto\">\n              {visibleOptions.length === 0 ? (\n                <div className=\"p-3 text-sm text-gray-500 text-center\">\n                  {searchTerm ? 'No se encontraron opciones' : 'No hay opciones disponibles'}\n                </div>\n              ) : (\n                visibleOptions.map((option) => {\n                  const isSelected = selectedValues.includes(option.value)\n                  const optionLabel = option.labelEs || option.label\n                  const optionDescription = option.descriptionEs || option.description\n                  \n                  return (\n                    <button\n                      key={option.value}\n                      type=\"button\"\n                      onClick={() => handleOptionSelect(option.value)}\n                      disabled={option.disabled}\n                      className={cn(\n                        'w-full px-3 py-2 text-left flex items-center gap-3 hover:bg-gray-50',\n                        'focus:outline-none focus:bg-gray-50 disabled:opacity-50 disabled:cursor-not-allowed',\n                        isSelected && 'bg-blue-50 text-blue-700'\n                      )}\n                      role=\"option\"\n                      aria-selected={isSelected}\n                    >\n                      {/* Icon */}\n                      {option.icon && (\n                        <span className=\"flex-shrink-0\">{option.icon}</span>\n                      )}\n                      \n                      {/* Content */}\n                      <div className=\"flex-1 min-w-0\">\n                        <div className=\"flex items-center justify-between\">\n                          <span className=\"text-sm font-medium truncate\">{optionLabel}</span>\n                          {isSelected && <Check className=\"h-4 w-4 text-blue-600\" />}\n                        </div>\n                        {optionDescription && (\n                          <p className=\"text-xs text-gray-500 truncate\">{optionDescription}</p>\n                        )}\n                      </div>\n                    </button>\n                  )\n                })\n              )}\n              \n              {/* More options indicator */}\n              {hasMoreOptions && !searchable && (\n                <div className=\"p-2 border-t border-gray-200 bg-gray-50 text-center\">\n                  <p className=\"text-xs text-gray-600\">\n                    +{filteredOptions.length - MILLER_LAW_LIMIT} opciones más\n                  </p>\n                  <p className=\"text-xs text-gray-500\">\n                    Habilita búsqueda para ver todas\n                  </p>\n                </div>\n              )}\n            </div>\n          </div>\n        )}\n      </div>\n      \n      {/* Error message */}\n      {displayError && (\n        <div className=\"flex items-start gap-2 p-3 bg-red-50 border border-red-200 rounded-lg\">\n          <AlertCircle className=\"h-4 w-4 text-red-600 mt-0.5 flex-shrink-0\" />\n          <p className=\"text-sm text-red-800\">{displayError}</p>\n        </div>\n      )}\n      \n      {/* Help text */}\n      {displayHelpText && !displayError && (\n        <div className=\"flex items-start gap-2 text-sm text-gray-600\">\n          <Info className=\"h-4 w-4 mt-0.5 flex-shrink-0\" />\n          <p>{displayHelpText}</p>\n        </div>\n      )}\n      \n      {/* Selection summary for multi-select */}\n      {multiple && selectedValues.length > 0 && (\n        <div className=\"text-xs text-gray-600\">\n          {selectedValues.length} de {maxSelections || '∞'} seleccionado{selectedValues.length !== 1 ? 's' : ''}\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausSelect.displayName = 'BirhausSelect'\n\n// BIRHAUS: Hook for managing select state\nexport function useBirhausSelect() {\n  const [value, setValue] = useState<string | string[]>('')\n  const [isOpen, setIsOpen] = useState(false)\n  \n  const handleChange = (newValue: string | string[]) => {\n    setValue(newValue)\n  }\n  \n  const clear = () => {\n    setValue(Array.isArray(value) ? [] : '')\n  }\n  \n  return {\n    value,\n    isOpen,\n    handleChange,\n    clear,\n    setValue,\n    setIsOpen\n  }\n}\n\n// BIRHAUS: Helper to create option groups that respect Miller's Law\nexport function createBirhausOptionGroups(\n  options: BirhausSelectOption[],\n  groupBy: (option: BirhausSelectOption) => string\n): Record<string, BirhausSelectOption[]> {\n  const groups: Record<string, BirhausSelectOption[]> = {}\n  \n  options.forEach(option => {\n    const groupKey = groupBy(option)\n    if (!groups[groupKey]) {\n      groups[groupKey] = []\n    }\n    groups[groupKey].push(option)\n  })\n  \n  // Warn if any group exceeds Miller's Law\n  Object.entries(groups).forEach(([groupName, groupOptions]) => {\n    if (groupOptions.length > 7) {\n      console.warn(`BIRHAUS Miller's Law Warning: Group \"${groupName}\" has ${groupOptions.length} options (max recommended: 7)`)\n    }\n  })\n  \n  return groups\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, ReactNode, useState } from 'react'\nimport { ChevronDown, ChevronUp, MoreVertical, AlertTriangle, Info, CheckCircle2, Clock } from 'lucide-react'\n\n/**\n * BIRHAUS Card Component\n * \n * Enhanced card implementing all 10 BIRHAUS principles:\n * - Information hierarchy with progressive disclosure\n * - Spanish-first labeling and content\n * - One clear primary action per card\n * - Accessibility compliance (WCAG AA+)\n * - Cognitive load reduction through structured layout\n * - Performance optimized with lazy loading\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausCardAction {\n  id: string\n  label: string\n  labelEs?: string\n  labelEn?: string\n  icon?: ReactNode\n  onClick: () => void\n  variant?: 'primary' | 'secondary' | 'destructive'\n  disabled?: boolean\n  loading?: boolean\n}\n\nexport interface BirhausCardProps extends React.HTMLAttributes<HTMLDivElement> {\n  // BIRHAUS Principle #7: Bilingual by design\n  title?: string\n  titleEs?: string\n  titleEn?: string\n  \n  // BIRHAUS Principle #4: Progressive disclosure\n  subtitle?: string\n  subtitleEs?: string\n  subtitleEn?: string\n  \n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  \n  // Content organization\n  children?: ReactNode\n  header?: ReactNode\n  footer?: ReactNode\n  aside?: ReactNode\n  \n  // BIRHAUS Principle #3: One clear action\n  primaryAction?: BirhausCardAction\n  secondaryActions?: BirhausCardAction[] // Max 2-3 recommended\n  \n  // BIRHAUS Principle #4: Progressive disclosure\n  collapsible?: boolean\n  defaultExpanded?: boolean\n  expandedContent?: ReactNode\n  \n  // BIRHAUS Principle #2: Honest data\n  status?: 'neutral' | 'success' | 'warning' | 'error' | 'info'\n  statusMessage?: string\n  statusMessageEs?: string\n  statusMessageEn?: string\n  \n  // Visual properties\n  variant?: 'default' | 'elevated' | 'outlined' | 'minimal'\n  size?: 'sm' | 'md' | 'lg'\n  \n  // BIRHAUS Principle #8: Performance is UX\n  loading?: boolean\n  skeleton?: boolean\n  lazyLoad?: boolean\n  \n  // Enhanced functionality\n  selectable?: boolean\n  selected?: boolean\n  onSelect?: () => void\n  \n  // Badge/indicator\n  badge?: string | number\n  badgeVariant?: 'neutral' | 'success' | 'warning' | 'error'\n  \n  // Metadata\n  timestamp?: Date\n  author?: string\n  category?: string\n  \n  // Cognitive load tracking\n  informationDensity?: 'low' | 'medium' | 'high'\n  \n  // Styling\n  className?: string\n}\n\nexport const BirhausCard = forwardRef<HTMLDivElement, BirhausCardProps>(({\n  // Content (Spanish-first)\n  title,\n  titleEs,\n  titleEn,\n  subtitle,\n  subtitleEs,\n  subtitleEn,\n  description,\n  descriptionEs,\n  descriptionEn,\n  \n  // Layout\n  children,\n  header,\n  footer,\n  aside,\n  \n  // Actions\n  primaryAction,\n  secondaryActions = [],\n  \n  // Progressive disclosure\n  collapsible = false,\n  defaultExpanded = true,\n  expandedContent,\n  \n  // Status\n  status = 'neutral',\n  statusMessage,\n  statusMessageEs,\n  statusMessageEn,\n  \n  // Appearance\n  variant = 'default',\n  size = 'md',\n  \n  // State\n  loading = false,\n  skeleton = false,\n  lazyLoad = false,\n  \n  // Selection\n  selectable = false,\n  selected = false,\n  onSelect,\n  \n  // Badge\n  badge,\n  badgeVariant = 'neutral',\n  \n  // Metadata\n  timestamp,\n  author,\n  category,\n  \n  // Cognitive load\n  informationDensity = 'medium',\n  \n  // Styling\n  className,\n  ...props\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [isExpanded, setIsExpanded] = useState(defaultExpanded)\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayTitle = resolveText(titleEs, titleEn, title)\n  const displaySubtitle = resolveText(subtitleEs, subtitleEn, subtitle)\n  const displayDescription = resolveText(descriptionEs, descriptionEn, description)\n  const displayStatusMessage = resolveText(statusMessageEs, statusMessageEn, statusMessage)\n  \n  // BIRHAUS: Warn about cognitive overload\n  const actionCount = (primaryAction ? 1 : 0) + secondaryActions.length\n  if (actionCount > 4) {\n    console.warn(`BIRHAUS 4-3-1 Rule Warning: Card has ${actionCount} actions (recommended: max 4)`)\n  }\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: 'p-4',\n    md: 'p-6',\n    lg: 'p-8'\n  }\n  \n  const variantClasses = {\n    default: 'bg-white border border-gray-200 shadow-sm',\n    elevated: 'bg-white border border-gray-200 shadow-md hover:shadow-lg transition-shadow',\n    outlined: 'bg-white border-2 border-gray-300',\n    minimal: 'bg-transparent border-0'\n  }\n  \n  const statusClasses = {\n    neutral: '',\n    success: 'border-green-200 bg-green-50',\n    warning: 'border-yellow-200 bg-yellow-50',\n    error: 'border-red-200 bg-red-50',\n    info: 'border-blue-200 bg-blue-50'\n  }\n  \n  const statusIcons = {\n    neutral: null,\n    success: <CheckCircle2 className=\"h-4 w-4 text-green-600\" />,\n    warning: <AlertTriangle className=\"h-4 w-4 text-yellow-600\" />,\n    error: <AlertTriangle className=\"h-4 w-4 text-red-600\" />,\n    info: <Info className=\"h-4 w-4 text-blue-600\" />\n  }\n  \n  const badgeClasses = {\n    neutral: 'bg-gray-100 text-gray-800',\n    success: 'bg-green-100 text-green-800',\n    warning: 'bg-yellow-100 text-yellow-800',\n    error: 'bg-red-100 text-red-800'\n  }\n  \n  const densityClasses = {\n    low: 'space-y-6',\n    medium: 'space-y-4',\n    high: 'space-y-2'\n  }\n  \n  const baseClasses = cn(\n    'rounded-lg transition-all duration-200',\n    sizeClasses[size],\n    variantClasses[variant],\n    status !== 'neutral' && statusClasses[status],\n    selectable && 'cursor-pointer hover:border-blue-300',\n    selected && 'ring-2 ring-blue-500 border-blue-300',\n    informationDensity && densityClasses[informationDensity],\n    className\n  )\n  \n  // BIRHAUS: Skeleton loading state\n  if (skeleton || loading) {\n    return (\n      <div ref={ref} className={baseClasses} {...props}>\n        <div className=\"animate-pulse space-y-4\">\n          <div className=\"flex items-center justify-between\">\n            <div className=\"space-y-2\">\n              <div className=\"h-4 bg-gray-200 rounded w-3/4\"></div>\n              <div className=\"h-3 bg-gray-200 rounded w-1/2\"></div>\n            </div>\n            <div className=\"h-8 w-8 bg-gray-200 rounded\"></div>\n          </div>\n          <div className=\"space-y-2\">\n            <div className=\"h-3 bg-gray-200 rounded\"></div>\n            <div className=\"h-3 bg-gray-200 rounded w-5/6\"></div>\n          </div>\n          <div className=\"flex justify-end gap-2\">\n            <div className=\"h-8 w-16 bg-gray-200 rounded\"></div>\n            <div className=\"h-8 w-20 bg-gray-200 rounded\"></div>\n          </div>\n        </div>\n      </div>\n    )\n  }\n  \n  return (\n    <div \n      ref={ref} \n      className={baseClasses}\n      onClick={selectable ? onSelect : undefined}\n      data-birhaus-component=\"card\"\n      data-information-density={informationDensity}\n      data-selected={selected}\n      {...props}\n    >\n      {/* Custom header */}\n      {header && (\n        <div className=\"mb-4 pb-4 border-b border-gray-200\">\n          {header}\n        </div>\n      )}\n      \n      {/* Card header with title, subtitle, and actions */}\n      <div className=\"flex items-start justify-between mb-4\">\n        <div className=\"flex-1 min-w-0\">\n          {/* Badge */}\n          {badge && (\n            <div className=\"mb-2\">\n              <span className={cn(\n                'inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium',\n                badgeClasses[badgeVariant]\n              )}>\n                {badge}\n              </span>\n            </div>\n          )}\n          \n          {/* Title */}\n          {displayTitle && (\n            <h3 className=\"text-lg font-semibold text-gray-900 truncate\">\n              {displayTitle}\n            </h3>\n          )}\n          \n          {/* Subtitle */}\n          {displaySubtitle && (\n            <p className=\"text-sm text-gray-600 mt-1\">\n              {displaySubtitle}\n            </p>\n          )}\n          \n          {/* Metadata */}\n          {(timestamp || author || category) && (\n            <div className=\"flex items-center gap-2 mt-2 text-xs text-gray-500\">\n              {timestamp && (\n                <div className=\"flex items-center gap-1\">\n                  <Clock className=\"h-3 w-3\" />\n                  <span>{timestamp.toLocaleDateString('es-ES')}</span>\n                </div>\n              )}\n              {author && <span>por {author}</span>}\n              {category && (\n                <span className=\"px-2 py-0.5 bg-gray-100 rounded-full\">\n                  {category}\n                </span>\n              )}\n            </div>\n          )}\n        </div>\n        \n        {/* Actions dropdown or primary action */}\n        <div className=\"flex items-center gap-2 ml-4\">\n          {/* BIRHAUS Principle #3: One clear primary action */}\n          {primaryAction && (\n            <button\n              onClick={primaryAction.onClick}\n              disabled={primaryAction.disabled || primaryAction.loading}\n              className={cn(\n                'inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium rounded-md transition-colors',\n                'focus:outline-none focus:ring-2 focus:ring-offset-2',\n                'disabled:pointer-events-none disabled:opacity-50',\n                primaryAction.variant === 'primary' && 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n                primaryAction.variant === 'destructive' && 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500',\n                (!primaryAction.variant || primaryAction.variant === 'secondary') && 'bg-gray-100 text-gray-700 hover:bg-gray-200 focus:ring-gray-500'\n              )}\n            >\n              {primaryAction.loading ? (\n                <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-current\" />\n              ) : primaryAction.icon}\n              {primaryAction.labelEs || primaryAction.label}\n            </button>\n          )}\n          \n          {/* Secondary actions */}\n          {secondaryActions.length > 0 && (\n            <div className=\"relative\">\n              <button\n                className=\"p-1 text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-500 rounded\"\n                aria-label=\"Más acciones\"\n              >\n                <MoreVertical className=\"h-4 w-4\" />\n              </button>\n            </div>\n          )}\n          \n          {/* Collapsible toggle */}\n          {collapsible && (\n            <button\n              onClick={() => setIsExpanded(!isExpanded)}\n              className=\"p-1 text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-500 rounded\"\n              aria-label={isExpanded ? 'Contraer' : 'Expandir'}\n            >\n              {isExpanded ? (\n                <ChevronUp className=\"h-4 w-4\" />\n              ) : (\n                <ChevronDown className=\"h-4 w-4\" />\n              )}\n            </button>\n          )}\n        </div>\n      </div>\n      \n      {/* Status message */}\n      {displayStatusMessage && (\n        <div className={cn(\n          'flex items-center gap-2 p-3 rounded-lg mb-4 text-sm',\n          status === 'success' && 'bg-green-100 text-green-800',\n          status === 'warning' && 'bg-yellow-100 text-yellow-800',\n          status === 'error' && 'bg-red-100 text-red-800',\n          status === 'info' && 'bg-blue-100 text-blue-800'\n        )}>\n          {statusIcons[status]}\n          <span>{displayStatusMessage}</span>\n        </div>\n      )}\n      \n      {/* Description */}\n      {displayDescription && (\n        <p className=\"text-gray-600 text-sm mb-4\">\n          {displayDescription}\n        </p>\n      )}\n      \n      {/* Aside content */}\n      {aside && (\n        <div className=\"mb-4 p-3 bg-gray-50 rounded-lg\">\n          {aside}\n        </div>\n      )}\n      \n      {/* Main content */}\n      {children && (\n        <div className=\"mb-4\">\n          {children}\n        </div>\n      )}\n      \n      {/* Expanded content (progressive disclosure) */}\n      {collapsible && expandedContent && isExpanded && (\n        <div className=\"border-t border-gray-200 pt-4 mt-4\">\n          {expandedContent}\n        </div>\n      )}\n      \n      {/* Custom footer */}\n      {footer && (\n        <div className=\"mt-4 pt-4 border-t border-gray-200\">\n          {footer}\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausCard.displayName = 'BirhausCard'\n\n// BIRHAUS: Hook for managing card state\nexport function useBirhausCard() {\n  const [expanded, setExpanded] = useState(false)\n  const [selected, setSelected] = useState(false)\n  const [loading, setLoading] = useState(false)\n  \n  const toggleExpanded = () => setExpanded(prev => !prev)\n  const toggleSelected = () => setSelected(prev => !prev)\n  \n  return {\n    expanded,\n    selected,\n    loading,\n    setExpanded,\n    setSelected,\n    setLoading,\n    toggleExpanded,\n    toggleSelected\n  }\n}\n\n// BIRHAUS: Helper to create card actions with Spanish-first labels\nexport function createBirhausCardAction(\n  id: string,\n  labelEs: string,\n  onClick: () => void,\n  options?: {\n    labelEn?: string\n    icon?: ReactNode\n    variant?: 'primary' | 'secondary' | 'destructive'\n    disabled?: boolean\n  }\n): BirhausCardAction {\n  return {\n    id,\n    label: labelEs,\n    labelEs,\n    labelEn: options?.labelEn,\n    onClick,\n    icon: options?.icon,\n    variant: options?.variant || 'secondary',\n    disabled: options?.disabled || false,\n    loading: false\n  }\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, ReactNode, useState, useEffect } from 'react'\nimport { X, AlertTriangle, Info, CheckCircle2, Undo2 } from 'lucide-react'\n\n/**\n * BIRHAUS Dialog Component\n * \n * Anti-confirmation dialog implementing BIRHAUS Principle #5: Undo over confirm\n * \n * Instead of asking \"Are you sure?\", this dialog:\n * - Performs the action immediately\n * - Shows undo option with clear feedback\n * - Reduces cognitive load through direct action\n * - Provides Spanish-first messaging\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausDialogAction {\n  id: string\n  label: string\n  labelEs?: string\n  labelEn?: string\n  onClick: () => void | Promise<void>\n  variant?: 'primary' | 'secondary' | 'destructive'\n  disabled?: boolean\n  loading?: boolean\n  icon?: ReactNode\n}\n\nexport interface BirhausUndoConfig {\n  enabled: boolean\n  timeoutMs?: number\n  undoAction: () => void | Promise<void>\n  messageEs?: string\n  messageEn?: string\n  labelEs?: string\n  labelEn?: string\n}\n\nexport interface BirhausDialogProps {\n  // Visibility control\n  open?: boolean\n  onOpenChange?: (open: boolean) => void\n  \n  // BIRHAUS Principle #7: Bilingual by design\n  title?: string\n  titleEs?: string\n  titleEn?: string\n  \n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  \n  // Content\n  children?: ReactNode\n  \n  // BIRHAUS Principle #5: Undo over confirm\n  undoConfig?: BirhausUndoConfig\n  \n  // Dialog variants\n  variant?: 'default' | 'success' | 'warning' | 'error' | 'info'\n  \n  // Actions (following 4-3-1 rule)\n  primaryAction?: BirhausDialogAction\n  secondaryActions?: BirhausDialogAction[] // Max 2-3 recommended\n  \n  // Layout options\n  size?: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n  position?: 'center' | 'top' | 'bottom'\n  \n  // Behavior\n  closeOnOverlayClick?: boolean\n  closeOnEscape?: boolean\n  persistent?: boolean\n  \n  // Accessibility\n  role?: 'dialog' | 'alertdialog'\n  ariaLabelledBy?: string\n  ariaDescribedBy?: string\n  \n  // Styling\n  className?: string\n  overlayClassName?: string\n}\n\nexport const BirhausDialog = forwardRef<HTMLDivElement, BirhausDialogProps>(({\n  // Visibility\n  open = false,\n  onOpenChange,\n  \n  // Content (Spanish-first)\n  title,\n  titleEs,\n  titleEn,\n  description,\n  descriptionEs,\n  descriptionEn,\n  children,\n  \n  // Undo functionality\n  undoConfig,\n  \n  // Appearance\n  variant = 'default',\n  size = 'md',\n  position = 'center',\n  \n  // Behavior\n  closeOnOverlayClick = true,\n  closeOnEscape = true,\n  persistent = false,\n  \n  // Actions\n  primaryAction,\n  secondaryActions = [],\n  \n  // Accessibility\n  role = 'dialog',\n  ariaLabelledBy,\n  ariaDescribedBy,\n  \n  // Styling\n  className,\n  overlayClassName\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [isUndoActive, setIsUndoActive] = useState(false)\n  const [undoTimeRemaining, setUndoTimeRemaining] = useState(0)\n  const [isUndoing, setIsUndoing] = useState(false)\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayTitle = resolveText(titleEs, titleEn, title)\n  const displayDescription = resolveText(descriptionEs, descriptionEn, description)\n  \n  // BIRHAUS: Undo countdown effect\n  useEffect(() => {\n    if (!isUndoActive || !undoConfig?.enabled) return\n    \n    const timeout = undoConfig.timeoutMs || 10000 // 10 seconds default\n    setUndoTimeRemaining(timeout)\n    \n    const interval = setInterval(() => {\n      setUndoTimeRemaining(prev => {\n        if (prev <= 1000) {\n          setIsUndoActive(false)\n          clearInterval(interval)\n          return 0\n        }\n        return prev - 1000\n      })\n    }, 1000)\n    \n    return () => clearInterval(interval)\n  }, [isUndoActive, undoConfig?.enabled, undoConfig?.timeoutMs])\n  \n  // BIRHAUS: Keyboard handling\n  useEffect(() => {\n    if (!open) return\n    \n    const handleKeyDown = (event: KeyboardEvent) => {\n      if (event.key === 'Escape' && closeOnEscape && !persistent) {\n        onOpenChange?.(false)\n      }\n    }\n    \n    document.addEventListener('keydown', handleKeyDown)\n    return () => document.removeEventListener('keydown', handleKeyDown)\n  }, [open, closeOnEscape, persistent, onOpenChange])\n  \n  // BIRHAUS: Handle undo action\n  const handleUndo = async () => {\n    if (!undoConfig?.undoAction) return\n    \n    setIsUndoing(true)\n    try {\n      await undoConfig.undoAction()\n      setIsUndoActive(false)\n      onOpenChange?.(false)\n    } catch (error) {\n      console.error('BIRHAUS Dialog: Undo action failed:', error)\n    } finally {\n      setIsUndoing(false)\n    }\n  }\n  \n  // BIRHAUS: Enhanced action handler with undo support\n  const handleAction = async (action: BirhausDialogAction) => {\n    if (action.disabled || action.loading) return\n    \n    try {\n      await action.onClick()\n      \n      // If this is a destructive action and undo is configured, show undo option\n      if (action.variant === 'destructive' && undoConfig?.enabled) {\n        setIsUndoActive(true)\n      } else {\n        onOpenChange?.(false)\n      }\n    } catch (error) {\n      console.error('BIRHAUS Dialog: Action failed:', error)\n    }\n  }\n  \n  // BIRHAUS: Warn about cognitive overload\n  const actionCount = (primaryAction ? 1 : 0) + secondaryActions.length\n  if (actionCount > 4) {\n    console.warn(`BIRHAUS 4-3-1 Rule Warning: Dialog has ${actionCount} actions (recommended: max 4)`)\n  }\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: 'max-w-sm',\n    md: 'max-w-md',\n    lg: 'max-w-lg',\n    xl: 'max-w-xl',\n    full: 'max-w-full mx-4'\n  }\n  \n  const positionClasses = {\n    center: 'items-center justify-center',\n    top: 'items-start justify-center pt-16',\n    bottom: 'items-end justify-center pb-16'\n  }\n  \n  const variantStyles = {\n    default: {\n      icon: null,\n      headerBg: 'bg-gray-50',\n      borderColor: 'border-gray-200'\n    },\n    success: {\n      icon: <CheckCircle2 className=\"h-5 w-5 text-green-600\" />,\n      headerBg: 'bg-green-50',\n      borderColor: 'border-green-200'\n    },\n    warning: {\n      icon: <AlertTriangle className=\"h-5 w-5 text-yellow-600\" />,\n      headerBg: 'bg-yellow-50',\n      borderColor: 'border-yellow-200'\n    },\n    error: {\n      icon: <AlertTriangle className=\"h-5 w-5 text-red-600\" />,\n      headerBg: 'bg-red-50',\n      borderColor: 'border-red-200'\n    },\n    info: {\n      icon: <Info className=\"h-5 w-5 text-blue-600\" />,\n      headerBg: 'bg-blue-50',\n      borderColor: 'border-blue-200'\n    }\n  }\n  \n  const currentVariant = variantStyles[variant]\n  \n  if (!open) return null\n  \n  // BIRHAUS: Undo overlay (Principle #5: Undo over confirm)\n  if (isUndoActive && undoConfig?.enabled) {\n    const undoMessage = resolveText(\n      undoConfig.messageEs, \n      undoConfig.messageEn, \n      'Acción completada. Presiona deshacer si fue un error.'\n    )\n    const undoLabel = resolveText(\n      undoConfig.labelEs,\n      undoConfig.labelEn,\n      'Deshacer'\n    )\n    \n    return (\n      <div className=\"fixed inset-0 z-50 bg-black/50 flex items-center justify-center p-4\">\n        <div \n          ref={ref}\n          className={cn(\n            'bg-white rounded-lg shadow-lg border-2 border-green-200 p-6 max-w-md w-full',\n            className\n          )}\n          role=\"alertdialog\"\n          aria-labelledby=\"undo-title\"\n          aria-describedby=\"undo-description\"\n        >\n          <div className=\"flex items-start gap-4\">\n            <div className=\"flex-shrink-0\">\n              <CheckCircle2 className=\"h-6 w-6 text-green-600\" />\n            </div>\n            \n            <div className=\"flex-1 min-w-0\">\n              <h3 id=\"undo-title\" className=\"text-lg font-semibold text-gray-900 mb-2\">\n                ¡Acción completada!\n              </h3>\n              \n              <p id=\"undo-description\" className=\"text-sm text-gray-600 mb-4\">\n                {undoMessage}\n              </p>\n              \n              <div className=\"flex items-center justify-between\">\n                <button\n                  onClick={handleUndo}\n                  disabled={isUndoing}\n                  className={cn(\n                    'inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md',\n                    'bg-red-600 text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-red-500',\n                    'disabled:pointer-events-none disabled:opacity-50'\n                  )}\n                >\n                  {isUndoing ? (\n                    <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-white\" />\n                  ) : (\n                    <Undo2 className=\"h-4 w-4\" />\n                  )}\n                  {isUndoing ? 'Deshaciendo...' : undoLabel}\n                </button>\n                \n                <div className=\"text-sm text-gray-500\">\n                  Auto-cierre en {Math.ceil(undoTimeRemaining / 1000)}s\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    )\n  }\n  \n  return (\n    <div \n      className={cn(\n        'fixed inset-0 z-50 bg-black/50 flex',\n        positionClasses[position],\n        overlayClassName\n      )}\n      onClick={closeOnOverlayClick ? () => onOpenChange?.(false) : undefined}\n    >\n      <div \n        ref={ref}\n        className={cn(\n          'bg-white rounded-lg shadow-xl border',\n          sizeClasses[size],\n          currentVariant.borderColor,\n          'w-full overflow-hidden',\n          className\n        )}\n        onClick={(e) => e.stopPropagation()}\n        role={role}\n        aria-labelledby={ariaLabelledBy || 'dialog-title'}\n        aria-describedby={ariaDescribedBy || 'dialog-description'}\n        data-birhaus-component=\"dialog\"\n        data-variant={variant}\n      >\n        {/* Header */}\n        {(displayTitle || currentVariant.icon) && (\n          <div className={cn(\n            'px-6 py-4 border-b border-gray-200',\n            currentVariant.headerBg\n          )}>\n            <div className=\"flex items-center justify-between\">\n              <div className=\"flex items-center gap-3\">\n                {currentVariant.icon}\n                {displayTitle && (\n                  <h2 \n                    id={ariaLabelledBy || 'dialog-title'}\n                    className=\"text-lg font-semibold text-gray-900\"\n                  >\n                    {displayTitle}\n                  </h2>\n                )}\n              </div>\n              \n              {!persistent && (\n                <button\n                  onClick={() => onOpenChange?.(false)}\n                  className=\"text-gray-400 hover:text-gray-600 focus:outline-none focus:ring-2 focus:ring-gray-500 rounded p-1\"\n                  aria-label=\"Cerrar diálogo\"\n                >\n                  <X className=\"h-5 w-5\" />\n                </button>\n              )}\n            </div>\n          </div>\n        )}\n        \n        {/* Content */}\n        <div className=\"px-6 py-4\">\n          {displayDescription && (\n            <p \n              id={ariaDescribedBy || 'dialog-description'}\n              className=\"text-gray-600 mb-4\"\n            >\n              {displayDescription}\n            </p>\n          )}\n          \n          {children}\n        </div>\n        \n        {/* Actions */}\n        {(primaryAction || secondaryActions.length > 0) && (\n          <div className=\"px-6 py-4 bg-gray-50 border-t border-gray-200\">\n            <div className=\"flex items-center justify-end gap-3\">\n              {/* BIRHAUS Principle #3: One clear primary action */}\n              {secondaryActions.map((action) => (\n                <button\n                  key={action.id}\n                  onClick={() => handleAction(action)}\n                  disabled={action.disabled || action.loading}\n                  className={cn(\n                    'inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md',\n                    'border border-gray-300 bg-white text-gray-700 hover:bg-gray-50',\n                    'focus:outline-none focus:ring-2 focus:ring-gray-500',\n                    'disabled:pointer-events-none disabled:opacity-50'\n                  )}\n                >\n                  {action.loading ? (\n                    <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-current\" />\n                  ) : action.icon}\n                  {action.labelEs || action.label}\n                </button>\n              ))}\n              \n              {primaryAction && (\n                <button\n                  onClick={() => handleAction(primaryAction)}\n                  disabled={primaryAction.disabled || primaryAction.loading}\n                  className={cn(\n                    'inline-flex items-center gap-2 px-4 py-2 text-sm font-medium rounded-md',\n                    'focus:outline-none focus:ring-2 focus:ring-offset-2',\n                    'disabled:pointer-events-none disabled:opacity-50',\n                    primaryAction.variant === 'primary' && 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n                    primaryAction.variant === 'destructive' && 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500',\n                    (!primaryAction.variant || primaryAction.variant === 'secondary') && 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500'\n                  )}\n                >\n                  {primaryAction.loading ? (\n                    <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-current\" />\n                  ) : primaryAction.icon}\n                  {primaryAction.labelEs || primaryAction.label}\n                </button>\n              )}\n            </div>\n          </div>\n        )}\n      </div>\n    </div>\n  )\n})\n\nBirhausDialog.displayName = 'BirhausDialog'\n\n// BIRHAUS: Hook for managing dialog state with undo support\nexport function useBirhausDialog() {\n  const [open, setOpen] = useState(false)\n  const [undoActive, setUndoActive] = useState(false)\n  \n  const openDialog = () => setOpen(true)\n  const closeDialog = () => setOpen(false)\n  const activateUndo = () => setUndoActive(true)\n  const deactivateUndo = () => setUndoActive(false)\n  \n  return {\n    open,\n    undoActive,\n    openDialog,\n    closeDialog,\n    activateUndo,\n    deactivateUndo,\n    setOpen\n  }\n}\n\n// BIRHAUS: Helper to create dialog actions with Spanish-first labels\nexport function createBirhausDialogAction(\n  id: string,\n  labelEs: string,\n  onClick: () => void | Promise<void>,\n  options?: {\n    labelEn?: string\n    icon?: ReactNode\n    variant?: 'primary' | 'secondary' | 'destructive'\n    disabled?: boolean\n  }\n): BirhausDialogAction {\n  return {\n    id,\n    label: labelEs,\n    labelEs,\n    labelEn: options?.labelEn,\n    onClick,\n    icon: options?.icon,\n    variant: options?.variant || 'secondary',\n    disabled: options?.disabled || false,\n    loading: false\n  }\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, ReactNode, useState, useMemo } from 'react'\nimport { ChevronUp, ChevronDown, Search, Filter, MoreHorizontal, AlertTriangle } from 'lucide-react'\n\n/**\n * BIRHAUS Table Component\n * \n * Enhanced table implementing BIRHAUS Principle #1: Miller's Law (7±2)\n * \n * Features:\n * - Maximum 7 visible columns (cognitive load optimization)\n * - Progressive disclosure for additional columns\n * - Spanish-first labeling for financial data\n * - Sortable and filterable with cognitive load warnings\n * - Accessibility-first design (WCAG AA+)\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausTableColumn<T = any> {\n  id: string\n  header: string\n  headerEs?: string\n  headerEn?: string\n  accessor: keyof T | ((item: T) => any)\n  \n  // Column behavior\n  sortable?: boolean\n  filterable?: boolean\n  searchable?: boolean\n  \n  // Formatting\n  cell?: (value: any, item: T) => ReactNode\n  width?: string | number\n  align?: 'left' | 'center' | 'right'\n  \n  // Financial formatting\n  isCurrency?: boolean\n  isPercentage?: boolean\n  isDate?: boolean\n  \n  // Visibility (for progressive disclosure)\n  priority?: 'high' | 'medium' | 'low'\n  hideOnMobile?: boolean\n  \n  // Cognitive load hints\n  cognitiveWeight?: number // 1-10 scale\n}\n\nexport interface BirhausTableProps<T = any> {\n  // Data\n  data: T[]\n  columns: BirhausTableColumn<T>[]\n  \n  // BIRHAUS Principle #7: Bilingual by design\n  emptyMessage?: string\n  emptyMessageEs?: string\n  emptyMessageEn?: string\n  \n  loadingMessage?: string\n  loadingMessageEs?: string\n  loadingMessageEn?: string\n  \n  // Miller's Law enforcement\n  maxVisibleColumns?: number\n  showCognitiveWarning?: boolean\n  \n  // Functionality\n  sortable?: boolean\n  filterable?: boolean\n  searchable?: boolean\n  selectable?: boolean\n  \n  // State\n  loading?: boolean\n  selectedRows?: Set<string | number>\n  onRowSelect?: (id: string | number, selected: boolean) => void\n  onRowsSelect?: (ids: (string | number)[], selected: boolean) => void\n  \n  // Pagination\n  pagination?: {\n    page: number\n    pageSize: number\n    total: number\n    onPageChange: (page: number) => void\n    onPageSizeChange: (size: number) => void\n  }\n  \n  // Sorting\n  sortConfig?: {\n    key: string\n    direction: 'asc' | 'desc'\n  }\n  onSort?: (key: string, direction: 'asc' | 'desc') => void\n  \n  // Filtering\n  filters?: Record<string, any>\n  onFilter?: (filters: Record<string, any>) => void\n  \n  // Search\n  searchValue?: string\n  onSearch?: (value: string) => void\n  \n  // Row identification\n  getRowId?: (item: T, index: number) => string | number\n  \n  // Actions\n  rowActions?: Array<{\n    id: string\n    label: string\n    labelEs?: string\n    labelEn?: string\n    icon?: ReactNode\n    onClick: (item: T) => void\n    variant?: 'primary' | 'secondary' | 'destructive'\n    disabled?: (item: T) => boolean\n  }>\n  \n  // Styling\n  variant?: 'default' | 'striped' | 'bordered' | 'minimal'\n  size?: 'sm' | 'md' | 'lg'\n  className?: string\n}\n\nexport const BirhausTable = forwardRef<HTMLTableElement, BirhausTableProps>(({\n  // Data\n  data,\n  columns,\n  \n  // Messages (Spanish-first)\n  emptyMessage,\n  emptyMessageEs,\n  emptyMessageEn,\n  loadingMessage,\n  loadingMessageEs,\n  loadingMessageEn,\n  \n  // Miller's Law settings\n  maxVisibleColumns = 7,\n  showCognitiveWarning = true,\n  \n  // Functionality\n  sortable = true,\n  filterable = false,\n  searchable = false,\n  selectable = false,\n  \n  // State\n  loading = false,\n  selectedRows = new Set(),\n  onRowSelect,\n  onRowsSelect,\n  \n  // Pagination\n  pagination,\n  \n  // Sorting\n  sortConfig,\n  onSort,\n  \n  // Filtering  \n  filters = {},\n  onFilter,\n  \n  // Search\n  searchValue = '',\n  onSearch,\n  \n  // Row ID\n  getRowId = (item, index) => index,\n  \n  // Actions\n  rowActions = [],\n  \n  // Styling\n  variant = 'default',\n  size = 'md',\n  className\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [hiddenColumns, setHiddenColumns] = useState<Set<string>>(new Set())\n  const [searchTerm, setSearchTerm] = useState(searchValue)\n  const [localSortConfig, setLocalSortConfig] = useState(sortConfig)\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayEmptyMessage = resolveText(\n    emptyMessageEs, \n    emptyMessageEn, \n    emptyMessage || 'No hay datos disponibles'\n  )\n  \n  const displayLoadingMessage = resolveText(\n    loadingMessageEs,\n    loadingMessageEn,\n    loadingMessage || 'Cargando datos...'\n  )\n  \n  // BIRHAUS: Calculate cognitive load and visible columns\n  const { visibleColumns, hiddenColumnCount, cognitiveLoad } = useMemo(() => {\n    const priorityOrder = { high: 1, medium: 2, low: 3 }\n    \n    // Sort columns by priority and cognitive weight\n    const sortedColumns = [...columns].sort((a, b) => {\n      const aPriority = priorityOrder[a.priority || 'medium']\n      const bPriority = priorityOrder[b.priority || 'medium']\n      if (aPriority !== bPriority) return aPriority - bPriority\n      \n      const aWeight = a.cognitiveWeight || 5\n      const bWeight = b.cognitiveWeight || 5\n      return aWeight - bWeight\n    })\n    \n    const visible = sortedColumns\n      .filter(col => !hiddenColumns.has(col.id))\n      .slice(0, maxVisibleColumns)\n    \n    const hidden = sortedColumns.length - visible.length\n    const totalCognitiveWeight = visible.reduce((sum, col) => sum + (col.cognitiveWeight || 5), 0)\n    const avgCognitiveWeight = totalCognitiveWeight / visible.length\n    \n    const load = visible.length > 7 ? 'high' : \n                 visible.length > 5 ? 'medium' : 'low'\n    \n    return {\n      visibleColumns: visible,\n      hiddenColumnCount: hidden,\n      cognitiveLoad: load,\n      avgCognitiveWeight\n    }\n  }, [columns, hiddenColumns, maxVisibleColumns])\n  \n  // BIRHAUS: Warn about cognitive overload\n  if (showCognitiveWarning && visibleColumns.length > 7) {\n    console.warn(`BIRHAUS Miller's Law Warning: Table shows ${visibleColumns.length} columns (recommended: max 7)`)\n  }\n  \n  // BIRHAUS: Handle sorting\n  const handleSort = (columnId: string) => {\n    const column = columns.find(col => col.id === columnId)\n    if (!column?.sortable) return\n    \n    const direction: 'asc' | 'desc' = localSortConfig?.key === columnId && localSortConfig.direction === 'asc' \n      ? 'desc' : 'asc'\n    \n    const newSortConfig = { key: columnId, direction }\n    setLocalSortConfig(newSortConfig)\n    onSort?.(columnId, direction)\n  }\n  \n  // BIRHAUS: Handle row selection\n  const handleRowSelect = (rowId: string | number, selected: boolean) => {\n    onRowSelect?.(rowId, selected)\n  }\n  \n  const handleSelectAll = (selected: boolean) => {\n    const allIds = data.map((item, index) => getRowId(item, index))\n    onRowsSelect?.(allIds, selected)\n  }\n  \n  // BIRHAUS: Get cell value\n  const getCellValue = (item: any, column: BirhausTableColumn) => {\n    if (typeof column.accessor === 'function') {\n      return column.accessor(item)\n    }\n    return item[column.accessor]\n  }\n  \n  // BIRHAUS: Format cell value\n  const formatCellValue = (value: any, column: BirhausTableColumn, item: any) => {\n    if (column.cell) {\n      return column.cell(value, item)\n    }\n    \n    if (column.isCurrency && typeof value === 'number') {\n      return new Intl.NumberFormat('es-PY', {\n        style: 'currency',\n        currency: 'PYG',\n        minimumFractionDigits: 0\n      }).format(value)\n    }\n    \n    if (column.isPercentage && typeof value === 'number') {\n      return `${(value * 100).toFixed(1)}%`\n    }\n    \n    if (column.isDate && value) {\n      return new Date(value).toLocaleDateString('es-ES')\n    }\n    \n    return value?.toString() || ''\n  }\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: 'text-xs',\n    md: 'text-sm',\n    lg: 'text-base'\n  }\n  \n  const variantClasses = {\n    default: 'border border-gray-200',\n    striped: 'border border-gray-200',\n    bordered: 'border-2 border-gray-300',\n    minimal: 'border-0'\n  }\n  \n  if (loading) {\n    return (\n      <div className=\"w-full\">\n        <div className=\"animate-pulse space-y-4\">\n          <div className=\"h-10 bg-gray-200 rounded\"></div>\n          {[...Array(5)].map((_, i) => (\n            <div key={i} className=\"h-8 bg-gray-100 rounded\"></div>\n          ))}\n        </div>\n        <p className=\"text-center text-gray-500 mt-4\">{displayLoadingMessage}</p>\n      </div>\n    )\n  }\n  \n  if (data.length === 0) {\n    return (\n      <div className=\"w-full text-center py-12\">\n        <p className=\"text-gray-500 text-lg\">{displayEmptyMessage}</p>\n      </div>\n    )\n  }\n  \n  return (\n    <div className=\"w-full space-y-4\">\n      {/* BIRHAUS: Cognitive load warning */}\n      {showCognitiveWarning && cognitiveLoad === 'high' && (\n        <div className=\"flex items-center gap-2 p-3 bg-yellow-50 border border-yellow-200 rounded-lg\">\n          <AlertTriangle className=\"h-4 w-4 text-yellow-600\" />\n          <span className=\"text-sm text-yellow-800\">\n            Mostrando {visibleColumns.length} columnas (máximo recomendado: 7). \n            {hiddenColumnCount > 0 && ` ${hiddenColumnCount} columnas ocultas.`}\n          </span>\n        </div>\n      )}\n      \n      {/* Table controls */}\n      {(searchable || filterable || hiddenColumnCount > 0) && (\n        <div className=\"flex items-center justify-between gap-4\">\n          {/* Search */}\n          {searchable && (\n            <div className=\"relative flex-1 max-w-sm\">\n              <Search className=\"absolute left-3 top-1/2 transform -translate-y-1/2 h-4 w-4 text-gray-400\" />\n              <input\n                type=\"text\"\n                value={searchTerm}\n                onChange={(e) => {\n                  setSearchTerm(e.target.value)\n                  onSearch?.(e.target.value)\n                }}\n                placeholder=\"Buscar...\"\n                className=\"w-full pl-10 pr-4 py-2 border border-gray-300 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500\"\n              />\n            </div>\n          )}\n          \n          {/* Column visibility toggle */}\n          {hiddenColumnCount > 0 && (\n            <button\n              onClick={() => setHiddenColumns(new Set())}\n              className=\"inline-flex items-center gap-2 px-3 py-2 text-sm border border-gray-300 rounded-lg hover:bg-gray-50\"\n            >\n              <MoreHorizontal className=\"h-4 w-4\" />\n              Mostrar {hiddenColumnCount} columnas más\n            </button>\n          )}\n        </div>\n      )}\n      \n      {/* Table */}\n      <div className=\"overflow-x-auto rounded-lg border border-gray-200\">\n        <table \n          ref={ref}\n          className={cn(\n            'w-full table-auto',\n            sizeClasses[size],\n            variantClasses[variant],\n            className\n          )}\n          data-birhaus-component=\"table\"\n          data-cognitive-load={cognitiveLoad}\n          data-visible-columns={visibleColumns.length}\n        >\n          {/* Header */}\n          <thead className=\"bg-gray-50\">\n            <tr>\n              {selectable && (\n                <th className=\"px-4 py-3 text-left\">\n                  <input\n                    type=\"checkbox\"\n                    onChange={(e) => handleSelectAll(e.target.checked)}\n                    className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n                  />\n                </th>\n              )}\n              \n              {visibleColumns.map((column) => (\n                <th\n                  key={column.id}\n                  className={cn(\n                    'px-4 py-3 font-medium text-gray-900',\n                    column.align === 'center' && 'text-center',\n                    column.align === 'right' && 'text-right',\n                    column.sortable && 'cursor-pointer hover:bg-gray-100'\n                  )}\n                  style={{ width: column.width }}\n                  onClick={() => column.sortable && handleSort(column.id)}\n                >\n                  <div className=\"flex items-center gap-2\">\n                    <span>{column.headerEs || column.header}</span>\n                    {column.sortable && localSortConfig?.key === column.id && (\n                      localSortConfig.direction === 'asc' ? (\n                        <ChevronUp className=\"h-4 w-4\" />\n                      ) : (\n                        <ChevronDown className=\"h-4 w-4\" />\n                      )\n                    )}\n                  </div>\n                </th>\n              ))}\n              \n              {rowActions.length > 0 && (\n                <th className=\"px-4 py-3 text-right font-medium text-gray-900\">\n                  Acciones\n                </th>\n              )}\n            </tr>\n          </thead>\n          \n          {/* Body */}\n          <tbody className=\"divide-y divide-gray-200\">\n            {data.map((item, index) => {\n              const rowId = getRowId(item, index)\n              const isSelected = selectedRows.has(rowId)\n              \n              return (\n                <tr\n                  key={rowId}\n                  className={cn(\n                    'hover:bg-gray-50',\n                    variant === 'striped' && index % 2 === 1 && 'bg-gray-50',\n                    isSelected && 'bg-blue-50'\n                  )}\n                >\n                  {selectable && (\n                    <td className=\"px-4 py-3\">\n                      <input\n                        type=\"checkbox\"\n                        checked={isSelected}\n                        onChange={(e) => handleRowSelect(rowId, e.target.checked)}\n                        className=\"rounded border-gray-300 text-blue-600 focus:ring-blue-500\"\n                      />\n                    </td>\n                  )}\n                  \n                  {visibleColumns.map((column) => {\n                    const value = getCellValue(item, column)\n                    const formattedValue = formatCellValue(value, column, item)\n                    \n                    return (\n                      <td\n                        key={column.id}\n                        className={cn(\n                          'px-4 py-3 text-gray-900',\n                          column.align === 'center' && 'text-center',\n                          column.align === 'right' && 'text-right',\n                          column.isCurrency && 'font-mono'\n                        )}\n                      >\n                        {formattedValue}\n                      </td>\n                    )\n                  })}\n                  \n                  {rowActions.length > 0 && (\n                    <td className=\"px-4 py-3 text-right\">\n                      <div className=\"flex items-center justify-end gap-2\">\n                        {rowActions.map((action) => (\n                          <button\n                            key={action.id}\n                            onClick={() => action.onClick(item)}\n                            disabled={action.disabled?.(item)}\n                            className={cn(\n                              'inline-flex items-center gap-1 px-2 py-1 text-xs font-medium rounded',\n                              'focus:outline-none focus:ring-2 focus:ring-offset-1',\n                              'disabled:pointer-events-none disabled:opacity-50',\n                              action.variant === 'primary' && 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n                              action.variant === 'destructive' && 'bg-red-600 text-white hover:bg-red-700 focus:ring-red-500',\n                              (!action.variant || action.variant === 'secondary') && 'bg-gray-100 text-gray-700 hover:bg-gray-200 focus:ring-gray-500'\n                            )}\n                          >\n                            {action.icon}\n                            {action.labelEs || action.label}\n                          </button>\n                        ))}\n                      </div>\n                    </td>\n                  )}\n                </tr>\n              )\n            })}\n          </tbody>\n        </table>\n      </div>\n      \n      {/* Pagination */}\n      {pagination && (\n        <div className=\"flex items-center justify-between\">\n          <div className=\"text-sm text-gray-700\">\n            Mostrando {((pagination.page - 1) * pagination.pageSize) + 1} a{' '}\n            {Math.min(pagination.page * pagination.pageSize, pagination.total)} de{' '}\n            {pagination.total} resultados\n          </div>\n          \n          <div className=\"flex items-center gap-2\">\n            <button\n              onClick={() => pagination.onPageChange(pagination.page - 1)}\n              disabled={pagination.page === 1}\n              className=\"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50\"\n            >\n              Anterior\n            </button>\n            \n            <span className=\"px-3 py-1 text-sm\">\n              {pagination.page}\n            </span>\n            \n            <button\n              onClick={() => pagination.onPageChange(pagination.page + 1)}\n              disabled={pagination.page * pagination.pageSize >= pagination.total}\n              className=\"px-3 py-1 text-sm border border-gray-300 rounded hover:bg-gray-50 disabled:opacity-50\"\n            >\n              Siguiente\n            </button>\n          </div>\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausTable.displayName = 'BirhausTable'\n\n// BIRHAUS: Hook for managing table state\nexport function useBirhausTable<T>(initialData: T[] = []) {\n  const [data, setData] = useState<T[]>(initialData)\n  const [selectedRows, setSelectedRows] = useState<Set<string | number>>(new Set())\n  const [sortConfig, setSortConfig] = useState<{ key: string; direction: 'asc' | 'desc' } | undefined>()\n  const [filters, setFilters] = useState<Record<string, any>>({})\n  const [searchValue, setSearchValue] = useState('')\n  \n  const handleRowSelect = (id: string | number, selected: boolean) => {\n    const newSelected = new Set(selectedRows)\n    if (selected) {\n      newSelected.add(id)\n    } else {\n      newSelected.delete(id)\n    }\n    setSelectedRows(newSelected)\n  }\n  \n  const handleRowsSelect = (ids: (string | number)[], selected: boolean) => {\n    const newSelected = new Set(selectedRows)\n    ids.forEach(id => {\n      if (selected) {\n        newSelected.add(id)\n      } else {\n        newSelected.delete(id)\n      }\n    })\n    setSelectedRows(newSelected)\n  }\n  \n  const clearSelection = () => setSelectedRows(new Set())\n  \n  return {\n    data,\n    setData,\n    selectedRows,\n    setSelectedRows,\n    sortConfig,\n    setSortConfig,\n    filters,\n    setFilters,\n    searchValue,\n    setSearchValue,\n    handleRowSelect,\n    handleRowsSelect,\n    clearSelection\n  }\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, useState } from 'react'\nimport { Check, Minus } from 'lucide-react'\n\n/**\n * BIRHAUS Checkbox Component\n * \n * Enhanced checkbox with clear state indicators implementing BIRHAUS principles:\n * - Clear visual feedback for all states\n * - Spanish-first labeling\n * - Accessibility-first design (WCAG AA+)\n * - Consistent with design token system\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausCheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n  // BIRHAUS Principle #7: Bilingual by design\n  label?: string\n  labelEs?: string\n  labelEn?: string\n  \n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  \n  // Enhanced states\n  indeterminate?: boolean\n  \n  // Styling variants\n  variant?: 'default' | 'success' | 'warning' | 'error'\n  size?: 'sm' | 'md' | 'lg'\n  \n  // Layout\n  labelPosition?: 'right' | 'left'\n  \n  // State feedback\n  showStateIcon?: boolean\n  \n  // Error handling\n  error?: boolean\n  errorMessage?: string\n  errorMessageEs?: string\n  errorMessageEn?: string\n  \n  // Success feedback\n  success?: boolean\n  successMessage?: string\n  successMessageEs?: string\n  successMessageEn?: string\n  \n  // Styling\n  className?: string\n  labelClassName?: string\n}\n\nexport const BirhausCheckbox = forwardRef<HTMLInputElement, BirhausCheckboxProps>(({\n  // Content (Spanish-first)\n  label,\n  labelEs,\n  labelEn,\n  description,\n  descriptionEs,\n  descriptionEn,\n  \n  // Enhanced states\n  indeterminate = false,\n  \n  // Styling\n  variant = 'default',\n  size = 'md',\n  labelPosition = 'right',\n  showStateIcon = true,\n  \n  // State feedback\n  error = false,\n  errorMessage,\n  errorMessageEs,\n  errorMessageEn,\n  success = false,\n  successMessage,\n  successMessageEs,\n  successMessageEn,\n  \n  // Standard props\n  checked,\n  disabled,\n  onChange,\n  className,\n  labelClassName,\n  ...props\n}, ref) => {\n  \n  // BIRHAUS: Internal state for uncontrolled usage\n  const [internalChecked, setInternalChecked] = useState(checked || false)\n  \n  const isChecked = checked !== undefined ? checked : internalChecked\n  const isControlled = checked !== undefined\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayLabel = resolveText(labelEs, labelEn, label)\n  const displayDescription = resolveText(descriptionEs, descriptionEn, description)\n  const displayErrorMessage = resolveText(errorMessageEs, errorMessageEn, errorMessage)\n  const displaySuccessMessage = resolveText(successMessageEs, successMessageEn, successMessage)\n  \n  // BIRHAUS: Handle change\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (!disabled) {\n      const newChecked = event.target.checked\n      \n      if (!isControlled) {\n        setInternalChecked(newChecked)\n      }\n      \n      onChange?.(event)\n    }\n  }\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: {\n      checkbox: 'h-4 w-4',\n      icon: 'h-3 w-3',\n      label: 'text-sm',\n      description: 'text-xs'\n    },\n    md: {\n      checkbox: 'h-5 w-5',\n      icon: 'h-4 w-4',\n      label: 'text-base',\n      description: 'text-sm'\n    },\n    lg: {\n      checkbox: 'h-6 w-6',\n      icon: 'h-5 w-5',\n      label: 'text-lg',\n      description: 'text-base'\n    }\n  }\n  \n  const variantClasses = {\n    default: {\n      border: 'border-gray-300',\n      checked: 'bg-blue-600 border-blue-600',\n      focus: 'focus:ring-blue-500'\n    },\n    success: {\n      border: 'border-green-300',\n      checked: 'bg-green-600 border-green-600',\n      focus: 'focus:ring-green-500'\n    },\n    warning: {\n      border: 'border-yellow-300',\n      checked: 'bg-yellow-600 border-yellow-600',\n      focus: 'focus:ring-yellow-500'\n    },\n    error: {\n      border: 'border-red-300',\n      checked: 'bg-red-600 border-red-600',\n      focus: 'focus:ring-red-500'\n    }\n  }\n  \n  const currentSize = sizeClasses[size]\n  const currentVariant = variantClasses[error ? 'error' : success ? 'success' : variant]\n  \n  const checkboxClasses = cn(\n    // Base styles\n    'relative rounded border-2 transition-colors duration-200',\n    'focus:outline-none focus:ring-2 focus:ring-offset-2',\n    \n    // Size\n    currentSize.checkbox,\n    \n    // State styles\n    currentVariant.focus,\n    \n    // Checked/unchecked styles\n    isChecked || indeterminate\n      ? currentVariant.checked\n      : cn('bg-white', currentVariant.border),\n    \n    // Disabled styles\n    disabled && 'opacity-50 cursor-not-allowed',\n    \n    // Interactive styles\n    !disabled && 'cursor-pointer hover:border-gray-400'\n  )\n  \n  const labelClasses = cn(\n    'font-medium text-gray-900',\n    currentSize.label,\n    disabled && 'text-gray-400',\n    labelClassName\n  )\n  \n  const containerClasses = cn(\n    'flex items-start gap-3',\n    labelPosition === 'left' && 'flex-row-reverse',\n    className\n  )\n  \n  return (\n    <div className=\"space-y-2\">\n      <label className={containerClasses}>\n        {/* Hidden native checkbox for accessibility */}\n        <input\n          ref={ref}\n          type=\"checkbox\"\n          checked={isChecked}\n          onChange={handleChange}\n          disabled={disabled}\n          className=\"sr-only\"\n          {...props}\n        />\n        \n        {/* Custom checkbox */}\n        <div className={checkboxClasses}>\n          {/* Check/indeterminate icon */}\n          {(isChecked || indeterminate) && showStateIcon && (\n            <div className=\"absolute inset-0 flex items-center justify-center\">\n              {indeterminate ? (\n                <Minus className={cn(currentSize.icon, 'text-white')} />\n              ) : (\n                <Check className={cn(currentSize.icon, 'text-white')} />\n              )}\n            </div>\n          )}\n        </div>\n        \n        {/* Label and description */}\n        {(displayLabel || displayDescription) && (\n          <div className=\"flex-1 min-w-0\">\n            {displayLabel && (\n              <div className={labelClasses}>\n                {displayLabel}\n              </div>\n            )}\n            \n            {displayDescription && (\n              <div className={cn(\n                'text-gray-600 mt-1',\n                currentSize.description,\n                disabled && 'text-gray-400'\n              )}>\n                {displayDescription}\n              </div>\n            )}\n          </div>\n        )}\n      </label>\n      \n      {/* Error message */}\n      {error && displayErrorMessage && (\n        <div className={cn(\n          'text-red-600 flex items-center gap-1',\n          currentSize.description\n        )}>\n          <span>{displayErrorMessage}</span>\n        </div>\n      )}\n      \n      {/* Success message */}\n      {success && displaySuccessMessage && (\n        <div className={cn(\n          'text-green-600 flex items-center gap-1',\n          currentSize.description\n        )}>\n          <span>{displaySuccessMessage}</span>\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausCheckbox.displayName = 'BirhausCheckbox'\n\n// BIRHAUS: Switch component variant\nexport interface BirhausSwitchProps extends Omit<BirhausCheckboxProps, 'indeterminate' | 'showStateIcon'> {\n  // Switch-specific props\n  size?: 'sm' | 'md' | 'lg'\n  \n  // Visual indicators\n  showLabels?: boolean\n  onLabel?: string\n  onLabelEs?: string\n  onLabelEn?: string\n  offLabel?: string\n  offLabelEs?: string\n  offLabelEn?: string\n}\n\nexport const BirhausSwitch = forwardRef<HTMLInputElement, BirhausSwitchProps>(({\n  // Content (Spanish-first)\n  label,\n  labelEs,\n  labelEn,\n  description,\n  descriptionEs,\n  descriptionEn,\n  \n  // Switch labels\n  showLabels = false,\n  onLabel = 'Sí',\n  onLabelEs = 'Sí',\n  onLabelEn = 'Yes',\n  offLabel = 'No',\n  offLabelEs = 'No',\n  offLabelEn = 'No',\n  \n  // Styling\n  variant = 'default',\n  size = 'md',\n  labelPosition = 'right',\n  \n  // State feedback\n  error = false,\n  errorMessage,\n  errorMessageEs,\n  errorMessageEn,\n  success = false,\n  successMessage,\n  successMessageEs,\n  successMessageEn,\n  \n  // Standard props\n  checked,\n  disabled,\n  onChange,\n  className,\n  labelClassName,\n  ...props\n}, ref) => {\n  \n  // BIRHAUS: Internal state for uncontrolled usage\n  const [internalChecked, setInternalChecked] = useState(checked || false)\n  \n  const isChecked = checked !== undefined ? checked : internalChecked\n  const isControlled = checked !== undefined\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayLabel = resolveText(labelEs, labelEn, label)\n  const displayDescription = resolveText(descriptionEs, descriptionEn, description)\n  const displayErrorMessage = resolveText(errorMessageEs, errorMessageEn, errorMessage)\n  const displaySuccessMessage = resolveText(successMessageEs, successMessageEn, successMessage)\n  \n  const displayOnLabel = resolveText(onLabelEs, onLabelEn, onLabel)\n  const displayOffLabel = resolveText(offLabelEs, offLabelEn, offLabel)\n  \n  // BIRHAUS: Handle change\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    if (!disabled) {\n      const newChecked = event.target.checked\n      \n      if (!isControlled) {\n        setInternalChecked(newChecked)\n      }\n      \n      onChange?.(event)\n    }\n  }\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: {\n      track: 'h-5 w-9',\n      thumb: 'h-4 w-4',\n      translate: 'translate-x-4',\n      label: 'text-sm',\n      description: 'text-xs',\n      switchLabel: 'text-xs'\n    },\n    md: {\n      track: 'h-6 w-11',\n      thumb: 'h-5 w-5',\n      translate: 'translate-x-5',\n      label: 'text-base',\n      description: 'text-sm',\n      switchLabel: 'text-xs'\n    },\n    lg: {\n      track: 'h-7 w-13',\n      thumb: 'h-6 w-6',\n      translate: 'translate-x-6',\n      label: 'text-lg',\n      description: 'text-base',\n      switchLabel: 'text-sm'\n    }\n  }\n  \n  const variantClasses = {\n    default: {\n      trackOff: 'bg-gray-200',\n      trackOn: 'bg-blue-600',\n      focus: 'focus:ring-blue-500'\n    },\n    success: {\n      trackOff: 'bg-gray-200',\n      trackOn: 'bg-green-600',\n      focus: 'focus:ring-green-500'\n    },\n    warning: {\n      trackOff: 'bg-gray-200',\n      trackOn: 'bg-yellow-600',\n      focus: 'focus:ring-yellow-500'\n    },\n    error: {\n      trackOff: 'bg-gray-200',\n      trackOn: 'bg-red-600',\n      focus: 'focus:ring-red-500'\n    }\n  }\n  \n  const currentSize = sizeClasses[size]\n  const currentVariant = variantClasses[error ? 'error' : success ? 'success' : variant]\n  \n  const containerClasses = cn(\n    'flex items-start gap-3',\n    labelPosition === 'left' && 'flex-row-reverse',\n    className\n  )\n  \n  const trackClasses = cn(\n    'relative inline-flex items-center rounded-full border-2 border-transparent transition-colors duration-200',\n    'focus:outline-none focus:ring-2 focus:ring-offset-2',\n    currentSize.track,\n    currentVariant.focus,\n    isChecked ? currentVariant.trackOn : currentVariant.trackOff,\n    disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'\n  )\n  \n  const thumbClasses = cn(\n    'inline-block bg-white rounded-full shadow-lg transform transition-transform duration-200',\n    currentSize.thumb,\n    isChecked ? currentSize.translate : 'translate-x-0'\n  )\n  \n  return (\n    <div className=\"space-y-2\">\n      <label className={containerClasses}>\n        {/* Hidden native checkbox for accessibility */}\n        <input\n          ref={ref}\n          type=\"checkbox\"\n          checked={isChecked}\n          onChange={handleChange}\n          disabled={disabled}\n          className=\"sr-only\"\n          role=\"switch\"\n          aria-checked={isChecked}\n          {...props}\n        />\n        \n        {/* Custom switch */}\n        <div className=\"flex items-center gap-2\">\n          {showLabels && (\n            <span className={cn(\n              currentSize.switchLabel,\n              'text-gray-600',\n              !isChecked && 'font-medium text-gray-900'\n            )}>\n              {displayOffLabel}\n            </span>\n          )}\n          \n          <div className={trackClasses}>\n            <div className={thumbClasses} />\n          </div>\n          \n          {showLabels && (\n            <span className={cn(\n              currentSize.switchLabel,\n              'text-gray-600',\n              isChecked && 'font-medium text-gray-900'\n            )}>\n              {displayOnLabel}\n            </span>\n          )}\n        </div>\n        \n        {/* Label and description */}\n        {(displayLabel || displayDescription) && (\n          <div className=\"flex-1 min-w-0\">\n            {displayLabel && (\n              <div className={cn(\n                'font-medium text-gray-900',\n                currentSize.label,\n                disabled && 'text-gray-400',\n                labelClassName\n              )}>\n                {displayLabel}\n              </div>\n            )}\n            \n            {displayDescription && (\n              <div className={cn(\n                'text-gray-600 mt-1',\n                currentSize.description,\n                disabled && 'text-gray-400'\n              )}>\n                {displayDescription}\n              </div>\n            )}\n          </div>\n        )}\n      </label>\n      \n      {/* Error message */}\n      {error && displayErrorMessage && (\n        <div className={cn(\n          'text-red-600 flex items-center gap-1',\n          currentSize.description\n        )}>\n          <span>{displayErrorMessage}</span>\n        </div>\n      )}\n      \n      {/* Success message */}\n      {success && displaySuccessMessage && (\n        <div className={cn(\n          'text-green-600 flex items-center gap-1',\n          currentSize.description\n        )}>\n          <span>{displaySuccessMessage}</span>\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausSwitch.displayName = 'BirhausSwitch'\n\n// BIRHAUS: Hook for managing checkbox/switch state\nexport function useBirhausCheckbox(initialChecked = false) {\n  const [checked, setChecked] = useState(initialChecked)\n  const [error, setError] = useState(false)\n  const [success, setSuccess] = useState(false)\n  \n  const toggle = () => setChecked(prev => !prev)\n  const reset = () => {\n    setChecked(initialChecked)\n    setError(false)\n    setSuccess(false)\n  }\n  \n  return {\n    checked,\n    setChecked,\n    error,\n    setError,\n    success,\n    setSuccess,\n    toggle,\n    reset\n  }\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, ReactNode, useState, useMemo } from 'react'\nimport { AlertTriangle, ChevronDown } from 'lucide-react'\n\n/**\n * BIRHAUS Tabs Component\n * \n * Enhanced tabs implementing BIRHAUS 4-3-1 Rule:\n * - Maximum 4 tabs for optimal cognitive load\n * - Spanish-first labeling\n * - Progressive disclosure for additional tabs\n * - Accessibility-first design (WCAG AA+)\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausTabItem {\n  id: string\n  label: string\n  labelEs?: string\n  labelEn?: string\n  content: ReactNode\n  disabled?: boolean\n  icon?: ReactNode\n  badge?: string | number\n  cognitiveWeight?: number // 1-10 scale for tab complexity\n}\n\nexport interface BirhausTabsProps {\n  // Tab data\n  tabs: BirhausTabItem[]\n  \n  // State\n  activeTab?: string\n  onTabChange?: (tabId: string) => void\n  \n  // BIRHAUS 4-3-1 Rule enforcement\n  maxVisibleTabs?: number\n  showCognitiveWarning?: boolean\n  \n  // Layout variants\n  variant?: 'default' | 'pills' | 'underline' | 'bordered'\n  size?: 'sm' | 'md' | 'lg'\n  orientation?: 'horizontal' | 'vertical'\n  \n  // Behavior\n  activateOnHover?: boolean\n  lazy?: boolean // Lazy load tab content\n  \n  // Overflow handling\n  overflowBehavior?: 'dropdown' | 'scroll' | 'wrap'\n  \n  // Content layout\n  contentPadding?: boolean\n  \n  // Styling\n  className?: string\n  tabListClassName?: string\n  tabClassName?: string\n  contentClassName?: string\n}\n\nexport const BirhausTabs = forwardRef<HTMLDivElement, BirhausTabsProps>(({\n  // Data\n  tabs,\n  \n  // State\n  activeTab,\n  onTabChange,\n  \n  // BIRHAUS settings\n  maxVisibleTabs = 4,\n  showCognitiveWarning = true,\n  \n  // Layout\n  variant = 'default',\n  size = 'md',\n  orientation = 'horizontal',\n  \n  // Behavior\n  activateOnHover = false,\n  lazy = false,\n  \n  // Overflow\n  overflowBehavior = 'dropdown',\n  \n  // Content\n  contentPadding = true,\n  \n  // Styling\n  className,\n  tabListClassName,\n  tabClassName,\n  contentClassName\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [internalActiveTab, setInternalActiveTab] = useState(tabs[0]?.id || '')\n  const [showOverflowMenu, setShowOverflowMenu] = useState(false)\n  \n  const currentActiveTab = activeTab !== undefined ? activeTab : internalActiveTab\n  const isControlled = activeTab !== undefined\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  // BIRHAUS: Calculate visible and overflow tabs\n  const { visibleTabs, overflowTabs, cognitiveLoad } = useMemo(() => {\n    const enabledTabs = tabs.filter(tab => !tab.disabled)\n    \n    // Sort by cognitive weight (lower weight = higher priority)\n    const sortedTabs = [...enabledTabs].sort((a, b) => {\n      const aWeight = a.cognitiveWeight || 5\n      const bWeight = b.cognitiveWeight || 5\n      return aWeight - bWeight\n    })\n    \n    const visible = sortedTabs.slice(0, maxVisibleTabs)\n    const overflow = sortedTabs.slice(maxVisibleTabs)\n    \n    const load = visible.length > 4 ? 'high' : \n                 visible.length > 3 ? 'medium' : 'low'\n    \n    return {\n      visibleTabs: visible,\n      overflowTabs: overflow,\n      cognitiveLoad: load\n    }\n  }, [tabs, maxVisibleTabs])\n  \n  // BIRHAUS: Warn about cognitive overload\n  if (showCognitiveWarning && visibleTabs.length > 4) {\n    console.warn(`BIRHAUS 4-3-1 Rule Warning: Tabs show ${visibleTabs.length} items (recommended: max 4)`)\n  }\n  \n  // BIRHAUS: Handle tab change\n  const handleTabChange = (tabId: string) => {\n    const tab = tabs.find(t => t.id === tabId)\n    if (tab && !tab.disabled) {\n      if (!isControlled) {\n        setInternalActiveTab(tabId)\n      }\n      onTabChange?.(tabId)\n      setShowOverflowMenu(false)\n    }\n  }\n  \n  // BIRHAUS: Handle hover activation\n  const handleTabHover = (tabId: string) => {\n    if (activateOnHover) {\n      handleTabChange(tabId)\n    }\n  }\n  \n  // BIRHAUS: Get active tab content\n  const activeTabData = tabs.find(tab => tab.id === currentActiveTab)\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: {\n      tab: 'px-3 py-1.5 text-sm',\n      content: 'p-3',\n      badge: 'text-xs px-1.5 py-0.5'\n    },\n    md: {\n      tab: 'px-4 py-2 text-base',\n      content: 'p-4',\n      badge: 'text-xs px-2 py-1'\n    },\n    lg: {\n      tab: 'px-6 py-3 text-lg',\n      content: 'p-6',\n      badge: 'text-sm px-2.5 py-1'\n    }\n  }\n  \n  const variantClasses = {\n    default: {\n      tabList: 'border-b border-gray-200',\n      tab: 'border-b-2 border-transparent hover:border-gray-300',\n      activeTab: 'border-blue-600 text-blue-600',\n      inactiveTab: 'text-gray-500 hover:text-gray-700'\n    },\n    pills: {\n      tabList: 'bg-gray-100 rounded-lg p-1',\n      tab: 'rounded-md transition-colors',\n      activeTab: 'bg-white text-gray-900 shadow-sm',\n      inactiveTab: 'text-gray-600 hover:text-gray-900 hover:bg-white/50'\n    },\n    underline: {\n      tabList: '',\n      tab: 'border-b-2 border-transparent',\n      activeTab: 'border-blue-600 text-blue-600',\n      inactiveTab: 'text-gray-500 hover:text-gray-700 hover:border-gray-300'\n    },\n    bordered: {\n      tabList: 'border border-gray-200 rounded-t-lg',\n      tab: 'border-r border-gray-200 last:border-r-0',\n      activeTab: 'bg-white text-gray-900 border-b-white',\n      inactiveTab: 'bg-gray-50 text-gray-600 hover:bg-gray-100'\n    }\n  }\n  \n  const orientationClasses = {\n    horizontal: {\n      container: 'w-full',\n      tabList: 'flex',\n      content: 'w-full'\n    },\n    vertical: {\n      container: 'flex gap-4',\n      tabList: 'flex flex-col min-w-48',\n      content: 'flex-1'\n    }\n  }\n  \n  const currentSize = sizeClasses[size]\n  const currentVariant = variantClasses[variant]\n  const currentOrientation = orientationClasses[orientation]\n  \n  const renderTab = (tab: BirhausTabItem, isActive: boolean) => {\n    const displayLabel = resolveText(tab.labelEs, tab.labelEn, tab.label)\n    \n    return (\n      <button\n        key={tab.id}\n        onClick={() => handleTabChange(tab.id)}\n        onMouseEnter={() => handleTabHover(tab.id)}\n        disabled={tab.disabled}\n        className={cn(\n          // Base styles\n          'relative inline-flex items-center gap-2 font-medium transition-colors duration-200',\n          'focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2',\n          \n          // Size\n          currentSize.tab,\n          \n          // Variant\n          currentVariant.tab,\n          \n          // State\n          isActive ? currentVariant.activeTab : currentVariant.inactiveTab,\n          \n          // Disabled\n          tab.disabled && 'opacity-50 cursor-not-allowed',\n          \n          // Custom classes\n          tabClassName\n        )}\n        role=\"tab\"\n        aria-selected={isActive}\n        aria-controls={`tabpanel-${tab.id}`}\n        id={`tab-${tab.id}`}\n        data-birhaus-component=\"tab\"\n        data-active={isActive}\n      >\n        {/* Icon */}\n        {tab.icon && (\n          <span className=\"flex-shrink-0\">\n            {tab.icon}\n          </span>\n        )}\n        \n        {/* Label */}\n        <span>{displayLabel}</span>\n        \n        {/* Badge */}\n        {tab.badge && (\n          <span className={cn(\n            'inline-flex items-center justify-center rounded-full bg-gray-200 text-gray-800',\n            currentSize.badge,\n            isActive && 'bg-blue-100 text-blue-800'\n          )}>\n            {tab.badge}\n          </span>\n        )}\n      </button>\n    )\n  }\n  \n  return (\n    <div \n      ref={ref}\n      className={cn(currentOrientation.container, className)}\n      data-birhaus-component=\"tabs\"\n      data-cognitive-load={cognitiveLoad}\n      data-orientation={orientation}\n    >\n      {/* BIRHAUS: Cognitive load warning */}\n      {showCognitiveWarning && cognitiveLoad === 'high' && (\n        <div className=\"flex items-center gap-2 p-3 mb-4 bg-yellow-50 border border-yellow-200 rounded-lg\">\n          <AlertTriangle className=\"h-4 w-4 text-yellow-600\" />\n          <span className=\"text-sm text-yellow-800\">\n            Mostrando {visibleTabs.length} pestañas (máximo recomendado: 4). \n            {overflowTabs.length > 0 && ` ${overflowTabs.length} pestañas en menú desplegable.`}\n          </span>\n        </div>\n      )}\n      \n      {/* Tab List */}\n      <div \n        className={cn(\n          currentOrientation.tabList,\n          currentVariant.tabList,\n          tabListClassName\n        )}\n        role=\"tablist\"\n        aria-orientation={orientation}\n      >\n        {/* Visible tabs */}\n        {visibleTabs.map(tab => renderTab(tab, tab.id === currentActiveTab))}\n        \n        {/* Overflow menu */}\n        {overflowTabs.length > 0 && overflowBehavior === 'dropdown' && (\n          <div className=\"relative\">\n            <button\n              onClick={() => setShowOverflowMenu(!showOverflowMenu)}\n              className={cn(\n                'inline-flex items-center gap-2 font-medium transition-colors duration-200',\n                'focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2',\n                currentSize.tab,\n                currentVariant.tab,\n                currentVariant.inactiveTab\n              )}\n            >\n              <span>Más</span>\n              <ChevronDown className=\"h-4 w-4\" />\n            </button>\n            \n            {/* Dropdown menu */}\n            {showOverflowMenu && (\n              <div className=\"absolute top-full left-0 mt-1 w-48 bg-white border border-gray-200 rounded-lg shadow-lg z-10\">\n                {overflowTabs.map(tab => {\n                  const displayLabel = resolveText(tab.labelEs, tab.labelEn, tab.label)\n                  const isActive = tab.id === currentActiveTab\n                  \n                  return (\n                    <button\n                      key={tab.id}\n                      onClick={() => handleTabChange(tab.id)}\n                      disabled={tab.disabled}\n                      className={cn(\n                        'w-full flex items-center gap-2 px-4 py-2 text-left hover:bg-gray-50',\n                        'focus:outline-none focus:bg-gray-50',\n                        isActive && 'bg-blue-50 text-blue-600',\n                        tab.disabled && 'opacity-50 cursor-not-allowed'\n                      )}\n                    >\n                      {tab.icon}\n                      <span>{displayLabel}</span>\n                      {tab.badge && (\n                        <span className=\"ml-auto text-xs bg-gray-200 text-gray-800 px-1.5 py-0.5 rounded-full\">\n                          {tab.badge}\n                        </span>\n                      )}\n                    </button>\n                  )\n                })}\n              </div>\n            )}\n          </div>\n        )}\n      </div>\n      \n      {/* Tab Content */}\n      <div \n        className={cn(\n          currentOrientation.content,\n          contentPadding && currentSize.content,\n          contentClassName\n        )}\n      >\n        {activeTabData && (\n          <div\n            role=\"tabpanel\"\n            id={`tabpanel-${activeTabData.id}`}\n            aria-labelledby={`tab-${activeTabData.id}`}\n            tabIndex={0}\n          >\n            {lazy ? (\n              // Lazy load: only render active tab content\n              activeTabData.content\n            ) : (\n              // Render all content but hide inactive\n              tabs.map(tab => (\n                <div\n                  key={tab.id}\n                  className={tab.id === currentActiveTab ? 'block' : 'hidden'}\n                  role=\"tabpanel\"\n                  id={`tabpanel-${tab.id}`}\n                  aria-labelledby={`tab-${tab.id}`}\n                  tabIndex={tab.id === currentActiveTab ? 0 : -1}\n                >\n                  {tab.content}\n                </div>\n              ))\n            )}\n          </div>\n        )}\n      </div>\n      \n      {/* Click overlay to close overflow menu */}\n      {showOverflowMenu && (\n        <div\n          className=\"fixed inset-0 z-0\"\n          onClick={() => setShowOverflowMenu(false)}\n        />\n      )}\n    </div>\n  )\n})\n\nBirhausTabs.displayName = 'BirhausTabs'\n\n// BIRHAUS: Individual Tab component for composable usage\nexport interface BirhausTabProps {\n  id: string\n  label: string\n  labelEs?: string\n  labelEn?: string\n  disabled?: boolean\n  icon?: ReactNode\n  badge?: string | number\n  cognitiveWeight?: number\n  children: ReactNode\n}\n\nexport const BirhausTab = ({ children }: BirhausTabProps) => {\n  return <>{children}</>\n}\n\nBirhausTab.displayName = 'BirhausTab'\n\n// BIRHAUS: Hook for managing tabs state\nexport function useBirhausTabs(initialActiveTab?: string) {\n  const [activeTab, setActiveTab] = useState(initialActiveTab || '')\n  const [tabHistory, setTabHistory] = useState<string[]>([])\n  \n  const changeTab = (tabId: string) => {\n    setTabHistory(prev => [...prev.filter(id => id !== tabId), activeTab].filter(Boolean))\n    setActiveTab(tabId)\n  }\n  \n  const goBack = () => {\n    if (tabHistory.length > 0) {\n      const previousTab = tabHistory[tabHistory.length - 1]\n      setTabHistory(prev => prev.slice(0, -1))\n      setActiveTab(previousTab)\n      return previousTab\n    }\n    return null\n  }\n  \n  const reset = (defaultTab: string) => {\n    setActiveTab(defaultTab)\n    setTabHistory([])\n  }\n  \n  return {\n    activeTab,\n    setActiveTab: changeTab,\n    tabHistory,\n    goBack,\n    reset\n  }\n}\n\n// BIRHAUS: Helper to create tab items with Spanish-first labels\nexport function createBirhausTabItem(\n  id: string,\n  labelEs: string,\n  content: ReactNode,\n  options?: {\n    labelEn?: string\n    icon?: ReactNode\n    badge?: string | number\n    disabled?: boolean\n    cognitiveWeight?: number\n  }\n): BirhausTabItem {\n  return {\n    id,\n    label: labelEs,\n    labelEs,\n    labelEn: options?.labelEn,\n    content,\n    icon: options?.icon,\n    badge: options?.badge,\n    disabled: options?.disabled || false,\n    cognitiveWeight: options?.cognitiveWeight || 5\n  }\n}\n\n// Components and utilities are exported via individual export declarations above","'use client'\n\nimport { forwardRef, useState, useRef, useEffect, useMemo } from 'react'\nimport { Search, ChevronDown, X, Check, AlertTriangle } from 'lucide-react'\n\n/**\n * BIRHAUS Combobox Component\n * \n * Enhanced combobox implementing BIRHAUS Principle #1: Miller's Law (7±2)\n * \n * Features:\n * - Maximum 7 visible options for cognitive load optimization\n * - Intelligent filtering and search\n * - Spanish-first labeling\n * - Progressive disclosure for large option sets\n * - Accessibility-first design (WCAG AA+)\n */\n\n// BIRHAUS: Utility function (self-contained)\nfunction cn(...classes: (string | undefined | null | false)[]): string {\n  return classes.filter(Boolean).join(' ')\n}\n\nexport interface BirhausComboboxOption {\n  value: string\n  label: string\n  labelEs?: string\n  labelEn?: string\n  description?: string\n  descriptionEs?: string\n  descriptionEn?: string\n  disabled?: boolean\n  group?: string\n  icon?: React.ReactNode\n  searchTerms?: string[] // Additional terms for filtering\n}\n\nexport interface BirhausComboboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n  // Options\n  options: BirhausComboboxOption[]\n  \n  // Value handling\n  value?: string\n  onValueChange?: (value: string) => void\n  \n  // BIRHAUS Principle #7: Bilingual by design\n  placeholder?: string\n  placeholderEs?: string\n  placeholderEn?: string\n  \n  emptyMessage?: string\n  emptyMessageEs?: string\n  emptyMessageEn?: string\n  \n  searchPlaceholder?: string\n  searchPlaceholderEs?: string\n  searchPlaceholderEn?: string\n  \n  // Miller's Law enforcement\n  maxVisibleOptions?: number\n  showCognitiveWarning?: boolean\n  \n  // Behavior\n  searchable?: boolean\n  clearable?: boolean\n  disabled?: boolean\n  loading?: boolean\n  \n  // Filtering\n  filterFunction?: (option: BirhausComboboxOption, search: string) => boolean\n  \n  // Styling\n  variant?: 'default' | 'success' | 'warning' | 'error'\n  size?: 'sm' | 'md' | 'lg'\n  \n  // Error handling\n  error?: boolean\n  errorMessage?: string\n  errorMessageEs?: string\n  errorMessageEn?: string\n  \n  // Validation\n  required?: boolean\n  \n  // Positioning\n  dropdownPosition?: 'bottom' | 'top' | 'auto'\n  \n  // Styling\n  className?: string\n  dropdownClassName?: string\n}\n\nexport const BirhausCombobox = forwardRef<HTMLInputElement, BirhausComboboxProps>(({\n  // Options\n  options,\n  \n  // Value\n  value,\n  onValueChange,\n  \n  // Content (Spanish-first)\n  placeholder,\n  placeholderEs,\n  placeholderEn,\n  emptyMessage,\n  emptyMessageEs,\n  emptyMessageEn,\n  searchPlaceholder,\n  searchPlaceholderEs,\n  searchPlaceholderEn,\n  \n  // Miller's Law settings\n  maxVisibleOptions = 7,\n  showCognitiveWarning = true,\n  \n  // Behavior\n  searchable = true,\n  clearable = true,\n  disabled = false,\n  loading = false,\n  \n  // Filtering\n  filterFunction,\n  \n  // Styling\n  variant = 'default',\n  size = 'md',\n  \n  // Error handling\n  error = false,\n  errorMessage,\n  errorMessageEs,\n  errorMessageEn,\n  \n  // Validation\n  required = false,\n  \n  // Positioning\n  dropdownPosition = 'auto',\n  \n  // Styling\n  className,\n  dropdownClassName,\n  \n  // Standard props\n  ...props\n}, ref) => {\n  \n  // BIRHAUS: State management\n  const [isOpen, setIsOpen] = useState(false)\n  const [searchTerm, setSearchTerm] = useState('')\n  const [focusedIndex, setFocusedIndex] = useState(-1)\n  const [internalValue, setInternalValue] = useState(value || '')\n  \n  const currentValue = value !== undefined ? value : internalValue\n  const isControlled = value !== undefined\n  \n  // Refs\n  const containerRef = useRef<HTMLDivElement>(null)\n  const inputRef = useRef<HTMLInputElement>(null)\n  const dropdownRef = useRef<HTMLDivElement>(null)\n  \n  // BIRHAUS Principle #7: Spanish-first text resolution\n  const resolveText = (spanish?: string, english?: string, fallback?: string) => {\n    return spanish || english || fallback || ''\n  }\n  \n  const displayPlaceholder = resolveText(placeholderEs, placeholderEn, placeholder || 'Seleccionar opción...')\n  const displayEmptyMessage = resolveText(emptyMessageEs, emptyMessageEn, emptyMessage || 'No se encontraron opciones')\n  const displaySearchPlaceholder = resolveText(searchPlaceholderEs, searchPlaceholderEn, searchPlaceholder || 'Buscar...')\n  const displayErrorMessage = resolveText(errorMessageEs, errorMessageEn, errorMessage)\n  \n  // BIRHAUS: Default filter function\n  const defaultFilter = (option: BirhausComboboxOption, search: string) => {\n    const searchLower = search.toLowerCase()\n    const label = resolveText(option.labelEs, option.labelEn, option.label).toLowerCase()\n    const description = resolveText(option.descriptionEs, option.descriptionEn, option.description)?.toLowerCase() || ''\n    const additionalTerms = option.searchTerms?.join(' ').toLowerCase() || ''\n    \n    return label.includes(searchLower) || \n           description.includes(searchLower) || \n           additionalTerms.includes(searchLower)\n  }\n  \n  const filterFunc = filterFunction || defaultFilter\n  \n  // BIRHAUS: Filtered and visible options\n  const { filteredOptions, visibleOptions, hiddenCount, cognitiveLoad } = useMemo(() => {\n    const filtered = options.filter(option => \n      !option.disabled && \n      (searchTerm === '' || filterFunc(option, searchTerm))\n    )\n    \n    const visible = filtered.slice(0, maxVisibleOptions)\n    const hidden = filtered.length - visible.length\n    \n    const load = visible.length > 7 ? 'high' : \n                 visible.length > 5 ? 'medium' : 'low'\n    \n    return {\n      filteredOptions: filtered,\n      visibleOptions: visible,\n      hiddenCount: hidden,\n      cognitiveLoad: load\n    }\n  }, [options, searchTerm, maxVisibleOptions, filterFunc])\n  \n  // BIRHAUS: Warn about cognitive overload\n  if (showCognitiveWarning && visibleOptions.length > 7) {\n    console.warn(`BIRHAUS Miller's Law Warning: Combobox shows ${visibleOptions.length} options (recommended: max 7)`)\n  }\n  \n  // BIRHAUS: Get selected option\n  const selectedOption = options.find(option => option.value === currentValue)\n  \n  // BIRHAUS: Handle value change\n  const handleValueChange = (newValue: string) => {\n    if (!isControlled) {\n      setInternalValue(newValue)\n    }\n    onValueChange?.(newValue)\n    setIsOpen(false)\n    setSearchTerm('')\n    setFocusedIndex(-1)\n  }\n  \n  // BIRHAUS: Handle clear\n  const handleClear = () => {\n    handleValueChange('')\n  }\n  \n  // BIRHAUS: Handle keyboard navigation\n  const handleKeyDown = (event: React.KeyboardEvent) => {\n    if (disabled) return\n    \n    switch (event.key) {\n      case 'ArrowDown':\n        event.preventDefault()\n        if (!isOpen) {\n          setIsOpen(true)\n        } else {\n          setFocusedIndex(prev => \n            prev < visibleOptions.length - 1 ? prev + 1 : 0\n          )\n        }\n        break\n        \n      case 'ArrowUp':\n        event.preventDefault()\n        if (isOpen) {\n          setFocusedIndex(prev => \n            prev > 0 ? prev - 1 : visibleOptions.length - 1\n          )\n        }\n        break\n        \n      case 'Enter':\n        event.preventDefault()\n        if (isOpen && focusedIndex >= 0) {\n          const option = visibleOptions[focusedIndex]\n          if (option) {\n            handleValueChange(option.value)\n          }\n        } else {\n          setIsOpen(!isOpen)\n        }\n        break\n        \n      case 'Escape':\n        setIsOpen(false)\n        setFocusedIndex(-1)\n        inputRef.current?.blur()\n        break\n        \n      case 'Tab':\n        setIsOpen(false)\n        break\n    }\n  }\n  \n  // BIRHAUS: Close dropdown when clicking outside\n  useEffect(() => {\n    const handleClickOutside = (event: MouseEvent) => {\n      if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n        setIsOpen(false)\n        setFocusedIndex(-1)\n      }\n    }\n    \n    document.addEventListener('mousedown', handleClickOutside)\n    return () => document.removeEventListener('mousedown', handleClickOutside)\n  }, [])\n  \n  // BIRHAUS Principle #9: Consistency via tokens\n  const sizeClasses = {\n    sm: {\n      input: 'px-3 py-1.5 text-sm',\n      option: 'px-3 py-1.5 text-sm',\n      icon: 'h-4 w-4'\n    },\n    md: {\n      input: 'px-4 py-2 text-base',\n      option: 'px-4 py-2 text-base',\n      icon: 'h-5 w-5'\n    },\n    lg: {\n      input: 'px-5 py-3 text-lg',\n      option: 'px-5 py-3 text-lg',\n      icon: 'h-6 w-6'\n    }\n  }\n  \n  const variantClasses = {\n    default: {\n      border: 'border-gray-300',\n      focus: 'focus:border-blue-500 focus:ring-blue-500'\n    },\n    success: {\n      border: 'border-green-300',\n      focus: 'focus:border-green-500 focus:ring-green-500'\n    },\n    warning: {\n      border: 'border-yellow-300',\n      focus: 'focus:border-yellow-500 focus:ring-yellow-500'\n    },\n    error: {\n      border: 'border-red-300',\n      focus: 'focus:border-red-500 focus:ring-red-500'\n    }\n  }\n  \n  const currentSize = sizeClasses[size]\n  const currentVariant = variantClasses[error ? 'error' : variant]\n  \n  const inputClasses = cn(\n    // Base styles\n    'w-full rounded-lg border bg-white transition-colors duration-200',\n    'focus:outline-none focus:ring-2 focus:ring-offset-0',\n    \n    // Size\n    currentSize.input,\n    \n    // Variant\n    currentVariant.border,\n    currentVariant.focus,\n    \n    // State\n    disabled && 'bg-gray-50 text-gray-400 cursor-not-allowed',\n    \n    // Custom classes\n    className\n  )\n  \n  return (\n    <div className=\"space-y-2\">\n      {/* BIRHAUS: Cognitive load warning */}\n      {showCognitiveWarning && cognitiveLoad === 'high' && searchTerm && (\n        <div className=\"flex items-center gap-2 p-2 bg-yellow-50 border border-yellow-200 rounded\">\n          <AlertTriangle className=\"h-4 w-4 text-yellow-600\" />\n          <span className=\"text-xs text-yellow-800\">\n            Mostrando {visibleOptions.length} opciones (máximo recomendado: 7).\n            {hiddenCount > 0 && ` ${hiddenCount} opciones ocultas.`}\n          </span>\n        </div>\n      )}\n      \n      {/* Combobox container */}\n      <div ref={containerRef} className=\"relative\">\n        {/* Input */}\n        <div className=\"relative\">\n          <input\n            ref={inputRef}\n            type=\"text\"\n            value={searchable && isOpen ? searchTerm : (selectedOption ? resolveText(selectedOption.labelEs, selectedOption.labelEn, selectedOption.label) : '')}\n            onChange={(e) => {\n              if (searchable) {\n                setSearchTerm(e.target.value)\n                setIsOpen(true)\n                setFocusedIndex(-1)\n              }\n            }}\n            onFocus={() => !disabled && setIsOpen(true)}\n            onKeyDown={handleKeyDown}\n            placeholder={displayPlaceholder}\n            disabled={disabled}\n            required={required}\n            className={inputClasses}\n            role=\"combobox\"\n            aria-expanded={isOpen}\n            aria-haspopup=\"listbox\"\n            aria-owns=\"combobox-options\"\n            data-birhaus-component=\"combobox\"\n            data-cognitive-load={cognitiveLoad}\n            {...props}\n          />\n          \n          {/* Icons */}\n          <div className=\"absolute inset-y-0 right-0 flex items-center gap-1 pr-3\">\n            {loading && (\n              <div className=\"animate-spin rounded-full h-4 w-4 border-b-2 border-blue-600\" />\n            )}\n            \n            {clearable && currentValue && !loading && (\n              <button\n                onClick={handleClear}\n                disabled={disabled}\n                className=\"text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n                aria-label=\"Limpiar selección\"\n              >\n                <X className={currentSize.icon} />\n              </button>\n            )}\n            \n            <button\n              onClick={() => !disabled && setIsOpen(!isOpen)}\n              disabled={disabled}\n              className=\"text-gray-400 hover:text-gray-600 disabled:opacity-50\"\n              aria-label={isOpen ? 'Cerrar opciones' : 'Abrir opciones'}\n            >\n              <ChevronDown className={cn(\n                currentSize.icon,\n                'transition-transform duration-200',\n                isOpen && 'transform rotate-180'\n              )} />\n            </button>\n          </div>\n        </div>\n        \n        {/* Dropdown */}\n        {isOpen && (\n          <div \n            ref={dropdownRef}\n            className={cn(\n              'absolute z-50 w-full mt-1 bg-white border border-gray-200 rounded-lg shadow-lg max-h-60 overflow-auto',\n              dropdownPosition === 'top' && 'bottom-full mb-1 mt-0',\n              dropdownClassName\n            )}\n            id=\"combobox-options\"\n            role=\"listbox\"\n          >\n            {visibleOptions.length === 0 ? (\n              <div className={cn(\n                'text-gray-500 text-center',\n                currentSize.option\n              )}>\n                {displayEmptyMessage}\n              </div>\n            ) : (\n              <>\n                {visibleOptions.map((option, index) => {\n                  const displayLabel = resolveText(option.labelEs, option.labelEn, option.label)\n                  const displayDescription = resolveText(option.descriptionEs, option.descriptionEn, option.description)\n                  const isSelected = option.value === currentValue\n                  const isFocused = index === focusedIndex\n                  \n                  return (\n                    <div\n                      key={option.value}\n                      onClick={() => handleValueChange(option.value)}\n                      className={cn(\n                        'cursor-pointer flex items-center gap-3 transition-colors duration-150',\n                        currentSize.option,\n                        \n                        // State styles\n                        isSelected && 'bg-blue-50 text-blue-700',\n                        isFocused && 'bg-gray-100',\n                        !isSelected && !isFocused && 'hover:bg-gray-50',\n                        \n                        // Group separation\n                        index > 0 && visibleOptions[index - 1]?.group !== option.group && 'border-t border-gray-100'\n                      )}\n                      role=\"option\"\n                      aria-selected={isSelected}\n                      data-value={option.value}\n                    >\n                      {/* Icon */}\n                      {option.icon && (\n                        <span className=\"flex-shrink-0 text-gray-400\">\n                          {option.icon}\n                        </span>\n                      )}\n                      \n                      {/* Content */}\n                      <div className=\"flex-1 min-w-0\">\n                        <div className=\"font-medium\">{displayLabel}</div>\n                        {displayDescription && (\n                          <div className=\"text-sm text-gray-500 truncate\">\n                            {displayDescription}\n                          </div>\n                        )}\n                      </div>\n                      \n                      {/* Selected indicator */}\n                      {isSelected && (\n                        <Check className=\"h-4 w-4 text-blue-600 flex-shrink-0\" />\n                      )}\n                    </div>\n                  )\n                })}\n                \n                {/* Show more indicator */}\n                {hiddenCount > 0 && (\n                  <div className={cn(\n                    'text-gray-500 text-center border-t border-gray-100 bg-gray-50',\n                    currentSize.option\n                  )}>\n                    +{hiddenCount} opciones más (refina la búsqueda)\n                  </div>\n                )}\n              </>\n            )}\n          </div>\n        )}\n      </div>\n      \n      {/* Error message */}\n      {error && displayErrorMessage && (\n        <div className=\"text-red-600 text-sm flex items-center gap-1\">\n          <span>{displayErrorMessage}</span>\n        </div>\n      )}\n    </div>\n  )\n})\n\nBirhausCombobox.displayName = 'BirhausCombobox'\n\n// BIRHAUS: Hook for managing combobox state\nexport function useBirhausCombobox(initialValue = '') {\n  const [value, setValue] = useState(initialValue)\n  const [isOpen, setIsOpen] = useState(false)\n  const [searchTerm, setSearchTerm] = useState('')\n  \n  const reset = () => {\n    setValue(initialValue)\n    setIsOpen(false)\n    setSearchTerm('')\n  }\n  \n  return {\n    value,\n    setValue,\n    isOpen,\n    setIsOpen,\n    searchTerm,\n    setSearchTerm,\n    reset\n  }\n}\n\n// BIRHAUS: Helper to create combobox options with Spanish-first labels\nexport function createBirhausComboboxOption(\n  value: string,\n  labelEs: string,\n  options?: {\n    labelEn?: string\n    descriptionEs?: string\n    descriptionEn?: string\n    disabled?: boolean\n    group?: string\n    icon?: React.ReactNode\n    searchTerms?: string[]\n  }\n): BirhausComboboxOption {\n  return {\n    value,\n    label: labelEs,\n    labelEs,\n    labelEn: options?.labelEn,\n    descriptionEs: options?.descriptionEs,\n    descriptionEn: options?.descriptionEn,\n    disabled: options?.disabled || false,\n    group: options?.group,\n    icon: options?.icon,\n    searchTerms: options?.searchTerms\n  }\n}\n\n// Components and utilities are exported via individual export declarations above","/**\n * BIRHAUS Performance Budgets\n * \n * These constants define the performance and cognitive load limits\n * that all BIRHAUS components must adhere to.\n */\n\nexport const BIRHAUS_PERFORMANCE = {\n  /**\n   * Bundle and asset size limits (in bytes)\n   */\n  BUDGETS: {\n    MAX_BUNDLE_SIZE: 200_000,        // 200KB compressed total bundle\n    MAX_COMPONENT_SIZE: 50_000,      // 50KB per individual component\n    MAX_THEME_SIZE: 25_000,          // 25KB per theme\n    MAX_ICON_SIZE: 2_000,            // 2KB per SVG icon\n    MAX_IMAGE_SIZE: 100_000,         // 100KB per image\n    MAX_FONT_SIZE: 50_000,           // 50KB per font file\n  },\n\n  /**\n   * Core Web Vitals and performance metrics\n   */\n  WEB_VITALS: {\n    MAX_TTI: 2000,                   // Time to Interactive (ms)\n    MAX_FCP: 1000,                   // First Contentful Paint (ms)\n    MAX_LCP: 2500,                   // Largest Contentful Paint (ms)\n    MAX_CLS: 0.1,                    // Cumulative Layout Shift\n    MAX_INP: 200,                    // Interaction to Next Paint (ms)\n    MAX_TBT: 300,                    // Total Blocking Time (ms)\n    MIN_FID: 100,                    // First Input Delay (ms)\n  },\n\n  /**\n   * Cognitive load and UX performance limits\n   */\n  COGNITIVE: {\n    MAX_ANIMATION_DURATION: 300,     // Maximum animation time (ms)\n    MIN_ANIMATION_DURATION: 150,     // Minimum for perceived responsiveness\n    MAX_TRANSITION_DURATION: 200,    // CSS transition duration\n    MIN_TOUCH_TARGET: 44,            // Minimum touch target size (px)\n    MIN_CONTRAST_RATIO: 4.5,         // WCAG AA compliance\n    MAX_SIMULTANEOUS_ANIMATIONS: 2,  // Prevent cognitive overload\n    MAX_MODAL_STACK: 2,              // Maximum nested modals\n    MAX_TOAST_STACK: 3,              // Maximum concurrent notifications\n  },\n\n  /**\n   * Network and loading performance\n   */\n  NETWORK: {\n    MAX_API_RESPONSE_TIME: 1000,     // API response time (ms)\n    MAX_CONCURRENT_REQUESTS: 6,      // Simultaneous network requests\n    MAX_RETRY_ATTEMPTS: 3,           // API retry limit\n    CACHE_TTL: 300_000,              // 5 minutes cache TTL\n    OFFLINE_CACHE_SIZE: 50_000_000,  // 50MB offline cache limit\n  },\n\n  /**\n   * Memory and resource usage\n   */\n  MEMORY: {\n    MAX_DOM_NODES: 1500,             // Maximum DOM elements\n    MAX_EVENT_LISTENERS: 100,        // Event listener limit\n    MAX_COMPONENT_INSTANCES: 50,     // Per component type\n    MAX_STATE_SIZE: 1_000_000,       // 1MB state object size\n    MEMORY_LEAK_THRESHOLD: 10_000_000, // 10MB memory leak threshold\n  },\n\n  /**\n   * Accessibility performance\n   */\n  ACCESSIBILITY: {\n    MAX_TAB_STOPS: 20,               // Maximum tab stops per view\n    MIN_FOCUS_INDICATOR: 2,          // Minimum focus outline width (px)\n    MAX_HEADING_LEVELS: 6,           // H1-H6 semantic structure\n    MIN_COLOR_CONTRAST: 4.5,         // Text contrast ratio\n    MIN_COLOR_CONTRAST_LARGE: 3.0,   // Large text contrast ratio\n    MAX_ALT_TEXT_LENGTH: 125,        // Alt text character limit\n  }\n} as const\n\n/**\n * Performance monitoring and alerting thresholds\n */\nexport const BIRHAUS_ALERTS = {\n  /**\n   * Warning thresholds (80% of limits)\n   */\n  WARNING: {\n    BUNDLE_SIZE: Math.floor(BIRHAUS_PERFORMANCE.BUDGETS.MAX_BUNDLE_SIZE * 0.8),\n    TTI: Math.floor(BIRHAUS_PERFORMANCE.WEB_VITALS.MAX_TTI * 0.8),\n    DOM_NODES: Math.floor(BIRHAUS_PERFORMANCE.MEMORY.MAX_DOM_NODES * 0.8),\n    API_RESPONSE: Math.floor(BIRHAUS_PERFORMANCE.NETWORK.MAX_API_RESPONSE_TIME * 0.8),\n  },\n\n  /**\n   * Critical thresholds (95% of limits)\n   */\n  CRITICAL: {\n    BUNDLE_SIZE: Math.floor(BIRHAUS_PERFORMANCE.BUDGETS.MAX_BUNDLE_SIZE * 0.95),\n    TTI: Math.floor(BIRHAUS_PERFORMANCE.WEB_VITALS.MAX_TTI * 0.95),\n    DOM_NODES: Math.floor(BIRHAUS_PERFORMANCE.MEMORY.MAX_DOM_NODES * 0.95),\n    API_RESPONSE: Math.floor(BIRHAUS_PERFORMANCE.NETWORK.MAX_API_RESPONSE_TIME * 0.95),\n  }\n} as const\n\n/**\n * Lighthouse scoring weights for Birhaus Score calculation\n */\nexport const BIRHAUS_SCORING = {\n  WEIGHTS: {\n    PERFORMANCE: 0.4,                // 40% of total score\n    ACCESSIBILITY: 0.3,              // 30% of total score\n    COGNITIVE_LOAD: 0.2,             // 20% of total score (Miller's Law, etc.)\n    SPANISH_COVERAGE: 0.1,           // 10% of total score\n  },\n  \n  PENALTIES: {\n    CONFIRMATION_DIALOG: -10,        // -10 points per confirmation dialog\n    MILLER_LAW_VIOLATION: -5,        // -5 points per Miller's Law violation\n    MISSING_SPANISH_LABEL: -2,       // -2 points per missing Spanish label\n    ACCESSIBILITY_VIOLATION: -3,     // -3 points per a11y violation\n    PERFORMANCE_BUDGET_EXCEEDED: -5, // -5 points per budget violation\n  },\n\n  BONUSES: {\n    UNDO_PATTERN_IMPLEMENTED: 5,     // +5 points per undo pattern\n    PROGRESSIVE_DISCLOSURE: 3,       // +3 points per progressive disclosure\n    SPANISH_FIRST_DESIGN: 2,         // +2 points for Spanish-first approach\n    WCAG_AAA_COMPLIANCE: 5,          // +5 points for exceeding WCAG AA\n    PERFORMANCE_EXCELLENCE: 3,       // +3 points for exceeding performance budgets\n  }\n} as const\n\n/**\n * Type definitions for performance monitoring\n */\nexport interface PerformanceMetrics {\n  bundleSize: number\n  componentSize: number\n  ttiduration: number\n  fcp: number\n  lcp: number\n  cls: number\n  inp: number\n  domNodes: number\n  memoryUsage: number\n  apiResponseTime: number\n  accessibilityScore: number\n}\n\nexport interface CognitiveLoadMetrics {\n  navigationItems: number\n  formFields: number\n  selectOptions: number\n  modalStack: number\n  confirmationDialogs: number\n  undoPatterns: number\n  millerLawViolations: number\n}\n\nexport interface BirhausScore {\n  total: number                      // 0-100 total score\n  performance: number                // Performance subscore\n  accessibility: number             // Accessibility subscore\n  cognitiveLoad: number             // Cognitive load subscore\n  spanishCoverage: number           // Spanish coverage subscore\n  violations: string[]              // List of violations\n  recommendations: string[]          // Improvement recommendations\n  timestamp: Date                   // When score was calculated\n}\n\n/**\n * Default Birhaus performance configuration\n */\nexport const DEFAULT_BIRHAUS_CONFIG = {\n  strictMode: true,\n  cognitiveLoadTracking: true,\n  performanceBudgets: true,\n  accessibilityValidation: true,\n  spanishFirst: true,\n  undoOverConfirm: true,\n  millerLawEnforcement: true,\n  progressiveDisclosure: true,\n} as const\n\n/**\n * Environment-specific configurations\n */\nexport const BIRHAUS_ENV_CONFIG = {\n  development: {\n    ...DEFAULT_BIRHAUS_CONFIG,\n    strictMode: true,\n    showWarnings: true,\n    detailedLogging: true,\n    performanceMonitoring: true,\n  },\n  \n  production: {\n    ...DEFAULT_BIRHAUS_CONFIG,\n    strictMode: false,\n    showWarnings: false,\n    detailedLogging: false,\n    performanceMonitoring: true,\n    analyticsEnabled: true,\n  },\n  \n  testing: {\n    ...DEFAULT_BIRHAUS_CONFIG,\n    strictMode: true,\n    showWarnings: false,\n    detailedLogging: false,\n    performanceMonitoring: false,\n  }\n} as const"]}