@almadar/ui 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../lib/cn.ts","../../components/atoms/Button.tsx","../../components/atoms/Input.tsx","../../components/atoms/Label.tsx","../../components/atoms/Textarea.tsx","../../components/atoms/Select.tsx","../../components/atoms/Checkbox.tsx","../../components/atoms/Card.tsx","../../components/atoms/Badge.tsx","../../components/atoms/Spinner.tsx","../../components/atoms/Avatar.tsx","../../components/atoms/Box.tsx","../../components/atoms/Center.tsx","../../components/atoms/Divider.tsx","../../components/atoms/Icon.tsx","../../components/atoms/ProgressBar.tsx","../../components/atoms/Radio.tsx","../../components/atoms/Switch.tsx","../../components/atoms/Spacer.tsx","../../components/atoms/Stack.tsx","../../components/atoms/TextHighlight.tsx","../../components/atoms/Typography.tsx","../../context/ThemeContext.tsx","../../components/atoms/ThemeToggle.tsx","../../context/DesignThemeContext.tsx","../../components/atoms/ThemeSelector.tsx","../../components/atoms/Overlay.tsx","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/schemas/entities.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/types/expression.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/context.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/operators/arithmetic.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/operators/comparison.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/operators/logic.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/operators/control.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/operators/collections.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/operators/effects.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/math.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/str.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/array.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/object.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/validate.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/time.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/format.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/std/async.ts","../../../../orbital-rust/shells/typescript-shell/packages/shared/src/evaluator/SExpressionEvaluator.ts","../../components/atoms/ConditionalWrapper.tsx","../../components/atoms/LawReferenceTooltip.tsx","../../components/molecules/FormField.tsx","../../components/molecules/EmptyState.tsx","../../components/molecules/LoadingState.tsx","../../components/molecules/ErrorState.tsx","../../components/molecules/Accordion.tsx","../../components/molecules/Alert.tsx","../../components/molecules/Breadcrumb.tsx","../../providers/EventBusProvider.tsx","../../hooks/useEventBus.ts","../../components/molecules/ButtonGroup.tsx","../../hooks/useQuerySingleton.ts","../../components/molecules/FilterGroup.tsx","../../components/molecules/Card.tsx","../../components/molecules/Container.tsx","../../components/molecules/Flex.tsx","../../components/molecules/FloatingActionButton.tsx","../../components/molecules/Grid.tsx","../../components/molecules/InputGroup.tsx","../../components/molecules/Menu.tsx","../../components/molecules/Modal.tsx","../../components/molecules/Pagination.tsx","../../components/molecules/Popover.tsx","../../lib/debug.ts","../../components/molecules/RelationSelect.tsx","../../components/molecules/SearchInput.tsx","../../components/molecules/SidePanel.tsx","../../components/molecules/SimpleGrid.tsx","../../components/molecules/Tabs.tsx","../../components/molecules/Toast.tsx","../../components/molecules/Tooltip.tsx","../../components/molecules/Drawer.tsx","../../components/molecules/WizardProgress.tsx","../../components/molecules/WizardNavigation.tsx","../../components/molecules/RepeatableFormSection.tsx","../../components/molecules/ViolationAlert.tsx","../../components/molecules/FormSectionHeader.tsx","../../hooks/useEntityData.ts","../../components/organisms/DataTable.tsx","../../components/organisms/StatCard.tsx","../../components/organisms/PageHeader.tsx","../../providers/SelectionProvider.tsx","../../hooks/useUIEvents.ts","../../components/organisms/DetailPanel.tsx","../../components/organisms/FormSection.tsx","../../components/organisms/Form.tsx","../../components/organisms/Header.tsx","../../components/organisms/Navigation.tsx","../../components/organisms/Section.tsx","../../components/organisms/Sidebar.tsx","../../components/organisms/Split.tsx","../../components/organisms/Table.tsx","../../components/organisms/List.tsx","../../components/organisms/CardGrid.tsx","../../components/organisms/MasterDetail.tsx","../../components/organisms/ConfirmDialog.tsx","../../components/organisms/WizardContainer.tsx","../../components/organisms/OrbitalVisualization.tsx","../../components/organisms/layout/SplitPane.tsx","../../components/organisms/layout/DashboardGrid.tsx","../../components/organisms/layout/TabbedContainer.tsx","../../stores/entityStore.ts","../../hooks/useEntities.ts","../../components/organisms/game/GameCanvas.tsx","../../components/atoms/game/HealthBar.tsx","../../components/atoms/game/ScoreDisplay.tsx","../../components/molecules/game/StatBadge.tsx","../../components/organisms/game/GameHud.tsx","../../components/atoms/game/ControlButton.tsx","../../components/molecules/game/DPad.tsx","../../components/molecules/game/ActionButtons.tsx","../../components/organisms/game/GameControls.tsx","../../components/organisms/game/GameMenu.tsx","../../components/organisms/game/GamePauseOverlay.tsx","../../components/organisms/game/GameOverScreen.tsx","../../components/organisms/game/LevelSelect.tsx","../../components/organisms/game/TilemapRenderer.tsx","../../components/organisms/game/InventoryPanel.tsx","../../components/organisms/game/DialogueBox.tsx","../../components/organisms/game/InputListener.tsx","../../components/organisms/game/CollisionDetector.tsx","../../context/UISlotContext.tsx","../../components/organisms/LayoutPatterns.tsx","../../components/organisms/ComponentPatterns.tsx","../../components/organisms/CustomPattern.tsx","../../components/organisms/UISlotRenderer.tsx","../../components/organisms/ModalSlot.tsx","../../components/organisms/DrawerSlot.tsx","../../components/organisms/ToastSlot.tsx","../../hooks/useAuthContext.ts","../../components/templates/DashboardLayout.tsx","../../components/templates/AuthLayout.tsx","../../components/templates/CounterTemplate.tsx","../../components/templates/ListTemplate.tsx","../../components/templates/FormTemplate.tsx","../../components/templates/CrudTemplate.tsx","../../components/templates/SettingsTemplate.tsx","../../components/templates/GameTemplate.tsx","../../components/templates/GenericAppTemplate.tsx"],"names":["React","jsx","jsxs","ChevronDown","variantStyles","sizeStyles","Loader2","Icon","paddingStyles","shadowStyles","sizeClasses","React12","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","r","ZodFirstPartyTypeKind","evaluate","toNumber","evalLambda","deepEqual","emailRegex","uuidRegex","isValid","Fragment","positionStyles","CheckCircle","AlertCircle","Info","Search","useState","iconMap","AlertTriangle","X","ChevronRight","createContext","useContext","variantClasses","useMemo","useCallback","useEffect","Filter","Card","alignStyles","justifyStyles","gapStyles","resolveIcon","LucideIcons","Plus","useRef","positionClasses","Grid","Menu","ChevronLeft","colStyles","arrowClasses","animationClasses","Check","useSafeEventBus","useNavigate","ChevronUp","MoreHorizontal","Minus","ArrowLeft","Calendar","TrendingUp","User","Clock","CheckCircle2","FileText","useParams","data","toSharedContext","ArrowUp","ArrowDown","MoreVertical","formatFieldLabel","List","Package","Pencil","Eye","normalizeFields","fields","Trash2","entities","e","debug","React46","sizeMap","React47","variantMap","React48","React49","React50","positionMap","useSafeNavigate","React51","React52","React53","React54","enabledChoices","createPortal","extractTitle","Link","Settings","Bell","LogOut","Outlet","RefreshCw","RotateCcw","Send","defaultFields","Edit","Save","Pause","Play"],"mappings":"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","file":"index.js","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\n/**\n * Utility function to merge Tailwind CSS classes\n * Combines clsx for conditional classes with tailwind-merge to handle conflicts\n */\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Loader2, type LucideIcon } from \"lucide-react\";\n\nexport type ButtonVariant =\n | \"primary\"\n | \"secondary\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"warning\"\n | \"default\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n size?: ButtonSize;\n isLoading?: boolean;\n /** Left icon as ReactNode (preferred) */\n leftIcon?: React.ReactNode;\n /** Right icon as ReactNode (preferred) */\n rightIcon?: React.ReactNode;\n /** Left icon as Lucide icon component (convenience prop, renders with default size) */\n icon?: LucideIcon;\n /** Right icon as Lucide icon component (convenience prop) */\n iconRight?: LucideIcon;\n}\n\n// Using CSS variables for theme-aware styling with hover/active effects\nconst variantStyles = {\n primary: [\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"shadow-[var(--shadow-sm)]\",\n \"hover:bg-[var(--color-primary-hover)] hover:shadow-[var(--shadow-hover)]\",\n \"active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]\",\n ].join(\" \"),\n secondary: [\n \"bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]\",\n \"border-[length:var(--border-width-thin)] border-[var(--color-border)]\",\n \"hover:bg-[var(--color-secondary-hover)]\",\n \"active:scale-[var(--active-scale)]\",\n ].join(\" \"),\n ghost: [\n \"bg-transparent text-[var(--color-muted-foreground)]\",\n \"hover:text-[var(--color-foreground)] hover:bg-[var(--color-muted)]\",\n \"active:scale-[var(--active-scale)]\",\n ].join(\" \"),\n danger: [\n \"bg-[var(--color-surface)] text-[var(--color-error)]\",\n \"border-[length:var(--border-width)] border-[var(--color-error)]\",\n \"shadow-[var(--shadow-sm)]\",\n \"hover:bg-[var(--color-error)] hover:text-[var(--color-error-foreground)] hover:shadow-[var(--shadow-hover)]\",\n \"active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]\",\n ].join(\" \"),\n success: [\n \"bg-[var(--color-surface)] text-[var(--color-success)]\",\n \"border-[length:var(--border-width)] border-[var(--color-success)]\",\n \"shadow-[var(--shadow-sm)]\",\n \"hover:bg-[var(--color-success)] hover:text-[var(--color-success-foreground)] hover:shadow-[var(--shadow-hover)]\",\n \"active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]\",\n ].join(\" \"),\n warning: [\n \"bg-[var(--color-surface)] text-[var(--color-warning)]\",\n \"border-[length:var(--border-width)] border-[var(--color-warning)]\",\n \"shadow-[var(--shadow-sm)]\",\n \"hover:bg-[var(--color-warning)] hover:text-[var(--color-warning-foreground)] hover:shadow-[var(--shadow-hover)]\",\n \"active:scale-[var(--active-scale)] active:shadow-[var(--shadow-active)]\",\n ].join(\" \"),\n // \"default\" is an alias for secondary\n default: [\n \"bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]\",\n \"border-[length:var(--border-width-thin)] border-[var(--color-border)]\",\n \"hover:bg-[var(--color-secondary-hover)]\",\n \"active:scale-[var(--active-scale)]\",\n ].join(\" \"),\n};\n\nconst sizeStyles = {\n sm: \"px-3 py-1.5 text-sm\",\n md: \"px-4 py-2 text-sm\",\n lg: \"px-6 py-3 text-base\",\n};\n\nconst iconSizeStyles = {\n sm: \"h-3.5 w-3.5\",\n md: \"h-4 w-4\",\n lg: \"h-5 w-5\",\n};\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n size = \"md\",\n isLoading = false,\n disabled,\n leftIcon,\n rightIcon,\n icon: IconComponent,\n iconRight: IconRightComponent,\n children,\n ...props\n },\n ref,\n ) => {\n const resolvedLeftIcon =\n leftIcon ||\n (IconComponent && <IconComponent className={iconSizeStyles[size]} />);\n const resolvedRightIcon =\n rightIcon ||\n (IconRightComponent && (\n <IconRightComponent className={iconSizeStyles[size]} />\n ));\n\n return (\n <button\n ref={ref}\n disabled={disabled || isLoading}\n className={cn(\n \"inline-flex items-center justify-center gap-2\",\n \"font-[var(--font-weight-medium)]\",\n \"rounded-[var(--radius-sm)]\",\n \"transition-all duration-[var(--transition-normal)]\",\n \"focus:outline-none focus:ring-[length:var(--focus-ring-width)] focus:ring-[var(--color-ring)] focus:ring-offset-[length:var(--focus-ring-offset)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n variantStyles[variant],\n sizeStyles[size],\n className,\n )}\n {...props}\n >\n {isLoading ? (\n <Loader2 className=\"h-4 w-4 animate-spin\" />\n ) : (\n resolvedLeftIcon && (\n <span className=\"flex-shrink-0\">{resolvedLeftIcon}</span>\n )\n )}\n {children}\n {resolvedRightIcon && !isLoading && (\n <span className=\"flex-shrink-0\">{resolvedRightIcon}</span>\n )}\n </button>\n );\n },\n);\n\nButton.displayName = \"Button\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { X, ChevronDown, type LucideIcon } from \"lucide-react\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n}\n\nexport interface InputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"onChange\"\n> {\n /** Input type - supports 'select' and 'textarea' in addition to standard types */\n type?:\n | \"text\"\n | \"email\"\n | \"password\"\n | \"number\"\n | \"tel\"\n | \"url\"\n | \"search\"\n | \"date\"\n | \"datetime-local\"\n | \"time\"\n | \"checkbox\"\n | \"select\"\n | \"textarea\";\n error?: string;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n /** Lucide icon component for left side (convenience prop) */\n icon?: LucideIcon;\n /** Show clear button when input has value */\n clearable?: boolean;\n /** Callback when clear button is clicked */\n onClear?: () => void;\n /** Options for select type */\n options?: SelectOption[];\n /** Rows for textarea type */\n rows?: number;\n /** onChange handler - accepts events from input, select, or textarea */\n onChange?: React.ChangeEventHandler<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement\n >;\n}\n\nexport const Input = React.forwardRef<\n HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement,\n InputProps\n>(\n (\n {\n className,\n type = \"text\",\n error,\n leftIcon,\n rightIcon,\n icon: IconComponent,\n clearable,\n onClear,\n value,\n options,\n rows = 3,\n onChange,\n ...props\n },\n ref,\n ) => {\n // Resolve left icon: prefer leftIcon ReactNode, fallback to icon Lucide component\n const resolvedLeftIcon =\n leftIcon || (IconComponent && <IconComponent className=\"h-4 w-4\" />);\n const showClearButton = clearable && value && String(value).length > 0;\n\n const baseClassName = cn(\n \"block w-full rounded-[var(--radius-sm)] transition-all duration-[var(--transition-fast)]\",\n \"border-[length:var(--border-width-thin)] border-[var(--color-border)]\",\n \"px-3 py-2 text-sm\",\n \"bg-[var(--color-card)] hover:bg-[var(--color-muted)] focus:bg-[var(--color-card)]\",\n \"text-[var(--color-foreground)] placeholder:text-[var(--color-muted-foreground)]\",\n \"focus:outline-none focus:ring-1 focus:ring-[var(--color-ring)] focus:border-[var(--color-ring)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-[var(--color-muted)]\",\n error\n ? \"border-[var(--color-error)] focus:border-[var(--color-error)] focus:ring-[var(--color-error)]\"\n : \"\",\n resolvedLeftIcon && \"pl-10\",\n (rightIcon || showClearButton) && \"pr-10\",\n className,\n );\n\n // Handle select type\n if (type === \"select\") {\n return (\n <div className=\"relative\">\n {resolvedLeftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none text-[var(--color-muted-foreground)]\">\n {resolvedLeftIcon}\n </div>\n )}\n <select\n ref={ref as React.Ref<HTMLSelectElement>}\n value={value as string}\n onChange={onChange as React.ChangeEventHandler<HTMLSelectElement>}\n className={cn(baseClassName, \"appearance-none pr-10\", className)}\n {...(props as React.SelectHTMLAttributes<HTMLSelectElement>)}\n >\n <option value=\"\">Select...</option>\n {options?.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none text-[var(--color-muted-foreground)]\">\n <ChevronDown className=\"h-4 w-4\" />\n </div>\n </div>\n );\n }\n\n // Handle textarea type\n if (type === \"textarea\") {\n return (\n <div className=\"relative\">\n <textarea\n ref={ref as React.Ref<HTMLTextAreaElement>}\n value={value as string}\n onChange={onChange as React.ChangeEventHandler<HTMLTextAreaElement>}\n rows={rows}\n className={baseClassName}\n {...(props as React.TextareaHTMLAttributes<HTMLTextAreaElement>)}\n />\n </div>\n );\n }\n\n // Handle checkbox type\n if (type === \"checkbox\") {\n return (\n <input\n ref={ref as React.Ref<HTMLInputElement>}\n type=\"checkbox\"\n checked={props.checked}\n onChange={onChange}\n className={cn(\n \"h-4 w-4 rounded-[var(--radius-sm)]\",\n \"border-[var(--color-border)]\",\n \"text-[var(--color-primary)] focus:ring-[var(--color-ring)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n );\n }\n\n // Standard input types\n return (\n <div className=\"relative\">\n {resolvedLeftIcon && (\n <div className=\"absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none text-[var(--color-muted-foreground)]\">\n {resolvedLeftIcon}\n </div>\n )}\n <input\n ref={ref as React.Ref<HTMLInputElement>}\n type={type}\n value={value}\n onChange={onChange}\n className={baseClassName}\n {...props}\n />\n {showClearButton && (\n <button\n type=\"button\"\n onClick={onClear}\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n )}\n {rightIcon && !showClearButton && (\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center text-[var(--color-muted-foreground)]\">\n {rightIcon}\n </div>\n )}\n </div>\n );\n },\n);\n\nInput.displayName = \"Input\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n required?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className, required, children, ...props }, ref) => {\n return (\n <label\n ref={ref}\n className={cn(\n \"block text-sm font-bold text-[var(--color-foreground)]\",\n className,\n )}\n {...props}\n >\n {children}\n {required && <span className=\"text-[var(--color-error)] ml-1\">*</span>}\n </label>\n );\n },\n);\n\nLabel.displayName = \"Label\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface TextareaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n error?: string;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className, error, ...props }, ref) => {\n return (\n <textarea\n ref={ref}\n className={cn(\n \"block w-full border-[length:var(--border-width)] shadow-[var(--shadow-sm)]\",\n \"px-3 py-2 text-sm text-[var(--color-foreground)]\",\n \"bg-[var(--color-card)]\",\n \"placeholder:text-[var(--color-placeholder)]\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-[var(--color-ring)]\",\n \"disabled:bg-[var(--color-muted)] disabled:text-[var(--color-muted-foreground)] disabled:cursor-not-allowed\",\n \"resize-y min-h-[80px]\",\n error\n ? \"border-[var(--color-error)] focus:border-[var(--color-error)]\"\n : \"border-[var(--color-border)] focus:border-[var(--color-primary)]\",\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nTextarea.displayName = \"Textarea\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { ChevronDown } from \"lucide-react\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<\n React.SelectHTMLAttributes<HTMLSelectElement>,\n \"children\"\n> {\n options: SelectOption[];\n placeholder?: string;\n error?: string;\n}\n\nexport const Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n ({ className, options, placeholder, error, ...props }, ref) => {\n return (\n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n \"block w-full border-[length:var(--border-width)] shadow-[var(--shadow-sm)] appearance-none\",\n \"px-3 py-2 pr-10 text-sm text-[var(--color-foreground)] font-medium\",\n \"bg-[var(--color-card)]\",\n \"focus:outline-none focus:ring-2 focus:ring-offset-0 focus:ring-[var(--color-ring)]\",\n \"disabled:bg-[var(--color-muted)] disabled:text-[var(--color-muted-foreground)] disabled:cursor-not-allowed\",\n error\n ? \"border-[var(--color-error)] focus:border-[var(--color-error)]\"\n : \"border-[var(--color-border)] focus:border-[var(--color-primary)]\",\n className,\n )}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n <div className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none\">\n <ChevronDown className=\"h-4 w-4 text-[var(--color-foreground)]\" />\n </div>\n </div>\n );\n },\n);\n\nSelect.displayName = \"Select\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Check } from \"lucide-react\";\n\nexport interface CheckboxProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\"\n> {\n label?: string;\n}\n\nexport const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n ({ className, label, id, ...props }, ref) => {\n const inputId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;\n\n return (\n <div className=\"flex items-center\">\n <div className=\"relative flex items-center\">\n <input\n ref={ref}\n type=\"checkbox\"\n id={inputId}\n className={cn(\n \"peer h-4 w-4 border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"accent-[var(--color-primary)] focus:ring-[var(--color-ring)] focus:ring-offset-0\",\n \"bg-[var(--color-card)] checked:bg-[var(--color-primary)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n className,\n )}\n {...props}\n />\n </div>\n {label && (\n <label\n htmlFor={inputId}\n className=\"ml-2 text-sm text-[var(--color-foreground)] font-medium cursor-pointer select-none\"\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type CardShadow = \"none\" | \"sm\" | \"md\" | \"lg\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"bordered\" | \"elevated\" | \"interactive\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n /** Card title - renders in header if provided */\n title?: string;\n /** Card subtitle - renders below title */\n subtitle?: string;\n /** Shadow size override */\n shadow?: CardShadow;\n}\n\n// Using CSS variables for theme-aware styling\nconst variantStyles = {\n default: \"bg-[var(--color-card)] border-none\",\n bordered: [\n \"bg-[var(--color-card)]\",\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"shadow-none\",\n ].join(\" \"),\n elevated: [\n \"bg-[var(--color-card)]\",\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"shadow-[var(--shadow-main)]\",\n ].join(\" \"),\n // Interactive variant with theme-specific hover effects\n interactive: [\n \"bg-[var(--color-card)]\",\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"shadow-[var(--shadow-main)]\",\n \"cursor-pointer\",\n \"transition-all duration-[var(--transition-normal)]\",\n \"hover:shadow-[var(--shadow-hover)]\",\n ].join(\" \"),\n};\n\nconst paddingStyles = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n};\n\nconst shadowStyles: Record<CardShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-[var(--shadow-sm)]\",\n md: \"shadow-[var(--shadow-main)]\",\n lg: \"shadow-[var(--shadow-lg)]\",\n};\n\nexport const Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"bordered\",\n padding = \"md\",\n title,\n subtitle,\n shadow,\n children,\n ...props\n },\n ref,\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-[var(--radius-md)]\",\n \"transition-all duration-[var(--transition-normal)]\",\n variantStyles[variant],\n paddingStyles[padding],\n shadow && shadowStyles[shadow],\n className,\n )}\n {...props}\n >\n {(title || subtitle) && (\n <div className=\"mb-4\">\n {title && (\n <h3 className=\"text-lg text-[var(--color-card-foreground)] font-[var(--font-weight-bold)]\">\n {title}\n </h3>\n )}\n {subtitle && (\n <p className=\"text-sm text-[var(--color-muted-foreground)] mt-1\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n {children}\n </div>\n );\n },\n);\n\nCard.displayName = \"Card\";\n\n// Card subcomponents\nexport const CardHeader = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"mb-4\", className)} {...props} />\n));\nCardHeader.displayName = \"CardHeader\";\n\nexport const CardTitle = React.forwardRef<\n HTMLHeadingElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h3\n ref={ref}\n className={cn(\n \"text-lg text-[var(--color-card-foreground)]\",\n \"font-[var(--font-weight-bold)]\",\n className,\n )}\n {...props}\n />\n));\nCardTitle.displayName = \"CardTitle\";\n\nexport const CardContent = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"\", className)} {...props} />\n));\nCardContent.displayName = \"CardContent\";\n\n// Alias for CardBody (used by shared component-types)\nexport const CardBody = CardContent;\nCardBody.displayName = \"CardBody\";\n\nexport const CardFooter = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"mt-4 flex items-center\", className)}\n {...props}\n />\n));\nCardFooter.displayName = \"CardFooter\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type BadgeVariant =\n | \"default\"\n | \"primary\"\n | \"secondary\"\n | \"success\"\n | \"warning\"\n | \"danger\"\n | \"error\"\n | \"info\"\n | \"neutral\";\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: BadgeVariant;\n size?: BadgeSize;\n}\n\n// Using CSS variables for theme-aware styling\nconst variantStyles: Record<BadgeVariant, string> = {\n default: [\n \"bg-[var(--color-muted)] text-[var(--color-foreground)]\",\n \"border-[length:var(--border-width-thin)] border-[var(--color-border)]\",\n ].join(\" \"),\n primary: \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n secondary:\n \"bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]\",\n success: [\n \"bg-[var(--color-surface)] text-[var(--color-success)]\",\n \"border-[length:var(--border-width)] border-[var(--color-success)]\",\n ].join(\" \"),\n warning: [\n \"bg-[var(--color-surface)] text-[var(--color-warning)]\",\n \"border-[length:var(--border-width)] border-[var(--color-warning)]\",\n ].join(\" \"),\n danger: [\n \"bg-[var(--color-surface)] text-[var(--color-error)]\",\n \"border-[length:var(--border-width)] border-[var(--color-error)]\",\n ].join(\" \"),\n error: [\n \"bg-[var(--color-surface)] text-[var(--color-error)]\",\n \"border-[length:var(--border-width)] border-[var(--color-error)]\",\n ].join(\" \"),\n info: [\n \"bg-[var(--color-surface)] text-[var(--color-info)]\",\n \"border-[length:var(--border-width)] border-[var(--color-info)]\",\n ].join(\" \"),\n neutral: [\n \"bg-[var(--color-muted)] text-[var(--color-muted-foreground)]\",\n \"border-[length:var(--border-width-thin)] border-[var(--color-border)]\",\n ].join(\" \"),\n};\n\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-1 text-sm\",\n lg: \"px-3 py-1.5 text-base\",\n};\n\nexport const Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n ({ className, variant = \"default\", size = \"sm\", ...props }, ref) => {\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center font-bold rounded-[var(--radius-sm)]\",\n variantStyles[variant],\n sizeStyles[size],\n className,\n )}\n {...props}\n />\n );\n },\n);\n\nBadge.displayName = \"Badge\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Loader2 } from \"lucide-react\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\nexport interface SpinnerProps extends React.HTMLAttributes<HTMLDivElement> {\n size?: SpinnerSize;\n}\n\nconst sizeStyles: Record<SpinnerSize, string> = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n};\n\nexport const Spinner = React.forwardRef<HTMLDivElement, SpinnerProps>(\n ({ className, size = \"md\", ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"text-[var(--color-foreground)]\", className)}\n {...props}\n >\n <Loader2 className={cn(\"animate-spin\", sizeStyles[size])} />\n </div>\n );\n },\n);\n\nSpinner.displayName = \"Spinner\";\n","/**\n * Avatar Atom Component\n *\n * A versatile avatar component supporting images, initials, icons, and status indicators.\n */\n\nimport React from \"react\";\nimport { User } from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type AvatarSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"away\" | \"busy\";\n\nexport interface AvatarProps {\n /**\n * Image source URL\n */\n src?: string;\n\n /**\n * Alt text for the image\n */\n alt?: string;\n\n /**\n * Full name - initials will be generated automatically\n */\n name?: string;\n\n /**\n * Initials to display (e.g., \"JD\" for John Doe)\n * If not provided but name is, initials will be auto-generated\n */\n initials?: string;\n\n /**\n * Icon to display when no image or initials\n */\n icon?: LucideIcon;\n\n /**\n * Size of the avatar\n * @default 'md'\n */\n size?: AvatarSize;\n\n /**\n * Status indicator\n */\n status?: AvatarStatus;\n\n /**\n * Badge content (e.g., notification count)\n */\n badge?: string | number;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Click handler\n */\n onClick?: () => void;\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n xs: \"w-6 h-6 text-xs\",\n sm: \"w-8 h-8 text-sm\",\n md: \"w-10 h-10 text-base\",\n lg: \"w-12 h-12 text-lg\",\n xl: \"w-16 h-16 text-xl\",\n};\n\nconst iconSizeClasses: Record<AvatarSize, string> = {\n xs: \"w-3 h-3\",\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n xl: \"w-8 h-8\",\n};\n\nconst statusSizeClasses: Record<AvatarSize, string> = {\n xs: \"w-1.5 h-1.5\",\n sm: \"w-2 h-2\",\n md: \"w-2.5 h-2.5\",\n lg: \"w-3 h-3\",\n xl: \"w-4 h-4\",\n};\n\nconst statusClasses: Record<AvatarStatus, string> = {\n online: \"bg-[var(--color-success)]\",\n offline: \"bg-[var(--color-muted-foreground)]\",\n away: \"bg-[var(--color-warning)]\",\n busy: \"bg-[var(--color-error)]\",\n};\n\nconst badgeSizeClasses: Record<AvatarSize, string> = {\n xs: \"w-3 h-3 text-[8px]\",\n sm: \"w-4 h-4 text-[10px]\",\n md: \"w-5 h-5 text-xs\",\n lg: \"w-6 h-6 text-sm\",\n xl: \"w-7 h-7 text-base\",\n};\n\n/**\n * Generate initials from a full name\n */\nfunction generateInitials(name: string): string {\n const parts = name.trim().split(/\\s+/);\n if (parts.length === 1) {\n return parts[0].substring(0, 2).toUpperCase();\n }\n return (parts[0][0] + parts[parts.length - 1][0]).toUpperCase();\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt,\n name,\n initials: providedInitials,\n icon: Icon,\n size = \"md\",\n status,\n badge,\n className,\n onClick,\n}) => {\n // Auto-generate initials from name if not provided\n const initials =\n providedInitials ?? (name ? generateInitials(name) : undefined);\n\n const hasImage = !!src;\n const hasInitials = !!initials;\n const hasIcon = !!Icon;\n\n // Generate background based on initials\n const getInitialsBackground = () =>\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\";\n\n return (\n <div className=\"relative inline-block\">\n <div\n className={cn(\n \"relative inline-flex items-center justify-center\",\n \"bg-[var(--color-muted)] border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"overflow-hidden\",\n sizeClasses[size],\n onClick &&\n \"cursor-pointer hover:bg-[var(--color-surface-hover)] transition-colors\",\n className,\n )}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n {hasImage ? (\n <img\n src={src}\n alt={alt || \"Avatar\"}\n className=\"w-full h-full object-cover\"\n onError={(e) => {\n // Fallback to initials or icon on image error\n const target = e.target as HTMLImageElement;\n target.style.display = \"none\";\n }}\n />\n ) : hasInitials ? (\n <div\n className={cn(\n \"w-full h-full flex items-center justify-center font-bold\",\n getInitialsBackground(),\n )}\n >\n {initials.substring(0, 2).toUpperCase()}\n </div>\n ) : hasIcon ? (\n <Icon\n className={cn(\n \"text-[var(--color-foreground)]\",\n iconSizeClasses[size],\n )}\n />\n ) : (\n <User\n className={cn(\n \"text-[var(--color-foreground)]\",\n iconSizeClasses[size],\n )}\n />\n )}\n </div>\n\n {/* Status indicator */}\n {status && (\n <div\n className={cn(\n \"absolute bottom-0 right-0 border-2 border-[var(--color-card)]\",\n statusClasses[status],\n statusSizeClasses[size],\n )}\n aria-label={`Status: ${status}`}\n />\n )}\n\n {/* Badge */}\n {badge !== undefined && (\n <div\n className={cn(\n \"absolute -top-1 -right-1 flex items-center justify-center\",\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)] font-bold\",\n \"border-2 border-[var(--color-card)]\",\n badgeSizeClasses[size],\n )}\n aria-label={`Badge: ${badge}`}\n >\n {typeof badge === \"number\" && badge > 99 ? \"99+\" : badge}\n </div>\n )}\n </div>\n );\n};\n\nAvatar.displayName = \"Avatar\";\n","/**\n * Box Component\n *\n * A versatile layout primitive that provides spacing, background, border, and shadow controls.\n * Think of it as a styled div with consistent design tokens.\n */\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type BoxPadding = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type BoxMargin =\n | \"none\"\n | \"xs\"\n | \"sm\"\n | \"md\"\n | \"lg\"\n | \"xl\"\n | \"2xl\"\n | \"auto\";\nexport type BoxBg =\n | \"transparent\"\n | \"primary\"\n | \"secondary\"\n | \"muted\"\n | \"accent\"\n | \"surface\"\n | \"overlay\";\nexport type BoxRounded = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"full\";\nexport type BoxShadow = \"none\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Padding on all sides */\n padding?: BoxPadding;\n /** Horizontal padding (overrides padding for x-axis) */\n paddingX?: BoxPadding;\n /** Vertical padding (overrides padding for y-axis) */\n paddingY?: BoxPadding;\n /** Margin on all sides */\n margin?: BoxMargin;\n /** Horizontal margin */\n marginX?: BoxMargin;\n /** Vertical margin */\n marginY?: BoxMargin;\n /** Background color */\n bg?: BoxBg;\n /** Show border */\n border?: boolean;\n /** Border radius */\n rounded?: BoxRounded;\n /** Box shadow */\n shadow?: BoxShadow;\n /** Display type */\n display?:\n | \"block\"\n | \"inline\"\n | \"inline-block\"\n | \"flex\"\n | \"inline-flex\"\n | \"grid\";\n /** Fill available width */\n fullWidth?: boolean;\n /** Fill available height */\n fullHeight?: boolean;\n /** Overflow behavior */\n overflow?: \"auto\" | \"hidden\" | \"visible\" | \"scroll\";\n /** Position */\n position?: \"relative\" | \"absolute\" | \"fixed\" | \"sticky\";\n /** HTML element to render as */\n as?: React.ElementType;\n}\n\nconst paddingStyles: Record<BoxPadding, string> = {\n none: \"p-0\",\n xs: \"p-1\",\n sm: \"p-2\",\n md: \"p-4\",\n lg: \"p-6\",\n xl: \"p-8\",\n \"2xl\": \"p-12\",\n};\n\nconst paddingXStyles: Record<BoxPadding, string> = {\n none: \"px-0\",\n xs: \"px-1\",\n sm: \"px-2\",\n md: \"px-4\",\n lg: \"px-6\",\n xl: \"px-8\",\n \"2xl\": \"px-12\",\n};\n\nconst paddingYStyles: Record<BoxPadding, string> = {\n none: \"py-0\",\n xs: \"py-1\",\n sm: \"py-2\",\n md: \"py-4\",\n lg: \"py-6\",\n xl: \"py-8\",\n \"2xl\": \"py-12\",\n};\n\nconst marginStyles: Record<BoxMargin, string> = {\n none: \"m-0\",\n xs: \"m-1\",\n sm: \"m-2\",\n md: \"m-4\",\n lg: \"m-6\",\n xl: \"m-8\",\n \"2xl\": \"m-12\",\n auto: \"m-auto\",\n};\n\nconst marginXStyles: Record<BoxMargin, string> = {\n none: \"mx-0\",\n xs: \"mx-1\",\n sm: \"mx-2\",\n md: \"mx-4\",\n lg: \"mx-6\",\n xl: \"mx-8\",\n \"2xl\": \"mx-12\",\n auto: \"mx-auto\",\n};\n\nconst marginYStyles: Record<BoxMargin, string> = {\n none: \"my-0\",\n xs: \"my-1\",\n sm: \"my-2\",\n md: \"my-4\",\n lg: \"my-6\",\n xl: \"my-8\",\n \"2xl\": \"my-12\",\n auto: \"my-auto\",\n};\n\n// Using CSS variables for theme-aware styling\nconst bgStyles: Record<BoxBg, string> = {\n transparent: \"bg-transparent\",\n primary: \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n secondary:\n \"bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]\",\n muted: \"bg-[var(--color-muted)] text-[var(--color-foreground)]\",\n accent: \"bg-[var(--color-accent)] text-[var(--color-accent-foreground)]\",\n surface: \"bg-[var(--color-card)]\",\n overlay: \"bg-[var(--color-card)]/80 backdrop-blur-sm\",\n};\n\nconst roundedStyles: Record<BoxRounded, string> = {\n none: \"rounded-none\",\n sm: \"rounded-[var(--radius-sm)]\",\n md: \"rounded-[var(--radius-md)]\",\n lg: \"rounded-[var(--radius-lg)]\",\n xl: \"rounded-[var(--radius-xl)]\",\n \"2xl\": \"rounded-[var(--radius-xl)]\",\n full: \"rounded-[var(--radius-full)]\",\n};\n\nconst shadowStyles: Record<BoxShadow, string> = {\n none: \"shadow-none\",\n sm: \"shadow-[var(--shadow-sm)]\",\n md: \"shadow-[var(--shadow-main)]\",\n lg: \"shadow-[var(--shadow-lg)]\",\n xl: \"shadow-[var(--shadow-lg)]\",\n};\n\nconst displayStyles = {\n block: \"block\",\n inline: \"inline\",\n \"inline-block\": \"inline-block\",\n flex: \"flex\",\n \"inline-flex\": \"inline-flex\",\n grid: \"grid\",\n};\n\nconst overflowStyles = {\n auto: \"overflow-auto\",\n hidden: \"overflow-hidden\",\n visible: \"overflow-visible\",\n scroll: \"overflow-scroll\",\n};\n\nconst positionStyles = {\n relative: \"relative\",\n absolute: \"absolute\",\n fixed: \"fixed\",\n sticky: \"sticky\",\n};\n\n/**\n * Box - Versatile container component with design tokens\n */\nexport const Box = React.forwardRef<HTMLDivElement, BoxProps>(\n (\n {\n padding,\n paddingX,\n paddingY,\n margin,\n marginX,\n marginY,\n bg = \"transparent\",\n border = false,\n rounded = \"none\",\n shadow = \"none\",\n display,\n fullWidth = false,\n fullHeight = false,\n overflow,\n position,\n className,\n children,\n as: Component = \"div\",\n onClick,\n ...rest\n },\n ref,\n ) => {\n return (\n <Component\n ref={ref}\n className={cn(\n // Padding\n padding && paddingStyles[padding],\n paddingX && paddingXStyles[paddingX],\n paddingY && paddingYStyles[paddingY],\n // Margin\n margin && marginStyles[margin],\n marginX && marginXStyles[marginX],\n marginY && marginYStyles[marginY],\n // Background\n bgStyles[bg],\n // Border - uses theme variables\n border &&\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n // Rounded\n roundedStyles[rounded],\n // Shadow\n shadowStyles[shadow],\n // Display\n display && displayStyles[display],\n // Dimensions\n fullWidth && \"w-full\",\n fullHeight && \"h-full\",\n // Overflow\n overflow && overflowStyles[overflow],\n // Position\n position && positionStyles[position],\n // Cursor for clickable\n onClick && \"cursor-pointer\",\n className,\n )}\n onClick={onClick}\n {...rest}\n >\n {children}\n </Component>\n );\n },\n);\n\nBox.displayName = \"Box\";\n\nexport default Box;\n","/**\n * Center Component\n * \n * A layout utility that centers its children horizontally and/or vertically.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport interface CenterProps {\n /** Center inline (width fits content) vs block (full width) */\n inline?: boolean;\n /** Center only horizontally */\n horizontal?: boolean;\n /** Center only vertically */\n vertical?: boolean;\n /** Minimum height (useful for vertical centering) */\n minHeight?: string | number;\n /** Fill available height */\n fullHeight?: boolean;\n /** Fill available width */\n fullWidth?: boolean;\n /** Custom class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n /** Children elements */\n children: React.ReactNode;\n /** HTML element to render as */\n as?: React.ElementType;\n}\n\n/**\n * Center - Centers content horizontally and/or vertically\n */\nexport const Center: React.FC<CenterProps> = ({\n inline = false,\n horizontal = true,\n vertical = true,\n minHeight,\n fullHeight = false,\n fullWidth = false,\n className,\n style,\n children,\n as: Component = 'div',\n}) => {\n const mergedStyle = minHeight ? { minHeight, ...style } : style;\n\n return (\n <Component\n className={cn(\n inline ? 'inline-flex' : 'flex',\n horizontal && 'justify-center',\n vertical && 'items-center',\n fullHeight && 'h-full',\n fullWidth && 'w-full',\n className\n )}\n style={mergedStyle}\n >\n {children}\n </Component>\n );\n};\n\nexport default Center;\n\n","/**\n * Divider Atom Component\n *\n * A divider component for separating content sections.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type DividerOrientation = \"horizontal\" | \"vertical\";\nexport type DividerVariant = \"solid\" | \"dashed\" | \"dotted\";\n\nexport interface DividerProps {\n /**\n * Orientation of the divider\n * @default 'horizontal'\n */\n orientation?: DividerOrientation;\n\n /**\n * Text label to display in the divider\n */\n label?: string;\n\n /**\n * Line style variant\n * @default 'solid'\n */\n variant?: DividerVariant;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nconst variantStyles: Record<DividerVariant, string> = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n};\n\nexport const Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n label,\n variant = \"solid\",\n className,\n}) => {\n if (orientation === \"vertical\") {\n return (\n <div\n className={cn(\n \"w-0 h-full border-l border-[var(--color-border)]\",\n variantStyles[variant],\n className,\n )}\n role=\"separator\"\n aria-orientation=\"vertical\"\n />\n );\n }\n\n if (label) {\n return (\n <div\n className={cn(\"flex items-center gap-3 my-4\", className)}\n role=\"separator\"\n aria-label={label}\n >\n <div\n className={cn(\n \"flex-1 h-0 border-t border-[var(--color-border)]\",\n variantStyles[variant],\n )}\n />\n <span className=\"text-sm text-[var(--color-foreground)] font-bold uppercase tracking-wide\">\n {label}\n </span>\n <div\n className={cn(\n \"flex-1 h-0 border-t border-[var(--color-border)]\",\n variantStyles[variant],\n )}\n />\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"w-full h-0 border-t border-[var(--color-border)] my-4\",\n variantStyles[variant],\n className,\n )}\n role=\"separator\"\n aria-orientation=\"horizontal\"\n />\n );\n};\n\nDivider.displayName = \"Divider\";\n","/**\n * Icon Atom Component\n *\n * A wrapper component for Lucide icons with consistent sizing and styling.\n * Uses theme-aware CSS variables for stroke width and color.\n *\n * Supports two APIs:\n * - `icon` prop: Pass a LucideIcon component directly\n * - `name` prop: Pass a string icon name (resolved from iconMap)\n */\n\nimport React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport * as LucideIcons from 'lucide-react';\nimport { cn } from '../../lib/cn';\n\nexport type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type IconAnimation = 'spin' | 'pulse' | 'none';\n\n/**\n * Map of icon names to Lucide icon components.\n * Supports common icons used in patterns.\n */\nconst iconMap: Record<string, LucideIcon> = {\n // Navigation & Actions\n 'chevron-right': LucideIcons.ChevronRight,\n 'chevron-left': LucideIcons.ChevronLeft,\n 'chevron-down': LucideIcons.ChevronDown,\n 'chevron-up': LucideIcons.ChevronUp,\n 'arrow-right': LucideIcons.ArrowRight,\n 'arrow-left': LucideIcons.ArrowLeft,\n 'arrow-up': LucideIcons.ArrowUp,\n 'arrow-down': LucideIcons.ArrowDown,\n 'x': LucideIcons.X,\n 'close': LucideIcons.X,\n 'menu': LucideIcons.Menu,\n 'more-vertical': LucideIcons.MoreVertical,\n 'more-horizontal': LucideIcons.MoreHorizontal,\n\n // Status & Feedback\n 'check': LucideIcons.Check,\n 'check-circle': LucideIcons.CheckCircle,\n 'alert-circle': LucideIcons.AlertCircle,\n 'alert-triangle': LucideIcons.AlertTriangle,\n 'info': LucideIcons.Info,\n 'help-circle': LucideIcons.HelpCircle,\n 'loader': LucideIcons.Loader2,\n\n // CRUD Operations\n 'plus': LucideIcons.Plus,\n 'minus': LucideIcons.Minus,\n 'edit': LucideIcons.Edit,\n 'pencil': LucideIcons.Pencil,\n 'trash': LucideIcons.Trash2,\n 'trash-2': LucideIcons.Trash2,\n 'save': LucideIcons.Save,\n 'copy': LucideIcons.Copy,\n 'clipboard': LucideIcons.Clipboard,\n\n // Files & Documents\n 'file': LucideIcons.File,\n 'file-text': LucideIcons.FileText,\n 'folder': LucideIcons.Folder,\n 'folder-open': LucideIcons.FolderOpen,\n 'download': LucideIcons.Download,\n 'upload': LucideIcons.Upload,\n 'image': LucideIcons.Image,\n\n // Communication\n 'mail': LucideIcons.Mail,\n 'message-circle': LucideIcons.MessageCircle,\n 'send': LucideIcons.Send,\n 'phone': LucideIcons.Phone,\n\n // User & Profile\n 'user': LucideIcons.User,\n 'users': LucideIcons.Users,\n 'user-plus': LucideIcons.UserPlus,\n 'settings': LucideIcons.Settings,\n 'log-out': LucideIcons.LogOut,\n 'log-in': LucideIcons.LogIn,\n\n // Search & Filter\n 'search': LucideIcons.Search,\n 'filter': LucideIcons.Filter,\n 'sort-asc': LucideIcons.ArrowUpNarrowWide,\n 'sort-desc': LucideIcons.ArrowDownNarrowWide,\n\n // Layout & View\n 'grid': LucideIcons.Grid,\n 'list': LucideIcons.List,\n 'layout': LucideIcons.Layout,\n 'maximize': LucideIcons.Maximize,\n 'minimize': LucideIcons.Minimize,\n 'eye': LucideIcons.Eye,\n 'eye-off': LucideIcons.EyeOff,\n\n // Media & Playback\n 'play': LucideIcons.Play,\n 'pause': LucideIcons.Pause,\n 'stop': LucideIcons.Square,\n 'volume': LucideIcons.Volume2,\n 'volume-off': LucideIcons.VolumeX,\n\n // Time & Calendar\n 'calendar': LucideIcons.Calendar,\n 'clock': LucideIcons.Clock,\n\n // Misc\n 'star': LucideIcons.Star,\n 'heart': LucideIcons.Heart,\n 'home': LucideIcons.Home,\n 'link': LucideIcons.Link,\n 'external-link': LucideIcons.ExternalLink,\n 'refresh': LucideIcons.RefreshCw,\n 'refresh-cw': LucideIcons.RefreshCw,\n 'zap': LucideIcons.Zap,\n 'bell': LucideIcons.Bell,\n 'bookmark': LucideIcons.Bookmark,\n 'share': LucideIcons.Share2,\n 'lock': LucideIcons.Lock,\n 'unlock': LucideIcons.Unlock,\n 'globe': LucideIcons.Globe,\n 'database': LucideIcons.Database,\n 'code': LucideIcons.Code,\n 'terminal': LucideIcons.Terminal,\n};\n\n/**\n * Resolve an icon name to a Lucide icon component.\n * Falls back to HelpCircle if not found.\n */\nexport function resolveIcon(name: string): LucideIcon {\n // Try exact match first\n if (iconMap[name]) {\n return iconMap[name];\n }\n\n // Try lowercase\n const lowerName = name.toLowerCase();\n if (iconMap[lowerName]) {\n return iconMap[lowerName];\n }\n\n // Try converting camelCase to kebab-case\n const kebabName = name.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n if (iconMap[kebabName]) {\n return iconMap[kebabName];\n }\n\n // Fallback\n return LucideIcons.HelpCircle;\n}\n\nexport interface IconProps {\n /** Lucide icon component (preferred for type-safe usage) */\n icon?: LucideIcon;\n /** Icon name as string (resolved from iconMap) */\n name?: string;\n /** Size of the icon */\n size?: IconSize;\n /** Color class (Tailwind color class) or 'inherit' for theme default */\n color?: string;\n /** Animation type */\n animation?: IconAnimation;\n /** Additional CSS classes */\n className?: string;\n /** Icon stroke width - uses theme default if not specified */\n strokeWidth?: number;\n /** Inline style */\n style?: React.CSSProperties;\n}\n\nconst sizeClasses: Record<IconSize, string> = {\n xs: 'w-3 h-3',\n sm: 'w-4 h-4',\n md: 'w-5 h-5',\n lg: 'w-6 h-6',\n xl: 'w-8 h-8',\n};\n\nconst animationClasses: Record<IconAnimation, string> = {\n none: '',\n spin: 'animate-spin',\n pulse: 'animate-pulse',\n};\n\nexport const Icon: React.FC<IconProps> = ({\n icon,\n name,\n size = 'md',\n color,\n animation = 'none',\n className,\n strokeWidth,\n style,\n}) => {\n // Resolve icon: use provided icon component, or resolve from name\n const IconComponent = icon ?? (name ? resolveIcon(name) : LucideIcons.HelpCircle);\n\n // Use theme's icon stroke width if not explicitly set\n const effectiveStrokeWidth = strokeWidth ?? undefined;\n\n return (\n <IconComponent\n className={cn(\n sizeClasses[size],\n animationClasses[animation],\n // Use theme's icon color or provided color\n color ? color : 'text-[var(--icon-color,currentColor)]',\n className\n )}\n strokeWidth={effectiveStrokeWidth}\n style={{\n ...(effectiveStrokeWidth === undefined\n ? { strokeWidth: 'var(--icon-stroke-width, 2)' }\n : {}),\n ...style,\n }}\n />\n );\n};\n\nIcon.displayName = 'Icon';\n","/**\n * ProgressBar Atom Component\n *\n * A progress bar component with linear, circular, and stepped variants.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type ProgressBarType = \"linear\" | \"circular\" | \"stepped\";\nexport type ProgressBarVariant =\n | \"default\"\n | \"primary\"\n | \"success\"\n | \"warning\"\n | \"danger\";\nexport type ProgressBarColor = ProgressBarVariant; // Alias\n\nexport interface ProgressBarProps {\n /**\n * Progress value (0-100)\n */\n value: number;\n\n /**\n * Maximum value (for calculating percentage)\n * @default 100\n */\n max?: number;\n\n /**\n * Type of the progress bar (linear, circular, stepped)\n * @default 'linear'\n */\n type?: ProgressBarType;\n\n /**\n * Variant/color of the progress bar\n * @default 'primary'\n */\n variant?: ProgressBarVariant;\n\n /**\n * Color variant (alias for variant)\n * @default 'primary'\n */\n color?: ProgressBarColor;\n\n /**\n * Show percentage text\n * @default false\n */\n showPercentage?: boolean;\n\n /**\n * Alias for showPercentage (pattern compatibility)\n */\n showLabel?: boolean;\n\n /**\n * Label text\n */\n label?: string;\n\n /**\n * Size (for circular variant)\n * @default 'md'\n */\n size?: \"sm\" | \"md\" | \"lg\";\n\n /**\n * Number of steps (for stepped variant)\n * @default 5\n */\n steps?: number;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nconst colorClasses: Record<ProgressBarVariant, string> = {\n default: \"bg-[var(--color-primary)]\",\n primary: \"bg-[var(--color-primary)]\",\n success: \"bg-[var(--color-success)]\",\n warning: \"bg-[var(--color-warning)]\",\n danger: \"bg-[var(--color-error)]\",\n};\n\nconst circularSizeClasses = {\n sm: \"w-16 h-16\",\n md: \"w-24 h-24\",\n lg: \"w-32 h-32\",\n};\n\nexport const ProgressBar: React.FC<ProgressBarProps> = ({\n value,\n max = 100,\n type = \"linear\",\n variant = \"primary\",\n color,\n showPercentage = false,\n showLabel = false,\n label,\n size = \"md\",\n steps = 5,\n className,\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n // Use color if provided, else variant\n const effectiveColor = color ?? variant;\n // Use showLabel as alias for showPercentage\n const effectiveShowPercentage = showPercentage || showLabel;\n\n if (type === \"linear\") {\n return (\n <div className={cn(\"w-full\", className)}>\n {label && (\n <div className=\"flex items-center justify-between mb-1.5\">\n <span className=\"text-sm font-bold text-[var(--color-foreground)]\">\n {label}\n </span>\n {effectiveShowPercentage && (\n <span className=\"text-sm text-[var(--color-foreground)] font-medium\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <div className=\"w-full h-2 bg-[var(--color-muted)] border border-[var(--color-border)] overflow-hidden\">\n <div\n className={cn(\n \"h-full transition-all duration-300 ease-out\",\n colorClasses[effectiveColor],\n )}\n style={{ width: `${percentage}%` }}\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n aria-label={label || `Progress: ${Math.round(percentage)}%`}\n />\n </div>\n </div>\n );\n }\n\n if (type === \"circular\") {\n const radius = size === \"sm\" ? 28 : size === \"md\" ? 40 : 56;\n const circumference = 2 * Math.PI * radius;\n const offset = circumference - (percentage / 100) * circumference;\n\n return (\n <div\n className={cn(\n \"relative inline-flex items-center justify-center\",\n className,\n )}\n >\n <svg\n className={cn(\"transform -rotate-90\", circularSizeClasses[size])}\n viewBox=\"0 0 100 100\"\n >\n {/* Background circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"currentColor\"\n strokeWidth=\"8\"\n fill=\"none\"\n className=\"text-[var(--color-muted)]\"\n />\n {/* Progress circle */}\n <circle\n cx=\"50\"\n cy=\"50\"\n r={radius}\n stroke=\"currentColor\"\n strokeWidth=\"8\"\n fill=\"none\"\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n strokeLinecap=\"round\"\n className={cn(\n \"transition-all duration-300 ease-out\",\n colorClasses[effectiveColor],\n )}\n />\n </svg>\n {effectiveShowPercentage && (\n <div className=\"absolute inset-0 flex items-center justify-center\">\n <span className=\"text-sm font-bold text-[var(--color-foreground)]\">\n {Math.round(percentage)}%\n </span>\n </div>\n )}\n </div>\n );\n }\n\n if (type === \"stepped\") {\n const stepValue = max / steps;\n const activeSteps = Math.floor(value / stepValue);\n const partialStep = (value % stepValue) / stepValue;\n\n return (\n <div className={cn(\"w-full\", className)}>\n {label && (\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"text-sm font-medium text-[var(--color-foreground)]\">\n {label}\n </span>\n {effectiveShowPercentage && (\n <span className=\"text-sm text-[var(--color-muted-foreground)]\">\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n )}\n <div className=\"flex gap-1\">\n {Array.from({ length: steps }).map((_, index) => {\n const isActive = index < activeSteps;\n const isPartial = index === activeSteps && partialStep > 0;\n\n return (\n <div\n key={index}\n className=\"flex-1 h-2 bg-[var(--color-muted)] border border-[var(--color-border)] overflow-hidden\"\n >\n <div\n className={cn(\n \"h-full transition-all duration-300 ease-out\",\n (isActive || isPartial) && colorClasses[effectiveColor],\n )}\n style={{\n width: isPartial\n ? `${partialStep * 100}%`\n : isActive\n ? \"100%\"\n : \"0%\",\n }}\n />\n </div>\n );\n })}\n </div>\n </div>\n );\n }\n\n return null;\n};\n\nProgressBar.displayName = \"ProgressBar\";\n","/**\n * Radio Atom Component\n *\n * A radio button component with label support and accessibility.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface RadioProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> {\n /**\n * Label text displayed next to the radio button\n */\n label?: string;\n\n /**\n * Helper text displayed below the radio button\n */\n helperText?: string;\n\n /**\n * Error message displayed below the radio button\n */\n error?: string;\n\n /**\n * Size of the radio button\n * @default 'md'\n */\n size?: \"sm\" | \"md\" | \"lg\";\n}\n\nexport const Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n helperText,\n error,\n size = \"md\",\n className,\n id,\n checked,\n disabled,\n ...props\n },\n ref,\n ) => {\n const radioId = id || `radio-${Math.random().toString(36).substr(2, 9)}`;\n const hasError = !!error;\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n const dotSizeClasses = {\n sm: \"w-2 h-2\",\n md: \"w-2.5 h-2.5\",\n lg: \"w-3 h-3\",\n };\n\n return (\n <>\n <div className=\"flex items-start gap-3\">\n <div className=\"relative flex-shrink-0 mt-0.5\">\n <input\n ref={ref}\n type=\"radio\"\n id={radioId}\n checked={checked}\n disabled={disabled}\n className={cn(\"sr-only peer\", className)}\n aria-invalid={hasError}\n aria-describedby={\n error\n ? `${radioId}-error`\n : helperText\n ? `${radioId}-helper`\n : undefined\n }\n {...props}\n />\n <label\n htmlFor={radioId}\n className={cn(\n \"flex items-center justify-center\",\n \"border-[length:var(--border-width)] transition-all cursor-pointer\",\n sizeClasses[size],\n hasError\n ? \"border-[var(--color-error)] peer-focus:ring-[var(--color-error)]/20\"\n : \"border-[var(--color-border)] peer-focus:ring-[var(--color-ring)]/20\",\n checked\n ? hasError\n ? \"border-[var(--color-error)]\"\n : \"border-[var(--color-primary)] bg-[var(--color-primary)]\"\n : \"\",\n \"peer-focus:outline-none peer-focus:ring-2 peer-focus:ring-offset-2\",\n disabled && \"opacity-50 cursor-not-allowed\",\n !disabled && \"hover:border-[var(--color-border-hover)]\",\n )}\n >\n {checked && (\n <div\n className={cn(\n \"transition-all\",\n dotSizeClasses[size],\n hasError\n ? \"bg-[var(--color-error)]\"\n : \"bg-[var(--color-primary-foreground)]\",\n )}\n />\n )}\n </label>\n </div>\n\n {label && (\n <div className=\"flex-1 min-w-0\">\n <label\n htmlFor={radioId}\n className={cn(\n \"block text-sm font-medium cursor-pointer select-none\",\n hasError\n ? \"text-[var(--color-error)]\"\n : \"text-[var(--color-foreground)]\",\n disabled && \"opacity-50 cursor-not-allowed\",\n )}\n >\n {label}\n </label>\n </div>\n )}\n </div>\n\n {(helperText || error) && (\n <div className=\"mt-1.5 ml-8\">\n {error && (\n <p\n id={`${radioId}-error`}\n className=\"text-sm text-[var(--color-error)] font-medium\"\n role=\"alert\"\n >\n {error}\n </p>\n )}\n {!error && helperText && (\n <p\n id={`${radioId}-helper`}\n className=\"text-sm text-[var(--color-muted-foreground)]\"\n >\n {helperText}\n </p>\n )}\n </div>\n )}\n </>\n );\n },\n);\n\nRadio.displayName = \"Radio\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface SwitchProps {\n checked?: boolean;\n defaultChecked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n label?: string;\n id?: string;\n name?: string;\n className?: string;\n}\n\nexport const Switch = React.forwardRef<HTMLButtonElement, SwitchProps>(\n (\n {\n checked,\n defaultChecked = false,\n onChange,\n disabled = false,\n label,\n id,\n name,\n className,\n },\n ref,\n ) => {\n const [isChecked, setIsChecked] = React.useState(\n checked !== undefined ? checked : defaultChecked,\n );\n\n React.useEffect(() => {\n if (checked !== undefined) {\n setIsChecked(checked);\n }\n }, [checked]);\n\n const handleClick = () => {\n if (disabled) return;\n const newValue = !isChecked;\n if (checked === undefined) {\n setIsChecked(newValue);\n }\n onChange?.(newValue);\n };\n\n return (\n <div className={cn(\"inline-flex items-center gap-2\", className)}>\n <button\n ref={ref}\n type=\"button\"\n role=\"switch\"\n aria-checked={isChecked}\n aria-label={label}\n id={id}\n name={name}\n disabled={disabled}\n onClick={handleClick}\n className={cn(\n \"relative inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors\",\n \"focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n isChecked ? \"bg-primary\" : \"bg-muted\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n >\n <span\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform\",\n isChecked ? \"translate-x-5\" : \"translate-x-0\",\n )}\n />\n </button>\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"text-sm font-medium leading-none cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-70\",\n )}\n onClick={handleClick}\n >\n {label}\n </label>\n )}\n </div>\n );\n },\n);\n\nSwitch.displayName = \"Switch\";\n","/**\n * Spacer Component\n * \n * A flexible spacer that expands to fill available space in a flex container.\n * Useful for pushing elements apart or creating consistent spacing.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type SpacerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'auto';\n\nexport interface SpacerProps {\n /** Fixed size (auto = flex grow) */\n size?: SpacerSize;\n /** Orientation (for fixed sizes) */\n axis?: 'horizontal' | 'vertical';\n /** Custom class name */\n className?: string;\n}\n\nconst horizontalSizes: Record<Exclude<SpacerSize, 'auto'>, string> = {\n xs: 'w-1',\n sm: 'w-2',\n md: 'w-4',\n lg: 'w-6',\n xl: 'w-8',\n '2xl': 'w-12',\n};\n\nconst verticalSizes: Record<Exclude<SpacerSize, 'auto'>, string> = {\n xs: 'h-1',\n sm: 'h-2',\n md: 'h-4',\n lg: 'h-6',\n xl: 'h-8',\n '2xl': 'h-12',\n};\n\n/**\n * Spacer - Flexible spacing element for flex layouts\n * \n * Usage:\n * - size=\"auto\" (default): Expands to fill available space (flex: 1)\n * - size=\"md\": Fixed size spacing\n */\nexport const Spacer: React.FC<SpacerProps> = ({\n size = 'auto',\n axis = 'horizontal',\n className,\n}) => {\n if (size === 'auto') {\n return <div className={cn('flex-1', className)} aria-hidden=\"true\" />;\n }\n\n const sizeClass = axis === 'horizontal' \n ? horizontalSizes[size] \n : verticalSizes[size];\n\n return (\n <div \n className={cn('flex-shrink-0', sizeClass, className)} \n aria-hidden=\"true\" \n />\n );\n};\n\nexport default Spacer;\n\n","/**\n * Stack Component\n *\n * A layout primitive for arranging children in a vertical or horizontal stack with consistent spacing.\n * Includes convenience exports VStack and HStack for common use cases.\n */\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type StackDirection = \"horizontal\" | \"vertical\";\nexport type StackGap = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\";\nexport type StackAlign = \"start\" | \"center\" | \"end\" | \"stretch\" | \"baseline\";\nexport type StackJustify =\n | \"start\"\n | \"center\"\n | \"end\"\n | \"between\"\n | \"around\"\n | \"evenly\";\n\nexport interface StackProps {\n /** Stack direction */\n direction?: StackDirection;\n /** Gap between children */\n gap?: StackGap;\n /** Align items on the cross axis */\n align?: StackAlign;\n /** Justify items on the main axis */\n justify?: StackJustify;\n /** Allow items to wrap */\n wrap?: boolean;\n /** Reverse the order of children */\n reverse?: boolean;\n /** Fill available space (flex: 1) */\n flex?: boolean;\n /** Custom class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n /** Children elements */\n children?: React.ReactNode;\n /** HTML element to render as */\n as?: React.ElementType;\n /** Click handler */\n onClick?: (e: React.MouseEvent) => void;\n /** Keyboard handler */\n onKeyDown?: (e: React.KeyboardEvent) => void;\n /** Role for accessibility */\n role?: string;\n /** Tab index for focus management */\n tabIndex?: number;\n}\n\nconst gapStyles: Record<StackGap, string> = {\n none: \"gap-0\",\n xs: \"gap-1\",\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n xl: \"gap-8\",\n \"2xl\": \"gap-12\",\n};\n\nconst alignStyles: Record<StackAlign, string> = {\n start: \"items-start\",\n center: \"items-center\",\n end: \"items-end\",\n stretch: \"items-stretch\",\n baseline: \"items-baseline\",\n};\n\nconst justifyStyles: Record<StackJustify, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\",\n between: \"justify-between\",\n around: \"justify-around\",\n evenly: \"justify-evenly\",\n};\n\n/**\n * Stack - Flexible layout component for arranging children\n */\nexport const Stack: React.FC<StackProps> = ({\n direction = \"vertical\",\n gap = \"md\",\n align = \"stretch\",\n justify = \"start\",\n wrap = false,\n reverse = false,\n flex = false,\n className,\n style,\n children,\n as: Component = \"div\",\n onClick,\n onKeyDown,\n role,\n tabIndex,\n}) => {\n const directionClass =\n direction === \"horizontal\"\n ? reverse\n ? \"flex-row-reverse\"\n : \"flex-row\"\n : reverse\n ? \"flex-col-reverse\"\n : \"flex-col\";\n\n return (\n <Component\n className={cn(\n \"flex\",\n directionClass,\n gapStyles[gap],\n alignStyles[align],\n justifyStyles[justify],\n wrap && \"flex-wrap\",\n flex && \"flex-1\",\n className,\n )}\n style={style}\n onClick={onClick}\n onKeyDown={onKeyDown}\n role={role}\n tabIndex={tabIndex}\n >\n {children}\n </Component>\n );\n};\n\n/**\n * VStack - Vertical stack shorthand\n */\nexport interface VStackProps extends Omit<StackProps, \"direction\"> {}\n\nexport const VStack: React.FC<VStackProps> = (props) => (\n <Stack direction=\"vertical\" {...props} />\n);\n\n/**\n * HStack - Horizontal stack shorthand\n */\nexport interface HStackProps extends Omit<StackProps, \"direction\"> {}\n\nexport const HStack: React.FC<HStackProps> = (props) => (\n <Stack direction=\"horizontal\" {...props} />\n);\n\nexport default Stack;\n","/**\n * TextHighlight Atom Component\n *\n * A styled span component for highlighting text with annotations (questions or notes).\n * Uses different colors for different annotation types:\n * - Questions: Blue highlight\n * - Notes: Yellow highlight\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type HighlightType = \"question\" | \"note\";\n\nexport interface TextHighlightProps {\n /**\n * Type of highlight (determines color)\n */\n type: HighlightType;\n\n /**\n * Whether the highlight is currently active/focused\n * @default false\n */\n isActive?: boolean;\n\n /**\n * Callback when highlight is clicked\n */\n onClick?: () => void;\n\n /**\n * Callback when highlight is hovered\n */\n onMouseEnter?: () => void;\n\n /**\n * Callback when hover ends\n */\n onMouseLeave?: () => void;\n\n /**\n * Unique ID for the annotation\n */\n annotationId?: string;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Highlighted text content\n */\n children: React.ReactNode;\n}\n\n/**\n * TextHighlight component for rendering highlighted text annotations\n */\nexport const TextHighlight: React.FC<TextHighlightProps> = ({\n type,\n isActive = false,\n onClick,\n onMouseEnter,\n onMouseLeave,\n annotationId,\n className,\n children,\n}) => {\n const baseStyles = \"cursor-pointer transition-all duration-150\";\n\n const typeStyles = {\n question: cn(\n // Blue border for questions\n \"bg-[var(--color-card)] border-b-2 border-primary-600\",\n \"hover:bg-[var(--color-muted)]\",\n isActive && \"bg-primary-100 ring-2 ring-primary-600\",\n ),\n note: cn(\n // Yellow border for notes\n \"bg-[var(--color-card)] border-b-2 border-amber-500\",\n \"hover:bg-[var(--color-muted)]\",\n isActive && \"bg-amber-100 ring-2 ring-amber-500\",\n ),\n };\n\n return (\n <span\n data-highlight=\"true\"\n data-highlight-type={type}\n data-annotation-id={annotationId}\n className={cn(baseStyles, typeStyles[type], className)}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onClick?.();\n }\n }}\n >\n {children}\n </span>\n );\n};\n\nTextHighlight.displayName = \"TextHighlight\";\n","/**\n * Typography Atom Component\n *\n * Text elements following the KFlow design system with theme-aware styling.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type TypographyVariant =\n | \"h1\"\n | \"h2\"\n | \"h3\"\n | \"h4\"\n | \"h5\"\n | \"h6\"\n | \"body1\"\n | \"body2\"\n | \"body\"\n | \"caption\"\n | \"overline\"\n | \"small\"\n | \"large\"\n | \"label\";\n\nexport type TypographySize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\n\nexport interface TypographyProps {\n /** Typography variant */\n variant?: TypographyVariant;\n /** Heading level (1-6) - alternative to variant for headings */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Text color */\n color?:\n | \"primary\"\n | \"secondary\"\n | \"muted\"\n | \"error\"\n | \"success\"\n | \"warning\"\n | \"inherit\";\n /** Text alignment */\n align?: \"left\" | \"center\" | \"right\";\n /** Font weight override */\n weight?: \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\";\n /** Font size override */\n size?: TypographySize;\n /** Truncate with ellipsis */\n truncate?: boolean;\n /** Custom HTML element */\n as?: keyof JSX.IntrinsicElements;\n /** HTML id attribute */\n id?: string;\n /** Additional class names */\n className?: string;\n /** Inline style */\n style?: React.CSSProperties;\n /** Text content (alternative to children) */\n content?: React.ReactNode;\n /** Children elements */\n children?: React.ReactNode;\n}\n\n// Using CSS variables for theme-aware styling\nconst variantStyles: Record<TypographyVariant, string> = {\n h1: \"text-4xl font-bold tracking-tight text-[var(--color-foreground)]\",\n h2: \"text-3xl font-bold tracking-tight text-[var(--color-foreground)]\",\n h3: \"text-2xl font-bold text-[var(--color-foreground)]\",\n h4: \"text-xl font-bold text-[var(--color-foreground)]\",\n h5: \"text-lg font-bold text-[var(--color-foreground)]\",\n h6: \"text-base font-bold text-[var(--color-foreground)]\",\n body1: \"text-base font-normal text-[var(--color-foreground)]\",\n body2: \"text-sm font-normal text-[var(--color-foreground)]\",\n body: \"text-base font-normal text-[var(--color-foreground)]\",\n caption: \"text-xs font-normal text-[var(--color-muted-foreground)]\",\n overline:\n \"text-xs uppercase tracking-wide font-bold text-[var(--color-muted-foreground)]\",\n small: \"text-sm font-normal text-[var(--color-foreground)]\",\n large: \"text-lg font-medium text-[var(--color-foreground)]\",\n label: \"text-sm font-medium text-[var(--color-foreground)]\",\n};\n\nconst colorStyles = {\n primary: \"text-[var(--color-foreground)]\",\n secondary: \"text-[var(--color-muted-foreground)]\",\n muted: \"text-[var(--color-muted-foreground)]\",\n error: \"text-[var(--color-error)]\",\n success: \"text-[var(--color-success)]\",\n warning: \"text-[var(--color-warning)]\",\n inherit: \"text-inherit\",\n};\n\nconst weightStyles = {\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n};\n\nconst defaultElements: Record<TypographyVariant, keyof JSX.IntrinsicElements> =\n {\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n body1: \"p\",\n body2: \"p\",\n body: \"p\",\n caption: \"span\",\n overline: \"span\",\n small: \"span\",\n large: \"p\",\n label: \"span\",\n };\n\nconst typographySizeStyles: Record<TypographySize, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n};\n\nexport const Typography: React.FC<TypographyProps> = ({\n variant: variantProp,\n level,\n color = \"primary\",\n align,\n weight,\n size,\n truncate = false,\n as,\n id,\n className,\n style,\n content,\n children,\n}) => {\n // Determine variant: explicit variant takes precedence, then level, then default\n const variant: TypographyVariant =\n variantProp ?? (level ? (`h${level}` as TypographyVariant) : \"body1\");\n const Component = as || defaultElements[variant];\n\n return (\n <Component\n id={id}\n className={cn(\n variantStyles[variant],\n colorStyles[color],\n weight && weightStyles[weight],\n size && typographySizeStyles[size],\n align && `text-${align}`,\n truncate && \"truncate\",\n className,\n )}\n style={style}\n >\n {children ?? content}\n </Component>\n );\n};\n\nTypography.displayName = \"Typography\";\n\n/**\n * Heading component - convenience wrapper for Typography heading variants\n */\nexport interface HeadingProps extends Omit<TypographyProps, \"variant\"> {\n /** Heading level (1-6) */\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Override font size */\n size?: \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\";\n}\n\nconst sizeStyles: Record<string, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n};\n\nexport const Heading: React.FC<HeadingProps> = ({\n level = 2,\n size,\n className,\n ...props\n}) => {\n const variant = `h${level}` as TypographyVariant;\n const sizeClass = size ? sizeStyles[size] : undefined;\n return (\n <Typography\n variant={variant}\n className={cn(sizeClass, className)}\n {...props}\n />\n );\n};\n\nHeading.displayName = \"Heading\";\n","/**\n * Unified ThemeContext - Single provider for theme and color mode\n *\n * Combines design theme selection (ocean, wireframe, etc.) with\n * color mode (light/dark) into a single, simple system.\n *\n * Uses a single data attribute: data-theme=\"ocean-light\" or data-theme=\"ocean-dark\"\n *\n * @packageDocumentation\n */\n\nimport React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n useMemo,\n} from \"react\";\n\n/** Color mode preference */\nexport type ColorMode = \"light\" | \"dark\" | \"system\";\n\n/** Resolved color mode (what's actually applied) */\nexport type ResolvedMode = \"light\" | \"dark\";\n\n/** Theme definition */\nexport interface ThemeDefinition {\n /** Theme identifier (e.g., \"ocean\", \"wireframe\") */\n name: string;\n /** Display name for UI (e.g., \"Ocean Blue\") */\n displayName?: string;\n /** Whether this theme has light mode styles */\n hasLightMode?: boolean;\n /** Whether this theme has dark mode styles */\n hasDarkMode?: boolean;\n}\n\n/** Built-in themes available in the design system */\nexport const BUILT_IN_THEMES: ThemeDefinition[] = [\n {\n name: \"wireframe\",\n displayName: \"Wireframe\",\n hasLightMode: true,\n hasDarkMode: true,\n },\n {\n name: \"minimalist\",\n displayName: \"Minimalist\",\n hasLightMode: true,\n hasDarkMode: true,\n },\n {\n name: \"almadar\",\n displayName: \"Almadar\",\n hasLightMode: true,\n hasDarkMode: true,\n },\n];\n\n/** Theme context value */\ninterface ThemeContextValue {\n /** Current theme name */\n theme: string;\n /** Current color mode setting (may be 'system') */\n mode: ColorMode;\n /** Resolved color mode (always 'light' or 'dark') */\n resolvedMode: ResolvedMode;\n /** Set the theme */\n setTheme: (theme: string) => void;\n /** Set the color mode */\n setMode: (mode: ColorMode) => void;\n /** Toggle between light and dark modes */\n toggleMode: () => void;\n /** Available themes */\n availableThemes: ThemeDefinition[];\n /** The full theme string applied to data-theme (e.g., \"ocean-light\") */\n appliedTheme: string;\n}\n\nconst ThemeContext = createContext<ThemeContextValue | undefined>(undefined);\n\n/** Storage keys */\nconst THEME_STORAGE_KEY = \"theme\";\nconst MODE_STORAGE_KEY = \"theme-mode\";\n\n/**\n * Get the system preferred color scheme\n */\nfunction getSystemMode(): ResolvedMode {\n if (typeof window === \"undefined\") return \"light\";\n return window.matchMedia(\"(prefers-color-scheme: dark)\").matches\n ? \"dark\"\n : \"light\";\n}\n\n/**\n * Resolve the color mode (handle 'system' preference)\n */\nfunction resolveMode(mode: ColorMode): ResolvedMode {\n if (mode === \"system\") {\n return getSystemMode();\n }\n return mode;\n}\n\nexport interface ThemeProviderProps {\n children: React.ReactNode;\n /** Available themes (will be merged with built-in themes) */\n themes?: readonly ThemeDefinition[] | ThemeDefinition[];\n /** Default theme name */\n defaultTheme?: string;\n /** Default color mode */\n defaultMode?: ColorMode;\n}\n\n/**\n * Unified ThemeProvider component\n *\n * @example\n * ```tsx\n * // Basic usage with built-in themes\n * <ThemeProvider defaultTheme=\"wireframe\" defaultMode=\"light\">\n * <App />\n * </ThemeProvider>\n *\n * // With custom themes from orbital schema\n * import { THEMES } from './generated/theme-manifest';\n * <ThemeProvider themes={THEMES} defaultTheme=\"ocean\" defaultMode=\"system\">\n * <App />\n * </ThemeProvider>\n * ```\n */\nexport const ThemeProvider: React.FC<ThemeProviderProps> = ({\n children,\n themes = [],\n defaultTheme = \"wireframe\",\n defaultMode = \"system\",\n}) => {\n // Merge built-in themes with custom themes\n const availableThemes = useMemo(() => {\n const themeMap = new Map<string, ThemeDefinition>();\n // Add built-in themes first\n BUILT_IN_THEMES.forEach((t) => themeMap.set(t.name, t));\n // Custom themes override built-in if same name\n themes.forEach((t) => themeMap.set(t.name, t));\n return Array.from(themeMap.values());\n }, [themes]);\n\n // Initialize theme from storage or default\n const [theme, setThemeState] = useState<string>(() => {\n if (typeof window === \"undefined\") return defaultTheme;\n const stored = localStorage.getItem(THEME_STORAGE_KEY);\n // Validate stored theme exists\n const validThemes = [\n ...BUILT_IN_THEMES.map((t) => t.name),\n ...themes.map((t) => t.name),\n ];\n if (stored && validThemes.includes(stored)) {\n return stored;\n }\n return defaultTheme;\n });\n\n // Initialize mode from storage or default\n const [mode, setModeState] = useState<ColorMode>(() => {\n if (typeof window === \"undefined\") return defaultMode;\n const stored = localStorage.getItem(MODE_STORAGE_KEY);\n if (stored === \"light\" || stored === \"dark\" || stored === \"system\") {\n return stored;\n }\n return defaultMode;\n });\n\n // Resolved mode (handles 'system' preference)\n const [resolvedMode, setResolvedMode] = useState<ResolvedMode>(() =>\n resolveMode(mode),\n );\n\n // The applied theme string (e.g., \"ocean-light\")\n const appliedTheme = useMemo(\n () => `${theme}-${resolvedMode}`,\n [theme, resolvedMode],\n );\n\n // Update resolved mode when mode changes or system preference changes\n useEffect(() => {\n const updateResolved = () => {\n setResolvedMode(resolveMode(mode));\n };\n\n updateResolved();\n\n // Listen for system theme changes\n if (mode === \"system\") {\n const mediaQuery = window.matchMedia(\"(prefers-color-scheme: dark)\");\n const handleChange = () => updateResolved();\n mediaQuery.addEventListener(\"change\", handleChange);\n return () => mediaQuery.removeEventListener(\"change\", handleChange);\n }\n return undefined;\n }, [mode]);\n\n // Apply theme to document\n useEffect(() => {\n const root = document.documentElement;\n root.setAttribute(\"data-theme\", appliedTheme);\n\n // Also set class for Tailwind dark: variant compatibility\n root.classList.remove(\"light\", \"dark\");\n root.classList.add(resolvedMode);\n }, [appliedTheme, resolvedMode]);\n\n // Set theme\n const setTheme = useCallback(\n (newTheme: string) => {\n const validTheme = availableThemes.find((t) => t.name === newTheme);\n if (validTheme) {\n setThemeState(newTheme);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(THEME_STORAGE_KEY, newTheme);\n }\n } else {\n console.warn(\n `Theme \"${newTheme}\" not found. Available: ${availableThemes.map((t) => t.name).join(\", \")}`,\n );\n }\n },\n [availableThemes],\n );\n\n // Set mode\n const setMode = useCallback((newMode: ColorMode) => {\n setModeState(newMode);\n if (typeof window !== \"undefined\") {\n localStorage.setItem(MODE_STORAGE_KEY, newMode);\n }\n }, []);\n\n // Toggle between light and dark\n const toggleMode = useCallback(() => {\n const newMode: ColorMode = resolvedMode === \"dark\" ? \"light\" : \"dark\";\n setMode(newMode);\n }, [resolvedMode, setMode]);\n\n const contextValue = useMemo<ThemeContextValue>(\n () => ({\n theme,\n mode,\n resolvedMode,\n setTheme,\n setMode,\n toggleMode,\n availableThemes,\n appliedTheme,\n }),\n [\n theme,\n mode,\n resolvedMode,\n setTheme,\n setMode,\n toggleMode,\n availableThemes,\n appliedTheme,\n ],\n );\n\n return (\n <ThemeContext.Provider value={contextValue}>\n {children}\n </ThemeContext.Provider>\n );\n};\n\n/**\n * Hook for accessing theme context\n *\n * @returns Theme context value\n *\n * @example\n * ```tsx\n * const { theme, resolvedMode, toggleMode, setTheme } = useTheme();\n *\n * // Toggle dark mode\n * <button onClick={toggleMode}>\n * {resolvedMode === 'dark' ? 'Light' : 'Dark'}\n * </button>\n *\n * // Change theme\n * <select value={theme} onChange={(e) => setTheme(e.target.value)}>\n * {availableThemes.map(t => (\n * <option key={t.name} value={t.name}>{t.displayName || t.name}</option>\n * ))}\n * </select>\n * ```\n */\nexport function useTheme(): ThemeContextValue {\n const context = useContext(ThemeContext);\n if (context === undefined) {\n // Return a default implementation for storybook/testing\n return {\n theme: \"wireframe\",\n mode: \"light\",\n resolvedMode: \"light\",\n setTheme: () => {},\n setMode: () => {},\n toggleMode: () => {},\n availableThemes: BUILT_IN_THEMES,\n appliedTheme: \"wireframe-light\",\n };\n }\n return context;\n}\n\n// Legacy exports for backward compatibility\nexport type Theme = ColorMode;\nexport type ResolvedTheme = ResolvedMode;\nexport type DesignTheme = ThemeDefinition;\n\nexport default ThemeContext;\n","/**\n * ThemeToggle Atom Component\n *\n * A button that toggles between light and dark themes.\n * Uses Sun and Moon icons to indicate current/target theme.\n *\n * @packageDocumentation\n */\n\nimport React from \"react\";\nimport { Sun, Moon } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { useTheme } from \"../../context/ThemeContext\";\n\nexport interface ThemeToggleProps {\n /** Additional CSS classes */\n className?: string;\n /** Size variant */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Show label text */\n showLabel?: boolean;\n}\n\nconst sizeClasses = {\n sm: \"p-1.5\",\n md: \"p-2\",\n lg: \"p-2.5\",\n};\n\nconst iconSizes = {\n sm: \"h-4 w-4\",\n md: \"h-5 w-5\",\n lg: \"h-6 w-6\",\n};\n\n/**\n * ThemeToggle component for switching between light and dark modes\n *\n * @example\n * ```tsx\n * // Basic usage\n * <ThemeToggle />\n *\n * // With label\n * <ThemeToggle showLabel />\n *\n * // Custom size\n * <ThemeToggle size=\"lg\" />\n * ```\n */\nexport const ThemeToggle: React.FC<ThemeToggleProps> = ({\n className,\n size = \"md\",\n showLabel = false,\n}) => {\n const { resolvedMode, toggleMode } = useTheme();\n const isDark = resolvedMode === \"dark\";\n\n return (\n <button\n type=\"button\"\n onClick={toggleMode}\n className={cn(\n \"inline-flex items-center justify-center gap-2\",\n \"text-[var(--color-foreground)]\",\n \"hover:bg-[var(--color-muted)] border-[length:var(--border-width)] border-transparent hover:border-[var(--color-border)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2\",\n \"transition-colors duration-200\",\n sizeClasses[size],\n className,\n )}\n aria-label={isDark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n title={isDark ? \"Switch to light mode\" : \"Switch to dark mode\"}\n >\n {isDark ? (\n <Sun\n className={cn(iconSizes[size], \"text-[var(--color-foreground)]\")}\n />\n ) : (\n <Moon\n className={cn(iconSizes[size], \"text-[var(--color-foreground)]\")}\n />\n )}\n {showLabel && (\n <span className=\"text-sm font-medium\">{isDark ? \"Light\" : \"Dark\"}</span>\n )}\n </button>\n );\n};\n\nThemeToggle.displayName = \"ThemeToggle\";\n","/**\n * DesignThemeContext - DEPRECATED\n *\n * This module is deprecated. Use the unified ThemeProvider from ThemeContext instead.\n *\n * @deprecated Use ThemeProvider and useTheme from './ThemeContext' instead\n * @packageDocumentation\n */\n\nimport {\n useTheme,\n ThemeProvider,\n BUILT_IN_THEMES,\n type ThemeDefinition,\n} from \"./ThemeContext\";\n\n/** @deprecated Use ThemeDefinition from ThemeContext */\nexport type DesignTheme = string;\n\n/**\n * @deprecated Use ThemeProvider from ThemeContext instead\n */\nexport const DesignThemeProvider = ThemeProvider;\n\n/**\n * @deprecated Use useTheme from ThemeContext instead\n *\n * This wrapper provides backward compatibility with the old API.\n */\nexport function useDesignTheme() {\n const { theme, setTheme, availableThemes } = useTheme();\n\n return {\n designTheme: theme,\n setDesignTheme: setTheme,\n availableThemes: availableThemes.map((t) => t.name),\n };\n}\n\nexport default { DesignThemeProvider, useDesignTheme };\n","/**\n * ThemeSelector - Design theme selector component\n *\n * A dropdown/toggle component for switching between design themes.\n *\n * @packageDocumentation\n */\n\nimport React from \"react\";\nimport {\n useDesignTheme,\n type DesignTheme,\n} from \"../../context/DesignThemeContext\";\n\ninterface ThemeSelectorProps {\n /** Optional className */\n className?: string;\n /** Show as dropdown or buttons */\n variant?: \"dropdown\" | \"buttons\";\n /** Show labels */\n showLabels?: boolean;\n}\n\nconst THEME_LABELS: Record<\n string,\n { label: string; icon: string; description: string }\n> = {\n wireframe: {\n label: \"Wireframe\",\n icon: \"📐\",\n description: \"Sharp corners, thick borders\",\n },\n minimalist: {\n label: \"Minimalist\",\n icon: \"✨\",\n description: \"Clean, subtle, refined\",\n },\n almadar: {\n label: \"Almadar\",\n icon: \"💎\",\n description: \"Teal gradients, glowing accents\",\n },\n};\n\n/**\n * ThemeSelector component for switching design themes\n */\nexport const ThemeSelector: React.FC<ThemeSelectorProps> = ({\n className = \"\",\n variant = \"dropdown\",\n showLabels = true,\n}) => {\n const { designTheme, setDesignTheme, availableThemes } = useDesignTheme();\n\n if (variant === \"buttons\") {\n return (\n <div className={`flex gap-2 ${className}`}>\n {availableThemes.map((theme) => {\n const { label, icon } = THEME_LABELS[theme];\n const isActive = designTheme === theme;\n\n return (\n <button\n key={theme}\n onClick={() => setDesignTheme(theme)}\n className={`\n px-3 py-2 text-sm font-medium transition-all\n border-[length:var(--border-width)] rounded-[var(--radius-sm)]\n ${\n isActive\n ? \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)] border-[var(--color-primary)]\"\n : \"bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)] border-[var(--color-border)] hover:bg-[var(--color-secondary-hover)]\"\n }\n `}\n title={THEME_LABELS[theme].description}\n >\n {icon} {showLabels && label}\n </button>\n );\n })}\n </div>\n );\n }\n\n // Dropdown variant\n return (\n <div className={`relative ${className}`}>\n <select\n value={designTheme}\n onChange={(e) => setDesignTheme(e.target.value as DesignTheme)}\n className={`\n px-3 py-2 pr-8 text-sm font-medium\n bg-[var(--color-secondary)] text-[var(--color-secondary-foreground)]\n border-[length:var(--border-width)] border-[var(--color-border)]\n rounded-[var(--radius-sm)]\n cursor-pointer appearance-none\n focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)]\n `}\n >\n {availableThemes.map((theme) => {\n const { label, icon } = THEME_LABELS[theme];\n return (\n <option key={theme} value={theme}>\n {icon} {label}\n </option>\n );\n })}\n </select>\n <div className=\"absolute right-2 top-1/2 -translate-y-1/2 pointer-events-none\">\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </div>\n </div>\n );\n};\n\nexport default ThemeSelector;\n","/**\n * Overlay Atom Component\n *\n * A fixed backdrop for modals and drawers.\n */\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface OverlayProps {\n isVisible?: boolean;\n onClick?: (e: React.MouseEvent) => void;\n className?: string;\n blur?: boolean;\n}\n\nexport const Overlay: React.FC<OverlayProps> = ({\n isVisible = true,\n onClick,\n className,\n blur = true,\n}) => {\n if (!isVisible) return null;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-40 bg-[var(--color-background)]/80\",\n blur && \"backdrop-blur-sm\",\n className,\n )}\n onClick={onClick}\n aria-hidden=\"true\"\n />\n );\n};\n\nexport default Overlay;\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/i;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nconst ipv4CidrRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/;\nconst ipv6CidrRegex = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","/**\n * Entity Schemas\n *\n * Zod schemas for runtime validation.\n * This file is a placeholder - generated code will overwrite it.\n */\n\nimport { z } from 'zod';\n\n// Placeholder - will be replaced by generated code\nexport const baseEntitySchema = z.object({\n id: z.string(),\n});\n","/**\n * S-Expression Types\n *\n * Defines the S-Expression type system for guards, effects, and computed values.\n * S-expressions are JSON arrays where the first element is an operator string.\n *\n * @example\n * // Guard: health > 0\n * [\">\", \"@entity.health\", 0]\n *\n * // Effect: set x to x + vx\n * [\"set\", \"@entity.x\", [\"+\", \"@entity.x\", \"@entity.vx\"]]\n *\n * @packageDocumentation\n */\n\nimport { z } from 'zod';\n\n// ============================================================================\n// S-Expression Type\n// ============================================================================\n\n/**\n * S-Expression type - recursive structure representing expressions.\n *\n * An S-expression is either:\n * - A literal value (string, number, boolean, null)\n * - An object literal (for payload data, props, etc.)\n * - A binding reference (string starting with @)\n * - A call expression (array with operator as first element)\n */\nexport type SExprAtom = string | number | boolean | null | Record<string, unknown>;\nexport type SExpr = SExprAtom | SExpr[];\n\n/**\n * Expression type - S-expressions only.\n * Used for guards, computed values, and effect expressions.\n *\n * NOTE: Legacy string format is no longer supported.\n * All expressions must be S-expression arrays.\n */\nexport type Expression = SExpr;\n\n// ============================================================================\n// S-Expression Schema (Zod)\n// ============================================================================\n\n/**\n * Schema for atomic S-expression values (non-array)\n * Includes objects for payload data, props, etc.\n */\nexport const SExprAtomSchema: z.ZodType<SExprAtom> = z.union([\n z.string(),\n z.number(),\n z.boolean(),\n z.null(),\n z.record(z.unknown()), // Objects for payload data\n]);\n\n/**\n * Recursive schema for S-expressions.\n * Validates that arrays have at least one element and first element is a string (operator).\n */\nexport const SExprSchema: z.ZodType<SExpr> = z.lazy(() =>\n z.union([\n SExprAtomSchema,\n z\n .array(z.lazy(() => SExprSchema))\n .min(1)\n .refine(\n (arr) => typeof arr[0] === 'string',\n { message: 'S-expression array must have a string operator as first element' }\n ),\n ])\n);\n\n/**\n * Schema for Expression type - S-expressions only.\n * S-expressions are arrays with operator as first element.\n *\n * NOTE: Legacy string format is no longer supported.\n */\nexport const ExpressionSchema: z.ZodType<Expression> = SExprSchema;\n\n// ============================================================================\n// Type Guards\n// ============================================================================\n\n/**\n * Type guard for S-expression detection.\n * 100% reliable - structural check, no regex or keyword matching.\n *\n * @param value - Value to check\n * @returns true if value is an S-expression (array with string operator)\n */\nexport function isSExpr(value: unknown): value is SExpr[] {\n return (\n Array.isArray(value) &&\n value.length > 0 &&\n typeof value[0] === 'string'\n );\n}\n\n/**\n * Type guard for S-expression atoms (non-array values).\n * Includes objects (for payload data, props, etc.)\n */\nexport function isSExprAtom(value: unknown): value is SExprAtom {\n if (value === null) return true;\n if (Array.isArray(value)) return false;\n const type = typeof value;\n return type === 'string' || type === 'number' || type === 'boolean' || type === 'object';\n}\n\n/**\n * Check if a value is a binding reference.\n * Bindings start with @ (e.g., @entity.health, @payload.amount, @now)\n */\nexport function isBinding(value: unknown): value is string {\n return typeof value === 'string' && value.startsWith('@');\n}\n\n/**\n * Check if a value is a valid S-expression call (array with operator).\n * Use this to distinguish between S-expression calls and atom values.\n */\nexport function isSExprCall(value: unknown): value is SExpr[] {\n return isSExpr(value);\n}\n\n// ============================================================================\n// Binding Parsing\n// ============================================================================\n\n/**\n * Parsed binding reference\n */\nexport interface ParsedBinding {\n /** Type of binding: core (@entity, @payload, @state, @now) or entity (@EntityName) */\n type: 'core' | 'entity';\n /** The root binding name (entity, payload, state, now, or EntityName) */\n root: string;\n /** Path segments after the root (e.g., ['health'] for @entity.health) */\n path: string[];\n /** Full original binding string */\n original: string;\n}\n\n/**\n * Core bindings that are always available.\n * Phase 4.5 adds: config, computed, trait (for behavior support)\n */\nexport const CORE_BINDINGS = ['entity', 'payload', 'state', 'now', 'config', 'computed', 'trait'] as const;\nexport type CoreBinding = (typeof CORE_BINDINGS)[number];\n\n/**\n * Parse a binding reference into its components.\n * Does NOT use regex - uses structured string operations.\n *\n * @param binding - Binding string starting with @\n * @returns Parsed binding object or null if invalid\n */\nexport function parseBinding(binding: string): ParsedBinding | null {\n if (!binding.startsWith('@')) {\n return null;\n }\n\n // Remove @ prefix\n const withoutPrefix = binding.slice(1);\n\n // Split by dots\n const parts = withoutPrefix.split('.');\n\n if (parts.length === 0 || parts[0] === '') {\n return null;\n }\n\n const root = parts[0];\n const path = parts.slice(1);\n\n // Determine if core binding or entity reference\n const isCore = (CORE_BINDINGS as readonly string[]).includes(root);\n\n return {\n type: isCore ? 'core' : 'entity',\n root,\n path,\n original: binding,\n };\n}\n\n/**\n * Validate a binding reference format.\n *\n * @param binding - Binding string to validate\n * @returns true if valid binding format\n */\nexport function isValidBinding(binding: string): boolean {\n const parsed = parseBinding(binding);\n if (!parsed) return false;\n\n // Core bindings: @entity, @payload, @state, @now (optionally with path)\n // @state and @now don't have paths\n if (parsed.type === 'core') {\n if (parsed.root === 'state' || parsed.root === 'now') {\n return parsed.path.length === 0;\n }\n // @entity and @payload can have paths\n return true;\n }\n\n // Entity bindings: @EntityName.field - must have at least one path segment\n return parsed.path.length > 0;\n}\n\n// ============================================================================\n// S-Expression Utilities\n// ============================================================================\n\n/**\n * Get the operator from an S-expression call.\n *\n * @param expr - S-expression array\n * @returns The operator string or null if not a valid call\n */\nexport function getOperator(expr: SExpr): string | null {\n if (!isSExpr(expr)) return null;\n return expr[0] as string;\n}\n\n/**\n * Get the arguments from an S-expression call.\n *\n * @param expr - S-expression array\n * @returns Array of arguments (empty if not a valid call)\n */\nexport function getArgs(expr: SExpr): SExpr[] {\n if (!isSExpr(expr)) return [];\n return expr.slice(1);\n}\n\n/**\n * Create an S-expression call.\n *\n * @param operator - The operator string\n * @param args - Arguments to the operator\n * @returns S-expression array\n */\nexport function sexpr(operator: string, ...args: SExpr[]): SExpr[] {\n return [operator, ...args];\n}\n\n/**\n * Walk an S-expression tree and apply a visitor function to each node.\n *\n * @param expr - S-expression to walk\n * @param visitor - Function to call on each node\n */\nexport function walkSExpr(\n expr: SExpr,\n visitor: (node: SExpr, parent: SExpr[] | null, index: number) => void,\n parent: SExpr[] | null = null,\n index: number = 0\n): void {\n visitor(expr, parent, index);\n\n if (isSExpr(expr)) {\n for (let i = 0; i < expr.length; i++) {\n walkSExpr(expr[i], visitor, expr, i);\n }\n }\n}\n\n/**\n * Collect all bindings referenced in an S-expression.\n *\n * @param expr - S-expression to analyze\n * @returns Array of binding strings found\n */\nexport function collectBindings(expr: SExpr): string[] {\n const bindings: string[] = [];\n\n walkSExpr(expr, (node) => {\n if (isBinding(node)) {\n bindings.push(node);\n }\n });\n\n return bindings;\n}\n\n// ============================================================================\n// Type Exports\n// ============================================================================\n\nexport type SExprInput = z.input<typeof SExprSchema>;\nexport type ExpressionInput = z.input<typeof ExpressionSchema>;\n","/**\n * Evaluation Context\n *\n * Defines the context for evaluating S-expressions at runtime.\n * This context provides access to entity data, payload, state, and effect handlers.\n *\n * @packageDocumentation\n */\n\n/**\n * User context for @user bindings (role-based UI).\n */\nexport interface UserContext {\n /** User's unique ID */\n id: string;\n /** User's email */\n email?: string;\n /** User's display name */\n name?: string;\n /** User's role (for RBAC) */\n role?: string;\n /** User's permissions */\n permissions?: string[];\n /** Additional custom profile fields */\n [key: string]: unknown;\n}\n\n/**\n * Evaluation context for S-expression evaluation.\n * Provides all bindings and effect handlers needed at runtime.\n */\nexport interface EvaluationContext {\n /** Entity data for @entity bindings */\n entity: Record<string, unknown>;\n\n /** Payload data for @payload bindings */\n payload: Record<string, unknown>;\n\n /** Current state for @state binding */\n state: string;\n\n /** Current timestamp for @now binding (defaults to Date.now()) */\n now: number;\n\n /** User data for @user bindings (role-based UI) */\n user?: UserContext;\n\n /** Singleton entities for @EntityName bindings */\n singletons: Map<string, Record<string, unknown>>;\n\n /** Local variables from 'let' bindings */\n locals?: Map<string, unknown>;\n\n // ============================================================================\n // Effect Handlers (for executing side effects)\n // ============================================================================\n\n /** Mutate entity fields */\n mutateEntity?: (changes: Record<string, unknown>) => void;\n\n /** Emit an event */\n emit?: (event: string, payload?: unknown) => void;\n\n /** Navigate to a route */\n navigate?: (route: string, params?: Record<string, unknown>) => void;\n\n /** Persist data (create/update/delete) */\n persist?: (action: 'create' | 'update' | 'delete', data?: Record<string, unknown>) => Promise<void>;\n\n /** Show a notification */\n notify?: (message: string, type?: 'success' | 'error' | 'warning' | 'info') => void;\n\n /** Spawn a new entity instance */\n spawn?: (entityType: string, props?: Record<string, unknown>) => void;\n\n /** Despawn an entity instance */\n despawn?: (entityId?: string) => void;\n\n /** Call an external service */\n callService?: (service: string, method: string, params?: Record<string, unknown>) => Promise<unknown>;\n\n /** Render UI to a slot */\n renderUI?: (slot: string, pattern: unknown, props?: Record<string, unknown>, priority?: number) => void;\n}\n\n/**\n * Create a minimal evaluation context for testing/guards.\n * Only includes bindings, no effect handlers.\n */\nexport function createMinimalContext(\n entity: Record<string, unknown> = {},\n payload: Record<string, unknown> = {},\n state: string = 'initial'\n): EvaluationContext {\n return {\n entity,\n payload,\n state,\n now: Date.now(),\n singletons: new Map(),\n };\n}\n\n/**\n * Create a context with effect handlers.\n * Used for runtime evaluation where effects need to execute.\n */\nexport function createEffectContext(\n base: EvaluationContext,\n handlers: Partial<Pick<EvaluationContext,\n 'mutateEntity' | 'emit' | 'navigate' | 'persist' | 'notify' | 'spawn' | 'despawn' | 'callService' | 'renderUI'\n >>\n): EvaluationContext {\n return {\n ...base,\n ...handlers,\n };\n}\n\n/**\n * Create a child context with additional local bindings.\n * Used for 'let' expressions.\n */\nexport function createChildContext(\n parent: EvaluationContext,\n locals: Map<string, unknown>\n): EvaluationContext {\n // Merge parent locals with new locals\n const mergedLocals = new Map(parent.locals);\n locals.forEach((value, key) => mergedLocals.set(key, value));\n\n return {\n ...parent,\n locals: mergedLocals,\n };\n}\n\n/**\n * Resolve a binding in the context.\n *\n * @param binding - Binding string (e.g., \"@entity.health\", \"@payload.amount\")\n * @param ctx - Evaluation context\n * @returns Resolved value or undefined\n */\nexport function resolveBinding(binding: string, ctx: EvaluationContext): unknown {\n if (!binding.startsWith('@')) {\n return undefined;\n }\n\n const withoutPrefix = binding.slice(1);\n const parts = withoutPrefix.split('.');\n const root = parts[0];\n const path = parts.slice(1);\n\n let value: unknown;\n\n // Check locals first\n if (ctx.locals?.has(root)) {\n value = ctx.locals.get(root);\n } else {\n // Core bindings\n switch (root) {\n case 'entity':\n value = ctx.entity;\n break;\n case 'payload':\n value = ctx.payload;\n break;\n case 'state':\n return ctx.state; // @state has no path\n case 'now':\n return ctx.now; // @now has no path\n case 'user':\n value = ctx.user;\n break;\n default:\n // Singleton entity reference (@EntityName.field)\n value = ctx.singletons.get(root);\n break;\n }\n }\n\n // Navigate path\n for (const segment of path) {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === 'object') {\n value = (value as Record<string, unknown>)[segment];\n } else {\n return undefined;\n }\n }\n\n return value;\n}\n","/**\n * Arithmetic Operator Implementations\n *\n * Implements: +, -, *, /, %, abs, min, max, floor, ceil, round, clamp\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate addition: [\"+\", a, b, ...]\n */\nexport function evalAdd(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return args.reduce((sum: number, arg) => sum + toNumber(evaluate(arg, ctx)), 0);\n}\n\n/**\n * Evaluate subtraction: [\"-\", a] (negate) or [\"-\", a, b] (subtract)\n */\nexport function evalSubtract(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n if (args.length === 1) {\n return -toNumber(evaluate(args[0], ctx));\n }\n return toNumber(evaluate(args[0], ctx)) - toNumber(evaluate(args[1], ctx));\n}\n\n/**\n * Evaluate multiplication: [\"*\", a, b, ...]\n */\nexport function evalMultiply(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return args.reduce((product: number, arg) => product * toNumber(evaluate(arg, ctx)), 1);\n}\n\n/**\n * Evaluate division: [\"/\", a, b]\n */\nexport function evalDivide(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const dividend = toNumber(evaluate(args[0], ctx));\n const divisor = toNumber(evaluate(args[1], ctx));\n if (divisor === 0) {\n return dividend >= 0 ? Infinity : -Infinity;\n }\n return dividend / divisor;\n}\n\n/**\n * Evaluate modulo: [\"%\", a, b]\n */\nexport function evalModulo(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return toNumber(evaluate(args[0], ctx)) % toNumber(evaluate(args[1], ctx));\n}\n\n/**\n * Evaluate absolute value: [\"abs\", a]\n */\nexport function evalAbs(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.abs(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate minimum: [\"min\", a, b, ...]\n */\nexport function evalMin(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const values = args.map((arg) => toNumber(evaluate(arg, ctx)));\n return Math.min(...values);\n}\n\n/**\n * Evaluate maximum: [\"max\", a, b, ...]\n */\nexport function evalMax(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const values = args.map((arg) => toNumber(evaluate(arg, ctx)));\n return Math.max(...values);\n}\n\n/**\n * Evaluate floor: [\"floor\", a]\n */\nexport function evalFloor(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.floor(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate ceiling: [\"ceil\", a]\n */\nexport function evalCeil(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.ceil(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate round: [\"round\", a]\n */\nexport function evalRound(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.round(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate clamp: [\"clamp\", value, min, max]\n */\nexport function evalClamp(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const value = toNumber(evaluate(args[0], ctx));\n const min = toNumber(evaluate(args[1], ctx));\n const max = toNumber(evaluate(args[2], ctx));\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Convert a value to a number, defaulting to 0 for non-numbers.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n if (typeof value === 'boolean') return value ? 1 : 0;\n return 0;\n}\n","/**\n * Comparison Operator Implementations\n *\n * Implements: =, !=, <, >, <=, >=\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate equality: [\"=\", a, b]\n * Uses strict equality (===) for type safety.\n */\nexport function evalEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return deepEqual(left, right);\n}\n\n/**\n * Evaluate not-equal: [\"!=\", a, b]\n */\nexport function evalNotEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return !deepEqual(left, right);\n}\n\n/**\n * Evaluate less-than: [\"<\", a, b]\n */\nexport function evalLessThan(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) < toComparable(right);\n}\n\n/**\n * Evaluate greater-than: [\">\", a, b]\n */\nexport function evalGreaterThan(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) > toComparable(right);\n}\n\n/**\n * Evaluate less-than-or-equal: [\"<=\", a, b]\n */\nexport function evalLessThanOrEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) <= toComparable(right);\n}\n\n/**\n * Evaluate greater-than-or-equal: [\">=\", a, b]\n */\nexport function evalGreaterThanOrEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) >= toComparable(right);\n}\n\n/**\n * Evaluate regex match: [\"matches\", subject, pattern]\n * Returns true if subject matches the regex pattern.\n */\nexport function evalMatches(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const subject = evaluate(args[0], ctx);\n const pattern = evaluate(args[1], ctx);\n\n if (typeof subject !== 'string' || typeof pattern !== 'string') {\n return false;\n }\n\n try {\n const regex = new RegExp(pattern);\n return regex.test(subject);\n } catch {\n // Invalid regex pattern\n return false;\n }\n}\n\n/**\n * Deep equality check for objects and arrays.\n */\nfunction deepEqual(a: unknown, b: unknown): boolean {\n // Primitive equality\n if (a === b) return true;\n\n // Null/undefined checks\n if (a === null || b === null) return a === b;\n if (a === undefined || b === undefined) return a === b;\n\n // Type checks\n if (typeof a !== typeof b) return false;\n\n // Array equality\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((val, idx) => deepEqual(val, b[idx]));\n }\n\n // Object equality\n if (typeof a === 'object' && typeof b === 'object') {\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])\n );\n }\n\n return false;\n}\n\n/**\n * Convert to a comparable value for ordering operations.\n */\nfunction toComparable(value: unknown): number | string {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') return value;\n if (typeof value === 'boolean') return value ? 1 : 0;\n if (value === null || value === undefined) return 0;\n return String(value);\n}\n","/**\n * Logic Operator Implementations\n *\n * Implements: and, or, not, if\n * All logic operators support short-circuit evaluation.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate logical AND: [\"and\", a, b, ...]\n * Short-circuits: returns false as soon as any argument is falsy.\n */\nexport function evalAnd(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n for (const arg of args) {\n if (!toBoolean(evaluate(arg, ctx))) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Evaluate logical OR: [\"or\", a, b, ...]\n * Short-circuits: returns true as soon as any argument is truthy.\n */\nexport function evalOr(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n for (const arg of args) {\n if (toBoolean(evaluate(arg, ctx))) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Evaluate logical NOT: [\"not\", a]\n */\nexport function evalNot(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n return !toBoolean(evaluate(args[0], ctx));\n}\n\n/**\n * Evaluate conditional: [\"if\", condition, then, else]\n * Only evaluates the branch that matches the condition.\n */\nexport function evalIf(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const condition = toBoolean(evaluate(args[0], ctx));\n if (condition) {\n return evaluate(args[1], ctx);\n }\n return evaluate(args[2], ctx);\n}\n\n/**\n * Convert a value to boolean.\n * Follows JavaScript truthy/falsy semantics:\n * - false, 0, '', null, undefined, NaN are falsy\n * - Everything else is truthy\n */\nfunction toBoolean(value: unknown): boolean {\n return Boolean(value);\n}\n","/**\n * Control Operator Implementations\n *\n * Implements: let, do, when, fn\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate let binding: [\"let\", [[name, value], ...], body]\n * Creates local bindings for use in body.\n */\nexport function evalLet(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const bindings = args[0] as SExpr[][];\n const body = args[1];\n\n // Evaluate bindings and create new context\n const locals = new Map<string, unknown>();\n for (const binding of bindings) {\n const name = binding[0] as string;\n const value = evaluate(binding[1], ctx);\n locals.set(name, value);\n }\n\n // Evaluate body with new context\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body, childCtx);\n}\n\n/**\n * Evaluate do block: [\"do\", expr1, expr2, ...]\n * Executes expressions in sequence, returns last result.\n */\nexport function evalDo(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let result: unknown = undefined;\n for (const expr of args) {\n result = evaluate(expr, ctx);\n }\n return result;\n}\n\n/**\n * Evaluate when: [\"when\", condition, effect]\n * Executes effect only when condition is truthy.\n */\nexport function evalWhen(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const condition = evaluate(args[0], ctx);\n if (Boolean(condition)) {\n evaluate(args[1], ctx);\n }\n}\n\n/**\n * Evaluate lambda: [\"fn\", varName, body] or [\"fn\", [vars], body]\n * Creates a function that can be passed to collection operators.\n */\nexport function evalFn(\n args: SExpr[],\n _evaluate: Evaluator,\n _ctx: EvaluationContext\n): (item: unknown, evaluate: Evaluator, ctx: EvaluationContext) => unknown {\n const params = args[0];\n const body = args[1];\n\n // Return a closure that can be called with an item\n return (item: unknown, evaluate: Evaluator, ctx: EvaluationContext) => {\n const locals = new Map<string, unknown>();\n\n // Handle single variable or array of variables\n if (typeof params === 'string') {\n locals.set(params, item);\n } else if (Array.isArray(params)) {\n const itemArray = Array.isArray(item) ? item : [item];\n for (let i = 0; i < params.length; i++) {\n locals.set(params[i] as string, itemArray[i]);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body, childCtx);\n };\n}\n","/**\n * Collection Operator Implementations\n *\n * Implements: map, filter, find, count, sum, first, last, nth, concat, includes, empty\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate map: [\"map\", collection, [\"fn\", varName, body]]\n */\nexport function evalMap(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const collection = toArray(evaluate(args[0], ctx));\n const fnExpr = args[1] as SExpr[];\n\n // Get function params and body\n const params = fnExpr[1];\n const body = fnExpr[2];\n const varName = typeof params === 'string' ? params : (params as SExpr[])[0] as string;\n\n return collection.map((item) => {\n const locals = new Map<string, unknown>();\n locals.set(varName, item);\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body, childCtx);\n });\n}\n\n/**\n * Evaluate filter: [\"filter\", collection, [\"fn\", varName, predicate]]\n */\nexport function evalFilter(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const collection = toArray(evaluate(args[0], ctx));\n const fnExpr = args[1] as SExpr[];\n\n const params = fnExpr[1];\n const body = fnExpr[2];\n const varName = typeof params === 'string' ? params : (params as SExpr[])[0] as string;\n\n return collection.filter((item) => {\n const locals = new Map<string, unknown>();\n locals.set(varName, item);\n const childCtx = createChildContext(ctx, locals);\n return Boolean(evaluate(body, childCtx));\n });\n}\n\n/**\n * Evaluate find: [\"find\", collection, [\"fn\", varName, predicate]]\n */\nexport function evalFind(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n const fnExpr = args[1] as SExpr[];\n\n const params = fnExpr[1];\n const body = fnExpr[2];\n const varName = typeof params === 'string' ? params : (params as SExpr[])[0] as string;\n\n return collection.find((item) => {\n const locals = new Map<string, unknown>();\n locals.set(varName, item);\n const childCtx = createChildContext(ctx, locals);\n return Boolean(evaluate(body, childCtx));\n });\n}\n\n/**\n * Evaluate count: [\"count\", collection]\n */\nexport function evalCount(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length;\n}\n\n/**\n * Evaluate sum: [\"sum\", collection] or [\"sum\", collection, [\"fn\", varName, mapper]]\n */\nexport function evalSum(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const collection = toArray(evaluate(args[0], ctx));\n\n if (args.length === 1) {\n // Direct sum\n return collection.reduce((sum: number, item) => sum + toNumber(item), 0);\n }\n\n // Sum with mapper function\n const fnExpr = args[1] as SExpr[];\n const params = fnExpr[1];\n const body = fnExpr[2];\n const varName = typeof params === 'string' ? params : (params as SExpr[])[0] as string;\n\n return collection.reduce((sum: number, item) => {\n const locals = new Map<string, unknown>();\n locals.set(varName, item);\n const childCtx = createChildContext(ctx, locals);\n return sum + toNumber(evaluate(body, childCtx));\n }, 0);\n}\n\n/**\n * Evaluate first: [\"first\", collection]\n */\nexport function evalFirst(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length > 0 ? collection[0] : undefined;\n}\n\n/**\n * Evaluate last: [\"last\", collection]\n */\nexport function evalLast(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length > 0 ? collection[collection.length - 1] : undefined;\n}\n\n/**\n * Evaluate nth: [\"nth\", collection, index]\n */\nexport function evalNth(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n const index = toNumber(evaluate(args[1], ctx));\n return collection[index];\n}\n\n/**\n * Evaluate concat: [\"concat\", collection1, collection2, ...]\n */\nexport function evalConcat(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const result: unknown[] = [];\n for (const arg of args) {\n const collection = toArray(evaluate(arg, ctx));\n result.push(...collection);\n }\n return result;\n}\n\n/**\n * Evaluate includes: [\"includes\", collection, element]\n */\nexport function evalIncludes(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const collection = toArray(evaluate(args[0], ctx));\n const element = evaluate(args[1], ctx);\n return collection.includes(element);\n}\n\n/**\n * Evaluate empty: [\"empty\", collection]\n */\nexport function evalEmpty(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length === 0;\n}\n\n/**\n * Convert a value to an array.\n */\nfunction toArray(value: unknown): unknown[] {\n if (Array.isArray(value)) return value;\n if (value === null || value === undefined) return [];\n return [value];\n}\n\n/**\n * Convert a value to a number.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n}\n","/**\n * Effect Operator Implementations\n *\n * Implements: set, emit, persist, navigate, notify, spawn, despawn, call-service, render-ui\n *\n * Effect operators have side effects and require effect handlers in the context.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { resolveBinding } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate set: [\"set\", \"@entity.field\", value] or [\"set\", \"@entity.field\", value, operation]\n */\nexport function evalSet(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const value = evaluate(args[1], ctx);\n const operation = args[2] as string | undefined;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for set effect');\n return;\n }\n\n // Parse the binding to get the field name\n if (!binding.startsWith('@entity.')) {\n console.warn(`set only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n\n // Handle different operations\n let finalValue = value;\n if (operation) {\n const currentValue = resolveBinding(binding, ctx);\n switch (operation) {\n case 'increment':\n finalValue = toNumber(currentValue) + toNumber(value);\n break;\n case 'decrement':\n finalValue = toNumber(currentValue) - toNumber(value);\n break;\n case 'multiply':\n finalValue = toNumber(currentValue) * toNumber(value);\n break;\n case 'append':\n finalValue = Array.isArray(currentValue) ? [...currentValue, value] : [value];\n break;\n case 'remove':\n finalValue = Array.isArray(currentValue) ? currentValue.filter((v) => v !== value) : [];\n break;\n default:\n // No operation, use value directly\n break;\n }\n }\n\n ctx.mutateEntity({ [fieldPath]: finalValue });\n}\n\n/**\n * Evaluate emit: [\"emit\", eventKey] or [\"emit\", eventKey, payload]\n */\nexport function evalEmit(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const eventKey = args[0] as string;\n const payload = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n\n if (!ctx.emit) {\n console.warn('No emit handler in context for emit effect');\n return;\n }\n\n ctx.emit(eventKey, payload);\n}\n\n/**\n * Evaluate persist: [\"persist\", action] or [\"persist\", action, data]\n * Actions: \"create\", \"update\", \"delete\"\n */\nexport function evalPersist(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const action = args[0] as 'create' | 'update' | 'delete';\n const data = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : ctx.payload;\n\n if (!ctx.persist) {\n console.warn('No persist handler in context for persist effect');\n return;\n }\n\n // Fire and forget (async)\n ctx.persist(action, data as Record<string, unknown>).catch((err) => {\n console.error(`Persist ${action} failed:`, err);\n });\n}\n\n/**\n * Evaluate navigate: [\"navigate\", route] or [\"navigate\", route, params]\n */\nexport function evalNavigate(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const route = args[0] as string;\n const params = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.navigate) {\n console.warn('No navigate handler in context for navigate effect');\n return;\n }\n\n ctx.navigate(route, params);\n}\n\n/**\n * Evaluate notify: [\"notify\", message] or [\"notify\", message, type]\n */\nexport function evalNotify(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const message = String(evaluate(args[0], ctx));\n const type = (args[1] as 'success' | 'error' | 'warning' | 'info') || 'info';\n\n if (!ctx.notify) {\n console.warn('No notify handler in context for notify effect');\n return;\n }\n\n ctx.notify(message, type);\n}\n\n/**\n * Evaluate spawn: [\"spawn\", entityType] or [\"spawn\", entityType, props]\n */\nexport function evalSpawn(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityType = args[0] as string;\n const props = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.spawn) {\n console.warn('No spawn handler in context for spawn effect');\n return;\n }\n\n ctx.spawn(entityType, props);\n}\n\n/**\n * Evaluate despawn: [\"despawn\"] or [\"despawn\", entityId]\n */\nexport function evalDespawn(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityId = args.length > 0 ? String(evaluate(args[0], ctx)) : undefined;\n\n if (!ctx.despawn) {\n console.warn('No despawn handler in context for despawn effect');\n return;\n }\n\n ctx.despawn(entityId);\n}\n\n/**\n * Evaluate call-service: [\"call-service\", service, method] or [\"call-service\", service, method, params]\n */\nexport function evalCallService(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const service = args[0] as string;\n const method = args[1] as string;\n const params = args.length > 2 ? (evaluate(args[2], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.callService) {\n console.warn('No callService handler in context for call-service effect');\n return;\n }\n\n // Fire and forget (async)\n ctx.callService(service, method, params).catch((err) => {\n console.error(`Service call ${service}.${method} failed:`, err);\n });\n}\n\n/**\n * Evaluate render-ui:\n * - [\"render-ui\", slot, pattern]\n * - [\"render-ui\", slot, pattern, props]\n * - [\"render-ui\", slot, pattern, props, priority]\n * - [\"render-ui\", slot, null] - clears the slot\n */\nexport function evalRenderUI(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const slot = args[0] as string;\n const pattern = evaluate(args[1], ctx);\n const props = args.length > 2 ? (evaluate(args[2], ctx) as Record<string, unknown>) : undefined;\n const priority = args.length > 3 ? (evaluate(args[3], ctx) as number) : undefined;\n\n if (!ctx.renderUI) {\n console.warn('No renderUI handler in context for render-ui effect');\n return;\n }\n\n // Handle null pattern as \"clear slot\"\n if (pattern === null || pattern === undefined) {\n ctx.renderUI(slot, { type: 'clear' }, undefined, priority);\n return;\n }\n\n ctx.renderUI(slot, pattern, props, priority);\n}\n\n/**\n * Evaluate set-dynamic: [\"set-dynamic\", pathExpr, value]\n * Used for dynamic field paths computed at runtime.\n * The pathExpr should evaluate to a dot-separated path string.\n */\nexport function evalSetDynamic(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const pathExpr = evaluate(args[0], ctx) as string;\n const value = evaluate(args[1], ctx);\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for set-dynamic effect');\n return;\n }\n\n if (!pathExpr || typeof pathExpr !== 'string') {\n console.warn(`set-dynamic requires a valid path string, got: ${pathExpr}`);\n return;\n }\n\n // pathExpr is already a dot-separated path (e.g., \"formValues.A9\")\n ctx.mutateEntity({ [pathExpr]: value });\n}\n\n/**\n * Evaluate increment: [\"increment\", \"@entity.field\"] or [\"increment\", \"@entity.field\", amount]\n */\nexport function evalIncrement(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const amount = args.length > 1 ? toNumber(evaluate(args[1], ctx)) : 1;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for increment effect');\n return;\n }\n\n if (!binding.startsWith('@entity.')) {\n console.warn(`increment only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n const currentValue = resolveBinding(binding, ctx);\n const newValue = toNumber(currentValue) + amount;\n\n ctx.mutateEntity({ [fieldPath]: newValue });\n}\n\n/**\n * Evaluate decrement: [\"decrement\", \"@entity.field\"] or [\"decrement\", \"@entity.field\", amount]\n */\nexport function evalDecrement(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const amount = args.length > 1 ? toNumber(evaluate(args[1], ctx)) : 1;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for decrement effect');\n return;\n }\n\n if (!binding.startsWith('@entity.')) {\n console.warn(`decrement only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n const currentValue = resolveBinding(binding, ctx);\n const newValue = toNumber(currentValue) - amount;\n\n ctx.mutateEntity({ [fieldPath]: newValue });\n}\n\n/**\n * Convert a value to a number.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n}\n","/**\n * Math Module Runtime Evaluators\n *\n * Runtime implementations for math/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * math/abs - Absolute value\n */\nexport function evalMathAbs(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.abs(n);\n}\n\n/**\n * math/min - Minimum of values\n */\nexport function evalMathMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const values = args.map((a) => evaluate(a, ctx) as number);\n return Math.min(...values);\n}\n\n/**\n * math/max - Maximum of values\n */\nexport function evalMathMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const values = args.map((a) => evaluate(a, ctx) as number);\n return Math.max(...values);\n}\n\n/**\n * math/clamp - Constrain value to range [min, max]\n */\nexport function evalMathClamp(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n return Math.min(Math.max(n, min), max);\n}\n\n/**\n * math/floor - Round down to integer\n */\nexport function evalMathFloor(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.floor(n);\n}\n\n/**\n * math/ceil - Round up to integer\n */\nexport function evalMathCeil(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.ceil(n);\n}\n\n/**\n * math/round - Round to nearest integer or specified decimals\n */\nexport function evalMathRound(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const decimals = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n if (decimals === 0) {\n return Math.round(n);\n }\n const factor = Math.pow(10, decimals);\n return Math.round(n * factor) / factor;\n}\n\n/**\n * math/pow - Exponentiation (base^exp)\n */\nexport function evalMathPow(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const base = evaluate(args[0], ctx) as number;\n const exp = evaluate(args[1], ctx) as number;\n return Math.pow(base, exp);\n}\n\n/**\n * math/sqrt - Square root\n */\nexport function evalMathSqrt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.sqrt(n);\n}\n\n/**\n * math/mod - Modulo (remainder)\n */\nexport function evalMathMod(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a % b;\n}\n\n/**\n * math/sign - Returns -1, 0, or 1 indicating sign\n */\nexport function evalMathSign(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.sign(n);\n}\n\n/**\n * math/lerp - Linear interpolation between a and b by factor t\n */\nexport function evalMathLerp(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const t = evaluate(args[2], ctx) as number;\n return a + (b - a) * t;\n}\n\n/**\n * math/map - Map value from one range to another\n */\nexport function evalMathMap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const inMin = evaluate(args[1], ctx) as number;\n const inMax = evaluate(args[2], ctx) as number;\n const outMin = evaluate(args[3], ctx) as number;\n const outMax = evaluate(args[4], ctx) as number;\n return ((n - inMin) / (inMax - inMin)) * (outMax - outMin) + outMin;\n}\n\n/**\n * math/random - Random number between 0 (inclusive) and 1 (exclusive)\n */\nexport function evalMathRandom(): number {\n return Math.random();\n}\n\n/**\n * math/randomInt - Random integer in range [min, max] (inclusive)\n */\nexport function evalMathRandomInt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const min = evaluate(args[0], ctx) as number;\n const max = evaluate(args[1], ctx) as number;\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n/**\n * math/default - Return default if value is null, undefined, or NaN\n */\nexport function evalMathDefault(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx);\n const defaultValue = evaluate(args[1], ctx) as number;\n if (n === null || n === undefined || (typeof n === 'number' && isNaN(n))) {\n return defaultValue;\n }\n return n as number;\n}\n","/**\n * String Module Runtime Evaluators\n *\n * Runtime implementations for str/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * str/len - String length\n */\nexport function evalStrLen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const s = evaluate(args[0], ctx) as string;\n return s?.length ?? 0;\n}\n\n/**\n * str/upper - Convert to uppercase\n */\nexport function evalStrUpper(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.toUpperCase() ?? '';\n}\n\n/**\n * str/lower - Convert to lowercase\n */\nexport function evalStrLower(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.toLowerCase() ?? '';\n}\n\n/**\n * str/trim - Remove leading and trailing whitespace\n */\nexport function evalStrTrim(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trim() ?? '';\n}\n\n/**\n * str/trimStart - Remove leading whitespace\n */\nexport function evalStrTrimStart(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trimStart() ?? '';\n}\n\n/**\n * str/trimEnd - Remove trailing whitespace\n */\nexport function evalStrTrimEnd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trimEnd() ?? '';\n}\n\n/**\n * str/split - Split string into array by delimiter\n */\nexport function evalStrSplit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string[] {\n const s = evaluate(args[0], ctx) as string;\n const delim = evaluate(args[1], ctx) as string;\n return s?.split(delim) ?? [];\n}\n\n/**\n * str/join - Join array elements into string\n */\nexport function evalStrJoin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const arr = evaluate(args[0], ctx) as unknown[];\n const delim = evaluate(args[1], ctx) as string;\n return arr?.join(delim) ?? '';\n}\n\n/**\n * str/slice - Extract substring\n */\nexport function evalStrSlice(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const start = evaluate(args[1], ctx) as number;\n const end = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return s?.slice(start, end) ?? '';\n}\n\n/**\n * str/replace - Replace first occurrence\n */\nexport function evalStrReplace(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const find = evaluate(args[1], ctx) as string;\n const replacement = evaluate(args[2], ctx) as string;\n return s?.replace(find, replacement) ?? '';\n}\n\n/**\n * str/replaceAll - Replace all occurrences\n * Uses replace with global regex for ES2020 compatibility\n */\nexport function evalStrReplaceAll(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const find = evaluate(args[1], ctx) as string;\n const replacement = evaluate(args[2], ctx) as string;\n if (!s || !find) return s ?? '';\n // Escape special regex characters in the search string\n const escaped = find.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return s.replace(new RegExp(escaped, 'g'), replacement);\n}\n\n/**\n * str/includes - Check if string contains substring\n */\nexport function evalStrIncludes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const search = evaluate(args[1], ctx) as string;\n return s?.includes(search) ?? false;\n}\n\n/**\n * str/startsWith - Check if string starts with prefix\n */\nexport function evalStrStartsWith(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const prefix = evaluate(args[1], ctx) as string;\n return s?.startsWith(prefix) ?? false;\n}\n\n/**\n * str/endsWith - Check if string ends with suffix\n */\nexport function evalStrEndsWith(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const suffix = evaluate(args[1], ctx) as string;\n return s?.endsWith(suffix) ?? false;\n}\n\n/**\n * str/padStart - Pad string from start to target length\n */\nexport function evalStrPadStart(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const char = args.length > 2 ? (evaluate(args[2], ctx) as string) : ' ';\n return s?.padStart(len, char) ?? '';\n}\n\n/**\n * str/padEnd - Pad string from end to target length\n */\nexport function evalStrPadEnd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const char = args.length > 2 ? (evaluate(args[2], ctx) as string) : ' ';\n return s?.padEnd(len, char) ?? '';\n}\n\n/**\n * str/repeat - Repeat string n times\n */\nexport function evalStrRepeat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const count = evaluate(args[1], ctx) as number;\n return s?.repeat(count) ?? '';\n}\n\n/**\n * str/reverse - Reverse string\n */\nexport function evalStrReverse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.split('').reverse().join('') ?? '';\n}\n\n/**\n * str/capitalize - Capitalize first character\n */\nexport function evalStrCapitalize(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s || s.length === 0) return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/**\n * str/titleCase - Convert to Title Case\n */\nexport function evalStrTitleCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase());\n}\n\n/**\n * str/camelCase - Convert to camelCase\n */\nexport function evalStrCamelCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) =>\n index === 0 ? word.toLowerCase() : word.toUpperCase()\n )\n .replace(/\\s+/g, '')\n .replace(/[-_]/g, '');\n}\n\n/**\n * str/kebabCase - Convert to kebab-case\n */\nexport function evalStrKebabCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n}\n\n/**\n * str/snakeCase - Convert to snake_case\n */\nexport function evalStrSnakeCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toLowerCase();\n}\n\n/**\n * str/default - Return default if value is null/undefined/empty\n */\nexport function evalStrDefault(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx);\n const defaultValue = evaluate(args[1], ctx) as string;\n if (s === null || s === undefined || s === '') {\n return defaultValue;\n }\n return s as string;\n}\n\n/**\n * str/template - Variable substitution in template string\n */\nexport function evalStrTemplate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const template = evaluate(args[0], ctx) as string;\n const vars = evaluate(args[1], ctx) as Record<string, unknown>;\n if (!template) return '';\n return template.replace(/\\{(\\w+)\\}/g, (_, key) => {\n const value = vars?.[key];\n return value !== undefined ? String(value) : '';\n });\n}\n\n/**\n * str/truncate - Truncate string with optional suffix\n */\nexport function evalStrTruncate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const suffix = args.length > 2 ? (evaluate(args[2], ctx) as string) : '...';\n if (!s || s.length <= len) return s ?? '';\n return s.slice(0, len - suffix.length) + suffix;\n}\n","/**\n * Array Module Runtime Evaluators\n *\n * Runtime implementations for array/* operators.\n * Supports lambda expressions for predicates and transformations.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\nimport { isSExpr, getOperator, getArgs } from '../types/expression.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Helper to evaluate a lambda expression with bound variable(s).\n */\nfunction evalLambda(\n lambdaExpr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n ...values: unknown[]\n): unknown {\n if (!isSExpr(lambdaExpr) || getOperator(lambdaExpr) !== 'fn') {\n // Not a lambda, treat as expression to evaluate\n return evaluate(lambdaExpr, ctx);\n }\n\n const args = getArgs(lambdaExpr);\n const params = args[0]; // Variable name(s)\n const body = args[1]; // Body expression\n\n // Create new locals map for the child context\n const newLocals = new Map<string, unknown>();\n\n if (Array.isArray(params)) {\n // Multiple params: [\"fn\", [\"a\", \"b\"], body]\n // This is an array of strings, NOT an S-expression\n const paramNames = params as string[];\n values.forEach((v, i) => {\n if (paramNames[i]) {\n const paramName = paramNames[i];\n // Store without @ prefix - resolveBinding strips @ before lookup\n const key = paramName.startsWith('@') ? paramName.slice(1) : paramName;\n newLocals.set(key, v);\n }\n });\n } else if (typeof params === 'string') {\n // Single param: [\"fn\", \"x\", body]\n // Store without @ prefix - resolveBinding strips @ before lookup\n const paramName = params.startsWith('@') ? params.slice(1) : params;\n newLocals.set(paramName, values[0]);\n }\n\n // Create child context with bound variable(s)\n const childCtx = createChildContext(ctx, newLocals);\n\n return evaluate(body, childCtx);\n}\n\n/**\n * array/len - Array length\n */\nexport function evalArrayLen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.length ?? 0;\n}\n\n/**\n * array/empty? - Check if array is empty\n */\nexport function evalArrayEmpty(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n return !arr || arr.length === 0;\n}\n\n/**\n * array/first - Get first element\n */\nexport function evalArrayFirst(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.[0];\n}\n\n/**\n * array/last - Get last element\n */\nexport function evalArrayLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.[arr.length - 1];\n}\n\n/**\n * array/nth - Get element at index\n */\nexport function evalArrayNth(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n return arr?.[index];\n}\n\n/**\n * array/slice - Extract subarray\n */\nexport function evalArraySlice(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const start = evaluate(args[1], ctx) as number;\n const end = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return arr?.slice(start, end) ?? [];\n}\n\n/**\n * array/concat - Concatenate arrays\n */\nexport function evalArrayConcat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arrays = args.map((a) => evaluate(a, ctx) as unknown[]);\n return arrays.reduce((acc, arr) => acc.concat(arr ?? []), [] as unknown[]);\n}\n\n/**\n * array/append - Add item to end (returns new array)\n */\nexport function evalArrayAppend(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return [...(arr ?? []), item];\n}\n\n/**\n * array/prepend - Add item to start (returns new array)\n */\nexport function evalArrayPrepend(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return [item, ...(arr ?? [])];\n}\n\n/**\n * array/insert - Insert item at index (returns new array)\n */\nexport function evalArrayInsert(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n const item = evaluate(args[2], ctx);\n const result = [...(arr ?? [])];\n result.splice(index, 0, item);\n return result;\n}\n\n/**\n * array/remove - Remove item at index (returns new array)\n */\nexport function evalArrayRemove(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n const result = [...(arr ?? [])];\n result.splice(index, 1);\n return result;\n}\n\n/**\n * array/removeItem - Remove first matching item (returns new array)\n */\nexport function evalArrayRemoveItem(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n const index = arr?.indexOf(item) ?? -1;\n if (index === -1) return arr ?? [];\n const result = [...arr];\n result.splice(index, 1);\n return result;\n}\n\n/**\n * array/reverse - Reverse array order (returns new array)\n */\nexport function evalArrayReverse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return [...(arr ?? [])].reverse();\n}\n\n/**\n * array/sort - Sort array (returns new array)\n */\nexport function evalArraySort(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n const dir = args.length > 2 ? (evaluate(args[2], ctx) as string) : 'asc';\n\n const result = [...(arr ?? [])];\n\n if (key) {\n result.sort((a, b) => {\n const aVal = (a as Record<string, unknown>)[key] as string | number;\n const bVal = (b as Record<string, unknown>)[key] as string | number;\n if (aVal < bVal) return dir === 'asc' ? -1 : 1;\n if (aVal > bVal) return dir === 'asc' ? 1 : -1;\n return 0;\n });\n } else {\n result.sort((a, b) => {\n const aVal = a as string | number;\n const bVal = b as string | number;\n if (aVal < bVal) return dir === 'asc' ? -1 : 1;\n if (aVal > bVal) return dir === 'asc' ? 1 : -1;\n return 0;\n });\n }\n\n return result;\n}\n\n/**\n * array/shuffle - Randomly shuffle array (returns new array)\n */\nexport function evalArrayShuffle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const result = [...(arr ?? [])];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n}\n\n/**\n * array/unique - Remove duplicates (returns new array)\n */\nexport function evalArrayUnique(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return [...new Set(arr ?? [])];\n}\n\n/**\n * array/flatten - Flatten nested arrays one level\n */\nexport function evalArrayFlatten(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return (arr ?? []).flat();\n}\n\n/**\n * array/zip - Pair elements from two arrays\n */\nexport function evalArrayZip(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[][] {\n const arr1 = evaluate(args[0], ctx) as unknown[];\n const arr2 = evaluate(args[1], ctx) as unknown[];\n const len = Math.min(arr1?.length ?? 0, arr2?.length ?? 0);\n const result: unknown[][] = [];\n for (let i = 0; i < len; i++) {\n result.push([arr1[i], arr2[i]]);\n }\n return result;\n}\n\n/**\n * array/includes - Check if array contains item\n */\nexport function evalArrayIncludes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return arr?.includes(item) ?? false;\n}\n\n/**\n * array/indexOf - Find index of item (-1 if not found)\n */\nexport function evalArrayIndexOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return arr?.indexOf(item) ?? -1;\n}\n\n/**\n * array/find - Find first element matching predicate\n */\nexport function evalArrayFind(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).find((item) => evalLambda(lambda, evaluate, ctx, item));\n}\n\n/**\n * array/findIndex - Find index of first element matching predicate (-1 if none)\n */\nexport function evalArrayFindIndex(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).findIndex((item) => evalLambda(lambda, evaluate, ctx, item));\n}\n\n/**\n * array/filter - Keep elements matching predicate\n */\nexport function evalArrayFilter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).filter((item) => evalLambda(lambda, evaluate, ctx, item));\n}\n\n/**\n * array/reject - Remove elements matching predicate\n */\nexport function evalArrayReject(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).filter((item) => !evalLambda(lambda, evaluate, ctx, item));\n}\n\n/**\n * array/map - Transform each element\n */\nexport function evalArrayMap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).map((item) => evalLambda(lambda, evaluate, ctx, item));\n}\n\n/**\n * array/reduce - Reduce array to single value\n */\nexport function evalArrayReduce(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n const init = evaluate(args[2], ctx);\n return (arr ?? []).reduce(\n (acc, item) => evalLambda(lambda, evaluate, ctx, acc, item),\n init\n );\n}\n\n/**\n * array/every - Check if all elements match predicate\n */\nexport function evalArrayEvery(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).every((item) => Boolean(evalLambda(lambda, evaluate, ctx, item)));\n}\n\n/**\n * array/some - Check if any element matches predicate\n */\nexport function evalArraySome(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n return (arr ?? []).some((item) => Boolean(evalLambda(lambda, evaluate, ctx, item)));\n}\n\n/**\n * array/count - Count elements (optionally matching predicate)\n */\nexport function evalArrayCount(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (args.length > 1) {\n const lambda = args[1];\n return (arr ?? []).filter((item) => evalLambda(lambda, evaluate, ctx, item)).length;\n }\n return arr?.length ?? 0;\n}\n\n/**\n * array/sum - Sum values (optionally by field)\n */\nexport function evalArraySum(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n return (arr ?? []).reduce((sum: number, item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return sum + (typeof value === 'number' ? value : 0);\n }, 0);\n}\n\n/**\n * array/avg - Average of values (optionally by field)\n */\nexport function evalArrayAvg(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const sum = arr.reduce((s: number, item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return s + (typeof value === 'number' ? value : 0);\n }, 0);\n\n return sum / arr.length;\n}\n\n/**\n * array/min - Minimum value (optionally by field)\n */\nexport function evalArrayMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const values = arr.map((item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return typeof value === 'number' ? value : Infinity;\n });\n\n return Math.min(...values);\n}\n\n/**\n * array/max - Maximum value (optionally by field)\n */\nexport function evalArrayMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const values = arr.map((item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return typeof value === 'number' ? value : -Infinity;\n });\n\n return Math.max(...values);\n}\n\n/**\n * array/groupBy - Group elements by field value\n */\nexport function evalArrayGroupBy(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown[]> {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = evaluate(args[1], ctx) as string;\n\n const result: Record<string, unknown[]> = {};\n for (const item of arr ?? []) {\n const groupKey = String((item as Record<string, unknown>)[key] ?? 'undefined');\n if (!result[groupKey]) {\n result[groupKey] = [];\n }\n result[groupKey].push(item);\n }\n return result;\n}\n\n/**\n * array/partition - Split array by predicate into [matches, nonMatches]\n */\nexport function evalArrayPartition(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [unknown[], unknown[]] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const lambda = args[1];\n\n const matches: unknown[] = [];\n const nonMatches: unknown[] = [];\n\n for (const item of arr ?? []) {\n if (evalLambda(lambda, evaluate, ctx, item)) {\n matches.push(item);\n } else {\n nonMatches.push(item);\n }\n }\n\n return [matches, nonMatches];\n}\n\n/**\n * array/take - Take first n elements\n */\nexport function evalArrayTake(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(0, n);\n}\n\n/**\n * array/drop - Skip first n elements\n */\nexport function evalArrayDrop(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(n);\n}\n\n/**\n * array/takeLast - Take last n elements\n */\nexport function evalArrayTakeLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(-n);\n}\n\n/**\n * array/dropLast - Skip last n elements\n */\nexport function evalArrayDropLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(0, -n);\n}\n","/**\n * Object Module Runtime Evaluators\n *\n * Runtime implementations for object/* operators.\n * All operations are immutable (return new objects).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\nimport { isSExpr, getOperator, getArgs } from '../types/expression.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Helper to evaluate a lambda expression with bound variable(s).\n */\nfunction evalLambda(\n lambdaExpr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n ...values: unknown[]\n): unknown {\n if (!isSExpr(lambdaExpr) || getOperator(lambdaExpr) !== 'fn') {\n return evaluate(lambdaExpr, ctx);\n }\n\n const args = getArgs(lambdaExpr);\n const params = args[0];\n const body = args[1];\n\n // Create new locals map for the child context\n const newLocals = new Map<string, unknown>();\n\n if (Array.isArray(params)) {\n // Multiple params: [\"fn\", [\"a\", \"b\"], body]\n const paramNames = params as string[];\n values.forEach((v, i) => {\n if (paramNames[i]) {\n const paramName = paramNames[i];\n // Store without @ prefix - resolveBinding strips @ before lookup\n const key = paramName.startsWith('@') ? paramName.slice(1) : paramName;\n newLocals.set(key, v);\n }\n });\n } else if (typeof params === 'string') {\n // Single param: [\"fn\", \"x\", body]\n // Store without @ prefix - resolveBinding strips @ before lookup\n const paramName = params.startsWith('@') ? params.slice(1) : params;\n newLocals.set(paramName, values[0]);\n }\n\n const childCtx = createChildContext(ctx, newLocals);\n\n return evaluate(body, childCtx);\n}\n\n/**\n * object/keys - Get object keys as array\n */\nexport function evalObjectKeys(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string[] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.keys(obj ?? {});\n}\n\n/**\n * object/values - Get object values as array\n */\nexport function evalObjectValues(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.values(obj ?? {});\n}\n\n/**\n * object/entries - Get [key, value] pairs as array\n */\nexport function evalObjectEntries(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [string, unknown][] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.entries(obj ?? {});\n}\n\n/**\n * object/fromEntries - Create object from [key, value] pairs\n */\nexport function evalObjectFromEntries(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const entries = evaluate(args[0], ctx) as [string, unknown][];\n return Object.fromEntries(entries ?? []);\n}\n\n/**\n * object/get - Get nested value by path\n */\nexport function evalObjectGet(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n const defaultValue = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n\n if (!obj || !path) return defaultValue;\n\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return defaultValue;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current !== undefined ? current : defaultValue;\n}\n\n/**\n * object/set - Set nested value by path (returns new object)\n */\nexport function evalObjectSet(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n const value = evaluate(args[2], ctx);\n\n if (!path) return obj ?? {};\n\n const result = structuredClone(obj ?? {});\n const parts = path.split('.');\n let current = result;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (!current[part] || typeof current[part] !== 'object') {\n current[part] = {};\n }\n current = current[part] as Record<string, unknown>;\n }\n\n current[parts[parts.length - 1]] = value;\n return result;\n}\n\n/**\n * object/has - Check if path exists\n */\nexport function evalObjectHas(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n\n if (!obj || !path) return false;\n\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(current, part)) {\n return false;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return true;\n}\n\n/**\n * object/merge - Shallow merge objects (later wins)\n */\nexport function evalObjectMerge(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const objects = args.map((a) => evaluate(a, ctx) as Record<string, unknown>);\n return Object.assign({}, ...objects.map((o) => o ?? {}));\n}\n\n/**\n * object/deepMerge - Deep merge objects (later wins)\n */\nexport function evalObjectDeepMerge(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const objects = args.map((a) => evaluate(a, ctx) as Record<string, unknown>);\n\n function deepMerge(\n target: Record<string, unknown>,\n source: Record<string, unknown>\n ): Record<string, unknown> {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (\n source[key] !== null &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] !== null &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(\n target[key] as Record<string, unknown>,\n source[key] as Record<string, unknown>\n );\n } else {\n result[key] = source[key];\n }\n }\n return result;\n }\n\n return objects.reduce((acc, obj) => deepMerge(acc, obj ?? {}), {} as Record<string, unknown>);\n}\n\n/**\n * object/pick - Select only specified keys\n */\nexport function evalObjectPick(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const keys = evaluate(args[1], ctx) as string[];\n\n const result: Record<string, unknown> = {};\n for (const key of keys ?? []) {\n if (obj && Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * object/omit - Exclude specified keys\n */\nexport function evalObjectOmit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const keys = evaluate(args[1], ctx) as string[];\n\n const keysSet = new Set(keys ?? []);\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj ?? {})) {\n if (!keysSet.has(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * object/mapValues - Transform all values\n */\nexport function evalObjectMapValues(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n result[key] = evalLambda(lambda, evaluate, ctx, value);\n }\n return result;\n}\n\n/**\n * object/mapKeys - Transform all keys\n */\nexport function evalObjectMapKeys(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n const newKey = String(evalLambda(lambda, evaluate, ctx, key));\n result[newKey] = value;\n }\n return result;\n}\n\n/**\n * object/filter - Filter entries by predicate\n */\nexport function evalObjectFilter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n if (evalLambda(lambda, evaluate, ctx, key, value)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * object/empty? - Check if object has no keys\n */\nexport function evalObjectEmpty(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return !obj || Object.keys(obj).length === 0;\n}\n\n/**\n * object/equals - Deep equality check\n */\nexport function evalObjectEquals(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx);\n const b = evaluate(args[1], ctx);\n\n function deepEqual(x: unknown, y: unknown): boolean {\n if (x === y) return true;\n if (typeof x !== typeof y) return false;\n if (typeof x !== 'object' || x === null || y === null) return false;\n if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y as object);\n if (xKeys.length !== yKeys.length) return false;\n\n for (const key of xKeys) {\n if (!deepEqual((x as Record<string, unknown>)[key], (y as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n }\n\n return deepEqual(a, b);\n}\n\n/**\n * object/clone - Shallow clone object\n */\nexport function evalObjectClone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return { ...(obj ?? {}) };\n}\n\n/**\n * object/deepClone - Deep clone object\n */\nexport function evalObjectDeepClone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return structuredClone(obj ?? {});\n}\n\n/**\n * path - Build a dot-separated path string from segments\n *\n * Used for dynamic field access in set effects:\n * [\"set\", [\"path\", \"formValues\", \"@payload.fieldId\"], \"@payload.value\"]\n *\n * @example\n * [\"path\", \"formValues\", \"A9\"] => \"formValues.A9\"\n * [\"path\", \"@entity.prefix\", \"field\"] => \"myPrefix.field\" (if @entity.prefix = \"myPrefix\")\n */\nexport function evalPath(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n if (args.length === 0) {\n throw new Error('path operator requires at least 1 argument');\n }\n\n const segments = args.map((arg) => {\n const evaluated = evaluate(arg, ctx);\n return String(evaluated ?? '');\n });\n\n return segments.join('.');\n}\n","/**\n * Validate Module Runtime Evaluators\n *\n * Runtime implementations for validate/* operators.\n * Provides validation functions for form inputs and data.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * validate/required - Check if value is not null, undefined, or empty string\n */\nexport function evalValidateRequired(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return value !== null && value !== undefined && value !== '';\n}\n\n/**\n * validate/string - Check if value is a string\n */\nexport function evalValidateString(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'string';\n}\n\n/**\n * validate/number - Check if value is a number\n */\nexport function evalValidateNumber(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * validate/boolean - Check if value is a boolean\n */\nexport function evalValidateBoolean(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'boolean';\n}\n\n/**\n * validate/array - Check if value is an array\n */\nexport function evalValidateArray(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return Array.isArray(value);\n}\n\n/**\n * validate/object - Check if value is an object\n */\nexport function evalValidateObject(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * validate/email - Check if value is a valid email format\n */\nexport function evalValidateEmail(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n // Simple email regex - covers most valid cases\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n}\n\n/**\n * validate/url - Check if value is a valid URL format\n */\nexport function evalValidateUrl(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * validate/uuid - Check if value is a valid UUID\n */\nexport function evalValidateUuid(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n}\n\n/**\n * validate/phone - Check if value is a valid phone number\n */\nexport function evalValidatePhone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n // Simple phone validation - digits, spaces, dashes, parens, and optional leading +\n const phoneRegex = /^\\+?[\\d\\s\\-().]{10,}$/;\n const digits = value.replace(/\\D/g, '');\n return phoneRegex.test(value) && digits.length >= 10;\n}\n\n/**\n * validate/creditCard - Check if value is a valid credit card number (Luhn algorithm)\n */\nexport function evalValidateCreditCard(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 13 || digits.length > 19) return false;\n\n // Luhn algorithm\n let sum = 0;\n let isEven = false;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let digit = parseInt(digits[i], 10);\n if (isEven) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n isEven = !isEven;\n }\n\n return sum % 10 === 0;\n}\n\n/**\n * validate/date - Check if value is a valid date\n */\nexport function evalValidateDate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (value instanceof Date) return !isNaN(value.getTime());\n if (typeof value === 'number') return !isNaN(new Date(value).getTime());\n if (typeof value === 'string') return !isNaN(new Date(value).getTime());\n return false;\n}\n\n/**\n * validate/minLength - Check if string/array has minimum length\n */\nexport function evalValidateMinLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const min = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length >= min;\n }\n return false;\n}\n\n/**\n * validate/maxLength - Check if string/array has maximum length\n */\nexport function evalValidateMaxLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const max = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length <= max;\n }\n return false;\n}\n\n/**\n * validate/length - Check if string/array has exact length\n */\nexport function evalValidateLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const exact = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length === exact;\n }\n return false;\n}\n\n/**\n * validate/min - Check if number is >= minimum\n */\nexport function evalValidateMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n return typeof value === 'number' && value >= min;\n}\n\n/**\n * validate/max - Check if number is <= maximum\n */\nexport function evalValidateMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const max = evaluate(args[1], ctx) as number;\n return typeof value === 'number' && value <= max;\n}\n\n/**\n * validate/range - Check if number is within range [min, max]\n */\nexport function evalValidateRange(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n return typeof value === 'number' && value >= min && value <= max;\n}\n\n/**\n * validate/pattern - Check if string matches regex pattern\n */\nexport function evalValidatePattern(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const pattern = evaluate(args[1], ctx) as string;\n\n if (typeof value !== 'string') return false;\n try {\n const regex = new RegExp(pattern);\n return regex.test(value);\n } catch {\n return false;\n }\n}\n\n/**\n * validate/oneOf - Check if value is in list of allowed values\n */\nexport function evalValidateOneOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const options = evaluate(args[1], ctx) as unknown[];\n return (options ?? []).includes(value);\n}\n\n/**\n * validate/noneOf - Check if value is not in list of disallowed values\n */\nexport function evalValidateNoneOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const options = evaluate(args[1], ctx) as unknown[];\n return !(options ?? []).includes(value);\n}\n\n/**\n * validate/equals - Deep equality check\n */\nexport function evalValidateEquals(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx);\n const b = evaluate(args[1], ctx);\n\n function deepEqual(x: unknown, y: unknown): boolean {\n if (x === y) return true;\n if (typeof x !== typeof y) return false;\n if (typeof x !== 'object' || x === null || y === null) return false;\n if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y as object);\n if (xKeys.length !== yKeys.length) return false;\n\n for (const key of xKeys) {\n if (!deepEqual((x as Record<string, unknown>)[key], (y as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n }\n\n return deepEqual(a, b);\n}\n\n/**\n * validate/check - Run multiple validation rules, return { valid, errors }\n */\nexport function evalValidateCheck(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { valid: boolean; errors: string[] } {\n const value = evaluate(args[0], ctx) as Record<string, unknown>;\n const rules = evaluate(args[1], ctx) as Record<string, [string, ...unknown[]][]>;\n\n const errors: string[] = [];\n\n for (const [field, fieldRules] of Object.entries(rules ?? {})) {\n const fieldValue = value?.[field];\n\n for (const rule of fieldRules ?? []) {\n const [ruleName, ...ruleArgs] = rule;\n let isValid = true;\n\n switch (ruleName) {\n case 'required':\n isValid = fieldValue !== null && fieldValue !== undefined && fieldValue !== '';\n break;\n case 'string':\n isValid = typeof fieldValue === 'string';\n break;\n case 'number':\n isValid = typeof fieldValue === 'number' && !isNaN(fieldValue);\n break;\n case 'boolean':\n isValid = typeof fieldValue === 'boolean';\n break;\n case 'email': {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n isValid = typeof fieldValue === 'string' && emailRegex.test(fieldValue);\n break;\n }\n case 'minLength':\n isValid =\n (typeof fieldValue === 'string' || Array.isArray(fieldValue)) &&\n fieldValue.length >= (ruleArgs[0] as number);\n break;\n case 'maxLength':\n isValid =\n (typeof fieldValue === 'string' || Array.isArray(fieldValue)) &&\n fieldValue.length <= (ruleArgs[0] as number);\n break;\n case 'min':\n isValid = typeof fieldValue === 'number' && fieldValue >= (ruleArgs[0] as number);\n break;\n case 'max':\n isValid = typeof fieldValue === 'number' && fieldValue <= (ruleArgs[0] as number);\n break;\n case 'range':\n isValid =\n typeof fieldValue === 'number' &&\n fieldValue >= (ruleArgs[0] as number) &&\n fieldValue <= (ruleArgs[1] as number);\n break;\n case 'pattern': {\n const regex = new RegExp(ruleArgs[0] as string);\n isValid = typeof fieldValue === 'string' && regex.test(fieldValue);\n break;\n }\n case 'oneOf':\n isValid = (ruleArgs[0] as unknown[])?.includes(fieldValue);\n break;\n default:\n // Unknown rule, skip\n continue;\n }\n\n if (!isValid) {\n errors.push(`${field}: ${ruleName} validation failed`);\n }\n }\n }\n\n return { valid: errors.length === 0, errors };\n}\n","/**\n * Time Module Runtime Evaluators\n *\n * Runtime implementations for time/* operators.\n * Provides date manipulation, formatting, and comparison functions.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ntype TimeUnit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'ms';\n\nconst MS_PER_SECOND = 1000;\nconst MS_PER_MINUTE = 60 * MS_PER_SECOND;\nconst MS_PER_HOUR = 60 * MS_PER_MINUTE;\nconst MS_PER_DAY = 24 * MS_PER_HOUR;\nconst MS_PER_WEEK = 7 * MS_PER_DAY;\n\n/**\n * time/now - Current timestamp\n */\nexport function evalTimeNow(): number {\n return Date.now();\n}\n\n/**\n * time/today - Today at midnight (local time)\n */\nexport function evalTimeToday(): number {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.getTime();\n}\n\n/**\n * time/parse - Parse string to timestamp\n */\nexport function evalTimeParse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const str = evaluate(args[0], ctx) as string;\n // Note: format param is accepted but we use native Date parsing\n // A full implementation would need a date parsing library\n const date = new Date(str);\n return date.getTime();\n}\n\n/**\n * time/format - Format timestamp to string\n */\nexport function evalTimeFormat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const timestamp = evaluate(args[0], ctx) as number;\n const format = evaluate(args[1], ctx) as string;\n\n const date = new Date(timestamp);\n\n // Simple format token replacement\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n YY: String(date.getFullYear()).slice(-2),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n M: String(date.getMonth() + 1),\n DD: String(date.getDate()).padStart(2, '0'),\n D: String(date.getDate()),\n HH: String(date.getHours()).padStart(2, '0'),\n H: String(date.getHours()),\n mm: String(date.getMinutes()).padStart(2, '0'),\n m: String(date.getMinutes()),\n ss: String(date.getSeconds()).padStart(2, '0'),\n s: String(date.getSeconds()),\n ddd: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][date.getDay()],\n dddd: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][\n date.getDay()\n ],\n MMM: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][\n date.getMonth()\n ],\n MMMM: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ][date.getMonth()],\n };\n\n let result = format;\n for (const [token, value] of Object.entries(tokens)) {\n result = result.replace(new RegExp(token, 'g'), value);\n }\n\n return result;\n}\n\n/**\n * time/year - Get year from timestamp\n */\nexport function evalTimeYear(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getFullYear();\n}\n\n/**\n * time/month - Get month from timestamp (1-12)\n */\nexport function evalTimeMonth(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getMonth() + 1;\n}\n\n/**\n * time/day - Get day of month from timestamp (1-31)\n */\nexport function evalTimeDay(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getDate();\n}\n\n/**\n * time/weekday - Get day of week (0=Sunday, 6=Saturday)\n */\nexport function evalTimeWeekday(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getDay();\n}\n\n/**\n * time/hour - Get hour from timestamp (0-23)\n */\nexport function evalTimeHour(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getHours();\n}\n\n/**\n * time/minute - Get minute from timestamp (0-59)\n */\nexport function evalTimeMinute(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getMinutes();\n}\n\n/**\n * time/second - Get second from timestamp (0-59)\n */\nexport function evalTimeSecond(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getSeconds();\n}\n\n/**\n * Helper to add time to a date\n */\nfunction addTime(date: Date, amount: number, unit: TimeUnit): Date {\n const result = new Date(date);\n\n switch (unit) {\n case 'year':\n result.setFullYear(result.getFullYear() + amount);\n break;\n case 'month':\n result.setMonth(result.getMonth() + amount);\n break;\n case 'week':\n result.setDate(result.getDate() + amount * 7);\n break;\n case 'day':\n result.setDate(result.getDate() + amount);\n break;\n case 'hour':\n result.setHours(result.getHours() + amount);\n break;\n case 'minute':\n result.setMinutes(result.getMinutes() + amount);\n break;\n case 'second':\n result.setSeconds(result.getSeconds() + amount);\n break;\n case 'ms':\n result.setMilliseconds(result.getMilliseconds() + amount);\n break;\n }\n\n return result;\n}\n\n/**\n * time/add - Add time to timestamp\n */\nexport function evalTimeAdd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const amount = evaluate(args[1], ctx) as number;\n const unit = evaluate(args[2], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n return addTime(date, amount, unit).getTime();\n}\n\n/**\n * time/subtract - Subtract time from timestamp\n */\nexport function evalTimeSubtract(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const amount = evaluate(args[1], ctx) as number;\n const unit = evaluate(args[2], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n return addTime(date, -amount, unit).getTime();\n}\n\n/**\n * time/diff - Difference between timestamps\n */\nexport function evalTimeDiff(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const unit = args.length > 2 ? (evaluate(args[2], ctx) as TimeUnit) : 'ms';\n\n const diffMs = a - b;\n\n switch (unit) {\n case 'year':\n return Math.floor(diffMs / (MS_PER_DAY * 365.25));\n case 'month':\n return Math.floor(diffMs / (MS_PER_DAY * 30.44));\n case 'week':\n return Math.floor(diffMs / MS_PER_WEEK);\n case 'day':\n return Math.floor(diffMs / MS_PER_DAY);\n case 'hour':\n return Math.floor(diffMs / MS_PER_HOUR);\n case 'minute':\n return Math.floor(diffMs / MS_PER_MINUTE);\n case 'second':\n return Math.floor(diffMs / MS_PER_SECOND);\n case 'ms':\n default:\n return diffMs;\n }\n}\n\n/**\n * time/startOf - Get start of time period\n */\nexport function evalTimeStartOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const unit = evaluate(args[1], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n break;\n case 'month':\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n break;\n case 'week': {\n const day = date.getDay();\n date.setDate(date.getDate() - day);\n date.setHours(0, 0, 0, 0);\n break;\n }\n case 'day':\n date.setHours(0, 0, 0, 0);\n break;\n case 'hour':\n date.setMinutes(0, 0, 0);\n break;\n case 'minute':\n date.setSeconds(0, 0);\n break;\n }\n\n return date.getTime();\n}\n\n/**\n * time/endOf - Get end of time period\n */\nexport function evalTimeEndOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const unit = evaluate(args[1], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n date.setMonth(11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n case 'month':\n date.setMonth(date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n case 'week': {\n const day = date.getDay();\n date.setDate(date.getDate() + (6 - day));\n date.setHours(23, 59, 59, 999);\n break;\n }\n case 'day':\n date.setHours(23, 59, 59, 999);\n break;\n case 'hour':\n date.setMinutes(59, 59, 999);\n break;\n case 'minute':\n date.setSeconds(59, 999);\n break;\n }\n\n return date.getTime();\n}\n\n/**\n * time/isBefore - Check if a is before b\n */\nexport function evalTimeIsBefore(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a < b;\n}\n\n/**\n * time/isAfter - Check if a is after b\n */\nexport function evalTimeIsAfter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a > b;\n}\n\n/**\n * time/isBetween - Check if date is between start and end\n */\nexport function evalTimeIsBetween(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const date = evaluate(args[0], ctx) as number;\n const start = evaluate(args[1], ctx) as number;\n const end = evaluate(args[2], ctx) as number;\n return date >= start && date <= end;\n}\n\n/**\n * time/isSame - Check if timestamps are same (optionally by unit)\n */\nexport function evalTimeIsSame(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const unit = args.length > 2 ? (evaluate(args[2], ctx) as TimeUnit) : undefined;\n\n if (!unit) {\n return a === b;\n }\n\n const dateA = new Date(a);\n const dateB = new Date(b);\n\n switch (unit) {\n case 'year':\n return dateA.getFullYear() === dateB.getFullYear();\n case 'month':\n return (\n dateA.getFullYear() === dateB.getFullYear() && dateA.getMonth() === dateB.getMonth()\n );\n case 'day':\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n case 'hour':\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate() &&\n dateA.getHours() === dateB.getHours()\n );\n case 'minute':\n return Math.floor(a / MS_PER_MINUTE) === Math.floor(b / MS_PER_MINUTE);\n case 'second':\n return Math.floor(a / MS_PER_SECOND) === Math.floor(b / MS_PER_SECOND);\n default:\n return a === b;\n }\n}\n\n/**\n * time/isPast - Check if timestamp is in the past\n */\nexport function evalTimeIsPast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n return timestamp < Date.now();\n}\n\n/**\n * time/isFuture - Check if timestamp is in the future\n */\nexport function evalTimeIsFuture(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n return timestamp > Date.now();\n}\n\n/**\n * time/isToday - Check if timestamp is today\n */\nexport function evalTimeIsToday(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n const date = new Date(timestamp);\n const today = new Date();\n\n return (\n date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate()\n );\n}\n\n/**\n * time/relative - Format as relative time (\"2 hours ago\", \"in 3 days\")\n */\nexport function evalTimeRelative(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const timestamp = evaluate(args[0], ctx) as number;\n const now = Date.now();\n const diff = timestamp - now;\n const absDiff = Math.abs(diff);\n const isPast = diff < 0;\n\n let value: number;\n let unit: string;\n\n if (absDiff < MS_PER_MINUTE) {\n return 'just now';\n } else if (absDiff < MS_PER_HOUR) {\n value = Math.round(absDiff / MS_PER_MINUTE);\n unit = value === 1 ? 'minute' : 'minutes';\n } else if (absDiff < MS_PER_DAY) {\n value = Math.round(absDiff / MS_PER_HOUR);\n unit = value === 1 ? 'hour' : 'hours';\n } else if (absDiff < MS_PER_WEEK) {\n value = Math.round(absDiff / MS_PER_DAY);\n unit = value === 1 ? 'day' : 'days';\n } else if (absDiff < MS_PER_DAY * 30) {\n value = Math.round(absDiff / MS_PER_WEEK);\n unit = value === 1 ? 'week' : 'weeks';\n } else if (absDiff < MS_PER_DAY * 365) {\n value = Math.round(absDiff / (MS_PER_DAY * 30));\n unit = value === 1 ? 'month' : 'months';\n } else {\n value = Math.round(absDiff / (MS_PER_DAY * 365));\n unit = value === 1 ? 'year' : 'years';\n }\n\n return isPast ? `${value} ${unit} ago` : `in ${value} ${unit}`;\n}\n\n/**\n * time/duration - Format milliseconds as duration (\"2h 30m\")\n */\nexport function evalTimeDuration(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n let ms = evaluate(args[0], ctx) as number;\n\n if (ms < 0) ms = -ms;\n\n const parts: string[] = [];\n\n if (ms >= MS_PER_DAY) {\n const days = Math.floor(ms / MS_PER_DAY);\n parts.push(`${days}d`);\n ms %= MS_PER_DAY;\n }\n\n if (ms >= MS_PER_HOUR) {\n const hours = Math.floor(ms / MS_PER_HOUR);\n parts.push(`${hours}h`);\n ms %= MS_PER_HOUR;\n }\n\n if (ms >= MS_PER_MINUTE) {\n const minutes = Math.floor(ms / MS_PER_MINUTE);\n parts.push(`${minutes}m`);\n ms %= MS_PER_MINUTE;\n }\n\n if (ms >= MS_PER_SECOND && parts.length < 2) {\n const seconds = Math.floor(ms / MS_PER_SECOND);\n parts.push(`${seconds}s`);\n }\n\n return parts.length > 0 ? parts.join(' ') : '0s';\n}\n","/**\n * Format Module Runtime Evaluators\n *\n * Runtime implementations for format/* operators.\n * Provides formatting functions for numbers, currencies, and display values.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * format/number - Format number with locale-aware separators\n */\nexport function evalFormatNumber(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const opts = args.length > 1 ? (evaluate(args[1], ctx) as { decimals?: number; locale?: string }) : {};\n\n const locale = opts?.locale ?? 'en-US';\n const options: Intl.NumberFormatOptions = {};\n\n if (opts?.decimals !== undefined) {\n options.minimumFractionDigits = opts.decimals;\n options.maximumFractionDigits = opts.decimals;\n }\n\n return new Intl.NumberFormat(locale, options).format(n);\n}\n\n/**\n * format/currency - Format as currency\n */\nexport function evalFormatCurrency(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const currency = evaluate(args[1], ctx) as string;\n const locale = args.length > 2 ? (evaluate(args[2], ctx) as string) : 'en-US';\n\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n }).format(n);\n}\n\n/**\n * format/percent - Format as percentage\n */\nexport function evalFormatPercent(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const decimals = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n\n return new Intl.NumberFormat('en-US', {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(n);\n}\n\n/**\n * format/bytes - Format bytes as human-readable size\n */\nexport function evalFormatBytes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const bytes = evaluate(args[0], ctx) as number;\n\n if (bytes === 0) return '0 B';\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n const value = bytes / Math.pow(k, i);\n // Use different precision rules\n if (i === 0) {\n return `${bytes} B`;\n }\n // Round values >= 10, or use 1 decimal for smaller values\n // Also remove .0 for whole numbers\n let formatted: string;\n if (value >= 10) {\n formatted = String(Math.round(value));\n } else if (Number.isInteger(value)) {\n formatted = String(value);\n } else {\n formatted = value.toFixed(1);\n }\n\n return `${formatted} ${units[i]}`;\n}\n\n/**\n * format/ordinal - Format number as ordinal (1st, 2nd, 3rd)\n */\nexport function evalFormatOrdinal(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n\n const absN = Math.abs(n);\n const lastDigit = absN % 10;\n const lastTwoDigits = absN % 100;\n\n let suffix: string;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n suffix = 'th';\n } else if (lastDigit === 1) {\n suffix = 'st';\n } else if (lastDigit === 2) {\n suffix = 'nd';\n } else if (lastDigit === 3) {\n suffix = 'rd';\n } else {\n suffix = 'th';\n }\n\n return `${n}${suffix}`;\n}\n\n/**\n * format/plural - Format count with singular/plural word\n */\nexport function evalFormatPlural(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const singular = evaluate(args[1], ctx) as string;\n const plural = evaluate(args[2], ctx) as string;\n\n return `${n} ${Math.abs(n) === 1 ? singular : plural}`;\n}\n\n/**\n * format/list - Format array as natural language list\n */\nexport function evalFormatList(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const arr = evaluate(args[0], ctx) as string[];\n const style = args.length > 1 ? (evaluate(args[1], ctx) as 'and' | 'or') : 'and';\n\n if (!arr || arr.length === 0) return '';\n if (arr.length === 1) return arr[0];\n if (arr.length === 2) return `${arr[0]} ${style} ${arr[1]}`;\n\n const last = arr[arr.length - 1];\n const rest = arr.slice(0, -1);\n return `${rest.join(', ')}, ${style} ${last}`;\n}\n\n/**\n * format/phone - Format phone number\n */\nexport function evalFormatPhone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const str = evaluate(args[0], ctx) as string;\n const format = args.length > 1 ? (evaluate(args[1], ctx) as string) : 'US';\n\n // Extract only digits\n const digits = str?.replace(/\\D/g, '') ?? '';\n\n if (format === 'US' && digits.length === 10) {\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n }\n\n if (format === 'US' && digits.length === 11 && digits[0] === '1') {\n return `+1 (${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`;\n }\n\n // Default: group into chunks of 3-4\n if (digits.length >= 10) {\n return `${digits.slice(0, 3)}-${digits.slice(3, 6)}-${digits.slice(6)}`;\n }\n\n return str;\n}\n\n/**\n * format/creditCard - Format credit card with masked digits\n */\nexport function evalFormatCreditCard(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const str = evaluate(args[0], ctx) as string;\n\n const digits = str?.replace(/\\D/g, '') ?? '';\n\n if (digits.length < 4) return str;\n\n // Show only last 4 digits\n const lastFour = digits.slice(-4);\n const masked = '•'.repeat(digits.length - 4);\n\n // Format in groups of 4\n const combined = masked + lastFour;\n return combined.match(/.{1,4}/g)?.join(' ') ?? combined;\n}\n","/**\n * Async Module Runtime Evaluators\n *\n * Runtime implementations for async/* operators.\n * Provides functions for handling async operations, delays, and timing.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// Debounce timers keyed by event name\nconst debounceTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n// Throttle timestamps keyed by event name\nconst throttleTimestamps = new Map<string, number>();\n\n/**\n * async/delay - Wait for specified milliseconds\n */\nexport async function evalAsyncDelay(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<void> {\n const ms = evaluate(args[0], ctx) as number;\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n/**\n * async/timeout - Add timeout to an effect\n */\nexport async function evalAsyncTimeout(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const effect = args[0];\n const ms = evaluate(args[1], ctx) as number;\n\n return Promise.race([\n Promise.resolve().then(() => evaluate(effect, ctx)),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error('Timeout exceeded')), ms)\n ),\n ]);\n}\n\n/**\n * async/debounce - Debounce an event (wait for pause in events)\n */\nexport function evalAsyncDebounce(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const event = evaluate(args[0], ctx) as string;\n const ms = evaluate(args[1], ctx) as number;\n\n // Clear existing timer if any\n const existingTimer = debounceTimers.get(event);\n if (existingTimer) {\n clearTimeout(existingTimer);\n }\n\n // Set new timer\n const timer = setTimeout(() => {\n debounceTimers.delete(event);\n // Emit the event\n ctx.emit?.(event);\n }, ms);\n\n debounceTimers.set(event, timer);\n}\n\n/**\n * async/throttle - Throttle an event (emit at most once per interval)\n */\nexport function evalAsyncThrottle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const event = evaluate(args[0], ctx) as string;\n const ms = evaluate(args[1], ctx) as number;\n\n const now = Date.now();\n const lastTimestamp = throttleTimestamps.get(event) ?? 0;\n\n if (now - lastTimestamp >= ms) {\n throttleTimestamps.set(event, now);\n ctx.emit?.(event);\n }\n}\n\n/**\n * async/retry - Retry an effect with configurable backoff\n */\nexport async function evalAsyncRetry(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const effect = args[0];\n const opts = evaluate(args[1], ctx) as {\n attempts?: number;\n backoff?: 'fixed' | 'linear' | 'exponential';\n baseDelay?: number;\n };\n\n const attempts = opts?.attempts ?? 3;\n const backoff = opts?.backoff ?? 'exponential';\n const baseDelay = opts?.baseDelay ?? 1000;\n\n let lastError: unknown;\n\n for (let i = 0; i < attempts; i++) {\n try {\n return await Promise.resolve().then(() => evaluate(effect, ctx));\n } catch (error) {\n lastError = error;\n\n if (i < attempts - 1) {\n // Calculate delay based on backoff strategy\n let delay: number;\n switch (backoff) {\n case 'fixed':\n delay = baseDelay;\n break;\n case 'linear':\n delay = baseDelay * (i + 1);\n break;\n case 'exponential':\n default:\n delay = baseDelay * Math.pow(2, i);\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n\n throw lastError;\n}\n\n/**\n * async/race - Execute effects in parallel, return first to complete\n */\nexport async function evalAsyncRace(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const promises = args.map((effect) =>\n Promise.resolve().then(() => evaluate(effect, ctx))\n );\n return Promise.race(promises);\n}\n\n/**\n * async/all - Execute effects in parallel, wait for all to complete\n */\nexport async function evalAsyncAll(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown[]> {\n const promises = args.map((effect) =>\n Promise.resolve().then(() => evaluate(effect, ctx))\n );\n return Promise.all(promises);\n}\n\n/**\n * async/sequence - Execute effects in sequence (one after another)\n */\nexport async function evalAsyncSequence(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown[]> {\n const results: unknown[] = [];\n\n for (const effect of args) {\n const result = await Promise.resolve().then(() => evaluate(effect, ctx));\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Clear debounce timers (for testing/cleanup)\n */\nexport function clearDebounceTimers(): void {\n for (const timer of debounceTimers.values()) {\n clearTimeout(timer);\n }\n debounceTimers.clear();\n}\n\n/**\n * Clear throttle timestamps (for testing/cleanup)\n */\nexport function clearThrottleTimestamps(): void {\n throttleTimestamps.clear();\n}\n","/**\n * S-Expression Evaluator\n *\n * Runtime interpreter for S-expressions.\n * Used for evaluating guards and executing effects in the preview system.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from './types/expression.js';\nimport { isSExpr, isBinding, getOperator, getArgs } from './types/expression.js';\nimport type { EvaluationContext } from './context.js';\nimport { resolveBinding } from './context.js';\n\n// Import operators\nimport {\n evalAdd,\n evalSubtract,\n evalMultiply,\n evalDivide,\n evalModulo,\n evalAbs,\n evalMin,\n evalMax,\n evalFloor,\n evalCeil,\n evalRound,\n evalClamp,\n evalEqual,\n evalNotEqual,\n evalLessThan,\n evalGreaterThan,\n evalLessThanOrEqual,\n evalGreaterThanOrEqual,\n evalMatches,\n evalAnd,\n evalOr,\n evalNot,\n evalIf,\n evalLet,\n evalDo,\n evalWhen,\n evalMap,\n evalFilter,\n evalFind,\n evalCount,\n evalSum,\n evalFirst,\n evalLast,\n evalNth,\n evalConcat,\n evalIncludes,\n evalEmpty,\n evalSet,\n evalSetDynamic,\n evalIncrement,\n evalDecrement,\n evalEmit,\n evalPersist,\n evalNavigate,\n evalNotify,\n evalSpawn,\n evalDespawn,\n evalCallService,\n evalRenderUI,\n} from './operators/index.js';\n\n// Import std library evaluators\nimport * as stdMath from './std/math.js';\nimport * as stdStr from './std/str.js';\nimport * as stdArray from './std/array.js';\nimport * as stdObject from './std/object.js';\nimport * as stdValidate from './std/validate.js';\nimport * as stdTime from './std/time.js';\nimport * as stdFormat from './std/format.js';\nimport * as stdAsync from './std/async.js';\n\n/**\n * JIT compilation cache for hot paths.\n * Maps S-expression JSON to compiled function.\n */\nconst jitCache = new Map<string, (ctx: EvaluationContext) => unknown>();\n\n/**\n * Maximum JIT cache size to prevent memory issues.\n */\nconst MAX_JIT_CACHE_SIZE = 1000;\n\n/**\n * S-Expression Evaluator class.\n *\n * Provides runtime interpretation of S-expressions for guards, effects, and computed values.\n */\nexport class SExpressionEvaluator {\n /**\n * Evaluate an S-expression in the given context.\n *\n * @param expr - S-expression to evaluate\n * @param ctx - Evaluation context with bindings and effect handlers\n * @returns Result of evaluation\n */\n evaluate(expr: SExpr, ctx: EvaluationContext): unknown {\n // Atom: literal value\n if (!isSExpr(expr)) {\n // Check if it's a binding\n if (isBinding(expr)) {\n return resolveBinding(expr, ctx);\n }\n // Return literal value\n return expr;\n }\n\n // S-expression call\n const op = getOperator(expr)!;\n const args = getArgs(expr);\n\n // Dispatch to operator implementation\n return this.dispatchOperator(op, args, ctx);\n }\n\n /**\n * Evaluate an S-expression as a guard (returns boolean).\n *\n * @param expr - S-expression guard\n * @param ctx - Evaluation context\n * @returns true if guard passes, false otherwise\n */\n evaluateGuard(expr: SExpr, ctx: EvaluationContext): boolean {\n const result = this.evaluate(expr, ctx);\n return Boolean(result);\n }\n\n /**\n * Execute an effect S-expression.\n *\n * @param expr - Effect S-expression (e.g., [\"set\", \"@entity.x\", 10])\n * @param ctx - Evaluation context with effect handlers\n */\n executeEffect(expr: SExpr, ctx: EvaluationContext): void {\n this.evaluate(expr, ctx);\n }\n\n /**\n * Execute multiple effects in sequence.\n *\n * @param effects - Array of effect S-expressions\n * @param ctx - Evaluation context with effect handlers\n */\n executeEffects(effects: SExpr[], ctx: EvaluationContext): void {\n for (const effect of effects) {\n this.executeEffect(effect, ctx);\n }\n }\n\n /**\n * Compile an S-expression to a function for faster repeated evaluation.\n * Uses a cache to avoid recompilation.\n *\n * @param expr - S-expression to compile\n * @returns Function that evaluates the expression given a context\n */\n compile(expr: SExpr): (ctx: EvaluationContext) => unknown {\n const key = JSON.stringify(expr);\n\n // Check cache\n const cached = jitCache.get(key);\n if (cached) {\n return cached;\n }\n\n // Compile to function\n const fn = (ctx: EvaluationContext) => this.evaluate(expr, ctx);\n\n // Add to cache (with size limit)\n if (jitCache.size >= MAX_JIT_CACHE_SIZE) {\n // Remove oldest entry (first key)\n const firstKey = jitCache.keys().next().value;\n if (firstKey) {\n jitCache.delete(firstKey);\n }\n }\n jitCache.set(key, fn);\n\n return fn;\n }\n\n /**\n * Clear the JIT compilation cache.\n */\n clearCache(): void {\n jitCache.clear();\n }\n\n /**\n * Dispatch to the appropriate operator implementation.\n */\n private dispatchOperator(op: string, args: SExpr[], ctx: EvaluationContext): unknown {\n // Bind evaluate method for passing to operator implementations\n const evaluate = (expr: SExpr, c: EvaluationContext) => this.evaluate(expr, c);\n\n switch (op) {\n // Arithmetic\n case '+':\n return evalAdd(args, evaluate, ctx);\n case '-':\n return evalSubtract(args, evaluate, ctx);\n case '*':\n return evalMultiply(args, evaluate, ctx);\n case '/':\n return evalDivide(args, evaluate, ctx);\n case '%':\n return evalModulo(args, evaluate, ctx);\n case 'abs':\n return evalAbs(args, evaluate, ctx);\n case 'min':\n return evalMin(args, evaluate, ctx);\n case 'max':\n return evalMax(args, evaluate, ctx);\n case 'floor':\n return evalFloor(args, evaluate, ctx);\n case 'ceil':\n return evalCeil(args, evaluate, ctx);\n case 'round':\n return evalRound(args, evaluate, ctx);\n case 'clamp':\n return evalClamp(args, evaluate, ctx);\n\n // Comparison\n case '=':\n return evalEqual(args, evaluate, ctx);\n case '!=':\n return evalNotEqual(args, evaluate, ctx);\n case '<':\n return evalLessThan(args, evaluate, ctx);\n case '>':\n return evalGreaterThan(args, evaluate, ctx);\n case '<=':\n return evalLessThanOrEqual(args, evaluate, ctx);\n case '>=':\n return evalGreaterThanOrEqual(args, evaluate, ctx);\n case 'matches':\n return evalMatches(args, evaluate, ctx);\n\n // Logic\n case 'and':\n return evalAnd(args, evaluate, ctx);\n case 'or':\n return evalOr(args, evaluate, ctx);\n case 'not':\n return evalNot(args, evaluate, ctx);\n case 'if':\n return evalIf(args, evaluate, ctx);\n\n // Control\n case 'let':\n return evalLet(args, evaluate, ctx);\n case 'do':\n return evalDo(args, evaluate, ctx);\n case 'when':\n return evalWhen(args, evaluate, ctx);\n\n // Collections\n case 'map':\n return evalMap(args, evaluate, ctx);\n case 'filter':\n return evalFilter(args, evaluate, ctx);\n case 'find':\n return evalFind(args, evaluate, ctx);\n case 'count':\n return evalCount(args, evaluate, ctx);\n case 'sum':\n return evalSum(args, evaluate, ctx);\n case 'first':\n return evalFirst(args, evaluate, ctx);\n case 'last':\n return evalLast(args, evaluate, ctx);\n case 'nth':\n return evalNth(args, evaluate, ctx);\n case 'concat':\n return evalConcat(args, evaluate, ctx);\n case 'includes':\n return evalIncludes(args, evaluate, ctx);\n case 'empty':\n return evalEmpty(args, evaluate, ctx);\n\n // Effects\n case 'set':\n evalSet(args, evaluate, ctx);\n return undefined;\n case 'set-dynamic':\n evalSetDynamic(args, evaluate, ctx);\n return undefined;\n case 'increment':\n evalIncrement(args, evaluate, ctx);\n return undefined;\n case 'decrement':\n evalDecrement(args, evaluate, ctx);\n return undefined;\n case 'emit':\n evalEmit(args, evaluate, ctx);\n return undefined;\n case 'persist':\n evalPersist(args, evaluate, ctx);\n return undefined;\n case 'navigate':\n evalNavigate(args, evaluate, ctx);\n return undefined;\n case 'notify':\n evalNotify(args, evaluate, ctx);\n return undefined;\n case 'spawn':\n evalSpawn(args, evaluate, ctx);\n return undefined;\n case 'despawn':\n evalDespawn(args, evaluate, ctx);\n return undefined;\n case 'call-service':\n evalCallService(args, evaluate, ctx);\n return undefined;\n case 'render-ui':\n evalRenderUI(args, evaluate, ctx);\n return undefined;\n\n // ===============================\n // Standard Library: math/*\n // ===============================\n case 'math/abs':\n return stdMath.evalMathAbs(args, evaluate, ctx);\n case 'math/min':\n return stdMath.evalMathMin(args, evaluate, ctx);\n case 'math/max':\n return stdMath.evalMathMax(args, evaluate, ctx);\n case 'math/clamp':\n return stdMath.evalMathClamp(args, evaluate, ctx);\n case 'math/floor':\n return stdMath.evalMathFloor(args, evaluate, ctx);\n case 'math/ceil':\n return stdMath.evalMathCeil(args, evaluate, ctx);\n case 'math/round':\n return stdMath.evalMathRound(args, evaluate, ctx);\n case 'math/pow':\n return stdMath.evalMathPow(args, evaluate, ctx);\n case 'math/sqrt':\n return stdMath.evalMathSqrt(args, evaluate, ctx);\n case 'math/mod':\n return stdMath.evalMathMod(args, evaluate, ctx);\n case 'math/sign':\n return stdMath.evalMathSign(args, evaluate, ctx);\n case 'math/lerp':\n return stdMath.evalMathLerp(args, evaluate, ctx);\n case 'math/map':\n return stdMath.evalMathMap(args, evaluate, ctx);\n case 'math/random':\n return stdMath.evalMathRandom();\n case 'math/randomInt':\n return stdMath.evalMathRandomInt(args, evaluate, ctx);\n case 'math/default':\n return stdMath.evalMathDefault(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: str/*\n // ===============================\n case 'str/len':\n return stdStr.evalStrLen(args, evaluate, ctx);\n case 'str/upper':\n return stdStr.evalStrUpper(args, evaluate, ctx);\n case 'str/lower':\n return stdStr.evalStrLower(args, evaluate, ctx);\n case 'str/trim':\n return stdStr.evalStrTrim(args, evaluate, ctx);\n case 'str/trimStart':\n return stdStr.evalStrTrimStart(args, evaluate, ctx);\n case 'str/trimEnd':\n return stdStr.evalStrTrimEnd(args, evaluate, ctx);\n case 'str/split':\n return stdStr.evalStrSplit(args, evaluate, ctx);\n case 'str/join':\n return stdStr.evalStrJoin(args, evaluate, ctx);\n case 'str/slice':\n return stdStr.evalStrSlice(args, evaluate, ctx);\n case 'str/replace':\n return stdStr.evalStrReplace(args, evaluate, ctx);\n case 'str/replaceAll':\n return stdStr.evalStrReplaceAll(args, evaluate, ctx);\n case 'str/includes':\n return stdStr.evalStrIncludes(args, evaluate, ctx);\n case 'str/startsWith':\n return stdStr.evalStrStartsWith(args, evaluate, ctx);\n case 'str/endsWith':\n return stdStr.evalStrEndsWith(args, evaluate, ctx);\n case 'str/padStart':\n return stdStr.evalStrPadStart(args, evaluate, ctx);\n case 'str/padEnd':\n return stdStr.evalStrPadEnd(args, evaluate, ctx);\n case 'str/repeat':\n return stdStr.evalStrRepeat(args, evaluate, ctx);\n case 'str/reverse':\n return stdStr.evalStrReverse(args, evaluate, ctx);\n case 'str/capitalize':\n return stdStr.evalStrCapitalize(args, evaluate, ctx);\n case 'str/titleCase':\n return stdStr.evalStrTitleCase(args, evaluate, ctx);\n case 'str/camelCase':\n return stdStr.evalStrCamelCase(args, evaluate, ctx);\n case 'str/kebabCase':\n return stdStr.evalStrKebabCase(args, evaluate, ctx);\n case 'str/snakeCase':\n return stdStr.evalStrSnakeCase(args, evaluate, ctx);\n case 'str/default':\n return stdStr.evalStrDefault(args, evaluate, ctx);\n case 'str/template':\n return stdStr.evalStrTemplate(args, evaluate, ctx);\n case 'str/truncate':\n return stdStr.evalStrTruncate(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: array/*\n // ===============================\n case 'array/len':\n return stdArray.evalArrayLen(args, evaluate, ctx);\n case 'array/empty?':\n return stdArray.evalArrayEmpty(args, evaluate, ctx);\n case 'array/first':\n return stdArray.evalArrayFirst(args, evaluate, ctx);\n case 'array/last':\n return stdArray.evalArrayLast(args, evaluate, ctx);\n case 'array/nth':\n return stdArray.evalArrayNth(args, evaluate, ctx);\n case 'array/slice':\n return stdArray.evalArraySlice(args, evaluate, ctx);\n case 'array/concat':\n return stdArray.evalArrayConcat(args, evaluate, ctx);\n case 'array/append':\n return stdArray.evalArrayAppend(args, evaluate, ctx);\n case 'array/prepend':\n return stdArray.evalArrayPrepend(args, evaluate, ctx);\n case 'array/insert':\n return stdArray.evalArrayInsert(args, evaluate, ctx);\n case 'array/remove':\n return stdArray.evalArrayRemove(args, evaluate, ctx);\n case 'array/removeItem':\n return stdArray.evalArrayRemoveItem(args, evaluate, ctx);\n case 'array/reverse':\n return stdArray.evalArrayReverse(args, evaluate, ctx);\n case 'array/sort':\n return stdArray.evalArraySort(args, evaluate, ctx);\n case 'array/shuffle':\n return stdArray.evalArrayShuffle(args, evaluate, ctx);\n case 'array/unique':\n return stdArray.evalArrayUnique(args, evaluate, ctx);\n case 'array/flatten':\n return stdArray.evalArrayFlatten(args, evaluate, ctx);\n case 'array/zip':\n return stdArray.evalArrayZip(args, evaluate, ctx);\n case 'array/includes':\n return stdArray.evalArrayIncludes(args, evaluate, ctx);\n case 'array/indexOf':\n return stdArray.evalArrayIndexOf(args, evaluate, ctx);\n case 'array/find':\n return stdArray.evalArrayFind(args, evaluate, ctx);\n case 'array/findIndex':\n return stdArray.evalArrayFindIndex(args, evaluate, ctx);\n case 'array/filter':\n return stdArray.evalArrayFilter(args, evaluate, ctx);\n case 'array/reject':\n return stdArray.evalArrayReject(args, evaluate, ctx);\n case 'array/map':\n return stdArray.evalArrayMap(args, evaluate, ctx);\n case 'array/reduce':\n return stdArray.evalArrayReduce(args, evaluate, ctx);\n case 'array/every':\n return stdArray.evalArrayEvery(args, evaluate, ctx);\n case 'array/some':\n return stdArray.evalArraySome(args, evaluate, ctx);\n case 'array/count':\n return stdArray.evalArrayCount(args, evaluate, ctx);\n case 'array/sum':\n return stdArray.evalArraySum(args, evaluate, ctx);\n case 'array/avg':\n return stdArray.evalArrayAvg(args, evaluate, ctx);\n case 'array/min':\n return stdArray.evalArrayMin(args, evaluate, ctx);\n case 'array/max':\n return stdArray.evalArrayMax(args, evaluate, ctx);\n case 'array/groupBy':\n return stdArray.evalArrayGroupBy(args, evaluate, ctx);\n case 'array/partition':\n return stdArray.evalArrayPartition(args, evaluate, ctx);\n case 'array/take':\n return stdArray.evalArrayTake(args, evaluate, ctx);\n case 'array/drop':\n return stdArray.evalArrayDrop(args, evaluate, ctx);\n case 'array/takeLast':\n return stdArray.evalArrayTakeLast(args, evaluate, ctx);\n case 'array/dropLast':\n return stdArray.evalArrayDropLast(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: object/*\n // ===============================\n case 'object/keys':\n return stdObject.evalObjectKeys(args, evaluate, ctx);\n case 'object/values':\n return stdObject.evalObjectValues(args, evaluate, ctx);\n case 'object/entries':\n return stdObject.evalObjectEntries(args, evaluate, ctx);\n case 'object/fromEntries':\n return stdObject.evalObjectFromEntries(args, evaluate, ctx);\n case 'object/get':\n return stdObject.evalObjectGet(args, evaluate, ctx);\n case 'object/set':\n return stdObject.evalObjectSet(args, evaluate, ctx);\n case 'object/has':\n return stdObject.evalObjectHas(args, evaluate, ctx);\n case 'object/merge':\n return stdObject.evalObjectMerge(args, evaluate, ctx);\n case 'object/deepMerge':\n return stdObject.evalObjectDeepMerge(args, evaluate, ctx);\n case 'object/pick':\n return stdObject.evalObjectPick(args, evaluate, ctx);\n case 'object/omit':\n return stdObject.evalObjectOmit(args, evaluate, ctx);\n case 'object/mapValues':\n return stdObject.evalObjectMapValues(args, evaluate, ctx);\n case 'object/mapKeys':\n return stdObject.evalObjectMapKeys(args, evaluate, ctx);\n case 'object/filter':\n return stdObject.evalObjectFilter(args, evaluate, ctx);\n case 'object/empty?':\n return stdObject.evalObjectEmpty(args, evaluate, ctx);\n case 'object/equals':\n return stdObject.evalObjectEquals(args, evaluate, ctx);\n case 'object/clone':\n return stdObject.evalObjectClone(args, evaluate, ctx);\n case 'object/deepClone':\n return stdObject.evalObjectDeepClone(args, evaluate, ctx);\n\n // Path operator (for dynamic field access)\n case 'path':\n return stdObject.evalPath(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: validate/*\n // ===============================\n case 'validate/required':\n return stdValidate.evalValidateRequired(args, evaluate, ctx);\n case 'validate/string':\n return stdValidate.evalValidateString(args, evaluate, ctx);\n case 'validate/number':\n return stdValidate.evalValidateNumber(args, evaluate, ctx);\n case 'validate/boolean':\n return stdValidate.evalValidateBoolean(args, evaluate, ctx);\n case 'validate/array':\n return stdValidate.evalValidateArray(args, evaluate, ctx);\n case 'validate/object':\n return stdValidate.evalValidateObject(args, evaluate, ctx);\n case 'validate/email':\n return stdValidate.evalValidateEmail(args, evaluate, ctx);\n case 'validate/url':\n return stdValidate.evalValidateUrl(args, evaluate, ctx);\n case 'validate/uuid':\n return stdValidate.evalValidateUuid(args, evaluate, ctx);\n case 'validate/phone':\n return stdValidate.evalValidatePhone(args, evaluate, ctx);\n case 'validate/creditCard':\n return stdValidate.evalValidateCreditCard(args, evaluate, ctx);\n case 'validate/date':\n return stdValidate.evalValidateDate(args, evaluate, ctx);\n case 'validate/minLength':\n return stdValidate.evalValidateMinLength(args, evaluate, ctx);\n case 'validate/maxLength':\n return stdValidate.evalValidateMaxLength(args, evaluate, ctx);\n case 'validate/length':\n return stdValidate.evalValidateLength(args, evaluate, ctx);\n case 'validate/min':\n return stdValidate.evalValidateMin(args, evaluate, ctx);\n case 'validate/max':\n return stdValidate.evalValidateMax(args, evaluate, ctx);\n case 'validate/range':\n return stdValidate.evalValidateRange(args, evaluate, ctx);\n case 'validate/pattern':\n return stdValidate.evalValidatePattern(args, evaluate, ctx);\n case 'validate/oneOf':\n return stdValidate.evalValidateOneOf(args, evaluate, ctx);\n case 'validate/noneOf':\n return stdValidate.evalValidateNoneOf(args, evaluate, ctx);\n case 'validate/equals':\n return stdValidate.evalValidateEquals(args, evaluate, ctx);\n case 'validate/check':\n return stdValidate.evalValidateCheck(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: time/*\n // ===============================\n case 'time/now':\n return stdTime.evalTimeNow();\n case 'time/today':\n return stdTime.evalTimeToday();\n case 'time/parse':\n return stdTime.evalTimeParse(args, evaluate, ctx);\n case 'time/format':\n return stdTime.evalTimeFormat(args, evaluate, ctx);\n case 'time/year':\n return stdTime.evalTimeYear(args, evaluate, ctx);\n case 'time/month':\n return stdTime.evalTimeMonth(args, evaluate, ctx);\n case 'time/day':\n return stdTime.evalTimeDay(args, evaluate, ctx);\n case 'time/weekday':\n return stdTime.evalTimeWeekday(args, evaluate, ctx);\n case 'time/hour':\n return stdTime.evalTimeHour(args, evaluate, ctx);\n case 'time/minute':\n return stdTime.evalTimeMinute(args, evaluate, ctx);\n case 'time/second':\n return stdTime.evalTimeSecond(args, evaluate, ctx);\n case 'time/add':\n return stdTime.evalTimeAdd(args, evaluate, ctx);\n case 'time/subtract':\n return stdTime.evalTimeSubtract(args, evaluate, ctx);\n case 'time/diff':\n return stdTime.evalTimeDiff(args, evaluate, ctx);\n case 'time/startOf':\n return stdTime.evalTimeStartOf(args, evaluate, ctx);\n case 'time/endOf':\n return stdTime.evalTimeEndOf(args, evaluate, ctx);\n case 'time/isBefore':\n return stdTime.evalTimeIsBefore(args, evaluate, ctx);\n case 'time/isAfter':\n return stdTime.evalTimeIsAfter(args, evaluate, ctx);\n case 'time/isBetween':\n return stdTime.evalTimeIsBetween(args, evaluate, ctx);\n case 'time/isSame':\n return stdTime.evalTimeIsSame(args, evaluate, ctx);\n case 'time/isPast':\n return stdTime.evalTimeIsPast(args, evaluate, ctx);\n case 'time/isFuture':\n return stdTime.evalTimeIsFuture(args, evaluate, ctx);\n case 'time/isToday':\n return stdTime.evalTimeIsToday(args, evaluate, ctx);\n case 'time/relative':\n return stdTime.evalTimeRelative(args, evaluate, ctx);\n case 'time/duration':\n return stdTime.evalTimeDuration(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: format/*\n // ===============================\n case 'format/number':\n return stdFormat.evalFormatNumber(args, evaluate, ctx);\n case 'format/currency':\n return stdFormat.evalFormatCurrency(args, evaluate, ctx);\n case 'format/percent':\n return stdFormat.evalFormatPercent(args, evaluate, ctx);\n case 'format/bytes':\n return stdFormat.evalFormatBytes(args, evaluate, ctx);\n case 'format/ordinal':\n return stdFormat.evalFormatOrdinal(args, evaluate, ctx);\n case 'format/plural':\n return stdFormat.evalFormatPlural(args, evaluate, ctx);\n case 'format/list':\n return stdFormat.evalFormatList(args, evaluate, ctx);\n case 'format/phone':\n return stdFormat.evalFormatPhone(args, evaluate, ctx);\n case 'format/creditCard':\n return stdFormat.evalFormatCreditCard(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: async/*\n // ===============================\n case 'async/delay':\n return stdAsync.evalAsyncDelay(args, evaluate, ctx);\n case 'async/timeout':\n return stdAsync.evalAsyncTimeout(args, evaluate, ctx);\n case 'async/debounce':\n stdAsync.evalAsyncDebounce(args, evaluate, ctx);\n return undefined;\n case 'async/throttle':\n stdAsync.evalAsyncThrottle(args, evaluate, ctx);\n return undefined;\n case 'async/retry':\n return stdAsync.evalAsyncRetry(args, evaluate, ctx);\n case 'async/race':\n return stdAsync.evalAsyncRace(args, evaluate, ctx);\n case 'async/all':\n return stdAsync.evalAsyncAll(args, evaluate, ctx);\n case 'async/sequence':\n return stdAsync.evalAsyncSequence(args, evaluate, ctx);\n\n default:\n console.warn(`Unknown operator: ${op}`);\n return undefined;\n }\n }\n}\n\n// Export singleton instance for convenience\nexport const evaluator = new SExpressionEvaluator();\n\n// Export convenience functions\nexport function evaluate(expr: SExpr, ctx: EvaluationContext): unknown {\n return evaluator.evaluate(expr, ctx);\n}\n\nexport function evaluateGuard(expr: SExpr, ctx: EvaluationContext): boolean {\n return evaluator.evaluateGuard(expr, ctx);\n}\n\nexport function executeEffect(expr: SExpr, ctx: EvaluationContext): void {\n evaluator.executeEffect(expr, ctx);\n}\n\nexport function executeEffects(effects: SExpr[], ctx: EvaluationContext): void {\n evaluator.executeEffects(effects, ctx);\n}\n","/**\n * ConditionalWrapper Atom Component\n *\n * A wrapper component that conditionally renders its children based on\n * S-expression evaluation. Used for dynamic field visibility in inspection forms.\n */\n\nimport React from 'react';\nimport { Box } from './Box';\nimport {\n evaluate,\n createMinimalContext,\n type SExpr,\n type EvaluationContext as SharedEvaluationContext,\n} from '@orbital/shared';\n\n/**\n * Context for conditional evaluation\n */\nexport interface ConditionalContext {\n formValues: Record<string, unknown>;\n globalVariables: Record<string, unknown>;\n localVariables?: Record<string, unknown>;\n entity?: Record<string, unknown>;\n}\n\nexport interface ConditionalWrapperProps {\n /** The S-expression condition to evaluate */\n condition?: SExpr;\n /** Context for evaluating the condition */\n context: ConditionalContext;\n /** Children to render when condition is true (or when no condition is provided) */\n children: React.ReactNode;\n /** Optional fallback to render when condition is false */\n fallback?: React.ReactNode;\n /** Whether to animate the transition (uses CSS transitions) */\n animate?: boolean;\n}\n\n/**\n * Convert wrapper context to shared evaluator context.\n *\n * The entity object is structured as:\n * {\n * formValues: { fieldId: value, ... },\n * globalVariables: { HG_VAR: value, ... },\n * localVariables: { H_VAR: value, ... },\n * ...additionalEntityFields\n * }\n *\n * Bindings use: @entity.formValues.fieldId, @entity.globalVariables.HG_VAR\n */\nfunction toSharedContext(ctx: ConditionalContext): SharedEvaluationContext {\n return createMinimalContext(\n {\n formValues: ctx.formValues,\n globalVariables: ctx.globalVariables,\n localVariables: ctx.localVariables ?? {},\n ...ctx.entity,\n },\n {},\n 'active'\n );\n}\n\n/**\n * ConditionalWrapper conditionally renders children based on S-expression evaluation.\n *\n * Supported bindings:\n * - @entity.formValues.fieldId - Access form field values\n * - @entity.globalVariables.HG_VAR - Access global inspection variables\n * - @entity.localVariables.H_VAR - Access document-local variables\n * - @state - Current state machine state\n * - @now - Current timestamp\n *\n * @example\n * // Simple condition - show field when another field equals a value\n * <ConditionalWrapper\n * condition={[\"=\", \"@entity.formValues.vehicleType\", \"commercial\"]}\n * context={{ formValues: { vehicleType: \"commercial\" }, globalVariables: {} }}\n * >\n * <Input name=\"commercialLicenseNumber\" />\n * </ConditionalWrapper>\n *\n * @example\n * // With fallback - show message when condition not met\n * <ConditionalWrapper\n * condition={[\">=\", \"@entity.formValues.loadWeight\", 3500]}\n * context={formContext}\n * fallback={<Typography variant=\"small\">Load weight must be at least 3500kg</Typography>}\n * >\n * <HeavyVehicleFields />\n * </ConditionalWrapper>\n *\n * @example\n * // Using global variables for cross-form conditions\n * <ConditionalWrapper\n * condition={[\"=\", \"@entity.globalVariables.HG_POTROSNIKI\", \"DA\"]}\n * context={{ formValues: {}, globalVariables: { HG_POTROSNIKI: \"DA\" } }}\n * >\n * <PriceMarkingSection />\n * </ConditionalWrapper>\n */\nexport const ConditionalWrapper: React.FC<ConditionalWrapperProps> = ({\n condition,\n context,\n children,\n fallback = null,\n animate = false,\n}) => {\n // If no condition is provided, always render children\n if (!condition) {\n return <>{children}</>;\n }\n\n // Evaluate the condition\n const sharedContext = toSharedContext(context);\n const result = evaluate(condition, sharedContext);\n const isVisible = Boolean(result);\n\n // Animate transitions if requested\n if (animate) {\n return (\n <Box\n overflow=\"hidden\"\n className={`transition-all duration-200 ${\n isVisible ? 'opacity-100 max-h-[1000px]' : 'opacity-0 max-h-0'\n }`}\n >\n {isVisible ? children : fallback}\n </Box>\n );\n }\n\n // Simple conditional rendering\n return isVisible ? <>{children}</> : <>{fallback}</>;\n};\n\nConditionalWrapper.displayName = 'ConditionalWrapper';\n","/**\n * LawReferenceTooltip Atom Component\n *\n * A specialized tooltip for displaying law references in inspection forms.\n * Shows law name, article number, and relevant clause text.\n */\n\nimport React from \"react\";\nimport { Box } from \"./Box\";\nimport { VStack } from \"./Stack\";\nimport { Typography } from \"./Typography\";\nimport { Divider } from \"./Divider\";\nimport { cn } from \"../../lib/cn\";\n\n/**\n * Law reference definition\n */\nexport interface LawReference {\n /** Law identifier (e.g., \"VVO\", \"TPED\") */\n law: string;\n /** Full name of the law */\n lawName?: string;\n /** Article number (e.g., \"§8\", \"Artikel 5\") */\n article: string;\n /** Clause or paragraph text */\n clause?: string;\n /** Optional link to full law text */\n link?: string;\n}\n\nexport interface LawReferenceTooltipProps {\n /** The law reference to display */\n reference: LawReference;\n /** Children element that triggers the tooltip */\n children: React.ReactNode;\n /** Tooltip position */\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Position styles for tooltip placement\n */\nconst positionStyles = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n};\n\n/**\n * Arrow styles based on position\n */\nconst arrowStyles = {\n top: \"top-full left-1/2 -translate-x-1/2 border-t-[var(--color-foreground)] border-l-transparent border-r-transparent border-b-transparent\",\n bottom:\n \"bottom-full left-1/2 -translate-x-1/2 border-b-[var(--color-foreground)] border-l-transparent border-r-transparent border-t-transparent\",\n left: \"left-full top-1/2 -translate-y-1/2 border-l-[var(--color-foreground)] border-t-transparent border-b-transparent border-r-transparent\",\n right:\n \"right-full top-1/2 -translate-y-1/2 border-r-[var(--color-foreground)] border-t-transparent border-b-transparent border-l-transparent\",\n};\n\n/**\n * LawReferenceTooltip displays legal references with structured formatting.\n *\n * @example\n * <LawReferenceTooltip\n * reference={{\n * law: \"VVO\",\n * lawName: \"Verkehrsverordnung\",\n * article: \"§8 Abs. 3\",\n * clause: \"Die zulässige Gesamtmasse darf 3500 kg nicht überschreiten.\"\n * }}\n * >\n * <Typography variant=\"small\" className=\"text-blue-600 underline cursor-help\">VVO §8</Typography>\n * </LawReferenceTooltip>\n */\nexport const LawReferenceTooltip: React.FC<LawReferenceTooltipProps> = ({\n reference,\n children,\n position = \"top\",\n className,\n}) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const timeoutRef = React.useRef<NodeJS.Timeout | null>(null);\n\n const handleMouseEnter = () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n timeoutRef.current = setTimeout(() => setIsVisible(true), 200);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n setIsVisible(false);\n };\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) clearTimeout(timeoutRef.current);\n };\n }, []);\n\n return (\n <Box\n as=\"span\"\n position=\"relative\"\n display=\"inline-block\"\n className={className}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleMouseEnter}\n onBlur={handleMouseLeave}\n >\n {children}\n {isVisible && (\n <Box\n padding=\"sm\"\n rounded=\"lg\"\n shadow=\"lg\"\n position=\"absolute\"\n className={cn(\n \"z-50 w-64 bg-[var(--color-foreground)] text-[var(--color-background)]\",\n positionStyles[position],\n )}\n role=\"tooltip\"\n >\n <VStack gap=\"xs\">\n {/* Law header */}\n <Typography\n variant=\"label\"\n weight=\"semibold\"\n className=\"text-amber-400\"\n >\n {reference.law} {reference.article}\n </Typography>\n\n {/* Law name */}\n {reference.lawName && (\n <Typography\n variant=\"caption\"\n className=\"text-[var(--color-muted-foreground)]\"\n >\n {reference.lawName}\n </Typography>\n )}\n\n {/* Clause text */}\n {reference.clause && (\n <>\n <Divider className=\"border-[var(--color-border)]\" />\n <Typography\n variant=\"caption\"\n className=\"text-[var(--color-background)] leading-relaxed\"\n >\n {reference.clause}\n </Typography>\n </>\n )}\n\n {/* Link to full text */}\n {reference.link && (\n <Typography\n as=\"a\"\n variant=\"caption\"\n className=\"text-blue-400 hover:text-blue-300 underline cursor-pointer\"\n // @ts-expect-error - anchor props\n href={reference.link}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n onClick={(e: React.MouseEvent) => e.stopPropagation()}\n >\n View full law text\n </Typography>\n )}\n </VStack>\n\n {/* Arrow */}\n <Box\n as=\"span\"\n position=\"absolute\"\n className={cn(\"w-0 h-0 border-4\", arrowStyles[position])}\n />\n </Box>\n )}\n </Box>\n );\n};\n\nLawReferenceTooltip.displayName = \"LawReferenceTooltip\";\n","/**\n * FormField Molecule Component\n * \n * A form field wrapper with label, hint, and error message support.\n * **Atomic Design**: Composed using Label and Typography atoms.\n */\n\nimport React from 'react';\nimport { cn } from '../../lib/cn';\nimport { Label } from '../atoms/Label';\nimport { Typography } from '../atoms/Typography';\n\nexport interface FormFieldProps {\n label: string;\n required?: boolean;\n error?: string;\n hint?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nexport const FormField: React.FC<FormFieldProps> = ({\n label,\n required,\n error,\n hint,\n className,\n children,\n}) => {\n return (\n <div className={cn('space-y-1.5', className)}>\n <Label required={required}>{label}</Label>\n {children}\n {error && (\n <Typography variant=\"caption\" color=\"error\">\n {error}\n </Typography>\n )}\n {hint && !error && (\n <Typography variant=\"caption\" color=\"muted\">\n {hint}\n </Typography>\n )}\n </div>\n );\n};\n\nFormField.displayName = 'FormField';\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../atoms\";\nimport {\n LucideIcon,\n CheckCircle,\n XCircle,\n AlertCircle,\n Info,\n Search,\n Inbox,\n FileQuestion,\n} from \"lucide-react\";\n\n/**\n * Common icon name to Lucide component mapping.\n * Supports schema-style string icon names (e.g., \"check-circle\").\n */\nconst ICON_MAP: Record<string, LucideIcon> = {\n \"check-circle\": CheckCircle,\n check: CheckCircle,\n \"x-circle\": XCircle,\n error: XCircle,\n \"alert-circle\": AlertCircle,\n warning: AlertCircle,\n info: Info,\n search: Search,\n inbox: Inbox,\n \"file-question\": FileQuestion,\n};\n\nexport interface EmptyStateProps {\n /**\n * Icon to display. Accepts either:\n * - A Lucide icon component (LucideIcon)\n * - A string icon name (e.g., \"check-circle\", \"x-circle\")\n */\n icon?: LucideIcon | string;\n /** Primary text to display - use title or message (message is alias for backwards compat) */\n title?: string;\n /** Alias for title - used by schema patterns */\n message?: string;\n description?: string;\n actionLabel?: string;\n onAction?: () => void;\n className?: string;\n /** Destructive styling for confirmation dialogs */\n destructive?: boolean;\n /** Variant for color styling */\n variant?: \"default\" | \"success\" | \"error\" | \"warning\" | \"info\";\n}\n\nexport const EmptyState: React.FC<EmptyStateProps> = ({\n icon,\n title,\n message,\n description,\n actionLabel,\n onAction,\n className,\n destructive,\n variant,\n}) => {\n // Resolve icon - supports both LucideIcon component and string name\n const Icon: LucideIcon | undefined =\n typeof icon === \"string\" ? ICON_MAP[icon] : icon;\n\n // Determine color scheme based on variant or destructive flag\n const isDestructive = destructive || variant === \"error\";\n const isSuccess = variant === \"success\";\n\n // Support both title and message (message is alias for title)\n const displayText = title || message || \"No items\";\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12 text-center\",\n className,\n )}\n >\n {Icon && (\n <div\n className={cn(\n \"mb-4 rounded-[var(--radius-full)] p-3\",\n isDestructive\n ? \"bg-[var(--color-error)]/10\"\n : isSuccess\n ? \"bg-[var(--color-success)]/10\"\n : \"bg-[var(--color-muted)]\",\n )}\n >\n <Icon\n className={cn(\n \"h-8 w-8\",\n isDestructive\n ? \"text-[var(--color-error)]\"\n : isSuccess\n ? \"text-[var(--color-success)]\"\n : \"text-[var(--color-muted-foreground)]\",\n )}\n />\n </div>\n )}\n <h3\n className={cn(\n \"text-lg font-medium\",\n isDestructive\n ? \"text-[var(--color-error)]\"\n : isSuccess\n ? \"text-[var(--color-success)]\"\n : \"text-[var(--color-foreground)]\",\n )}\n >\n {displayText}\n </h3>\n {description && (\n <p className=\"mt-1 text-sm text-[var(--color-muted-foreground)] max-w-sm\">\n {description}\n </p>\n )}\n {actionLabel && onAction && (\n <Button\n className=\"mt-4\"\n variant={isDestructive ? \"danger\" : \"primary\"}\n onClick={onAction}\n >\n {actionLabel}\n </Button>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Spinner } from \"../atoms\";\n\nexport interface LoadingStateProps {\n title?: string;\n message?: string;\n className?: string;\n}\n\nexport const LoadingState: React.FC<LoadingStateProps> = ({\n title,\n message = \"Loading...\",\n className,\n}) => {\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12\",\n className,\n )}\n >\n <Spinner size=\"lg\" />\n {title && (\n <h3 className=\"mt-4 text-lg font-semibold text-[var(--color-foreground)]\">\n {title}\n </h3>\n )}\n <p\n className={cn(\n \"text-sm text-[var(--color-muted-foreground)]\",\n title ? \"mt-2\" : \"mt-4\",\n )}\n >\n {message}\n </p>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../atoms\";\nimport { AlertCircle } from \"lucide-react\";\n\nexport interface ErrorStateProps {\n title?: string;\n /** Error message to display */\n message?: string;\n /** Alias for message (schema compatibility) */\n description?: string;\n onRetry?: () => void;\n className?: string;\n}\n\nexport const ErrorState: React.FC<ErrorStateProps> = ({\n title = \"Something went wrong\",\n message,\n description,\n onRetry,\n className,\n}) => {\n // Resolve alias: description → message\n const resolvedMessage = message ?? description ?? \"An error occurred\";\n return (\n <div\n className={cn(\n \"flex flex-col items-center justify-center py-12 text-center\",\n className,\n )}\n >\n <div className=\"mb-4 rounded-[var(--radius-full)] bg-[var(--color-error)]/10 p-3\">\n <AlertCircle className=\"h-8 w-8 text-[var(--color-error)]\" />\n </div>\n <h3 className=\"text-lg font-medium text-[var(--color-foreground)]\">\n {title}\n </h3>\n <p className=\"mt-1 text-sm text-[var(--color-muted-foreground)] max-w-sm\">\n {resolvedMessage}\n </p>\n {onRetry && (\n <Button variant=\"secondary\" className=\"mt-4\" onClick={onRetry}>\n Try again\n </Button>\n )}\n </div>\n );\n};\n","/**\n * Accordion Molecule Component\n *\n * A collapsible content component with single or multiple open items.\n * Uses Button, Icon, Typography, and Divider atoms.\n */\n\nimport React, { useState } from \"react\";\nimport { ChevronDown } from \"lucide-react\";\n\nimport { Icon } from \"../atoms/Icon\";\nimport { Typography } from \"../atoms/Typography\";\n\nimport { cn } from \"../../lib/cn\";\n\nexport interface AccordionItem {\n /**\n * Item ID (auto-generated from header/title if not provided)\n */\n id?: string;\n\n /**\n * Item header/title\n */\n header?: React.ReactNode;\n\n /**\n * Alias for header (pattern compatibility)\n */\n title?: React.ReactNode;\n\n /**\n * Item content\n */\n content: React.ReactNode;\n\n /**\n * Disable item\n */\n disabled?: boolean;\n\n /**\n * Default open state\n */\n defaultOpen?: boolean;\n}\n\nexport interface AccordionProps {\n /**\n * Accordion items\n */\n items: AccordionItem[];\n\n /**\n * Allow multiple items open at once\n * @default false\n */\n multiple?: boolean;\n\n /**\n * Default open items (IDs)\n */\n defaultOpenItems?: string[];\n\n /**\n * Default open items by index (pattern compatibility)\n */\n defaultOpen?: number[];\n\n /**\n * Controlled open items (IDs)\n */\n openItems?: string[];\n\n /**\n * Callback when item opens/closes\n */\n onItemToggle?: (itemId: string, isOpen: boolean) => void;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n// Helper to generate ID from header/title content\nfunction generateItemId(item: AccordionItem, index: number): string {\n if (item.id) return item.id;\n const headerText = item.header ?? item.title;\n if (typeof headerText === \"string\") {\n return `accordion-${headerText.toLowerCase().replace(/\\s+/g, \"-\")}-${index}`;\n }\n return `accordion-item-${index}`;\n}\n\n// Normalize item to ensure id and header are set\nfunction normalizeItem(\n item: AccordionItem,\n index: number,\n): AccordionItem & { id: string; header: React.ReactNode } {\n return {\n ...item,\n id: generateItemId(item, index),\n header: item.header ?? item.title ?? \"\",\n };\n}\n\nexport const Accordion: React.FC<AccordionProps> = ({\n items,\n multiple = false,\n defaultOpenItems,\n defaultOpen,\n openItems: controlledOpenItems,\n onItemToggle,\n className,\n}) => {\n // Normalize items to ensure id and header are always present\n const normalizedItems = items.map((item, index) =>\n normalizeItem(item, index),\n );\n\n // Resolve default open items - prefer defaultOpenItems (string IDs), fall back to defaultOpen (indices)\n const resolveDefaultOpen = (): string[] => {\n if (defaultOpenItems) return defaultOpenItems;\n if (defaultOpen) {\n return defaultOpen\n .filter((index) => index >= 0 && index < normalizedItems.length)\n .map((index) => normalizedItems[index].id);\n }\n return normalizedItems\n .filter((item) => item.defaultOpen)\n .map((item) => item.id);\n };\n\n const [internalOpenItems, setInternalOpenItems] = useState<Set<string>>(\n new Set(resolveDefaultOpen()),\n );\n\n const openItemsSet = controlledOpenItems\n ? new Set(controlledOpenItems)\n : internalOpenItems;\n\n const handleToggle = (itemId: string) => {\n const isOpen = openItemsSet.has(itemId);\n const newOpenItems = new Set(openItemsSet);\n\n if (isOpen) {\n newOpenItems.delete(itemId);\n } else {\n if (!multiple) {\n newOpenItems.clear();\n }\n newOpenItems.add(itemId);\n }\n\n if (controlledOpenItems === undefined) {\n setInternalOpenItems(newOpenItems);\n }\n\n onItemToggle?.(itemId, !isOpen);\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n {normalizedItems.map((item, index) => {\n const isOpen = openItemsSet.has(item.id);\n const isDisabled = item.disabled;\n\n return (\n <div key={item.id} className={index > 0 ? \"mt-2\" : \"\"}>\n <div className=\"border-2 border-[var(--color-border)] overflow-hidden\">\n <button\n type=\"button\"\n onClick={() => !isDisabled && handleToggle(item.id)}\n disabled={isDisabled}\n className={cn(\n \"w-full flex items-center justify-between px-4 py-3\",\n \"bg-[var(--color-card)]\",\n \"hover:bg-[var(--color-muted)]\",\n \"transition-colors duration-200\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-inset\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n isOpen && \"bg-[var(--color-muted)] font-bold\",\n )}\n aria-expanded={isOpen}\n aria-controls={`accordion-content-${item.id}`}\n >\n <div className=\"flex-1 text-left\">\n {typeof item.header === \"string\" ? (\n <Typography variant=\"body\" weight=\"medium\">\n {item.header}\n </Typography>\n ) : (\n item.header\n )}\n </div>\n <Icon\n icon={ChevronDown}\n size=\"sm\"\n className={cn(\n \"transition-transform duration-200\",\n isOpen && \"transform rotate-180\",\n )}\n />\n </button>\n\n {isOpen && (\n <div\n id={`accordion-content-${item.id}`}\n className=\"px-4 py-3 bg-[var(--color-card)] border-t-2 border-[var(--color-border)]\"\n >\n {item.content}\n </div>\n )}\n </div>\n </div>\n );\n })}\n </div>\n );\n};\n\nAccordion.displayName = \"Accordion\";\n","/**\n * Alert Molecule Component\n *\n * A component for displaying alert messages with different variants and actions.\n * Uses theme-aware CSS variables for styling.\n */\n\nimport React from \"react\";\nimport { X, AlertCircle, CheckCircle, AlertTriangle, Info } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Typography } from \"../atoms/Typography\";\n\nexport type AlertVariant = \"info\" | \"success\" | \"warning\" | \"error\";\n\nexport interface AlertProps {\n /** Alert content (children or message) */\n children?: React.ReactNode;\n /** Alert message (alias for children) */\n message?: string;\n variant?: AlertVariant;\n title?: string;\n dismissible?: boolean;\n onDismiss?: () => void;\n onClose?: () => void;\n actions?: React.ReactNode;\n className?: string;\n}\n\nconst variantBorderClasses: Record<AlertVariant, string> = {\n info: \"border-[var(--color-info)]\",\n success: \"border-[var(--color-success)]\",\n warning: \"border-[var(--color-warning)]\",\n error: \"border-[var(--color-error)]\",\n};\n\nconst variantIconColors: Record<AlertVariant, string> = {\n info: \"text-[var(--color-info)]\",\n success: \"text-[var(--color-success)]\",\n warning: \"text-[var(--color-warning)]\",\n error: \"text-[var(--color-error)]\",\n};\n\nconst iconMap: Record<AlertVariant, typeof Info> = {\n info: Info,\n success: CheckCircle,\n warning: AlertTriangle,\n error: AlertCircle,\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n children,\n message,\n variant = \"info\",\n title,\n dismissible = false,\n onDismiss,\n onClose,\n actions,\n className,\n}) => {\n const handleDismiss = onDismiss || onClose;\n // Use message if provided, else children\n const content = children ?? message;\n\n return (\n <Box\n bg=\"surface\"\n border\n shadow=\"sm\"\n padding=\"md\"\n rounded=\"sm\"\n className={cn(variantBorderClasses[variant], className)}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n <Icon\n icon={iconMap[variant]}\n size=\"md\"\n className={variantIconColors[variant]}\n />\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography variant=\"h6\" className=\"mb-1\">\n {title}\n </Typography>\n )}\n <Typography variant=\"body2\">{content}</Typography>\n {actions && <div className=\"mt-3 flex gap-2\">{actions}</div>}\n </div>\n\n {/* Dismiss Button */}\n {(dismissible || handleDismiss) && (\n <button\n type=\"button\"\n onClick={handleDismiss}\n className={cn(\n \"flex-shrink-0 p-1 transition-colors rounded-[var(--radius-sm)]\",\n \"hover:bg-[var(--color-muted)]\",\n )}\n aria-label=\"Dismiss alert\"\n >\n <Icon icon={X} size=\"sm\" />\n </button>\n )}\n </div>\n </Box>\n );\n};\n\nAlert.displayName = \"Alert\";\n","/**\n * Breadcrumb Molecule Component\n *\n * A breadcrumb navigation component with separators and icons.\n * Uses Button, Icon, and Typography atoms.\n */\n\nimport React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\n\nimport { Icon } from \"../atoms/Icon\";\nimport { Typography } from \"../atoms/Typography\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface BreadcrumbItem {\n /**\n * Item label\n */\n label: string;\n\n /**\n * Item href (if provided, renders as link)\n */\n href?: string;\n\n /**\n * Item path (alias for href, for schema compatibility)\n */\n path?: string;\n\n /**\n * Item icon\n */\n icon?: LucideIcon;\n\n /**\n * Click handler (if href not provided)\n */\n onClick?: () => void;\n\n /**\n * Is current page\n */\n isCurrent?: boolean;\n}\n\nexport interface BreadcrumbProps {\n /**\n * Breadcrumb items\n */\n items: BreadcrumbItem[];\n\n /**\n * Separator icon\n */\n separator?: LucideIcon;\n\n /**\n * Maximum items to show (truncates with ellipsis)\n */\n maxItems?: number;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({\n items,\n separator = ChevronRight,\n maxItems,\n className,\n}) => {\n const displayItems =\n maxItems && items.length > maxItems\n ? [\n ...items.slice(0, 1),\n { label: \"...\", isCurrent: false } as BreadcrumbItem,\n ...items.slice(-maxItems + 1),\n ]\n : items;\n\n return (\n <nav\n aria-label=\"Breadcrumb\"\n className={cn(\"flex items-center gap-2\", className)}\n >\n <ol className=\"flex items-center gap-2\">\n {displayItems.map((item, index) => {\n const isLast = index === displayItems.length - 1;\n const isEllipsis = item.label === \"...\";\n\n return (\n <li key={index} className=\"flex items-center gap-2\">\n {isEllipsis ? (\n <Typography variant=\"small\" color=\"muted\">\n {item.label}\n </Typography>\n ) : item.href || item.path ? (\n <a\n href={item.href || item.path}\n className={cn(\n \"flex items-center gap-1.5 transition-colors\",\n isLast\n ? \"text-[var(--color-foreground)] font-bold\"\n : \"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\",\n )}\n aria-current={isLast ? \"page\" : undefined}\n >\n {item.icon && <Icon icon={item.icon} size=\"sm\" />}\n <Typography\n variant=\"small\"\n weight={isLast ? \"medium\" : \"normal\"}\n >\n {item.label}\n </Typography>\n </a>\n ) : (\n <button\n type=\"button\"\n onClick={item.onClick}\n className={cn(\n \"flex items-center gap-1.5 transition-colors\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2\",\n isLast\n ? \"text-[var(--color-foreground)] font-bold cursor-default\"\n : \"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\",\n )}\n aria-current={isLast ? \"page\" : undefined}\n disabled={isLast}\n >\n {item.icon && <Icon icon={item.icon} size=\"sm\" />}\n <Typography\n variant=\"small\"\n weight={isLast ? \"medium\" : \"normal\"}\n >\n {item.label}\n </Typography>\n </button>\n )}\n\n {!isLast && (\n <Icon\n icon={separator}\n size=\"sm\"\n className=\"text-[var(--color-muted-foreground)]\"\n />\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n};\n\nBreadcrumb.displayName = \"Breadcrumb\";\n","/**\n * EventBusProvider - React context provider for the event bus\n *\n * Provides a page-scoped event bus for trait communication.\n * Each page has its own event bus instance.\n *\n * NOTE: Selection state has been moved to SelectionProvider.\n * Use SelectionProvider for tracking selected entities.\n *\n * @packageDocumentation\n */\n\nimport React, { createContext, useCallback, useRef, useMemo, useEffect, type ReactNode } from 'react';\nimport type { KFlowEvent, EventListener, Unsubscribe, EventBusContextType } from '../hooks/event-bus-types';\nimport { setGlobalEventBus } from '../hooks/useEventBus';\n\n// ============================================================================\n// Context\n// ============================================================================\n\n/**\n * Extended context type for backward compatibility.\n *\n * @deprecated getSelectedEntity and clearSelectedEntity are deprecated.\n * Use SelectionProvider and useSelection hook instead.\n */\nexport interface EventBusContextTypeExtended extends EventBusContextType {\n /**\n * @deprecated Use useSelection from SelectionProvider instead.\n * This method now returns null - selection state moved to SelectionProvider.\n */\n getSelectedEntity: () => unknown | null;\n /**\n * @deprecated Use useSelection from SelectionProvider instead.\n * This method is now a no-op - selection state moved to SelectionProvider.\n */\n clearSelectedEntity: () => void;\n}\n\nexport const EventBusContext = createContext<EventBusContextTypeExtended | null>(null);\n\n// ============================================================================\n// Provider Component\n// ============================================================================\n\ninterface EventBusProviderProps {\n children: ReactNode;\n /** Enable debug logging in development */\n debug?: boolean;\n}\n\n/**\n * Provider component for the page event bus.\n *\n * This is a pure pub/sub event bus. For selection state,\n * use SelectionProvider which listens to events and maintains state.\n *\n * @example\n * ```tsx\n * function TaskDetailPage() {\n * return (\n * <EventBusProvider debug={process.env.NODE_ENV === 'development'}>\n * <SelectionProvider>\n * <TaskHeader />\n * <TaskForm />\n * <TaskActions />\n * </SelectionProvider>\n * </EventBusProvider>\n * );\n * }\n * ```\n */\nexport function EventBusProvider({ children, debug = false }: EventBusProviderProps) {\n // Store listeners by event type\n const listenersRef = useRef<Map<string, Set<EventListener>>>(new Map());\n\n // Track if deprecation warning has been shown\n const deprecationWarningShown = useRef(false);\n\n /**\n * @deprecated Use useSelection from SelectionProvider instead.\n */\n const getSelectedEntity = useCallback(() => {\n if (!deprecationWarningShown.current) {\n console.warn(\n '[EventBus] getSelectedEntity is deprecated. ' +\n 'Use SelectionProvider and useSelection hook instead. ' +\n 'See SelectionProvider.tsx for migration guide.'\n );\n deprecationWarningShown.current = true;\n }\n return null;\n }, []);\n\n /**\n * @deprecated Use useSelection from SelectionProvider instead.\n */\n const clearSelectedEntity = useCallback(() => {\n if (!deprecationWarningShown.current) {\n console.warn(\n '[EventBus] clearSelectedEntity is deprecated. ' +\n 'Use SelectionProvider and useSelection hook instead. ' +\n 'See SelectionProvider.tsx for migration guide.'\n );\n deprecationWarningShown.current = true;\n }\n }, []);\n\n /**\n * Emit an event to all listeners of that type.\n */\n const emit = useCallback((type: string, payload?: Record<string, unknown>) => {\n const event: KFlowEvent = {\n type,\n payload,\n timestamp: Date.now(),\n };\n\n const listeners = listenersRef.current.get(type);\n const listenerCount = listeners?.size ?? 0;\n\n if (debug) {\n if (listenerCount > 0) {\n console.log(`[EventBus] Emit: ${type} → ${listenerCount} listener(s)`, payload);\n } else {\n console.warn(`[EventBus] Emit: ${type} (NO LISTENERS - event may be lost!)`, payload);\n }\n }\n\n if (listeners) {\n // Create a copy to avoid issues if listener modifies the set\n const listenersCopy = Array.from(listeners);\n for (const listener of listenersCopy) {\n try {\n listener(event);\n } catch (error) {\n console.error(`[EventBus] Error in listener for '${type}':`, error);\n }\n }\n }\n }, [debug]);\n\n /**\n * Subscribe to an event type.\n * Returns an unsubscribe function.\n */\n const on = useCallback((type: string, listener: EventListener): Unsubscribe => {\n if (!listenersRef.current.has(type)) {\n listenersRef.current.set(type, new Set());\n }\n\n const listeners = listenersRef.current.get(type)!;\n listeners.add(listener);\n\n if (debug) {\n console.log(`[EventBus] Subscribed to '${type}', total: ${listeners.size}`);\n }\n\n // Return unsubscribe function\n return () => {\n listeners.delete(listener);\n if (debug) {\n console.log(`[EventBus] Unsubscribed from '${type}', remaining: ${listeners.size}`);\n }\n // Clean up empty sets\n if (listeners.size === 0) {\n listenersRef.current.delete(type);\n }\n };\n }, [debug]);\n\n /**\n * Subscribe to an event type, but only fire once.\n */\n const once = useCallback((type: string, listener: EventListener): Unsubscribe => {\n const wrappedListener: EventListener = (event) => {\n // Remove self before calling listener\n listenersRef.current.get(type)?.delete(wrappedListener);\n listener(event);\n };\n\n return on(type, wrappedListener);\n }, [on]);\n\n /**\n * Check if there are any listeners for an event type.\n */\n const hasListeners = useCallback((type: string): boolean => {\n const listeners = listenersRef.current.get(type);\n return listeners !== undefined && listeners.size > 0;\n }, []);\n\n // Memoize context value\n const contextValue = useMemo(\n () => ({\n emit,\n on,\n once,\n hasListeners,\n getSelectedEntity,\n clearSelectedEntity,\n }),\n [emit, on, once, hasListeners, getSelectedEntity, clearSelectedEntity]\n );\n\n // Bridge to global event bus system.\n // Components in other packages (like shell components) use their own useEventBus hook\n // which checks for a global event bus. Setting it here allows shell components to\n // emit events to the same bus that the main app's trait state machine listens to.\n useEffect(() => {\n setGlobalEventBus(contextValue);\n return () => {\n setGlobalEventBus(null);\n };\n }, [contextValue]);\n\n return (\n <EventBusContext.Provider value={contextValue}>\n {children}\n </EventBusContext.Provider>\n );\n}\n\nexport type { EventBusContextType };\n","/**\n * useEventBus Hook\n *\n * Provides event bus utilities for component communication.\n * This connects to the EventBusProvider for real applications\n * or provides a simple in-memory bus for design system / Storybook.\n *\n * @packageDocumentation\n */\n\nimport { useCallback, useEffect, useRef, useContext } from 'react';\nimport { EventBusContext } from '../providers/EventBusProvider';\nimport type { KFlowEvent, EventListener, Unsubscribe, EventBusContextType } from './event-bus-types';\n\n// Re-export types for convenience\nexport type { KFlowEvent, EventListener, Unsubscribe, EventBusContextType };\n\n// ============================================================================\n// Global Event Bus Bridge\n// ============================================================================\n\n/**\n * Global event bus reference for bridging between packages.\n *\n * When the EventBusProvider mounts, it can register itself as the global\n * event bus. This allows components in other packages (like ui-shell) to\n * emit events to the same bus that the main app's trait state machine listens to.\n */\nlet globalEventBus: EventBusContextType | null = null;\n\n/**\n * Set the global event bus reference.\n * Called by EventBusProvider when it mounts.\n *\n * @param bus - The event bus context to set as global, or null to clear\n */\nexport function setGlobalEventBus(bus: EventBusContextType | null): void {\n globalEventBus = bus;\n}\n\n/**\n * Get the global event bus reference.\n *\n * @returns The global event bus if set, null otherwise\n */\nexport function getGlobalEventBus(): EventBusContextType | null {\n return globalEventBus;\n}\n\n// ============================================================================\n// Fallback Event Bus (for use outside EventBusProvider)\n// ============================================================================\n\nconst fallbackListeners = new Map<string, Set<EventListener>>();\n\nconst fallbackEventBus: EventBusContextType = {\n emit: (type: string, payload?: Record<string, unknown>) => {\n const event: KFlowEvent = {\n type,\n payload,\n timestamp: Date.now(),\n };\n const handlers = fallbackListeners.get(type);\n if (handlers) {\n handlers.forEach((handler) => {\n try {\n handler(event);\n } catch (error) {\n console.error(`[EventBus] Error in listener for '${type}':`, error);\n }\n });\n }\n },\n on: (type: string, listener: EventListener): Unsubscribe => {\n if (!fallbackListeners.has(type)) {\n fallbackListeners.set(type, new Set());\n }\n fallbackListeners.get(type)!.add(listener);\n return () => {\n const handlers = fallbackListeners.get(type);\n if (handlers) {\n handlers.delete(listener);\n if (handlers.size === 0) {\n fallbackListeners.delete(type);\n }\n }\n };\n },\n once: (type: string, listener: EventListener): Unsubscribe => {\n const wrappedListener: EventListener = (event) => {\n fallbackListeners.get(type)?.delete(wrappedListener);\n listener(event);\n };\n return fallbackEventBus.on(type, wrappedListener);\n },\n hasListeners: (type: string): boolean => {\n const handlers = fallbackListeners.get(type);\n return handlers !== undefined && handlers.size > 0;\n },\n};\n\n// ============================================================================\n// Main Hook\n// ============================================================================\n\n/**\n * Hook for accessing the event bus.\n *\n * Uses EventBusProvider context if available, otherwise falls back to\n * a simple in-memory event bus (for design system / Storybook).\n *\n * @returns Event bus instance with emit, on, once, and hasListeners methods\n *\n * @example\n * ```tsx\n * const eventBus = useEventBus();\n *\n * // Emit an event\n * eventBus.emit('UI:CLICK', { id: '123' });\n *\n * // Subscribe to an event\n * useEffect(() => {\n * return eventBus.on('UI:CLICK', (event) => {\n * console.log('Clicked:', event.payload);\n * });\n * }, []);\n * ```\n */\nexport function useEventBus(): EventBusContextType {\n const context = useContext(EventBusContext);\n // Priority: 1) React context, 2) Global bridge, 3) Fallback\n return context ?? globalEventBus ?? fallbackEventBus;\n}\n\n// ============================================================================\n// Convenience Hooks\n// ============================================================================\n\n/**\n * Hook for subscribing to a specific event.\n * Automatically cleans up subscription on unmount.\n *\n * @param event - Event name to subscribe to\n * @param handler - Event handler function\n *\n * @example\n * ```tsx\n * useEventListener('UI:CLICK', (event) => {\n * console.log('Clicked:', event.payload);\n * });\n * ```\n */\nexport function useEventListener(\n event: string,\n handler: EventListener\n): void {\n const eventBus = useEventBus();\n const handlerRef = useRef(handler);\n handlerRef.current = handler;\n\n useEffect(() => {\n const wrappedHandler: EventListener = (evt) => {\n handlerRef.current(evt);\n };\n return eventBus.on(event, wrappedHandler);\n }, [event, eventBus]);\n}\n\n/**\n * Alias for useEventListener for backward compatibility\n */\nexport const useEventSubscription = useEventListener;\n\n/**\n * Hook for emitting events.\n * Returns a memoized emit function.\n *\n * @returns Function to emit events\n *\n * @example\n * ```tsx\n * const emit = useEmitEvent();\n *\n * const handleClick = () => {\n * emit('UI:CLICK', { id: '123' });\n * };\n * ```\n */\nexport function useEmitEvent(): (type: string, payload?: Record<string, unknown>) => void {\n const eventBus = useEventBus();\n return useCallback(\n (type: string, payload?: Record<string, unknown>) => {\n eventBus.emit(type, payload);\n },\n [eventBus]\n );\n}\n\nexport default useEventBus;\n","/**\n * ButtonGroup Molecule Component\n *\n * A component for grouping buttons together with connected styling.\n * Supports both children-based and form-actions pattern (primary/secondary) usage.\n * Uses Button atoms.\n */\n\nimport React from 'react';\nimport { cn } from '../../lib/cn';\nimport { Button } from '../atoms';\nimport { useNavigate } from 'react-router-dom';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport type ButtonGroupVariant = 'default' | 'segmented' | 'toggle';\n\n/** Action button config for form-actions pattern */\nexport interface ActionButton {\n label: string;\n /** Action type - 'submit' renders as submit button, others render as button */\n actionType?: string;\n event?: string;\n navigatesTo?: string;\n /** Button variant - matches Button component variants. Accepts string for schema compatibility. */\n variant?: string;\n}\n\n/** Filter definition for filter-group pattern */\nexport interface FilterDefinition {\n field: string;\n label: string;\n /** Filter type (checkbox, select, etc.) */\n type?: 'checkbox' | 'select' | 'toggle';\n /** Options for select filters */\n options?: readonly string[];\n}\n\nexport interface ButtonGroupProps {\n /**\n * Button group content (Button components) - use this OR primary/secondary\n */\n children?: React.ReactNode;\n\n /**\n * Primary action button config (for form-actions pattern)\n * Accepts Readonly for compatibility with generated const objects\n */\n primary?: Readonly<ActionButton>;\n\n /**\n * Secondary action buttons config (for form-actions pattern)\n * Accepts readonly array for compatibility with generated const arrays\n */\n secondary?: readonly Readonly<ActionButton>[];\n\n /**\n * Visual variant\n * @default 'default'\n */\n variant?: ButtonGroupVariant;\n\n /**\n * Orientation\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Entity type for filter-group pattern (schema metadata)\n */\n entity?: string;\n\n /**\n * Filter definitions for filter-group pattern\n */\n filters?: readonly FilterDefinition[];\n}\n\n/**\n * Safe navigation hook that works outside Router context.\n * Returns a no-op function if not in Router context.\n */\nfunction useSafeNavigate(): (to: string) => void {\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const navigate = useNavigate();\n return navigate;\n } catch {\n // Outside Router context - return no-op\n return () => {};\n }\n}\n\n/**\n * Safe event bus hook that works outside EventBusProvider context.\n * Returns a no-op emit function if not in EventBusProvider context.\n */\nfunction useSafeEventBus() {\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useEventBus();\n } catch {\n // Outside EventBusProvider context - return no-op\n return { emit: () => {}, on: () => () => {}, once: () => {} };\n }\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({\n children,\n primary,\n secondary,\n variant = 'default',\n orientation = 'horizontal',\n className,\n // Filter-group pattern props (entity and filters are used for schema-driven filtering)\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n entity: _entity,\n filters,\n}) => {\n const navigate = useSafeNavigate();\n const eventBus = useSafeEventBus();\n const variantClasses = {\n default: 'gap-0',\n segmented: 'gap-0 [&>button]:rounded-none [&>button:first-child]:rounded-l-lg [&>button:last-child]:rounded-r-lg [&>button:not(:first-child)]:border-l-0',\n toggle: 'gap-0 [&>button]:rounded-none [&>button:first-child]:rounded-l-lg [&>button:last-child]:rounded-r-lg [&>button:not(:first-child)]:border-l-0',\n };\n\n const orientationClasses = {\n horizontal: 'flex-row',\n vertical: 'flex-col [&>button:first-child]:rounded-t-lg [&>button:last-child]:rounded-b-lg [&>button:not(:first-child)]:border-t-0 [&>button:not(:first-child)]:border-l',\n };\n\n // Handle action button click\n const handleActionClick = (action: ActionButton) => {\n // Emit event via event bus if specified\n if (action.event) {\n eventBus.emit('UI:DISPATCH', { event: action.event });\n }\n // Navigate if specified\n if (action.navigatesTo) {\n navigate(action.navigatesTo);\n }\n };\n\n // Button variant type for type assertions\n type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'success' | 'warning';\n\n // Render buttons from primary/secondary config when no children\n const renderFormActions = () => {\n const buttons: React.ReactNode[] = [];\n\n // Render secondary buttons first (typically on the left)\n if (secondary) {\n secondary.forEach((action, index) => {\n buttons.push(\n <Button\n key={`secondary-${index}`}\n type={action.actionType === 'submit' ? 'submit' : 'button'}\n variant={(action.variant || 'ghost') as ButtonVariant}\n onClick={() => handleActionClick(action)}\n >\n {action.label}\n </Button>\n );\n });\n }\n\n // Render primary button (typically on the right)\n if (primary) {\n const isSubmit = primary.actionType === 'submit';\n buttons.push(\n <Button\n key=\"primary\"\n type={isSubmit ? 'submit' : 'button'}\n variant={(primary.variant || 'primary') as ButtonVariant}\n onClick={() => handleActionClick(primary)}\n data-testid={isSubmit ? 'form-submit' : undefined}\n >\n {primary.label}\n </Button>\n );\n }\n\n return buttons;\n };\n\n // Render filter buttons from filters config (filter-group pattern)\n const renderFilters = () => {\n if (!filters || filters.length === 0) return null;\n\n return filters.map((filter, index) => (\n <Button\n key={`filter-${filter.field}-${index}`}\n variant=\"ghost\"\n onClick={() => {\n // Filter click handling would be connected to state management\n console.log(`Filter clicked: ${filter.field}`);\n }}\n >\n {filter.label}\n </Button>\n ));\n };\n\n return (\n <div\n className={cn(\n 'inline-flex gap-2',\n variantClasses[variant],\n orientationClasses[orientation],\n className\n )}\n role=\"group\"\n >\n {children || renderFilters() || renderFormActions()}\n </div>\n );\n};\n\nButtonGroup.displayName = 'ButtonGroup';\n\n","/**\n * useQuerySingleton Hook\n *\n * Provides query state management for search/filter components.\n * This is a stub implementation for the design system.\n * In a real application, this would connect to the orbital query singleton.\n *\n * @packageDocumentation\n */\n\nimport { useState, useCallback, useMemo } from 'react';\n\n/**\n * Query state for filters and search\n */\nexport interface QueryState {\n search?: string;\n filters?: Record<string, unknown>;\n sortField?: string;\n sortDirection?: 'asc' | 'desc';\n}\n\n/**\n * Query singleton entity reference\n */\nexport interface QuerySingletonEntity {\n name: string;\n fields: Record<string, unknown>;\n}\n\n/**\n * Query singleton result type\n */\nexport interface QuerySingletonResult {\n state: QueryState;\n setState: (state: Partial<QueryState>) => void;\n reset: () => void;\n}\n\nexport interface QuerySingletonState {\n /** Current search term */\n search: string;\n /** Set search term */\n setSearch: (value: string) => void;\n /** Current filters */\n filters: Record<string, unknown>;\n /** Set a filter value */\n setFilter: (key: string, value: unknown) => void;\n /** Clear all filters */\n clearFilters: () => void;\n /** Current sort field */\n sortField?: string;\n /** Current sort direction */\n sortDirection?: 'asc' | 'desc';\n /** Set sort */\n setSort: (field: string, direction: 'asc' | 'desc') => void;\n}\n\n// In-memory store for query singletons (keyed by query name)\nconst queryStores = new Map<string, {\n search: string;\n filters: Record<string, unknown>;\n sortField?: string;\n sortDirection?: 'asc' | 'desc';\n listeners: Set<() => void>;\n}>();\n\nfunction getOrCreateStore(query: string) {\n if (!queryStores.has(query)) {\n queryStores.set(query, {\n search: '',\n filters: {},\n sortField: undefined,\n sortDirection: undefined,\n listeners: new Set(),\n });\n }\n return queryStores.get(query)!;\n}\n\n/**\n * Hook for accessing a query singleton by name\n *\n * @param query - Query singleton name (e.g., \"@TaskQuery\")\n * @returns Query singleton state or null if no query provided\n *\n * @example\n * ```tsx\n * const queryState = useQuerySingleton('@TaskQuery');\n *\n * // Use search state\n * queryState?.search\n * queryState?.setSearch('new search term')\n * ```\n */\nexport function useQuerySingleton(query?: string): QuerySingletonState | null {\n const [, forceUpdate] = useState({});\n\n // Return null if no query provided\n if (!query) {\n return null;\n }\n\n const store = useMemo(() => getOrCreateStore(query), [query]);\n\n // Subscribe to updates\n useMemo(() => {\n const listener = () => forceUpdate({});\n store.listeners.add(listener);\n return () => {\n store.listeners.delete(listener);\n };\n }, [store]);\n\n const notifyListeners = useCallback(() => {\n store.listeners.forEach((listener) => listener());\n }, [store]);\n\n const setSearch = useCallback((value: string) => {\n store.search = value;\n notifyListeners();\n }, [store, notifyListeners]);\n\n const setFilter = useCallback((key: string, value: unknown) => {\n store.filters = { ...store.filters, [key]: value };\n notifyListeners();\n }, [store, notifyListeners]);\n\n const clearFilters = useCallback(() => {\n store.filters = {};\n store.search = '';\n notifyListeners();\n }, [store, notifyListeners]);\n\n const setSort = useCallback((field: string, direction: 'asc' | 'desc') => {\n store.sortField = field;\n store.sortDirection = direction;\n notifyListeners();\n }, [store, notifyListeners]);\n\n return {\n search: store.search,\n setSearch,\n filters: store.filters,\n setFilter,\n clearFilters,\n sortField: store.sortField,\n sortDirection: store.sortDirection,\n setSort,\n };\n}\n\n/**\n * Parse a query binding string to extract the query singleton name\n *\n * @param binding - Binding string like \"@TaskQuery.search\" or \"@TaskQuery\"\n * @returns Object with query name and optional field path\n *\n * @example\n * ```tsx\n * parseQueryBinding('@TaskQuery.search')\n * // { query: 'TaskQuery', field: 'search' }\n *\n * parseQueryBinding('@TaskQuery')\n * // { query: 'TaskQuery', field: undefined }\n * ```\n */\nexport function parseQueryBinding(binding: string): { query: string; field?: string } {\n // Remove @ prefix if present\n const cleaned = binding.startsWith('@') ? binding.slice(1) : binding;\n const parts = cleaned.split('.');\n\n return {\n query: parts[0],\n field: parts.length > 1 ? parts.slice(1).join('.') : undefined,\n };\n}\n\nexport default useQuerySingleton;\n","/**\n * FilterGroup Molecule Component\n *\n * A component for filtering entity data. Composes atoms (Button, Select, Badge, HStack)\n * and follows the design system using CSS variables.\n *\n * Implements the Closed Circuit principle:\n * - FilterGroup updates QuerySingleton filters via query prop\n * - FilterGroup emits UI:FILTER events for trait state machines\n * - entity-list/entity-cards read filtered data via query prop\n *\n * Supports Query Singleton pattern via `query` prop for std/Filter behavior.\n */\n\nimport React, { useState, useCallback, useEffect } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../atoms/Button\";\nimport { Input } from \"../atoms/Input\";\nimport { Select } from \"../atoms/Select\";\nimport { Badge } from \"../atoms/Badge\";\nimport { HStack } from \"../atoms/Stack\";\nimport { X, Filter } from \"lucide-react\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\nimport { useQuerySingleton } from \"../../hooks/useQuerySingleton\";\n\n/** Filter definition from schema */\nexport interface FilterDefinition {\n field: string;\n label: string;\n /** Filter type - 'date' renders a date picker, 'date-range'/'daterange' renders two date pickers */\n filterType?:\n | \"select\"\n | \"toggle\"\n | \"checkbox\"\n | \"date\"\n | \"daterange\"\n | \"date-range\";\n /** Alias for filterType (schema compatibility) */\n type?: \"select\" | \"toggle\" | \"checkbox\" | \"date\" | \"daterange\" | \"date-range\";\n /** Options for select/toggle filters */\n options?: readonly string[];\n}\n\n/** Resolve filter type, supporting both filterType and type aliases */\nconst resolveFilterType = (filter: FilterDefinition) =>\n filter.filterType ?? filter.type;\n\nexport interface FilterGroupProps {\n /** Entity name to filter */\n entity: string;\n /** Filter definitions from schema */\n filters: readonly FilterDefinition[];\n /** Callback when a filter changes - for EntityStore integration */\n onFilterChange?: (field: string, value: string | null) => void;\n /** Callback to clear all filters */\n onClearAll?: () => void;\n /** Additional CSS classes */\n className?: string;\n /** Variant style */\n variant?: \"default\" | \"compact\" | \"pills\" | \"vertical\";\n /** Show filter icon */\n showIcon?: boolean;\n /**\n * Query singleton binding for state management.\n * When provided, syncs filter state with the query singleton.\n * Example: \"@TaskQuery\"\n */\n query?: string;\n /** Loading state indicator */\n isLoading?: boolean;\n}\n\n/**\n * FilterGroup - Renders filter controls for entity data\n * Uses atoms: Button, Select, Badge, HStack\n */\nexport const FilterGroup: React.FC<FilterGroupProps> = ({\n entity,\n filters,\n onFilterChange,\n onClearAll,\n className,\n variant = \"default\",\n showIcon = true,\n query,\n isLoading,\n}) => {\n const eventBus = useEventBus();\n const queryState = useQuerySingleton(query);\n\n // Track selected values for each filter (local state for UI)\n // Initialize from query singleton if available\n const [selectedValues, setSelectedValues] = useState<Record<string, string>>(\n () => {\n if (queryState?.filters) {\n // Convert query filters to string values for display\n return Object.fromEntries(\n Object.entries(queryState.filters)\n .filter(([_, v]) => v !== null && v !== undefined)\n .map(([k, v]) => [k, String(v)]),\n );\n }\n return {};\n },\n );\n\n // Sync with query singleton changes\n useEffect(() => {\n if (queryState?.filters) {\n const newValues = Object.fromEntries(\n Object.entries(queryState.filters)\n .filter(([_, v]) => v !== null && v !== undefined)\n .map(([k, v]) => [k, String(v)]),\n );\n setSelectedValues(newValues);\n }\n }, [queryState?.filters]);\n\n const handleFilterSelect = useCallback(\n (field: string, value: string | null) => {\n setSelectedValues((prev) => {\n if (value === null || value === \"\" || value === \"all\") {\n const next = { ...prev };\n delete next[field];\n return next;\n }\n return { ...prev, [field]: value };\n });\n\n // Update query singleton if connected\n if (queryState) {\n queryState.setFilter(field, value === \"all\" ? null : value);\n }\n\n // Call callback if provided (for backward compat)\n onFilterChange?.(field, value === \"all\" ? null : value);\n\n // Emit UI:FILTER event for closed circuit\n eventBus.emit(\"UI:FILTER\", {\n entity,\n field,\n value: value === \"all\" ? null : value,\n query,\n });\n },\n [onFilterChange, queryState, eventBus, entity, query],\n );\n\n const handleClearAll = useCallback(() => {\n setSelectedValues({});\n\n // Update query singleton if connected\n if (queryState) {\n queryState.clearFilters();\n }\n\n // Call callback if provided (for backward compat)\n onClearAll?.();\n\n // Emit UI:CLEAR_FILTERS event for closed circuit\n eventBus.emit(\"UI:CLEAR_FILTERS\", { entity, query });\n }, [onClearAll, queryState, eventBus, entity, query]);\n\n const activeFilterCount = Object.keys(selectedValues).length;\n\n // Pills variant - horizontal toggle buttons\n if (variant === \"pills\") {\n return (\n <HStack gap=\"md\" align=\"center\" className={cn(\"flex-wrap\", className)}>\n {showIcon && (\n <Filter className=\"h-4 w-4 text-[var(--color-muted-foreground)]\" />\n )}\n {filters.map((filter) => (\n <HStack key={filter.field} gap=\"xs\" align=\"center\">\n <span className=\"text-sm font-[var(--font-weight-medium)] text-[var(--color-muted-foreground)]\">\n {filter.label}:\n </span>\n <HStack\n gap=\"none\"\n className=\"rounded-[var(--radius-sm)] overflow-hidden border-[length:var(--border-width)] border-[var(--color-border)]\"\n >\n <button\n type=\"button\"\n onClick={() => handleFilterSelect(filter.field, null)}\n className={cn(\n \"px-3 py-1.5 text-sm font-[var(--font-weight-medium)] transition-all duration-[var(--transition-fast)]\",\n !selectedValues[filter.field]\n ? \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\"\n : \"bg-[var(--color-card)] text-[var(--color-muted-foreground)] hover:bg-[var(--color-muted)]\",\n )}\n >\n All\n </button>\n {filter.options?.map((option) => (\n <button\n key={option}\n type=\"button\"\n onClick={() => handleFilterSelect(filter.field, option)}\n className={cn(\n \"px-3 py-1.5 text-sm font-[var(--font-weight-medium)] transition-all duration-[var(--transition-fast)]\",\n \"border-l-[length:var(--border-width)] border-[var(--color-border)]\",\n selectedValues[filter.field] === option\n ? \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\"\n : \"bg-[var(--color-card)] text-[var(--color-muted-foreground)] hover:bg-[var(--color-muted)]\",\n )}\n >\n {option}\n </button>\n ))}\n </HStack>\n </HStack>\n ))}\n\n {/* Clear all button */}\n {activeFilterCount > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearAll}\n leftIcon={<X className=\"h-3.5 w-3.5\" />}\n >\n Clear\n </Button>\n )}\n </HStack>\n );\n }\n\n // Vertical variant - stacked filters for sidebars\n if (variant === \"vertical\") {\n return (\n <div className={cn(\"flex flex-col gap-4\", className)}>\n {showIcon && (\n <div className=\"flex items-center gap-2 text-[var(--color-muted-foreground)]\">\n <Filter className=\"h-4 w-4\" />\n <span className=\"text-sm font-[var(--font-weight-bold)] uppercase tracking-wide\">\n Filters\n </span>\n </div>\n )}\n {filters.map((filter) => (\n <div key={filter.field} className=\"flex flex-col gap-1\">\n <label className=\"text-xs font-[var(--font-weight-bold)] text-[var(--color-muted-foreground)] uppercase tracking-wide\">\n {filter.label}\n </label>\n {resolveFilterType(filter) === \"date\" ? (\n <Input\n type=\"date\"\n value={selectedValues[filter.field] || \"\"}\n onChange={(e) =>\n handleFilterSelect(filter.field, e.target.value || null)\n }\n clearable\n onClear={() => handleFilterSelect(filter.field, null)}\n />\n ) : resolveFilterType(filter) === \"daterange\" ||\n resolveFilterType(filter) === \"date-range\" ? (\n <div className=\"flex flex-col gap-2\">\n <Input\n type=\"date\"\n value={selectedValues[`${filter.field}_from`] || \"\"}\n onChange={(e) =>\n handleFilterSelect(\n `${filter.field}_from`,\n e.target.value || null,\n )\n }\n placeholder=\"From\"\n clearable\n onClear={() =>\n handleFilterSelect(`${filter.field}_from`, null)\n }\n />\n <Input\n type=\"date\"\n value={selectedValues[`${filter.field}_to`] || \"\"}\n onChange={(e) =>\n handleFilterSelect(\n `${filter.field}_to`,\n e.target.value || null,\n )\n }\n placeholder=\"To\"\n clearable\n onClear={() => handleFilterSelect(`${filter.field}_to`, null)}\n />\n </div>\n ) : (\n <Select\n value={selectedValues[filter.field] || \"all\"}\n onChange={(e) =>\n handleFilterSelect(filter.field, e.target.value)\n }\n options={[\n { value: \"all\", label: \"All\" },\n ...(filter.options?.map((opt) => ({\n value: opt,\n label: opt,\n })) || []),\n ]}\n />\n )}\n </div>\n ))}\n {activeFilterCount > 0 && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearAll}\n leftIcon={<X className=\"h-3.5 w-3.5\" />}\n className=\"self-start\"\n >\n Clear all\n </Button>\n )}\n </div>\n );\n }\n\n // Compact variant - smaller selects inline\n if (variant === \"compact\") {\n return (\n <HStack gap=\"sm\" align=\"center\" className={cn(\"flex-wrap\", className)}>\n {showIcon && (\n <Filter className=\"h-4 w-4 text-[var(--color-muted-foreground)]\" />\n )}\n {filters.map((filter) => (\n <div key={filter.field} className=\"min-w-[120px]\">\n {resolveFilterType(filter) === \"date\" ? (\n <Input\n type=\"date\"\n value={selectedValues[filter.field] || \"\"}\n onChange={(e) =>\n handleFilterSelect(filter.field, e.target.value || null)\n }\n clearable\n onClear={() => handleFilterSelect(filter.field, null)}\n className=\"text-sm\"\n />\n ) : resolveFilterType(filter) === \"daterange\" ||\n resolveFilterType(filter) === \"date-range\" ? (\n <HStack gap=\"xs\" align=\"center\">\n <Input\n type=\"date\"\n value={selectedValues[`${filter.field}_from`] || \"\"}\n onChange={(e) =>\n handleFilterSelect(\n `${filter.field}_from`,\n e.target.value || null,\n )\n }\n className=\"text-sm min-w-[100px]\"\n />\n <span className=\"text-[var(--color-muted-foreground)]\">-</span>\n <Input\n type=\"date\"\n value={selectedValues[`${filter.field}_to`] || \"\"}\n onChange={(e) =>\n handleFilterSelect(\n `${filter.field}_to`,\n e.target.value || null,\n )\n }\n className=\"text-sm min-w-[100px]\"\n />\n </HStack>\n ) : (\n <Select\n value={selectedValues[filter.field] || \"all\"}\n onChange={(e) =>\n handleFilterSelect(filter.field, e.target.value)\n }\n options={[\n { value: \"all\", label: `All ${filter.label}` },\n ...(filter.options?.map((opt) => ({\n value: opt,\n label: opt,\n })) || []),\n ]}\n className=\"text-sm\"\n />\n )}\n </div>\n ))}\n\n {/* Active filter badges */}\n {activeFilterCount > 0 && (\n <>\n {Object.entries(selectedValues).map(([field, value]) => {\n const filterDef = filters.find((f) => f.field === field);\n return (\n <Badge\n key={field}\n variant=\"primary\"\n size=\"md\"\n className=\"cursor-pointer\"\n onClick={() => handleFilterSelect(field, null)}\n >\n {filterDef?.label}: {value}\n <X className=\"ml-1 h-3 w-3\" />\n </Badge>\n );\n })}\n <Button variant=\"ghost\" size=\"sm\" onClick={handleClearAll}>\n Clear all\n </Button>\n </>\n )}\n </HStack>\n );\n }\n\n // Default variant - labeled selects with clear visual hierarchy\n return (\n <div\n className={cn(\n \"p-4 rounded-[var(--radius-md)]\",\n \"bg-[var(--color-card)]\",\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n className,\n )}\n >\n <HStack gap=\"md\" align=\"center\" className=\"flex-wrap\">\n {showIcon && (\n <HStack\n gap=\"xs\"\n align=\"center\"\n className=\"text-[var(--color-muted-foreground)]\"\n >\n <Filter className=\"h-4 w-4\" />\n <span className=\"text-sm font-[var(--font-weight-bold)] uppercase tracking-wide\">\n Filters\n </span>\n </HStack>\n )}\n\n {/* Filter selects and date inputs */}\n {filters.map((filter) => (\n <div key={filter.field} className=\"flex flex-col gap-1\">\n <label className=\"text-xs font-[var(--font-weight-bold)] text-[var(--color-muted-foreground)] uppercase tracking-wide\">\n {filter.label}\n </label>\n {resolveFilterType(filter) === \"date\" ? (\n <Input\n type=\"date\"\n value={selectedValues[filter.field] || \"\"}\n onChange={(e) =>\n handleFilterSelect(filter.field, e.target.value || null)\n }\n clearable\n onClear={() => handleFilterSelect(filter.field, null)}\n className=\"min-w-[160px]\"\n />\n ) : resolveFilterType(filter) === \"daterange\" ||\n resolveFilterType(filter) === \"date-range\" ? (\n <HStack gap=\"xs\" align=\"center\">\n <Input\n type=\"date\"\n value={selectedValues[`${filter.field}_from`] || \"\"}\n onChange={(e) =>\n handleFilterSelect(\n `${filter.field}_from`,\n e.target.value || null,\n )\n }\n placeholder=\"From\"\n clearable\n onClear={() =>\n handleFilterSelect(`${filter.field}_from`, null)\n }\n className=\"min-w-[130px]\"\n />\n <span className=\"text-[var(--color-muted-foreground)]\">-</span>\n <Input\n type=\"date\"\n value={selectedValues[`${filter.field}_to`] || \"\"}\n onChange={(e) =>\n handleFilterSelect(\n `${filter.field}_to`,\n e.target.value || null,\n )\n }\n placeholder=\"To\"\n clearable\n onClear={() => handleFilterSelect(`${filter.field}_to`, null)}\n className=\"min-w-[130px]\"\n />\n </HStack>\n ) : (\n <Select\n value={selectedValues[filter.field] || \"all\"}\n onChange={(e) =>\n handleFilterSelect(filter.field, e.target.value)\n }\n options={[\n { value: \"all\", label: \"All\" },\n ...(filter.options?.map((opt) => ({\n value: opt,\n label: opt,\n })) || []),\n ]}\n className=\"min-w-[140px]\"\n />\n )}\n </div>\n ))}\n\n {/* Active filter count and clear */}\n {activeFilterCount > 0 && (\n <HStack gap=\"sm\" align=\"center\" className=\"ml-auto\">\n <Badge variant=\"primary\" size=\"md\">\n {activeFilterCount} active\n </Badge>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={handleClearAll}\n leftIcon={<X className=\"h-3.5 w-3.5\" />}\n >\n Clear all\n </Button>\n </HStack>\n )}\n </HStack>\n </div>\n );\n};\n\nFilterGroup.displayName = \"FilterGroup\";\n","/**\n * Card Component\n *\n * A generic card container for displaying content with optional title,\n * subtitle, and action buttons.\n *\n * @generated by Orbital Compiler\n */\n\nimport React from \"react\";\n\nexport interface CardAction {\n label: string;\n onClick: () => void;\n variant?: \"default\" | \"primary\" | \"danger\";\n icon?: string;\n disabled?: boolean;\n}\n\nexport interface CardProps {\n /** Card title */\n title?: string;\n /** Card subtitle or description */\n subtitle?: string;\n /** Image URL to display at top of card */\n image?: string;\n /** Action buttons to display in card footer */\n actions?: CardAction[];\n /** Card content */\n children?: React.ReactNode;\n /** Click handler for the entire card */\n onClick?: () => void;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Card component for displaying content in a contained box\n */\nexport function Card({\n title,\n subtitle,\n image,\n actions,\n children,\n onClick,\n className = \"\",\n}: CardProps) {\n const isClickable = !!onClick;\n\n return (\n <div\n className={`\n bg-[var(--color-card)]\n border border-[var(--color-border)]\n rounded-[var(--radius-md)] shadow-[var(--shadow-sm)]\n ${isClickable ? \"cursor-pointer hover:shadow-[var(--shadow-hover)] transition-shadow\" : \"\"}\n ${className}\n `}\n onClick={onClick}\n role={isClickable ? \"button\" : undefined}\n tabIndex={isClickable ? 0 : undefined}\n onKeyDown={\n isClickable ? (e) => e.key === \"Enter\" && onClick?.() : undefined\n }\n >\n {/* Image */}\n {image && (\n <div className=\"aspect-video w-full overflow-hidden rounded-t-lg\">\n <img\n src={image}\n alt={title || \"Card image\"}\n className=\"w-full h-full object-cover\"\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"p-4\">\n {/* Header */}\n {(title || subtitle) && (\n <div className=\"mb-3\">\n {title && (\n <h3 className=\"text-lg font-semibold text-[var(--color-card-foreground)]\">\n {title}\n </h3>\n )}\n {subtitle && (\n <p className=\"text-sm text-[var(--color-muted-foreground)] mt-1\">\n {subtitle}\n </p>\n )}\n </div>\n )}\n\n {/* Children */}\n {children && (\n <div className=\"text-[var(--color-card-foreground)]\">{children}</div>\n )}\n\n {/* Actions */}\n {actions && actions.length > 0 && (\n <div className=\"flex flex-wrap gap-2 mt-4 pt-4 border-t border-[var(--color-border)]\">\n {actions.map((action, index) => (\n <button\n key={index}\n onClick={(e) => {\n e.stopPropagation();\n action.onClick();\n }}\n disabled={action.disabled}\n className={`\n px-3 py-1.5 text-sm font-medium rounded-[var(--radius-sm)]\n transition-colors\n ${\n action.variant === \"primary\"\n ? \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)] hover:bg-[var(--color-primary-hover)] disabled:opacity-50\"\n : action.variant === \"danger\"\n ? \"bg-[var(--color-error)] text-[var(--color-error-foreground)] hover:opacity-90 disabled:opacity-50\"\n : \"bg-[var(--color-muted)] text-[var(--color-foreground)] hover:bg-[var(--color-surface-hover)]\"\n }\n disabled:cursor-not-allowed\n `}\n >\n {action.label}\n </button>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n\nexport default Card;\n","/**\n * Container Component\n * \n * A max-width wrapper that centers content horizontally.\n * Essential for controlling page width and maintaining consistent margins.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type ContainerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\nexport type ContainerPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface ContainerProps {\n /** Maximum width */\n size?: ContainerSize;\n /** Alias for size (pattern compatibility) */\n maxWidth?: ContainerSize;\n /** Horizontal padding */\n padding?: ContainerPadding;\n /** Center horizontally */\n center?: boolean;\n /** Custom class name */\n className?: string;\n /** Children elements */\n children?: React.ReactNode;\n /** HTML element to render as */\n as?: React.ElementType;\n}\n\nconst sizeStyles: Record<ContainerSize, string> = {\n xs: 'max-w-xs', // 320px\n sm: 'max-w-screen-sm', // 640px\n md: 'max-w-screen-md', // 768px\n lg: 'max-w-screen-lg', // 1024px\n xl: 'max-w-screen-xl', // 1280px\n '2xl': 'max-w-screen-2xl', // 1536px\n full: 'max-w-full',\n};\n\nconst paddingStyles: Record<ContainerPadding, string> = {\n none: 'px-0',\n sm: 'px-4',\n md: 'px-6',\n lg: 'px-8',\n xl: 'px-12',\n};\n\n/**\n * Container - Centers and constrains content width\n */\nexport const Container: React.FC<ContainerProps> = ({\n size,\n maxWidth,\n padding = 'md',\n center = true,\n className,\n children,\n as: Component = 'div',\n}) => {\n // Use maxWidth if provided, otherwise fall back to size, then default to 'lg'\n const resolvedSize = maxWidth ?? size ?? 'lg';\n return (\n <Component\n className={cn(\n 'w-full',\n sizeStyles[resolvedSize],\n paddingStyles[padding],\n center && 'mx-auto',\n className\n )}\n >\n {children}\n </Component>\n );\n};\n\nexport default Container;\n\n","/**\n * Flex Component\n * \n * A flexbox wrapper with all common flex properties exposed as props.\n * More explicit than Stack for when you need full flex control.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type FlexDirection = 'row' | 'row-reverse' | 'col' | 'col-reverse';\nexport type FlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\nexport type FlexAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type FlexJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\nexport type FlexGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\nexport interface FlexProps {\n /** Flex direction */\n direction?: FlexDirection;\n /** Flex wrap */\n wrap?: FlexWrap;\n /** Align items */\n align?: FlexAlign;\n /** Justify content */\n justify?: FlexJustify;\n /** Gap between items */\n gap?: FlexGap;\n /** Inline flex */\n inline?: boolean;\n /** Flex grow */\n grow?: boolean | number;\n /** Flex shrink */\n shrink?: boolean | number;\n /** Flex basis */\n basis?: string | number;\n /** Custom class name */\n className?: string;\n /** Children elements */\n children: React.ReactNode;\n /** HTML element to render as */\n as?: React.ElementType;\n}\n\nconst directionStyles: Record<FlexDirection, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n col: 'flex-col',\n 'col-reverse': 'flex-col-reverse',\n};\n\nconst wrapStyles: Record<FlexWrap, string> = {\n nowrap: 'flex-nowrap',\n wrap: 'flex-wrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n};\n\nconst alignStyles: Record<FlexAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst justifyStyles: Record<FlexJustify, string> = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around',\n evenly: 'justify-evenly',\n};\n\nconst gapStyles: Record<FlexGap, string> = {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n '2xl': 'gap-12',\n};\n\n/**\n * Flex - Full-featured flexbox container\n */\nexport const Flex: React.FC<FlexProps> = ({\n direction = 'row',\n wrap = 'nowrap',\n align = 'stretch',\n justify = 'start',\n gap = 'none',\n inline = false,\n grow,\n shrink,\n basis,\n className,\n children,\n as: Component = 'div',\n}) => {\n // Build flex shorthand for grow/shrink/basis\n const flexStyle: React.CSSProperties = {};\n if (grow !== undefined || shrink !== undefined || basis !== undefined) {\n const growValue = grow === true ? 1 : grow === false ? 0 : grow;\n const shrinkValue = shrink === true ? 1 : shrink === false ? 0 : shrink;\n flexStyle.flexGrow = growValue;\n flexStyle.flexShrink = shrinkValue;\n if (basis !== undefined) {\n flexStyle.flexBasis = typeof basis === 'number' ? `${basis}px` : basis;\n }\n }\n\n return (\n <Component\n className={cn(\n inline ? 'inline-flex' : 'flex',\n directionStyles[direction],\n wrapStyles[wrap],\n alignStyles[align],\n justifyStyles[justify],\n gapStyles[gap],\n className\n )}\n style={Object.keys(flexStyle).length > 0 ? flexStyle : undefined}\n >\n {children}\n </Component>\n );\n};\n\nexport default Flex;\n\n","/**\n * FloatingActionButton Molecule Component\n *\n * A floating action button that can expand into multiple actions vertically.\n * Uses Button atom.\n */\n\nimport React, { useState, useRef, useEffect } from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport * as LucideIcons from \"lucide-react\";\nimport { Plus, X } from \"lucide-react\";\nimport { Button } from \"../atoms/Button\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface FloatingAction {\n /**\n * Action ID\n */\n id: string;\n\n /**\n * Action label\n */\n label: string;\n\n /**\n * Action icon\n */\n icon: LucideIcon;\n\n /**\n * Action click handler\n */\n onClick: () => void;\n\n /**\n * Action variant\n */\n variant?: \"primary\" | \"secondary\" | \"success\" | \"danger\" | \"warning\";\n}\n\nexport interface FloatingActionButtonProps {\n /**\n * Single action (if only one action, button will directly trigger onClick)\n */\n action?: {\n icon: LucideIcon;\n onClick: () => void;\n label?: string;\n variant?: \"primary\" | \"secondary\" | \"success\" | \"danger\" | \"warning\";\n };\n\n /**\n * Multiple actions (if provided, button will expand to show all actions)\n */\n actions?: FloatingAction[];\n\n /**\n * Icon name (simplified API for pattern compatibility)\n */\n icon?: string;\n\n /**\n * Click handler (simplified API for pattern compatibility)\n */\n onClick?: () => void;\n\n /**\n * Variant (simplified API for pattern compatibility)\n */\n variant?: \"primary\" | \"secondary\" | \"success\" | \"danger\" | \"warning\";\n\n /**\n * Button position\n * @default 'bottom-right'\n */\n position?:\n | \"bottom-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"top-right\"\n | \"top-left\"\n | \"top-center\"\n | string; // Allow string for generated code compatibility\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n// Resolve icon name to LucideIcon component\nfunction resolveIcon(name: string): LucideIcon {\n // Convert kebab-case or snake_case to PascalCase\n const pascalName = name\n .split(/[-_]/)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase())\n .join(\"\");\n\n // Try direct lookup - use unknown intermediate for safe casting\n const icons = LucideIcons as unknown as Record<\n string,\n LucideIcon | undefined\n >;\n const icon = icons[pascalName];\n if (icon) {\n return icon;\n }\n\n // Fallback to Plus icon\n return Plus;\n}\n\nexport const FloatingActionButton: React.FC<FloatingActionButtonProps> = ({\n action,\n actions,\n icon,\n onClick,\n variant,\n position = \"bottom-right\",\n className,\n}) => {\n // If simplified props are provided, construct action from them\n const resolvedAction =\n action ??\n (icon\n ? {\n icon: resolveIcon(icon),\n onClick: onClick ?? (() => {}),\n variant: variant,\n }\n : undefined);\n const [isExpanded, setIsExpanded] = useState(false);\n const fabRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click\n useEffect(() => {\n if (!isExpanded || !actions || actions.length <= 1) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (fabRef.current && !fabRef.current.contains(event.target as Node)) {\n setIsExpanded(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isExpanded, actions]);\n\n const positionClasses: Record<string, string> = {\n \"bottom-right\": \"bottom-6 right-6\",\n \"bottom-left\": \"bottom-6 left-6\",\n \"bottom-center\": \"bottom-6 left-1/2 -translate-x-1/2\",\n \"top-right\": \"top-6 right-6\",\n \"top-left\": \"top-6 left-6\",\n \"top-center\": \"top-6 left-1/2 -translate-x-1/2\",\n };\n\n // Single action - direct onClick\n if (resolvedAction && (!actions || actions.length === 0)) {\n return (\n <div className={cn(\"fixed z-50\", positionClasses[position], className)}>\n <Button\n variant={resolvedAction.variant || \"primary\"}\n size=\"lg\"\n icon={resolvedAction.icon}\n onClick={resolvedAction.onClick}\n className=\"rounded-[var(--radius-full)] shadow-[var(--shadow-lg)]\"\n aria-label={resolvedAction.label || \"Action\"}\n >\n {resolvedAction.label && (\n <span className=\"sr-only\">{resolvedAction.label}</span>\n )}\n </Button>\n </div>\n );\n }\n\n // Multiple actions - expandable\n if (actions && actions.length > 0) {\n const handleMainClick = () => {\n if (actions.length === 1) {\n actions[0].onClick();\n } else {\n setIsExpanded(!isExpanded);\n }\n };\n\n return (\n <div\n ref={fabRef}\n className={cn(\n \"fixed z-50 flex flex-col items-end gap-3\",\n positionClasses[position],\n position.includes(\"left\") && \"items-start\",\n className,\n )}\n >\n {/* Expanded Action Buttons */}\n {isExpanded && actions.length > 1 && (\n <div\n className={cn(\n \"flex flex-col gap-3\",\n position.includes(\"left\") ? \"items-start\" : \"items-end\",\n )}\n >\n {actions.map((actionItem, index) => (\n <div\n key={actionItem.id}\n className=\"flex items-center gap-2 transition-all duration-200\"\n style={{\n opacity: isExpanded ? 1 : 0,\n transform: isExpanded ? \"translateY(0)\" : \"translateY(10px)\",\n transitionDelay: `${index * 50}ms`,\n }}\n >\n {position.includes(\"right\") && (\n <span className=\"text-sm text-[var(--color-foreground)] dark:text-[var(--color-foreground)] bg-[var(--color-card)] dark:bg-[var(--color-card)] px-2 py-1 rounded shadow-[var(--shadow-sm)] whitespace-nowrap\">\n {actionItem.label}\n </span>\n )}\n <Button\n variant={actionItem.variant || \"primary\"}\n size=\"lg\"\n icon={actionItem.icon}\n onClick={() => {\n setIsExpanded(false);\n actionItem.onClick();\n }}\n className=\"rounded-[var(--radius-full)] shadow-[var(--shadow-lg)]\"\n aria-label={actionItem.label}\n >\n <span className=\"sr-only\">{actionItem.label}</span>\n </Button>\n {position.includes(\"left\") && (\n <span className=\"text-sm text-[var(--color-foreground)] dark:text-[var(--color-foreground)] bg-[var(--color-card)] dark:bg-[var(--color-card)] px-2 py-1 rounded shadow-[var(--shadow-sm)] whitespace-nowrap\">\n {actionItem.label}\n </span>\n )}\n </div>\n ))}\n </div>\n )}\n\n {/* Main FAB Button */}\n <Button\n variant={isExpanded ? \"secondary\" : \"primary\"}\n size=\"lg\"\n icon={isExpanded ? X : Plus}\n onClick={handleMainClick}\n className=\"rounded-[var(--radius-full)] shadow-[var(--shadow-lg)] transition-all duration-300\"\n aria-label={isExpanded ? \"Close actions\" : \"Open actions\"}\n aria-expanded={isExpanded}\n >\n <span className=\"sr-only\">{isExpanded ? \"Close\" : \"Open\"}</span>\n </Button>\n </div>\n );\n }\n\n return null;\n};\n\nFloatingActionButton.displayName = \"FloatingActionButton\";\n","/**\n * Grid Component\n * \n * A CSS Grid wrapper with responsive column support.\n * Useful for creating multi-column layouts.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type GridCols = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'none';\nexport type GridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\nexport type GridAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\nexport type GridJustify = 'start' | 'center' | 'end' | 'stretch';\n\nexport interface ResponsiveGridCols {\n /** Base/mobile columns */\n base?: GridCols;\n /** Small screens (640px+) */\n sm?: GridCols;\n /** Medium screens (768px+) */\n md?: GridCols;\n /** Large screens (1024px+) */\n lg?: GridCols;\n /** Extra large screens (1280px+) */\n xl?: GridCols;\n}\n\nexport interface GridProps {\n /** Number of columns (can be responsive object) */\n cols?: GridCols | ResponsiveGridCols;\n /** Number of rows */\n rows?: number;\n /** Gap between items */\n gap?: GridGap;\n /** Row gap (overrides gap for rows) */\n rowGap?: GridGap;\n /** Column gap (overrides gap for columns) */\n colGap?: GridGap;\n /** Align items on block axis */\n alignItems?: GridAlign;\n /** Justify items on inline axis */\n justifyItems?: GridJustify;\n /** Auto-flow direction */\n flow?: 'row' | 'col' | 'row-dense' | 'col-dense';\n /** Custom class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n /** Children elements */\n children: React.ReactNode;\n /** HTML element to render as */\n as?: React.ElementType;\n}\n\nconst colStyles: Record<GridCols, string> = {\n none: 'grid-cols-none',\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n 7: 'grid-cols-7',\n 8: 'grid-cols-8',\n 9: 'grid-cols-9',\n 10: 'grid-cols-10',\n 11: 'grid-cols-11',\n 12: 'grid-cols-12',\n};\n\nconst gapStyles: Record<GridGap, string> = {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n '2xl': 'gap-12',\n};\n\nconst rowGapStyles: Record<GridGap, string> = {\n none: 'gap-y-0',\n xs: 'gap-y-1',\n sm: 'gap-y-2',\n md: 'gap-y-4',\n lg: 'gap-y-6',\n xl: 'gap-y-8',\n '2xl': 'gap-y-12',\n};\n\nconst colGapStyles: Record<GridGap, string> = {\n none: 'gap-x-0',\n xs: 'gap-x-1',\n sm: 'gap-x-2',\n md: 'gap-x-4',\n lg: 'gap-x-6',\n xl: 'gap-x-8',\n '2xl': 'gap-x-12',\n};\n\nconst alignStyles: Record<GridAlign, string> = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n baseline: 'items-baseline',\n};\n\nconst justifyStyles: Record<GridJustify, string> = {\n start: 'justify-items-start',\n center: 'justify-items-center',\n end: 'justify-items-end',\n stretch: 'justify-items-stretch',\n};\n\nconst flowStyles = {\n row: 'grid-flow-row',\n col: 'grid-flow-col',\n 'row-dense': 'grid-flow-row-dense',\n 'col-dense': 'grid-flow-col-dense',\n};\n\nfunction getColsClass(cols: GridCols | ResponsiveGridCols): string {\n if (typeof cols === 'number' || cols === 'none') {\n return colStyles[cols];\n }\n\n const classes: string[] = [];\n \n if (cols.base !== undefined) {\n classes.push(colStyles[cols.base]);\n }\n if (cols.sm !== undefined) {\n classes.push(`sm:${colStyles[cols.sm]}`);\n }\n if (cols.md !== undefined) {\n classes.push(`md:${colStyles[cols.md]}`);\n }\n if (cols.lg !== undefined) {\n classes.push(`lg:${colStyles[cols.lg]}`);\n }\n if (cols.xl !== undefined) {\n classes.push(`xl:${colStyles[cols.xl]}`);\n }\n\n return classes.join(' ');\n}\n\n/**\n * Grid - CSS Grid layout wrapper\n */\nexport const Grid: React.FC<GridProps> = ({\n cols = 1,\n rows,\n gap = 'md',\n rowGap,\n colGap,\n alignItems,\n justifyItems,\n flow,\n className,\n style,\n children,\n as: Component = 'div',\n}) => {\n const mergedStyle = rows\n ? { gridTemplateRows: `repeat(${rows}, minmax(0, 1fr))`, ...style }\n : style;\n\n return (\n <Component\n className={cn(\n 'grid',\n getColsClass(cols),\n // Gap (rowGap/colGap override gap)\n rowGap ? rowGapStyles[rowGap] : colGap ? undefined : gapStyles[gap],\n colGap ? colGapStyles[colGap] : rowGap ? undefined : undefined,\n rowGap && colGap ? `${rowGapStyles[rowGap]} ${colGapStyles[colGap]}` : undefined,\n // Alignment\n alignItems && alignStyles[alignItems],\n justifyItems && justifyStyles[justifyItems],\n // Flow\n flow && flowStyles[flow],\n className\n )}\n style={mergedStyle}\n >\n {children}\n </Component>\n );\n};\n\nexport default Grid;\n\n","/**\n * InputGroup Molecule Component\n *\n * A component for grouping input with addons (icons, buttons, text).\n * Uses Input, Button, Icon, and Typography atoms.\n */\n\nimport React from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { Input, InputProps } from \"../atoms/Input\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Typography } from \"../atoms/Typography\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface InputGroupProps extends Omit<\n InputProps,\n \"icon\" | \"iconRight\"\n> {\n /**\n * Left addon (icon, button, or text)\n */\n leftAddon?: React.ReactNode | LucideIcon;\n\n /**\n * Right addon (icon, button, or text)\n */\n rightAddon?: React.ReactNode | LucideIcon;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const InputGroup: React.FC<InputGroupProps> = ({\n leftAddon,\n rightAddon,\n className: groupClassName,\n ...inputProps\n}) => {\n const { className: inputClassName, ...restInputProps } =\n inputProps as InputProps & { className?: string };\n const renderAddon = (\n addon: React.ReactNode | LucideIcon,\n position: \"left\" | \"right\",\n ) => {\n if (!addon) return null;\n\n // Check if it's a LucideIcon\n if (typeof addon === \"function\" || (addon as any)?.render) {\n return (\n <div\n className={cn(\n \"flex items-center justify-center px-3\",\n \"bg-[var(--color-muted)] dark:bg-[var(--color-muted)]\",\n \"border border-[var(--color-border)] dark:border-[var(--color-border)]\",\n position === \"left\"\n ? \"rounded-l-lg border-r-0\"\n : \"rounded-r-lg border-l-0\",\n )}\n >\n <Icon icon={addon as LucideIcon} size=\"sm\" />\n </div>\n );\n }\n\n // Text or other content (buttons removed)\n return (\n <div\n className={cn(\n \"flex items-center justify-center px-3\",\n \"bg-[var(--color-muted)] dark:bg-[var(--color-muted)]\",\n \"border border-[var(--color-border)] dark:border-[var(--color-border)]\",\n \"text-[var(--color-foreground)] dark:text-[var(--color-foreground)]\",\n position === \"left\"\n ? \"rounded-l-lg border-r-0\"\n : \"rounded-r-lg border-l-0\",\n )}\n >\n {typeof addon === \"string\" ? (\n <Typography variant=\"small\">{addon}</Typography>\n ) : (\n addon\n )}\n </div>\n );\n };\n\n return (\n <div className={cn(\"flex items-stretch\", groupClassName)}>\n {leftAddon && renderAddon(leftAddon, \"left\")}\n\n <div className=\"flex-1\">\n <Input\n {...restInputProps}\n className={cn(\n leftAddon ? \"rounded-l-none\" : \"\",\n rightAddon ? \"rounded-r-none\" : \"\",\n inputClassName,\n )}\n />\n </div>\n\n {rightAddon && renderAddon(rightAddon, \"right\")}\n </div>\n );\n};\n\nInputGroup.displayName = \"InputGroup\";\n","/**\n * Menu Molecule Component\n *\n * A dropdown menu component with items, icons, dividers, and sub-menus.\n * Uses theme-aware CSS variables for styling.\n */\n\nimport React, { useState, useRef, useEffect } from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { ChevronRight } from \"lucide-react\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Divider } from \"../atoms/Divider\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Badge } from \"../atoms/Badge\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface MenuItem {\n /** Item ID (auto-generated from label if not provided) */\n id?: string;\n /** Item label */\n label: string;\n /** Item icon (LucideIcon or string name) */\n icon?: LucideIcon | string;\n /** Item badge */\n badge?: string | number;\n /** Disable item */\n disabled?: boolean;\n /** Item click handler */\n onClick?: () => void;\n /** Event name for pattern compatibility */\n event?: string;\n /** Variant for styling (pattern compatibility) */\n variant?: \"default\" | \"danger\";\n /** Sub-menu items */\n subMenu?: MenuItem[];\n}\n\nexport type MenuPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"; // Aliases for pattern compatibility\n\nexport interface MenuProps {\n /** Menu trigger element */\n trigger: React.ReactNode;\n /** Menu items */\n items: MenuItem[];\n /** Menu position */\n position?: MenuPosition;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport const Menu: React.FC<MenuProps> = ({\n trigger,\n items,\n position = \"bottom-left\",\n className,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [activeSubMenu, setActiveSubMenu] = useState<string | null>(null);\n const [triggerRect, setTriggerRect] = useState<DOMRect | null>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n const updatePosition = () => {\n if (triggerRef.current) {\n setTriggerRect(triggerRef.current.getBoundingClientRect());\n }\n };\n\n const handleToggle = () => {\n if (!isOpen) {\n updatePosition();\n }\n setIsOpen(!isOpen);\n setActiveSubMenu(null);\n };\n\n const handleItemClick = (item: MenuItem) => {\n if (item.disabled) return;\n\n if (item.subMenu && item.subMenu.length > 0) {\n setActiveSubMenu(item.id ?? null);\n } else {\n item.onClick?.();\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n updatePosition();\n }\n }, [isOpen]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (\n isOpen &&\n menuRef.current &&\n !menuRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n setIsOpen(false);\n setActiveSubMenu(null);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n const positionClasses: Record<string, string> = {\n \"top-left\": \"bottom-full left-0 mb-2\",\n \"top-right\": \"bottom-full right-0 mb-2\",\n \"bottom-left\": \"top-full left-0 mt-2\",\n \"bottom-right\": \"top-full right-0 mt-2\",\n // Aliases for pattern compatibility\n \"top-start\": \"bottom-full left-0 mb-2\",\n \"top-end\": \"bottom-full right-0 mb-2\",\n \"bottom-start\": \"top-full left-0 mt-2\",\n \"bottom-end\": \"top-full right-0 mt-2\",\n };\n\n // Wrap non-element trigger in a span\n const triggerChild = React.isValidElement(trigger) ? (\n trigger\n ) : (\n <span>{trigger}</span>\n );\n\n const triggerElement = React.cloneElement(\n triggerChild as React.ReactElement<any>,\n {\n ref: triggerRef,\n onClick: handleToggle,\n },\n );\n\n // Theme-aware menu container styles\n const menuContainerStyles = cn(\n \"bg-[var(--color-card)]\",\n \"border-[length:var(--border-width)] border-[var(--color-border)]\",\n \"shadow-[var(--shadow-main)]\",\n \"rounded-[var(--radius-sm)]\",\n \"min-w-[200px] py-1\",\n );\n\n const renderMenuItem = (\n item: MenuItem,\n hasSubMenu: boolean,\n index: number,\n ) => {\n // Auto-generate id from label if not provided\n const itemId =\n item.id ??\n `item-${item.label.toLowerCase().replace(/\\s+/g, \"-\")}-${index}`;\n const isDanger = item.variant === \"danger\";\n\n return (\n <button\n key={itemId}\n type=\"button\"\n onClick={() => handleItemClick({ ...item, id: itemId })}\n disabled={item.disabled}\n onMouseEnter={() => hasSubMenu && setActiveSubMenu(itemId)}\n className={cn(\n \"w-full flex items-center justify-between gap-3 px-4 py-2 text-left\",\n \"text-sm transition-colors\",\n \"hover:bg-[var(--color-muted)]\",\n \"focus:outline-none focus:bg-[var(--color-muted)]\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n item.disabled && \"cursor-not-allowed\",\n isDanger &&\n \"text-[var(--color-error)] hover:bg-[var(--color-error)]/10\",\n )}\n >\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {item.icon &&\n (typeof item.icon === \"string\" ? (\n <Icon name={item.icon} size=\"sm\" className=\"flex-shrink-0\" />\n ) : (\n <Icon icon={item.icon} size=\"sm\" className=\"flex-shrink-0\" />\n ))}\n <Typography\n variant=\"small\"\n className={cn(\"flex-1\", isDanger && \"text-red-600\")}\n >\n {item.label}\n </Typography>\n {item.badge !== undefined && (\n <Badge variant=\"default\" size=\"sm\">\n {item.badge}\n </Badge>\n )}\n {hasSubMenu && (\n <Icon icon={ChevronRight} size=\"sm\" className=\"flex-shrink-0\" />\n )}\n </div>\n </button>\n );\n };\n\n const renderMenuItems = (menuItems: MenuItem[]) => {\n return menuItems.map((item, index) => {\n const hasSubMenu = item.subMenu && item.subMenu.length > 0;\n const isDivider = item.id === \"divider\" || item.label === \"divider\";\n const itemId =\n item.id ??\n `item-${item.label.toLowerCase().replace(/\\s+/g, \"-\")}-${index}`;\n\n if (isDivider) {\n return <Divider key={`divider-${index}`} className=\"my-1\" />;\n }\n\n return (\n <div key={itemId}>\n {renderMenuItem(item, !!hasSubMenu, index)}\n {hasSubMenu && activeSubMenu === itemId && item.subMenu && (\n <div\n className={cn(\n \"absolute left-full top-0 ml-2 z-50\",\n menuContainerStyles,\n )}\n >\n {renderMenuItems(item.subMenu)}\n </div>\n )}\n </div>\n );\n });\n };\n\n return (\n <div className=\"relative\">\n {triggerElement}\n {isOpen && triggerRect && (\n <div\n ref={menuRef}\n className={cn(\n \"absolute z-50\",\n menuContainerStyles,\n positionClasses[position],\n className,\n )}\n style={{\n left: position.includes(\"left\") ? 0 : \"auto\",\n right: position.includes(\"right\") ? 0 : \"auto\",\n }}\n role=\"menu\"\n >\n {renderMenuItems(items)}\n </div>\n )}\n </div>\n );\n};\n\nMenu.displayName = \"Menu\";\n","/**\n * Modal Molecule Component\n *\n * A modal dialog component with overlay, header, content, and footer.\n * Uses theme-aware CSS variables for styling.\n */\n\nimport React, { useEffect, useRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Box } from \"../atoms/Box\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Overlay } from \"../atoms/Overlay\";\nimport { cn } from \"../../lib/cn\";\n\nexport type ModalSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface ModalProps {\n /** Whether the modal is open (defaults to true when rendered by slot wrapper) */\n isOpen?: boolean;\n /** Callback when modal should close (injected by slot wrapper) */\n onClose?: () => void;\n title?: string;\n /** Modal content (can be empty if using slot content) */\n children?: React.ReactNode;\n footer?: React.ReactNode;\n size?: ModalSize;\n showCloseButton?: boolean;\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n className?: string;\n}\n\nconst sizeClasses: Record<ModalSize, string> = {\n sm: \"max-w-md\",\n md: \"max-w-lg\",\n lg: \"max-w-2xl\",\n xl: \"max-w-4xl\",\n full: \"max-w-full mx-4\",\n};\n\nexport const Modal: React.FC<ModalProps> = ({\n isOpen = true,\n onClose = () => {},\n title,\n children = null,\n footer,\n size = \"md\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n}) => {\n const modalRef = useRef<HTMLDivElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n useEffect(() => {\n if (isOpen) {\n previousActiveElement.current = document.activeElement as HTMLElement;\n const focusableElements = modalRef.current?.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n const firstElement = focusableElements?.[0] as HTMLElement;\n firstElement?.focus();\n } else {\n previousActiveElement.current?.focus();\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (!isOpen || !closeOnEscape) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") onClose();\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n return (\n <>\n <Overlay\n isVisible={isOpen}\n onClick={handleOverlayClick}\n className=\"z-40\"\n />\n\n <div className=\"fixed inset-0 z-50 flex items-center justify-center p-4 pointer-events-none\">\n <Box\n ref={modalRef}\n bg=\"surface\"\n border\n shadow=\"lg\"\n rounded=\"md\"\n className={cn(\n \"pointer-events-auto w-full flex flex-col max-h-[90vh]\",\n sizeClasses[size],\n className,\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n {...(title && { \"aria-labelledby\": \"modal-title\" })}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div\n className={cn(\n \"px-6 py-4 flex items-center justify-between\",\n \"border-b-[length:var(--border-width)] border-[var(--color-border)]\",\n )}\n >\n {title && (\n <Typography variant=\"h4\" as=\"h2\" id=\"modal-title\">\n {title}\n </Typography>\n )}\n {showCloseButton && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"p-1 transition-colors rounded-[var(--radius-sm)]\",\n \"hover:bg-[var(--color-muted)]\",\n )}\n aria-label=\"Close modal\"\n >\n <Icon icon={X} size=\"md\" />\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n\n {/* Footer */}\n {footer && (\n <div\n className={cn(\n \"px-6 py-4 bg-[var(--color-muted)]\",\n \"border-t-[length:var(--border-width)] border-[var(--color-border)]\",\n )}\n >\n {footer}\n </div>\n )}\n </Box>\n </div>\n </>\n );\n};\n\nModal.displayName = \"Modal\";\n","/**\n * Pagination Molecule Component\n *\n * A pagination component with page numbers, previous/next buttons, and ellipsis.\n * Uses Button, Icon, Typography, and Input atoms.\n */\n\nimport React, { useState } from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Button } from \"../atoms/Button\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Input } from \"../atoms/Input\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface PaginationProps {\n /**\n * Current page (1-indexed)\n */\n currentPage: number;\n\n /**\n * Total number of pages\n */\n totalPages: number;\n\n /**\n * Callback when page changes (optional - can be a no-op if not interactive)\n */\n onPageChange?: (page: number) => void;\n\n /**\n * Show page size selector\n * @default false\n */\n showPageSize?: boolean;\n\n /**\n * Page size options\n */\n pageSizeOptions?: number[];\n\n /**\n * Current page size\n */\n pageSize?: number;\n\n /**\n * Callback when page size changes\n */\n onPageSizeChange?: (size: number) => void;\n\n /**\n * Show jump to page input\n * @default false\n */\n showJumpToPage?: boolean;\n\n /**\n * Show total count\n * @default false\n */\n showTotal?: boolean;\n\n /**\n * Total items count\n */\n totalItems?: number;\n\n /**\n * Maximum number of page buttons to show\n * @default 7\n */\n maxVisiblePages?: number;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange = () => {},\n showPageSize = false,\n pageSizeOptions = [10, 20, 50, 100],\n pageSize,\n onPageSizeChange,\n showJumpToPage = false,\n showTotal = false,\n totalItems,\n maxVisiblePages = 7,\n className,\n}) => {\n const [jumpToPage, setJumpToPage] = useState(\"\");\n\n const handleJumpToPage = () => {\n const page = parseInt(jumpToPage, 10);\n if (page >= 1 && page <= totalPages) {\n onPageChange(page);\n setJumpToPage(\"\");\n }\n };\n\n const getPageNumbers = () => {\n const pages: (number | \"ellipsis\")[] = [];\n const halfVisible = Math.floor(maxVisiblePages / 2);\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n if (currentPage <= halfVisible + 1) {\n for (let i = 1; i <= maxVisiblePages - 2; i++) {\n pages.push(i);\n }\n pages.push(\"ellipsis\");\n pages.push(totalPages);\n } else if (currentPage >= totalPages - halfVisible) {\n pages.push(1);\n pages.push(\"ellipsis\");\n for (let i = totalPages - maxVisiblePages + 3; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n pages.push(\"ellipsis\");\n for (\n let i = currentPage - halfVisible + 2;\n i <= currentPage + halfVisible - 2;\n i++\n ) {\n pages.push(i);\n }\n pages.push(\"ellipsis\");\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div className={cn(\"flex items-center justify-between gap-4\", className)}>\n <div className=\"flex items-center gap-2\">\n {showTotal && totalItems !== undefined && (\n <Typography variant=\"small\" color=\"secondary\">\n Total: {totalItems}\n </Typography>\n )}\n\n {showPageSize && pageSize && onPageSizeChange && (\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"small\" color=\"secondary\">\n Show:\n </Typography>\n <select\n value={pageSize}\n onChange={(e) => onPageSizeChange(Number(e.target.value))}\n className=\"px-2 py-1 text-sm border-[length:var(--border-width)] border-[var(--color-border)] bg-[var(--color-card)] text-[var(--color-foreground)] font-medium focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)]\"\n >\n {pageSizeOptions.map((size) => (\n <option key={size} value={size}>\n {size}\n </option>\n ))}\n </select>\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-1\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n icon={ChevronLeft}\n >\n Previous\n </Button>\n\n <div className=\"flex items-center gap-1\">\n {pageNumbers.map((page, index) => {\n if (page === \"ellipsis\") {\n return (\n <Typography\n key={`ellipsis-${index}`}\n variant=\"small\"\n color=\"muted\"\n className=\"px-2\"\n >\n ...\n </Typography>\n );\n }\n\n const isActive = page === currentPage;\n\n return (\n <Button\n key={page}\n variant={isActive ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => onPageChange(page)}\n className=\"min-w-[2.5rem]\"\n >\n {page}\n </Button>\n );\n })}\n </div>\n\n <Button\n variant=\"secondary\"\n size=\"sm\"\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n iconRight={ChevronRight}\n >\n Next\n </Button>\n </div>\n\n {showJumpToPage && (\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"small\" color=\"secondary\">\n Go to:\n </Typography>\n <Input\n type=\"number\"\n value={jumpToPage}\n onChange={(e) => setJumpToPage(e.target.value)}\n placeholder=\"Page\"\n className=\"w-20\"\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleJumpToPage();\n }\n }}\n />\n <Button variant=\"ghost\" size=\"sm\" onClick={handleJumpToPage}>\n Go\n </Button>\n </div>\n )}\n </div>\n );\n};\n\nPagination.displayName = \"Pagination\";\n","/**\n * Popover Molecule Component\n *\n * A popover component with position variants and click/hover triggers.\n * Uses Button, Typography, and Icon atoms.\n */\n\nimport React, { useState, useRef, useEffect } from \"react\";\nimport { Typography } from \"../atoms/Typography\";\nimport { cn } from \"../../lib/cn\";\n\nexport type PopoverPosition = \"top\" | \"bottom\" | \"left\" | \"right\";\nexport type PopoverTrigger = \"click\" | \"hover\";\n\nexport interface PopoverProps {\n /**\n * Popover content\n */\n content: React.ReactNode;\n\n /**\n * Popover trigger element (ReactElement or ReactNode that will be wrapped in span)\n */\n children: React.ReactNode;\n\n /**\n * Popover position\n * @default 'bottom'\n */\n position?: PopoverPosition;\n\n /**\n * Trigger type\n * @default 'click'\n */\n trigger?: PopoverTrigger;\n\n /**\n * Show arrow\n * @default true\n */\n showArrow?: boolean;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nconst positionClasses: Record<PopoverPosition, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n};\n\nconst arrowClasses: Record<PopoverPosition, string> = {\n top: \"top-full left-1/2 -translate-x-1/2 border-t-white border-l-transparent border-r-transparent border-b-transparent\",\n bottom:\n \"bottom-full left-1/2 -translate-x-1/2 border-b-white border-l-transparent border-r-transparent border-t-transparent\",\n left: \"left-full top-1/2 -translate-y-1/2 border-l-white border-t-transparent border-b-transparent border-r-transparent\",\n right:\n \"right-full top-1/2 -translate-y-1/2 border-r-white border-t-transparent border-b-transparent border-l-transparent\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n content,\n children,\n position = \"bottom\",\n trigger = \"click\",\n showArrow = true,\n className,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [triggerRect, setTriggerRect] = useState<DOMRect | null>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n\n const updatePosition = () => {\n if (triggerRef.current) {\n setTriggerRect(triggerRef.current.getBoundingClientRect());\n }\n };\n\n const handleOpen = () => {\n updatePosition();\n setIsOpen(true);\n };\n\n const handleClose = () => {\n setIsOpen(false);\n };\n\n const handleToggle = () => {\n if (isOpen) {\n handleClose();\n } else {\n handleOpen();\n }\n };\n\n useEffect(() => {\n if (isOpen) {\n updatePosition();\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (trigger !== \"click\") {\n return;\n }\n\n const handleClickOutside = (e: MouseEvent) => {\n if (\n isOpen &&\n popoverRef.current &&\n !popoverRef.current.contains(e.target as Node) &&\n triggerRef.current &&\n !triggerRef.current.contains(e.target as Node)\n ) {\n handleClose();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen, trigger]);\n\n const triggerProps =\n trigger === \"click\"\n ? {\n onClick: handleToggle,\n }\n : {\n onMouseEnter: handleOpen,\n onMouseLeave: handleClose,\n };\n\n // Wrap non-element children in a span\n const childElement = React.isValidElement(children) ? (\n children\n ) : (\n <span>{children}</span>\n );\n\n const triggerElement = React.cloneElement(\n childElement as React.ReactElement<any>,\n {\n ref: triggerRef,\n ...triggerProps,\n },\n );\n\n return (\n <>\n {triggerElement}\n {isOpen && triggerRect && (\n <div\n ref={popoverRef}\n className={cn(\n \"fixed z-50 p-4\",\n \"bg-[var(--color-card)] border-2 border-[var(--color-border)] shadow-[var(--shadow-lg)]\",\n positionClasses[position],\n className,\n )}\n style={{\n left:\n position === \"left\" || position === \"right\"\n ? triggerRect.left +\n (position === \"left\" ? 0 : triggerRect.width)\n : triggerRect.left + triggerRect.width / 2,\n top:\n position === \"top\" || position === \"bottom\"\n ? triggerRect.top +\n (position === \"top\" ? 0 : triggerRect.height)\n : triggerRect.top + triggerRect.height / 2,\n }}\n role=\"dialog\"\n onMouseEnter={trigger === \"hover\" ? handleOpen : undefined}\n onMouseLeave={trigger === \"hover\" ? handleClose : undefined}\n >\n {typeof content === \"string\" ? (\n <Typography variant=\"body\">{content}</Typography>\n ) : (\n content\n )}\n {showArrow && (\n <div\n className={cn(\n \"absolute w-0 h-0 border-4\",\n arrowClasses[position],\n )}\n />\n )}\n </div>\n )}\n </>\n );\n};\n\nPopover.displayName = \"Popover\";\n","/**\n * Debug utilities for development\n */\n\nconst DEBUG_ENABLED = typeof window !== 'undefined' &&\n (localStorage.getItem('debug') === 'true' || process.env.NODE_ENV === 'development');\n\nexport function isDebugEnabled(): boolean {\n return DEBUG_ENABLED;\n}\n\nexport function debug(...args: unknown[]): void {\n if (DEBUG_ENABLED) {\n console.log('[DEBUG]', ...args);\n }\n}\n\nexport function debugGroup(label: string): void {\n if (DEBUG_ENABLED) {\n console.group(`[DEBUG] ${label}`);\n }\n}\n\nexport function debugGroupEnd(): void {\n if (DEBUG_ENABLED) {\n console.groupEnd();\n }\n}\n\nexport function debugWarn(...args: unknown[]): void {\n if (DEBUG_ENABLED) {\n console.warn('[DEBUG]', ...args);\n }\n}\n\nexport function debugError(...args: unknown[]): void {\n if (DEBUG_ENABLED) {\n console.error('[DEBUG]', ...args);\n }\n}\n\nexport function debugTable(data: unknown): void {\n if (DEBUG_ENABLED) {\n console.table(data);\n }\n}\n\nexport function debugTime(label: string): void {\n if (DEBUG_ENABLED) {\n console.time(`[DEBUG] ${label}`);\n }\n}\n\nexport function debugTimeEnd(label: string): void {\n if (DEBUG_ENABLED) {\n console.timeEnd(`[DEBUG] ${label}`);\n }\n}\n\n// =============================================================================\n// Game-specific debug utilities\n// =============================================================================\n\n/**\n * Debug input events (keyboard, mouse, touch)\n * @param inputType - Type of input (e.g., 'keydown', 'keyup', 'mouse')\n * @param data - Input data to log\n */\nexport function debugInput(inputType: string, data: unknown): void {\n if (DEBUG_ENABLED) {\n console.log(`[DEBUG:INPUT] ${inputType}:`, data);\n }\n}\n\n/**\n * Debug collision events between entities\n * @param entityA - First entity in collision\n * @param entityB - Second entity in collision\n * @param details - Additional collision details\n */\nexport function debugCollision(\n entityA: { id?: string; type?: string },\n entityB: { id?: string; type?: string },\n details?: unknown\n): void {\n if (DEBUG_ENABLED) {\n console.log(\n `[DEBUG:COLLISION] ${entityA.type || entityA.id} <-> ${entityB.type || entityB.id}`,\n details ?? ''\n );\n }\n}\n\n/**\n * Debug physics updates (position, velocity)\n * @param entityId - Entity identifier\n * @param physics - Physics data to log\n */\nexport function debugPhysics(entityId: string, physics: unknown): void {\n if (DEBUG_ENABLED) {\n console.log(`[DEBUG:PHYSICS] ${entityId}:`, physics);\n }\n}\n\n/**\n * Debug game state changes\n * @param stateName - Name of the state that changed\n * @param value - New state value\n */\nexport function debugGameState(stateName: string, value: unknown): void {\n if (DEBUG_ENABLED) {\n console.log(`[DEBUG:GAME_STATE] ${stateName}:`, value);\n }\n}\n","/**\n * RelationSelect Molecule Component\n *\n * A searchable select component for relation fields.\n * Allows users to search and select from related entities.\n *\n * Composed from: Box, HStack, VStack, Input, Button, Spinner, Typography atoms\n */\n\nimport React, {\n useState,\n useCallback,\n useMemo,\n useRef,\n useEffect,\n} from \"react\";\nimport { Search, ChevronDown, X } from \"lucide-react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { HStack, VStack } from \"../atoms/Stack\";\nimport { Input } from \"../atoms/Input\";\nimport { Button } from \"../atoms/Button\";\nimport { Spinner } from \"../atoms/Spinner\";\nimport { Typography } from \"../atoms/Typography\";\nimport {\n debug,\n debugGroup,\n debugGroupEnd,\n isDebugEnabled,\n} from \"../../lib/debug\";\n\n// Helper to check if specific debug category is enabled\nconst isRelationsDebugEnabled = () => isDebugEnabled();\n\nexport interface RelationOption {\n /** The value to store (typically the ID) */\n value: string;\n /** The display label */\n label: string;\n /** Optional description */\n description?: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n}\n\nexport interface RelationSelectProps {\n /** Current value (ID) */\n value?: string;\n /** Callback when value changes */\n onChange?: (value: string | undefined) => void;\n /** Available options - accepts readonly for compatibility with generated const arrays */\n options: readonly RelationOption[];\n /** Placeholder text */\n placeholder?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the field is disabled */\n disabled?: boolean;\n /** Whether data is loading */\n isLoading?: boolean;\n /** Error message */\n error?: string;\n /** Allow clearing the selection */\n clearable?: boolean;\n /** Name attribute for forms */\n name?: string;\n /** Additional CSS classes */\n className?: string;\n /** Search placeholder */\n searchPlaceholder?: string;\n /** Empty state message */\n emptyMessage?: string;\n}\n\nexport const RelationSelect: React.FC<RelationSelectProps> = ({\n value,\n onChange,\n options = [],\n placeholder = \"Select...\",\n required = false,\n disabled = false,\n isLoading = false,\n error,\n clearable = true,\n name,\n className,\n searchPlaceholder = \"Search...\",\n emptyMessage = \"No options found\",\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState(\"\");\n const containerRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n // Debug: Log component initialization\n useEffect(() => {\n if (isRelationsDebugEnabled()) {\n debugGroup(`RelationSelect: ${name || \"unnamed\"}`);\n debug(`Options count: ${options.length}`);\n debug(`Current value: ${value || \"none\"}`);\n debug(`Is loading: ${isLoading}`);\n if (options.length > 0) {\n debug(\"Sample options:\", options.slice(0, 3));\n } else {\n debug(\"⚠️ No options available!\");\n }\n debugGroupEnd();\n }\n }, [name, options.length, value, isLoading]);\n\n // Find selected option\n const selectedOption = useMemo(() => {\n const found = options.find((opt) => opt.value === value);\n if (isRelationsDebugEnabled() && value && !found) {\n debug(`⚠️ Value \"${value}\" not found in options for ${name}`);\n }\n return found;\n }, [options, value, name]);\n\n // Filter options by search query\n const filteredOptions = useMemo(() => {\n if (!searchQuery.trim()) return options;\n const query = searchQuery.toLowerCase();\n return options.filter(\n (opt) =>\n opt.label.toLowerCase().includes(query) ||\n opt.description?.toLowerCase().includes(query),\n );\n }, [options, searchQuery]);\n\n // Handle outside click to close dropdown\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n setSearchQuery(\"\");\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, []);\n\n // Focus search input when dropdown opens\n useEffect(() => {\n if (isOpen && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [isOpen]);\n\n const handleToggle = useCallback(() => {\n if (!disabled) {\n setIsOpen((prev) => !prev);\n if (!isOpen) {\n setSearchQuery(\"\");\n }\n }\n }, [disabled, isOpen]);\n\n const handleSelect = useCallback(\n (option: RelationOption) => {\n if (option.disabled) return;\n onChange?.(option.value);\n setIsOpen(false);\n setSearchQuery(\"\");\n },\n [onChange],\n );\n\n const handleClear = useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(undefined);\n },\n [onChange],\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setIsOpen(false);\n setSearchQuery(\"\");\n } else if (e.key === \"Enter\" && filteredOptions.length === 1) {\n handleSelect(filteredOptions[0]);\n }\n },\n [filteredOptions, handleSelect],\n );\n\n return (\n <div ref={containerRef} className={cn(\"relative\", className)}>\n {/* Hidden input for form submission */}\n <input type=\"hidden\" name={name} value={value || \"\"} />\n\n {/* Trigger button */}\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={handleToggle}\n disabled={disabled}\n className={cn(\n \"w-full justify-between font-normal\",\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n isOpen && \"ring-2 ring-primary-500 border-primary-500\",\n )}\n >\n <Typography\n variant=\"body\"\n className={cn(\n !selectedOption && \"text-[var(--color-muted-foreground)]\",\n )}\n >\n {isLoading ? (\n <HStack gap=\"xs\" align=\"center\">\n <Spinner size=\"sm\" />\n <span>Loading...</span>\n </HStack>\n ) : selectedOption ? (\n selectedOption.label\n ) : (\n placeholder\n )}\n </Typography>\n <HStack gap=\"xs\" align=\"center\">\n {clearable && selectedOption && !disabled && (\n <span\n className=\"p-0.5 hover:bg-[var(--color-muted)] rounded cursor-pointer\"\n onClick={handleClear}\n >\n <X className=\"h-4 w-4 text-[var(--color-muted-foreground)]\" />\n </span>\n )}\n <ChevronDown\n className={cn(\n \"h-4 w-4 text-[var(--color-muted-foreground)] transition-transform\",\n isOpen && \"transform rotate-180\",\n )}\n />\n </HStack>\n </Button>\n\n {/* Dropdown */}\n {isOpen && (\n <Box\n position=\"absolute\"\n bg=\"surface\"\n border\n rounded=\"md\"\n shadow=\"lg\"\n className=\"z-50 w-full mt-1\"\n >\n {/* Search input */}\n <Box padding=\"sm\" className=\"border-b border-[var(--color-border)]\">\n <Input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => setSearchQuery(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={searchPlaceholder}\n icon={Search}\n className=\"text-sm\"\n />\n </Box>\n\n {/* Options list */}\n <Box overflow=\"auto\" className=\"max-h-60\">\n {isLoading ? (\n <Box padding=\"md\" display=\"flex\" className=\"justify-center\">\n <Spinner size=\"md\" color=\"primary\" />\n </Box>\n ) : filteredOptions.length === 0 ? (\n <Box padding=\"md\">\n <Typography\n variant=\"body\"\n color=\"muted\"\n className=\"text-center\"\n >\n {emptyMessage}\n </Typography>\n </Box>\n ) : (\n <VStack gap=\"none\">\n {filteredOptions.map((option) => (\n <Box\n key={option.value}\n as=\"button\"\n fullWidth\n paddingX=\"sm\"\n paddingY=\"sm\"\n className={cn(\n \"text-left text-sm hover:bg-[var(--color-muted)] focus:outline-none focus:bg-[var(--color-muted)]\",\n option.value === value &&\n \"bg-primary-50 text-primary-700\",\n option.disabled && \"opacity-50 cursor-not-allowed\",\n )}\n onClick={() => handleSelect(option)}\n >\n <Typography variant=\"body\" className=\"font-medium\">\n {option.label}\n </Typography>\n {option.description && (\n <Typography variant=\"caption\" color=\"muted\">\n {option.description}\n </Typography>\n )}\n </Box>\n ))}\n </VStack>\n )}\n </Box>\n </Box>\n )}\n\n {/* Error message */}\n {error && (\n <Typography variant=\"caption\" color=\"error\" className=\"mt-1\">\n {error}\n </Typography>\n )}\n </div>\n );\n};\n\nRelationSelect.displayName = \"RelationSelect\";\n","/**\n * SearchInput Molecule Component\n *\n * A search input component with icon, clear button, and loading state.\n * Uses Input, Icon, Button, and Spinner atoms.\n *\n * Supports Query Singleton pattern via `query` prop for std/Search behavior.\n */\n\nimport React, { useState, useCallback, useEffect } from 'react';\nimport { Search } from 'lucide-react';\nimport { Input } from '../atoms/Input';\nimport { Spinner } from '../atoms/Spinner';\nimport { cn } from '../../lib/cn';\nimport { useEventBus } from '../../hooks/useEventBus';\nimport { useQuerySingleton } from '../../hooks/useQuerySingleton';\n\nexport interface SearchInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type'> {\n /**\n * Search value (controlled mode)\n */\n value?: string;\n\n /**\n * Callback when search value changes\n */\n onSearch?: (value: string) => void;\n\n /**\n * Debounce delay in milliseconds\n * @default 300\n */\n debounceMs?: number;\n\n /**\n * Show loading state\n * @default false\n */\n isLoading?: boolean;\n\n /**\n * Placeholder text\n * @default 'Search...'\n */\n placeholder?: string;\n\n /**\n * Show clear button\n * @default true\n */\n clearable?: boolean;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Event name to dispatch on search (schema metadata, wired by trait)\n * This is metadata used by the trait generator, not by the component.\n */\n event?: string;\n\n /**\n * Entity type for context-aware search.\n * When provided, search events include entity context.\n */\n entity?: string;\n\n /**\n * Query singleton binding for state management.\n * When provided, syncs search state with the query singleton.\n * Example: \"@TaskQuery\"\n */\n query?: string;\n}\n\nexport const SearchInput: React.FC<SearchInputProps> = ({\n value,\n onSearch,\n debounceMs = 300,\n isLoading = false,\n placeholder = 'Search...',\n clearable = true,\n className,\n event,\n entity,\n query,\n ...props\n}) => {\n const eventBus = useEventBus();\n const queryState = useQuerySingleton(query);\n\n // Initialize from query singleton or controlled value\n const initialValue = queryState?.search ?? value ?? '';\n const [searchValue, setSearchValue] = useState(initialValue);\n const [debounceTimer, setDebounceTimer] = useState<NodeJS.Timeout | null>(null);\n\n // Sync with query singleton changes\n useEffect(() => {\n if (queryState && queryState.search !== searchValue) {\n setSearchValue(queryState.search);\n }\n }, [queryState?.search]);\n\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setSearchValue(newValue);\n\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n\n const timer = setTimeout(() => {\n // Update query singleton if connected\n if (queryState) {\n queryState.setSearch(newValue);\n }\n\n // Call callback if provided\n onSearch?.(newValue);\n\n // Emit event if event name is provided (schema-driven)\n if (event) {\n eventBus.emit(`UI:${event}`, { searchTerm: newValue, entity });\n }\n\n // Emit generic UI:SEARCH for entity lists/tables/grids when entity, event, or query is configured\n if (event || entity || query) {\n eventBus.emit('UI:SEARCH', { searchTerm: newValue, entity, query });\n }\n }, debounceMs);\n\n setDebounceTimer(timer);\n }, [onSearch, debounceMs, debounceTimer, event, entity, query, eventBus, queryState]);\n\n const handleClear = useCallback(() => {\n setSearchValue('');\n\n // Update query singleton if connected\n if (queryState) {\n queryState.setSearch('');\n }\n\n onSearch?.('');\n\n // Emit clear search event\n if (event || query) {\n eventBus.emit('UI:CLEAR_SEARCH', { searchTerm: '', entity, query });\n }\n\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n }, [onSearch, debounceTimer, event, query, entity, eventBus, queryState]);\n\n // Sync with controlled value prop\n useEffect(() => {\n if (value !== undefined && value !== searchValue && !query) {\n setSearchValue(value);\n }\n }, [value, query]);\n\n useEffect(() => {\n return () => {\n if (debounceTimer) {\n clearTimeout(debounceTimer);\n }\n };\n }, [debounceTimer]);\n\n return (\n <div className={cn('relative', className)}>\n <Input\n type=\"search\"\n value={searchValue}\n onChange={handleChange}\n placeholder={placeholder}\n icon={Search}\n clearable={clearable && !isLoading}\n onClear={handleClear}\n disabled={isLoading}\n className=\"pr-10\"\n {...props}\n />\n {isLoading && (\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2\">\n <Spinner size=\"sm\" color=\"primary\" />\n </div>\n )}\n </div>\n );\n};\n\nSearchInput.displayName = 'SearchInput';\n\n","/**\n * SidePanel Molecule Component\n *\n * A side panel that slides in from the right (or left) with header and content.\n * Uses Button, Typography atoms.\n */\n\nimport React from \"react\";\nimport { X } from \"lucide-react\";\nimport { Button } from \"../atoms/Button\";\nimport { Typography } from \"../atoms/Typography\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface SidePanelProps {\n /**\n * Panel title\n */\n title: string;\n\n /**\n * Panel content\n */\n children: React.ReactNode;\n\n /**\n * Is panel open\n */\n isOpen: boolean;\n\n /**\n * On close handler\n */\n onClose: () => void;\n\n /**\n * Panel width\n * @default 'w-96'\n */\n width?: string;\n\n /**\n * Panel position\n * @default 'right'\n */\n position?: \"left\" | \"right\";\n\n /**\n * Show overlay on mobile\n * @default true\n */\n showOverlay?: boolean;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const SidePanel: React.FC<SidePanelProps> = ({\n title,\n children,\n isOpen,\n onClose,\n width = \"w-96\",\n position = \"right\",\n showOverlay = true,\n className,\n}) => {\n if (!isOpen) return null;\n\n return (\n <>\n {/* Overlay */}\n {showOverlay && (\n <div\n className=\"fixed inset-0 bg-white/80 backdrop-blur-sm z-40 lg:hidden\"\n onClick={onClose}\n />\n )}\n\n {/* Side Panel */}\n <aside\n className={cn(\n \"fixed top-16 lg:top-0 bottom-0 z-[60]\",\n \"bg-[var(--color-card)]\",\n \"border-l-2 border-[var(--color-border)]\",\n position === \"left\" && \"border-l-0 border-r-2\",\n \"flex flex-col\",\n \"transition-transform duration-300 ease-in-out\",\n width,\n position === \"right\" ? \"right-0\" : \"left-0\",\n className,\n )}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between p-4 border-b-2 border-[var(--color-border)] sticky top-0 bg-[var(--color-card)] z-10\">\n <Typography variant=\"h6\">{title}</Typography>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={X}\n onClick={onClose}\n aria-label=\"Close panel\"\n >\n <span className=\"sr-only\">Close</span>\n </Button>\n </div>\n\n {/* Content */}\n <div className=\"p-4 flex-1 overflow-y-auto\">{children}</div>\n </aside>\n </>\n );\n};\n\nSidePanel.displayName = \"SidePanel\";\n","/**\n * SimpleGrid Component\n * \n * A simplified grid that automatically adjusts columns based on available space.\n * Perfect for card layouts and item collections.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type SimpleGridGap = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface SimpleGridProps {\n /** Minimum width of each child (e.g., 200, \"200px\", \"15rem\") */\n minChildWidth?: number | string;\n /** Maximum number of columns */\n maxCols?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Exact number of columns (disables auto-fit) */\n cols?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Gap between items */\n gap?: SimpleGridGap;\n /** Custom class name */\n className?: string;\n /** Children elements */\n children: React.ReactNode;\n}\n\nconst gapStyles: Record<SimpleGridGap, string> = {\n none: 'gap-0',\n xs: 'gap-1',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n};\n\nconst colStyles = {\n 1: 'grid-cols-1',\n 2: 'grid-cols-2',\n 3: 'grid-cols-3',\n 4: 'grid-cols-4',\n 5: 'grid-cols-5',\n 6: 'grid-cols-6',\n};\n\n/**\n * SimpleGrid - Auto-responsive grid layout\n */\nexport const SimpleGrid: React.FC<SimpleGridProps> = ({\n minChildWidth = 250,\n maxCols,\n cols,\n gap = 'md',\n className,\n children,\n}) => {\n // If exact cols specified, use fixed grid\n if (cols) {\n return (\n <div className={cn('grid', colStyles[cols], gapStyles[gap], className)}>\n {children}\n </div>\n );\n }\n\n // Otherwise use auto-fit with minChildWidth\n const minWidth = typeof minChildWidth === 'number' \n ? `${minChildWidth}px` \n : minChildWidth;\n\n // Calculate max column constraint if provided\n const templateColumns = maxCols\n ? `repeat(auto-fit, minmax(min(${minWidth}, 100%), 1fr))`\n : `repeat(auto-fit, minmax(${minWidth}, 1fr))`;\n\n return (\n <div\n className={cn('grid', gapStyles[gap], className)}\n style={{ \n gridTemplateColumns: templateColumns,\n // Limit max columns if specified\n ...(maxCols && { maxWidth: `calc(${maxCols} * (${minWidth} + var(--gap, 1rem)))` }),\n }}\n >\n {children}\n </div>\n );\n};\n\nexport default SimpleGrid;\n\n","/**\n * Tabs Molecule Component\n * \n * A tabbed interface component with keyboard navigation and badge support.\n * Uses theme-aware CSS variables for styling.\n */\n\nimport React, { useState, useRef } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Icon } from '../atoms/Icon';\nimport { Badge } from '../atoms/Badge';\nimport { Typography } from '../atoms/Typography';\nimport { cn } from '../../lib/cn';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface TabItem {\n /** Tab ID */\n id: string;\n /** Tab label */\n label: string;\n /** Tab content - optional for event-driven tabs */\n content?: React.ReactNode;\n /** Tab icon */\n icon?: LucideIcon;\n /** Tab badge */\n badge?: string | number;\n /** Disable tab */\n disabled?: boolean;\n /** Event to emit when tab is clicked (for trait state machine integration) */\n event?: string;\n /** Whether this tab is currently active (for controlled tabs) */\n active?: boolean;\n}\n\nexport interface TabsProps {\n /** Tab items */\n items?: TabItem[];\n /** Tab items (alias for items - used by generated code) */\n tabs?: TabItem[];\n /** Default active tab ID */\n defaultActiveTab?: string;\n /** Controlled active tab ID */\n activeTab?: string;\n /** Callback when tab changes */\n onTabChange?: (tabId: string) => void;\n /** Tab variant */\n variant?: 'default' | 'pills' | 'underline';\n /** Tab orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Additional CSS classes */\n className?: string;\n}\n\nexport const Tabs: React.FC<TabsProps> = ({\n items,\n tabs,\n defaultActiveTab,\n activeTab: controlledActiveTab,\n onTabChange,\n variant = 'default',\n orientation = 'horizontal',\n className,\n}) => {\n // Guard against undefined or empty items - support both 'items' and 'tabs' props\n const safeItems = items ?? tabs ?? [];\n const eventBus = useEventBus();\n\n // Find initially active tab (check for active: true in items)\n const initialActive = safeItems.find(item => item.active)?.id;\n\n const [internalActiveTab, setInternalActiveTab] = useState(\n defaultActiveTab || initialActive || safeItems[0]?.id || ''\n );\n const activeTab = controlledActiveTab !== undefined ? controlledActiveTab : internalActiveTab;\n const tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n const handleTabChange = (tabId: string, tabEvent?: string) => {\n if (controlledActiveTab === undefined) {\n setInternalActiveTab(tabId);\n }\n onTabChange?.(tabId);\n\n // Emit event if tab has event configured (for trait state machine integration)\n if (tabEvent) {\n eventBus.emit(`UI:${tabEvent}`, { tabId });\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent, index: number) => {\n if (e.key === 'ArrowLeft' || e.key === 'ArrowRight') {\n e.preventDefault();\n const direction = e.key === 'ArrowLeft' ? -1 : 1;\n const nextIndex = (index + direction + safeItems.length) % safeItems.length;\n const nextTab = safeItems[nextIndex];\n if (nextTab && !nextTab.disabled) {\n handleTabChange(nextTab.id);\n tabRefs.current[nextTab.id]?.focus();\n }\n } else if (e.key === 'Home' || e.key === 'End') {\n e.preventDefault();\n const targetIndex = e.key === 'Home' ? 0 : safeItems.length - 1;\n const targetTab = safeItems[targetIndex];\n if (targetTab && !targetTab.disabled) {\n handleTabChange(targetTab.id);\n tabRefs.current[targetTab.id]?.focus();\n }\n }\n };\n\n const activeTabContent = safeItems.find(item => item.id === activeTab)?.content;\n\n // Graceful handling for empty tabs\n if (safeItems.length === 0) {\n return (\n <div className={cn('w-full', className)}>\n <div className=\"text-[var(--color-muted-foreground)] text-sm py-4\">\n No tabs available\n </div>\n </div>\n );\n }\n\n // Theme-aware variant styles\n const variantClasses = {\n default: [\n 'border-b-[length:var(--border-width)] border-transparent',\n 'hover:border-[var(--color-muted-foreground)]',\n 'data-[active=true]:border-[var(--color-primary)]',\n ].join(' '),\n pills: [\n 'rounded-[var(--radius-sm)]',\n 'data-[active=true]:bg-[var(--color-primary)]',\n 'data-[active=true]:text-[var(--color-primary-foreground)]',\n ].join(' '),\n underline: [\n 'border-b-[length:var(--border-width)] border-transparent',\n 'data-[active=true]:border-[var(--color-primary)]',\n ].join(' '),\n };\n\n return (\n <div className={cn('w-full', className)}>\n <div\n role=\"tablist\"\n className={cn(\n 'flex',\n orientation === 'horizontal'\n ? 'flex-row border-b-[length:var(--border-width)] border-[var(--color-border)]'\n : 'flex-col border-r-[length:var(--border-width)] border-[var(--color-border)]',\n variant === 'pills' && 'gap-1 p-1 bg-[var(--color-muted)] border-0 rounded-[var(--radius-md)]',\n variant === 'underline' && orientation === 'vertical' && 'border-b-0'\n )}\n >\n {safeItems.map((item, index) => {\n const isActive = item.id === activeTab;\n const isDisabled = item.disabled;\n\n return (\n <button\n key={item.id}\n ref={(el) => {\n tabRefs.current[item.id] = el;\n }}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${item.id}`}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n onClick={() => !isDisabled && handleTabChange(item.id, item.event)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n data-active={isActive}\n className={cn(\n 'flex items-center gap-2 px-4 py-2 text-sm font-medium transition-all',\n 'focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2',\n 'disabled:opacity-50 disabled:cursor-not-allowed',\n variantClasses[variant],\n isActive\n ? 'text-[var(--color-foreground)] font-bold'\n : 'text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]'\n )}\n >\n {item.icon && <Icon icon={item.icon} size=\"sm\" />}\n <Typography variant=\"small\" weight={isActive ? 'semibold' : 'normal'}>\n {item.label}\n </Typography>\n {item.badge !== undefined && (\n <Badge variant=\"default\" size=\"sm\">\n {item.badge}\n </Badge>\n )}\n </button>\n );\n })}\n </div>\n\n <div\n role=\"tabpanel\"\n id={`tabpanel-${activeTab}`}\n aria-labelledby={`tab-${activeTab}`}\n className=\"mt-4\"\n >\n {activeTabContent}\n </div>\n </div>\n );\n};\n\nTabs.displayName = 'Tabs';\n","/**\n * Toast Molecule Component\n *\n * A toast notification component with auto-dismiss and action buttons.\n * Uses theme-aware CSS variables for styling.\n */\n\nimport React, { useEffect } from \"react\";\nimport { X, CheckCircle, AlertCircle, AlertTriangle, Info } from \"lucide-react\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Badge } from \"../atoms/Badge\";\nimport { cn } from \"../../lib/cn\";\n\nexport type ToastVariant = \"success\" | \"error\" | \"info\" | \"warning\";\n\nexport interface ToastProps {\n /** Toast variant */\n variant?: ToastVariant;\n /** Toast message */\n message: string;\n /** Toast title (optional) */\n title?: string;\n /** Auto-dismiss duration in milliseconds (0 = no auto-dismiss) */\n duration?: number;\n /** Show dismiss button */\n dismissible?: boolean;\n /** Callback when toast is dismissed */\n onDismiss?: () => void;\n /** Action button label */\n actionLabel?: string;\n /** Action button click handler */\n onAction?: () => void;\n /** Badge count (optional) */\n badge?: string | number;\n /** Additional CSS classes */\n className?: string;\n}\n\n// Theme-aware variant styles\nconst variantClasses: Record<ToastVariant, string> = {\n success:\n \"bg-[var(--color-card)] border-[length:var(--border-width)] border-[var(--color-success)]\",\n error:\n \"bg-[var(--color-card)] border-[length:var(--border-width)] border-[var(--color-error)]\",\n info: \"bg-[var(--color-card)] border-[length:var(--border-width)] border-[var(--color-info)]\",\n warning:\n \"bg-[var(--color-card)] border-[length:var(--border-width)] border-[var(--color-warning)]\",\n};\n\nconst iconMap: Record<ToastVariant, typeof Info> = {\n success: CheckCircle,\n error: AlertCircle,\n info: Info,\n warning: AlertTriangle,\n};\n\nconst iconColors: Record<ToastVariant, string> = {\n success: \"text-[var(--color-success)]\",\n error: \"text-[var(--color-error)]\",\n info: \"text-[var(--color-info)]\",\n warning: \"text-[var(--color-warning)]\",\n};\n\nexport const Toast: React.FC<ToastProps> = ({\n variant = \"info\",\n message,\n title,\n duration = 5000,\n dismissible = true,\n onDismiss,\n actionLabel,\n onAction,\n badge,\n className,\n}) => {\n useEffect(() => {\n if (duration <= 0 || !onDismiss) {\n return;\n }\n\n const timer = setTimeout(() => {\n onDismiss();\n }, duration);\n\n return () => clearTimeout(timer);\n }, [duration, onDismiss]);\n\n return (\n <div\n className={cn(\n \"border-l-4 p-4 shadow-[var(--shadow-main)] min-w-[300px] max-w-md\",\n \"rounded-[var(--radius-sm)]\",\n variantClasses[variant],\n className,\n )}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n <div className=\"flex-shrink-0 mt-0.5\">\n <Icon\n icon={iconMap[variant]}\n size=\"md\"\n className={iconColors[variant]}\n />\n </div>\n\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography variant=\"h6\" className=\"mb-1\">\n {title}\n </Typography>\n )}\n <Typography variant=\"small\" className=\"text-sm\">\n {message}\n </Typography>\n\n {actionLabel && onAction && (\n <div className=\"mt-3\">\n <Button variant=\"ghost\" size=\"sm\" onClick={onAction}>\n {actionLabel}\n </Button>\n </div>\n )}\n </div>\n\n <div className=\"flex items-start gap-2 flex-shrink-0\">\n {badge !== undefined && (\n <Badge variant=\"default\" size=\"sm\">\n {badge}\n </Badge>\n )}\n {dismissible && (\n <button\n type=\"button\"\n onClick={onDismiss}\n className={cn(\n \"flex-shrink-0 p-1 transition-colors rounded-[var(--radius-sm)]\",\n \"hover:bg-[var(--color-muted)]\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2\",\n )}\n aria-label=\"Dismiss toast\"\n >\n <Icon icon={X} size=\"sm\" />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nToast.displayName = \"Toast\";\n","/**\n * Tooltip Molecule Component\n * \n * A tooltip component with position variants and delay options.\n * Uses theme-aware CSS variables for styling.\n */\n\nimport React, { useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\nimport { Typography } from '../atoms/Typography';\nimport { cn } from '../../lib/cn';\n\nexport type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface TooltipProps {\n /** Tooltip content */\n content: React.ReactNode;\n /** Tooltip trigger element (ReactElement or ReactNode that will be wrapped in span) */\n children: React.ReactNode;\n /** Tooltip position */\n position?: TooltipPosition;\n /** Show delay in milliseconds */\n delay?: number;\n /** Hide delay in milliseconds */\n hideDelay?: number;\n /** Show arrow */\n showArrow?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst positionClasses: Record<TooltipPosition, string> = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2',\n bottom: 'top-full left-1/2 -translate-x-1/2 mt-2',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2',\n right: 'left-full top-1/2 -translate-y-1/2 ml-2',\n};\n\n// Arrow colors use CSS variables\nconst arrowClasses: Record<TooltipPosition, string> = {\n top: 'top-full left-1/2 -translate-x-1/2 border-t-[var(--color-primary)] border-l-transparent border-r-transparent border-b-transparent',\n bottom: 'bottom-full left-1/2 -translate-x-1/2 border-b-[var(--color-primary)] border-l-transparent border-r-transparent border-t-transparent',\n left: 'left-full top-1/2 -translate-y-1/2 border-l-[var(--color-primary)] border-t-transparent border-b-transparent border-r-transparent',\n right: 'right-full top-1/2 -translate-y-1/2 border-r-[var(--color-primary)] border-t-transparent border-b-transparent border-l-transparent',\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = 'top',\n delay = 200,\n hideDelay = 0,\n showArrow = true,\n className,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [triggerRect, setTriggerRect] = useState<DOMRect | null>(null);\n const triggerRef = useRef<HTMLElement>(null);\n const tooltipRef = useRef<HTMLDivElement>(null);\n const showTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n const hideTimeoutRef = useRef<NodeJS.Timeout | null>(null);\n\n const updatePosition = () => {\n if (triggerRef.current) {\n setTriggerRect(triggerRef.current.getBoundingClientRect());\n }\n };\n\n const handleMouseEnter = () => {\n if (hideTimeoutRef.current) {\n clearTimeout(hideTimeoutRef.current);\n }\n updatePosition();\n showTimeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n if (showTimeoutRef.current) {\n clearTimeout(showTimeoutRef.current);\n }\n hideTimeoutRef.current = setTimeout(() => {\n setIsVisible(false);\n }, hideDelay);\n };\n\n useEffect(() => {\n if (isVisible) {\n updatePosition();\n }\n }, [isVisible]);\n\n useEffect(() => {\n return () => {\n if (showTimeoutRef.current) clearTimeout(showTimeoutRef.current);\n if (hideTimeoutRef.current) clearTimeout(hideTimeoutRef.current);\n };\n }, []);\n\n // Wrap non-element children in a span\n const triggerElement = React.isValidElement(children) ? children : <span>{children}</span>;\n\n const trigger = React.cloneElement(triggerElement as React.ReactElement<any>, {\n ref: triggerRef,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onFocus: handleMouseEnter,\n onBlur: handleMouseLeave,\n });\n\n const tooltipContent = isVisible && triggerRect ? (\n <div\n ref={tooltipRef}\n className={cn(\n 'fixed z-50 px-3 py-2 max-w-xs',\n 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)]',\n 'shadow-[var(--shadow-sm)] rounded-[var(--radius-sm)]',\n 'text-sm pointer-events-none',\n 'break-words whitespace-normal',\n 'h-auto min-h-fit',\n positionClasses[position],\n className\n )}\n style={{\n left: position === 'left' || position === 'right'\n ? triggerRect.left + (position === 'left' ? 0 : triggerRect.width)\n : triggerRect.left + triggerRect.width / 2,\n top: position === 'top' || position === 'bottom'\n ? triggerRect.top + (position === 'top' ? 0 : triggerRect.height)\n : triggerRect.top + triggerRect.height / 2,\n transform: position === 'top' || position === 'bottom'\n ? 'translateX(-50%)'\n : position === 'left' || position === 'right'\n ? 'translateY(-50%)'\n : 'none',\n }}\n role=\"tooltip\"\n >\n <div className=\"w-full break-words whitespace-normal h-auto\">\n {typeof content === 'string' ? (\n <Typography variant=\"small\" className=\"text-[var(--color-primary-foreground)] break-words whitespace-normal\">\n {content}\n </Typography>\n ) : (\n <div className=\"break-words whitespace-normal\">\n {content}\n </div>\n )}\n </div>\n {showArrow && (\n <div\n className={cn(\n 'absolute w-0 h-0 border-4',\n arrowClasses[position]\n )}\n />\n )}\n </div>\n ) : null;\n\n return (\n <>\n {trigger}\n {typeof window !== 'undefined' && tooltipContent\n ? createPortal(tooltipContent, document.body)\n : tooltipContent}\n </>\n );\n};\n\nTooltip.displayName = 'Tooltip';\n","/**\n * Drawer Molecule Component\n *\n * A slide-in drawer component for displaying secondary content.\n * Used by the UI Slot system for render_ui effects targeting the drawer slot.\n *\n * Features:\n * - Left/right positioning\n * - Configurable width\n * - Overlay backdrop\n * - Click-outside to dismiss\n * - Slide animation\n * - Escape key to close\n *\n * @packageDocumentation\n */\n\nimport React, { useEffect, useRef } from \"react\";\nimport { X } from \"lucide-react\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Box } from \"../atoms/Box\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Overlay } from \"../atoms/Overlay\";\nimport { cn } from \"../../lib/cn\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport type DrawerPosition = \"left\" | \"right\";\nexport type DrawerSize = \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport interface DrawerProps {\n /** Whether the drawer is open (defaults to true when rendered by slot wrapper) */\n isOpen?: boolean;\n /** Callback when drawer should close (injected by slot wrapper) */\n onClose?: () => void;\n /** Drawer title */\n title?: string;\n /** Drawer content (can be empty if using slot content) */\n children?: React.ReactNode;\n /** Footer content */\n footer?: React.ReactNode;\n /** Position (left or right) */\n position?: DrawerPosition;\n /** Width (CSS value or preset size) */\n width?: string | DrawerSize;\n /** Show close button */\n showCloseButton?: boolean;\n /** Close on overlay click */\n closeOnOverlayClick?: boolean;\n /** Close on escape key */\n closeOnEscape?: boolean;\n /** Additional class name */\n className?: string;\n}\n\n// ============================================================================\n// Size Presets\n// ============================================================================\n\nconst sizeWidths: Record<DrawerSize, string> = {\n sm: \"w-80\", // 320px\n md: \"w-96\", // 384px\n lg: \"w-[480px]\", // 480px\n xl: \"w-[640px]\", // 640px\n full: \"w-screen\",\n};\n\n// ============================================================================\n// Component\n// ============================================================================\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen = true,\n onClose = () => {},\n title,\n children = null,\n footer,\n position = \"right\",\n width = \"md\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n}) => {\n const drawerRef = useRef<HTMLDivElement>(null);\n const previousActiveElement = useRef<HTMLElement | null>(null);\n\n // Focus management\n useEffect(() => {\n if (isOpen) {\n previousActiveElement.current = document.activeElement as HTMLElement;\n const focusableElements = drawerRef.current?.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n const firstElement = focusableElements?.[0] as HTMLElement;\n firstElement?.focus();\n } else {\n previousActiveElement.current?.focus();\n }\n }, [isOpen]);\n\n // Escape key handler\n useEffect(() => {\n if (!isOpen || !closeOnEscape) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when open\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n // Resolve width\n const widthClass = width in sizeWidths ? sizeWidths[width as DrawerSize] : \"\";\n const widthStyle = width in sizeWidths ? undefined : { width };\n\n // Position classes\n const positionClasses =\n position === \"right\" ? \"right-0 border-l\" : \"left-0 border-r\";\n\n // Animation classes\n const animationClasses =\n position === \"right\" ? \"animate-slide-in-right\" : \"animate-slide-in-left\";\n\n return (\n <>\n {/* Overlay */}\n <Overlay\n isVisible={isOpen}\n onClick={handleOverlayClick}\n className=\"z-40\"\n />\n\n {/* Drawer */}\n <Box\n ref={drawerRef}\n bg=\"surface\"\n border\n shadow=\"xl\"\n className={cn(\n \"fixed top-0 bottom-0 z-50\",\n \"flex flex-col max-h-screen\",\n positionClasses,\n widthClass,\n animationClasses,\n className,\n )}\n style={widthStyle}\n role=\"dialog\"\n aria-modal=\"true\"\n {...(title && { \"aria-labelledby\": \"drawer-title\" })}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div\n className={cn(\n \"px-6 py-4 flex items-center justify-between shrink-0\",\n \"border-b-[length:var(--border-width)] border-[var(--color-border)]\",\n )}\n >\n {title && (\n <Typography variant=\"h4\" as=\"h2\" id=\"drawer-title\">\n {title}\n </Typography>\n )}\n {showCloseButton && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"p-1 transition-colors rounded-[var(--radius-sm)]\",\n \"hover:bg-[var(--color-muted)]\",\n !title && \"ml-auto\",\n )}\n aria-label=\"Close drawer\"\n >\n <Icon icon={X} size=\"md\" />\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 overflow-y-auto p-6\">{children}</div>\n\n {/* Footer */}\n {footer && (\n <div\n className={cn(\n \"px-6 py-4 shrink-0 bg-[var(--color-muted)]\",\n \"border-t-[length:var(--border-width)] border-[var(--color-border)]\",\n )}\n >\n {footer}\n </div>\n )}\n </Box>\n\n {/* Animation styles */}\n <style>{`\n @keyframes slide-in-right {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n }\n @keyframes slide-in-left {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n }\n .animate-slide-in-right {\n animation: slide-in-right 0.3s ease-out;\n }\n .animate-slide-in-left {\n animation: slide-in-left 0.3s ease-out;\n }\n `}</style>\n </>\n );\n};\n\nDrawer.displayName = \"Drawer\";\n","/**\n * WizardProgress Component\n *\n * Step progress indicator for multi-step wizards.\n * Shows current step, completed steps, and allows navigation to completed steps.\n *\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React from \"react\";\nimport { Check } from \"lucide-react\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Box } from \"../atoms/Box\";\nimport { Icon } from \"../atoms/Icon\";\nimport { cn } from \"../../lib/cn\";\n\n/**\n * Step info needed by WizardProgress.\n * Compatible with WizardContainer's WizardStep (subset of fields).\n */\nexport interface WizardProgressStep {\n /** Step identifier */\n id: string;\n /** Step title */\n title: string;\n /** Step description (optional) */\n description?: string;\n}\n\nexport interface WizardProgressProps {\n /** Step definitions (compatible with WizardContainer's WizardStep) */\n steps: WizardProgressStep[];\n /** Current step index (0-based) */\n currentStep: number;\n /** Callback when a completed step is clicked */\n onStepClick?: (stepIndex: number) => void;\n /** Allow clicking on completed steps to navigate back */\n allowNavigation?: boolean;\n /** Compact mode (smaller, no titles) */\n compact?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * WizardProgress - Step progress indicator\n */\nexport const WizardProgress: React.FC<WizardProgressProps> = ({\n steps,\n currentStep,\n onStepClick,\n allowNavigation = true,\n compact = false,\n className,\n}) => {\n const totalSteps = steps.length;\n\n const handleStepClick = (index: number) => {\n const isCompleted = index < currentStep;\n if (isCompleted && allowNavigation && onStepClick) {\n onStepClick(index);\n }\n };\n\n return (\n <Box\n border\n className={cn(\n \"border-b-2 border-x-0 border-t-0 border-[var(--color-border)]\",\n compact ? \"px-4 py-2\" : \"px-6 py-4\",\n className,\n )}\n >\n <div className=\"flex items-center gap-2\">\n {steps.map((step, index) => {\n const isActive = index === currentStep;\n const isCompleted = index < currentStep;\n\n return (\n <React.Fragment key={step.id}>\n {/* Step indicator */}\n <button\n onClick={() => handleStepClick(index)}\n disabled={!isCompleted || !allowNavigation}\n className={cn(\n \"flex items-center justify-center text-sm font-bold transition-colors\",\n \"border-2 border-[var(--color-border)]\",\n compact ? \"w-6 h-6\" : \"w-8 h-8\",\n isActive &&\n \"bg-[var(--color-foreground)] text-[var(--color-background)]\",\n isCompleted &&\n \"bg-[var(--color-foreground)] text-[var(--color-background)] cursor-pointer hover:bg-[var(--color-muted-foreground)]\",\n !isActive &&\n !isCompleted &&\n \"bg-[var(--color-card)] text-[var(--color-foreground)]\",\n )}\n >\n {isCompleted ? <Icon icon={Check} size=\"sm\" /> : index + 1}\n </button>\n\n {/* Step title (on desktop, not in compact mode) */}\n {!compact && (\n <div\n className={cn(\n \"hidden md:block\",\n isActive\n ? \"text-[var(--color-foreground)] font-bold\"\n : \"text-[var(--color-muted-foreground)]\",\n )}\n >\n <Typography\n variant=\"small\"\n weight={isActive ? \"bold\" : \"normal\"}\n >\n {step.title}\n </Typography>\n </div>\n )}\n\n {/* Connector line */}\n {index < totalSteps - 1 && (\n <div\n className={cn(\n \"flex-1 h-0.5\",\n index < currentStep\n ? \"bg-[var(--color-foreground)]\"\n : \"bg-[var(--color-muted)]\",\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n </Box>\n );\n};\n\nWizardProgress.displayName = \"WizardProgress\";\n\nexport default WizardProgress;\n","/**\n * WizardNavigation Component\n *\n * Navigation buttons for multi-step wizards.\n * Includes Back, Next, and Complete buttons with proper state handling.\n *\n * Emits events via useEventBus for trait integration.\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { Button } from \"../atoms/Button\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Box } from \"../atoms/Box\";\nimport { Icon } from \"../atoms/Icon\";\nimport { cn } from \"../../lib/cn\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\n\n/**\n * Safe event bus hook that works outside EventBusProvider context.\n * Returns a no-op emit function if not in EventBusProvider context.\n */\nfunction useSafeEventBus() {\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useEventBus();\n } catch {\n // Outside EventBusProvider context - return no-op\n return { emit: () => {}, on: () => () => {}, once: () => {} };\n }\n}\n\nexport interface WizardNavigationProps {\n /** Current step index (0-based) */\n currentStep: number;\n /** Total number of steps */\n totalSteps: number;\n /** Whether the current step is valid (enables Next/Complete) */\n isValid?: boolean;\n /** Show the Back button */\n showBack?: boolean;\n /** Show the Next button */\n showNext?: boolean;\n /** Show the Complete button (on last step) */\n showComplete?: boolean;\n /** Custom label for Back button */\n backLabel?: string;\n /** Custom label for Next button */\n nextLabel?: string;\n /** Custom label for Complete button */\n completeLabel?: string;\n /** Event to emit on Back click */\n onBack?: string;\n /** Event to emit on Next click */\n onNext?: string;\n /** Event to emit on Complete click */\n onComplete?: string;\n /** Direct callback for Back (alternative to event) */\n onBackClick?: () => void;\n /** Direct callback for Next (alternative to event) */\n onNextClick?: () => void;\n /** Direct callback for Complete (alternative to event) */\n onCompleteClick?: () => void;\n /** Compact mode (smaller padding) */\n compact?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * WizardNavigation - Wizard navigation buttons\n */\nexport const WizardNavigation: React.FC<WizardNavigationProps> = ({\n currentStep,\n totalSteps,\n isValid = true,\n showBack = true,\n showNext = true,\n showComplete = true,\n backLabel = \"Back\",\n nextLabel = \"Next\",\n completeLabel = \"Complete\",\n onBack = \"WIZARD_BACK\",\n onNext = \"WIZARD_NEXT\",\n onComplete = \"WIZARD_COMPLETE\",\n onBackClick,\n onNextClick,\n onCompleteClick,\n compact = false,\n className,\n}) => {\n const eventBus = useSafeEventBus();\n\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === totalSteps - 1;\n\n const handleBack = () => {\n if (onBackClick) {\n onBackClick();\n } else {\n eventBus.emit(`UI:${onBack}`, { currentStep, totalSteps });\n }\n };\n\n const handleNext = () => {\n if (onNextClick) {\n onNextClick();\n } else {\n eventBus.emit(`UI:${onNext}`, { currentStep, totalSteps });\n }\n };\n\n const handleComplete = () => {\n if (onCompleteClick) {\n onCompleteClick();\n } else {\n eventBus.emit(`UI:${onComplete}`, { currentStep, totalSteps });\n }\n };\n\n return (\n <Box\n border\n className={cn(\n \"border-t-2 border-x-0 border-b-0 border-[var(--color-border)] flex justify-between items-center\",\n compact ? \"px-4 py-2\" : \"px-6 py-4\",\n className,\n )}\n >\n {/* Back button */}\n {showBack ? (\n <Button variant=\"secondary\" onClick={handleBack} disabled={isFirstStep}>\n <Icon icon={ChevronLeft} size=\"sm\" />\n {backLabel}\n </Button>\n ) : (\n <div /> // Spacer for flex justify-between\n )}\n\n {/* Step counter */}\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"caption\" className=\"text-neutral-500\">\n Step {currentStep + 1} of {totalSteps}\n </Typography>\n </div>\n\n {/* Next/Complete button */}\n {isLastStep && showComplete ? (\n <Button variant=\"primary\" onClick={handleComplete} disabled={!isValid}>\n {completeLabel}\n </Button>\n ) : showNext ? (\n <Button variant=\"primary\" onClick={handleNext} disabled={!isValid}>\n {nextLabel}\n <Icon icon={ChevronRight} size=\"sm\" />\n </Button>\n ) : (\n <div /> // Spacer for flex justify-between\n )}\n </Box>\n );\n};\n\nWizardNavigation.displayName = \"WizardNavigation\";\n\nexport default WizardNavigation;\n","/**\n * RepeatableFormSection\n *\n * A form section that can be repeated multiple times.\n * Used for collecting multiple entries (participants, findings, etc.)\n *\n * Enhanced with trackAddedInState for inspection audit trails.\n *\n * Event Contract:\n * - Emits: UI:SECTION_ADDED { sectionType, index, addedInState? }\n * - Emits: UI:SECTION_REMOVED { sectionType, index, itemId }\n */\n\nimport React, { useCallback } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Card } from \"../atoms/Card\";\nimport { Icon } from \"../atoms/Icon\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\n\nexport interface RepeatableItem {\n id: string;\n /** State in which this item was added (for audit trails) */\n addedInState?: string;\n /** Timestamp when item was added */\n addedAt?: string;\n [key: string]: unknown;\n}\n\nexport interface RepeatableFormSectionProps {\n /** Section type identifier */\n sectionType: string;\n /** Section title */\n title: string;\n /** Items in the section */\n items: RepeatableItem[];\n /** Render function for each item */\n renderItem: (item: RepeatableItem, index: number) => React.ReactNode;\n /** Minimum items required */\n minItems?: number;\n /** Maximum items allowed */\n maxItems?: number;\n /** Allow reordering */\n allowReorder?: boolean;\n /** Add button label */\n addLabel?: string;\n /** Empty state message */\n emptyMessage?: string;\n /** Read-only mode */\n readOnly?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Add handler */\n onAdd?: () => void;\n /** Remove handler */\n onRemove?: (itemId: string, index: number) => void;\n /** Reorder handler */\n onReorder?: (fromIndex: number, toIndex: number) => void;\n\n // Inspection-specific enhancements\n /** Track the state in which items are added (for inspection audit) */\n trackAddedInState?: boolean;\n /** Current inspection state (used when trackAddedInState is true) */\n currentState?: string;\n /** Show audit metadata (addedInState, addedAt) */\n showAuditInfo?: boolean;\n}\n\nexport const RepeatableFormSection: React.FC<RepeatableFormSectionProps> = ({\n sectionType,\n title,\n items,\n renderItem,\n minItems = 0,\n maxItems = Infinity,\n allowReorder = false,\n addLabel = \"Add Item\",\n emptyMessage = \"No items added yet\",\n readOnly = false,\n className,\n onAdd,\n onRemove,\n onReorder,\n trackAddedInState = false,\n currentState,\n showAuditInfo = false,\n}) => {\n const eventBus = useEventBus();\n\n const canAdd = !readOnly && items.length < maxItems;\n const canRemove = !readOnly && items.length > minItems;\n\n const handleAdd = useCallback(() => {\n onAdd?.();\n\n const eventPayload: Record<string, unknown> = {\n sectionType,\n index: items.length,\n };\n\n // Include state tracking info if enabled\n if (trackAddedInState && currentState) {\n eventPayload.addedInState = currentState;\n eventPayload.addedAt = new Date().toISOString();\n }\n\n eventBus.emit(\"UI:SECTION_ADDED\", eventPayload);\n }, [\n sectionType,\n items.length,\n onAdd,\n eventBus,\n trackAddedInState,\n currentState,\n ]);\n\n const handleRemove = useCallback(\n (itemId: string, index: number) => {\n onRemove?.(itemId, index);\n eventBus.emit(\"UI:SECTION_REMOVED\", { sectionType, index, itemId });\n },\n [sectionType, onRemove, eventBus],\n );\n\n return (\n <VStack gap=\"md\" className={cn(\"w-full\", className)}>\n {/* Header */}\n <HStack justify=\"between\" align=\"center\">\n <HStack gap=\"sm\" align=\"center\">\n <Typography variant=\"h4\">{title}</Typography>\n <Typography variant=\"caption\" color=\"muted\">\n ({items.length}\n {maxItems !== Infinity ? `/${maxItems}` : \"\"})\n </Typography>\n </HStack>\n\n {canAdd && (\n <Button variant=\"secondary\" size=\"sm\" onClick={handleAdd}>\n <Icon name=\"plus\" size=\"sm\" className=\"mr-1\" />\n {addLabel}\n </Button>\n )}\n </HStack>\n\n {/* Items */}\n {items.length === 0 ? (\n <Card className=\"p-6\">\n <VStack align=\"center\" gap=\"sm\">\n <Typography variant=\"body\" color=\"muted\">\n {emptyMessage}\n </Typography>\n {canAdd && (\n <Button variant=\"primary\" size=\"sm\" onClick={handleAdd}>\n <Icon name=\"plus\" size=\"sm\" className=\"mr-1\" />\n {addLabel}\n </Button>\n )}\n </VStack>\n </Card>\n ) : (\n <VStack gap=\"sm\">\n {items.map((item, index) => (\n <Card key={item.id} className=\"p-4\">\n <VStack gap=\"sm\">\n {/* Audit info header */}\n {showAuditInfo && (item.addedInState || item.addedAt) && (\n <HStack\n justify=\"between\"\n align=\"center\"\n className=\"pb-2 border-b border-[var(--color-border)]\"\n >\n <HStack gap=\"sm\" align=\"center\">\n {item.addedInState && (\n <Typography variant=\"caption\" color=\"muted\">\n Added in:{\" \"}\n <Typography\n as=\"span\"\n variant=\"caption\"\n weight=\"semibold\"\n >\n {item.addedInState}\n </Typography>\n </Typography>\n )}\n </HStack>\n {item.addedAt && (\n <Typography variant=\"caption\" color=\"muted\">\n {new Date(item.addedAt).toLocaleString()}\n </Typography>\n )}\n </HStack>\n )}\n\n <HStack gap=\"sm\" align=\"start\">\n {/* Drag handle */}\n {allowReorder && !readOnly && (\n <Box className=\"pt-2 cursor-move text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\">\n <Icon name=\"grip-vertical\" size=\"md\" />\n </Box>\n )}\n\n {/* Item content */}\n <Box className=\"flex-1\">{renderItem(item, index)}</Box>\n\n {/* Remove button */}\n {canRemove && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => handleRemove(item.id, index)}\n className=\"text-[var(--color-error)] hover:text-[var(--color-error)] hover:bg-[var(--color-error)]/10\"\n >\n <Icon name=\"trash-2\" size=\"sm\" />\n </Button>\n )}\n </HStack>\n </VStack>\n </Card>\n ))}\n </VStack>\n )}\n\n {/* Min items warning */}\n {items.length < minItems && (\n <Typography variant=\"caption\" color=\"warning\">\n At least {minItems} item{minItems !== 1 ? \"s\" : \"\"} required\n </Typography>\n )}\n </VStack>\n );\n};\n\nRepeatableFormSection.displayName = \"RepeatableFormSection\";\n","/**\n * ViolationAlert\n *\n * Displays inspection violations with law references and action types.\n * Used in inspection forms to show detected compliance violations.\n *\n * Action Types:\n * - measure: Corrective measure required (warning)\n * - admin: Administrative action (error)\n * - penalty: Penalty proceedings (error, severe)\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Icon } from \"../atoms/Icon\";\n\nexport interface ViolationRecord {\n /** Unique violation identifier */\n id: string;\n /** Law reference (e.g., \"ZVPOT-1\") */\n law: string;\n /** Article reference (e.g., \"14/1\") */\n article: string;\n /** Violation message */\n message: string;\n /** Action type determines severity */\n actionType: \"measure\" | \"admin\" | \"penalty\";\n /** Administrative action reference (e.g., \"ZVPOT-1 234/1-4\") */\n adminAction?: string;\n /** Penalty action reference (e.g., \"ZVPOT-1 240/1-9\") */\n penaltyAction?: string;\n /** Field that triggered this violation */\n fieldId?: string;\n /** Tab/form where violation occurred */\n tabId?: string;\n}\n\nexport interface ViolationAlertProps {\n /** Violation data */\n violation: ViolationRecord;\n /** Visual severity (derived from actionType if not specified) */\n severity?: \"warning\" | \"error\";\n /** Dismissible alert */\n dismissible?: boolean;\n /** Dismiss handler */\n onDismiss?: () => void;\n /** Navigate to the field that caused violation */\n onNavigateToField?: (fieldId: string) => void;\n /** Compact display mode */\n compact?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst actionTypeLabels: Record<string, string> = {\n measure: \"Corrective Measure\",\n admin: \"Administrative Action\",\n penalty: \"Penalty Proceedings\",\n};\n\nconst actionTypeIcons: Record<string, string> = {\n measure: \"alert-triangle\",\n admin: \"alert-circle\",\n penalty: \"shield-alert\",\n};\n\nexport const ViolationAlert: React.FC<ViolationAlertProps> = ({\n violation,\n severity,\n dismissible = false,\n onDismiss,\n onNavigateToField,\n compact = false,\n className,\n}) => {\n // Derive severity from actionType if not explicitly set\n const effectiveSeverity =\n severity ?? (violation.actionType === \"measure\" ? \"warning\" : \"error\");\n\n const bgColor =\n effectiveSeverity === \"warning\"\n ? \"bg-[var(--color-warning)]/10 border-[var(--color-warning)]/30\"\n : \"bg-[var(--color-error)]/10 border-[var(--color-error)]/30\";\n\n const textColor =\n effectiveSeverity === \"warning\"\n ? \"text-[var(--color-warning)]\"\n : \"text-[var(--color-error)]\";\n\n const iconColor =\n effectiveSeverity === \"warning\"\n ? \"text-[var(--color-warning)]\"\n : \"text-[var(--color-error)]\";\n\n if (compact) {\n return (\n <Box\n className={cn(\n \"px-3 py-2 rounded-[var(--radius-md)] border\",\n bgColor,\n className,\n )}\n >\n <HStack gap=\"sm\" align=\"center\" justify=\"between\">\n <HStack gap=\"sm\" align=\"center\">\n <Icon\n name={actionTypeIcons[violation.actionType]}\n size=\"sm\"\n className={iconColor}\n />\n <Typography\n variant=\"caption\"\n className={textColor}\n weight=\"semibold\"\n >\n {violation.law} Art. {violation.article}\n </Typography>\n <Typography variant=\"caption\" className={textColor}>\n {violation.message}\n </Typography>\n </HStack>\n {dismissible && onDismiss && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDismiss}\n className=\"p-1\"\n >\n <Icon name=\"x\" size=\"sm\" className={iconColor} />\n </Button>\n )}\n </HStack>\n </Box>\n );\n }\n\n return (\n <Box\n className={cn(\n \"p-4 rounded-[var(--radius-lg)] border\",\n bgColor,\n className,\n )}\n >\n <VStack gap=\"sm\">\n {/* Header */}\n <HStack justify=\"between\" align=\"start\">\n <HStack gap=\"sm\" align=\"center\">\n <Icon\n name={actionTypeIcons[violation.actionType]}\n size=\"md\"\n className={iconColor}\n />\n <VStack gap=\"xs\">\n <Typography variant=\"label\" weight=\"bold\" className={textColor}>\n {violation.law} Art. {violation.article}\n </Typography>\n <Typography\n variant=\"caption\"\n className={cn(textColor, \"opacity-75\")}\n >\n {actionTypeLabels[violation.actionType]}\n </Typography>\n </VStack>\n </HStack>\n {dismissible && onDismiss && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onDismiss}\n className=\"p-1\"\n >\n <Icon name=\"x\" size=\"sm\" className={iconColor} />\n </Button>\n )}\n </HStack>\n\n {/* Message */}\n <Typography variant=\"body2\" className={textColor}>\n {violation.message}\n </Typography>\n\n {/* Action references */}\n {(violation.adminAction || violation.penaltyAction) && (\n <Box\n className={cn(\n \"pt-2 border-t\",\n effectiveSeverity === \"warning\"\n ? \"border-[var(--color-warning)]/30\"\n : \"border-[var(--color-error)]/30\",\n )}\n >\n <VStack gap=\"xs\">\n {violation.adminAction && (\n <HStack gap=\"xs\" align=\"center\">\n <Typography\n variant=\"caption\"\n className={cn(textColor, \"opacity-75\")}\n >\n Admin:\n </Typography>\n <Typography\n variant=\"caption\"\n weight=\"semibold\"\n className={textColor}\n >\n {violation.adminAction}\n </Typography>\n </HStack>\n )}\n {violation.penaltyAction && (\n <HStack gap=\"xs\" align=\"center\">\n <Typography\n variant=\"caption\"\n className={cn(textColor, \"opacity-75\")}\n >\n Penalty:\n </Typography>\n <Typography\n variant=\"caption\"\n weight=\"semibold\"\n className={textColor}\n >\n {violation.penaltyAction}\n </Typography>\n </HStack>\n )}\n </VStack>\n </Box>\n )}\n\n {/* Navigate to field button */}\n {violation.fieldId && onNavigateToField && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onNavigateToField(violation.fieldId!)}\n className={cn(textColor, \"self-start\")}\n >\n <Icon name=\"arrow-right\" size=\"sm\" className=\"mr-1\" />\n Go to field\n </Button>\n )}\n </VStack>\n </Box>\n );\n};\n\nViolationAlert.displayName = \"ViolationAlert\";\n","/**\n * FormSectionHeader\n *\n * Header component for collapsible form sections.\n * Provides consistent styling and interaction for section headers.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Badge } from \"../atoms/Badge\";\nimport { Icon } from \"../atoms/Icon\";\n\nexport interface FormSectionHeaderProps {\n /** Section title */\n title: string;\n /** Section subtitle */\n subtitle?: string;\n /** Whether section is collapsed */\n isCollapsed?: boolean;\n /** Toggle collapse handler (makes header clickable) */\n onToggle?: () => void;\n /** Badge text (e.g., \"3 fields\", \"Required\", \"Complete\") */\n badge?: string;\n /** Badge variant */\n badgeVariant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\n /** Icon name to show before title */\n icon?: string;\n /** Whether section has validation errors */\n hasErrors?: boolean;\n /** Whether section is complete */\n isComplete?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\nexport const FormSectionHeader: React.FC<FormSectionHeaderProps> = ({\n title,\n subtitle,\n isCollapsed = false,\n onToggle,\n badge,\n badgeVariant = \"default\",\n icon,\n hasErrors = false,\n isComplete = false,\n className,\n}) => {\n const isClickable = !!onToggle;\n\n // Determine effective badge variant based on state\n const effectiveBadgeVariant = hasErrors\n ? \"danger\"\n : isComplete\n ? \"success\"\n : badgeVariant;\n\n // Determine status icon\n const statusIcon = hasErrors\n ? \"alert-circle\"\n : isComplete\n ? \"check-circle\"\n : null;\n\n return (\n <Box\n className={cn(\n \"px-4 py-3 bg-[var(--color-muted)] rounded-t-lg\",\n isClickable &&\n \"cursor-pointer hover:bg-[var(--color-surface-hover)] transition-colors\",\n className,\n )}\n onClick={isClickable ? onToggle : undefined}\n >\n <HStack justify=\"between\" align=\"center\">\n <HStack gap=\"sm\" align=\"center\">\n {/* Custom icon */}\n {icon && (\n <Icon\n name={icon}\n size=\"md\"\n className=\"text-[var(--color-muted-foreground)]\"\n />\n )}\n\n {/* Status icon */}\n {statusIcon && (\n <Icon\n name={statusIcon}\n size=\"md\"\n className={\n hasErrors\n ? \"text-[var(--color-error)]\"\n : \"text-[var(--color-success)]\"\n }\n />\n )}\n\n {/* Title and subtitle */}\n <Box>\n <Typography variant=\"label\" weight=\"semibold\">\n {title}\n </Typography>\n {subtitle && (\n <Typography variant=\"caption\" color=\"muted\">\n {subtitle}\n </Typography>\n )}\n </Box>\n </HStack>\n\n <HStack gap=\"sm\" align=\"center\">\n {/* Badge */}\n {badge && (\n <Badge variant={effectiveBadgeVariant} size=\"sm\">\n {badge}\n </Badge>\n )}\n\n {/* Collapse indicator */}\n {isClickable && (\n <Icon\n name=\"chevron-down\"\n size=\"md\"\n className={cn(\n \"text-[var(--color-muted-foreground)] transition-transform\",\n isCollapsed && \"-rotate-90\",\n )}\n />\n )}\n </HStack>\n </HStack>\n </Box>\n );\n};\n\nFormSectionHeader.displayName = \"FormSectionHeader\";\n","/**\n * useEntityData Hook\n *\n * Provides data fetching utilities for entity lists.\n * This is a stub implementation for the design system that returns mock data.\n * In a real application, this would connect to a backend API.\n *\n * @packageDocumentation\n */\n\nimport { useState, useEffect } from \"react\";\n\n/**\n * Query key factory for entity data queries.\n * Used with React Query for cache invalidation.\n */\nexport const entityDataKeys = {\n all: ['entities'] as const,\n lists: () => [...entityDataKeys.all, 'list'] as const,\n list: (entity: string, filters?: Record<string, unknown>) =>\n [...entityDataKeys.lists(), entity, filters] as const,\n details: () => [...entityDataKeys.all, 'detail'] as const,\n detail: (entity: string, id: string) =>\n [...entityDataKeys.details(), entity, id] as const,\n};\n\n/**\n * Generic entity data record type\n */\nexport type EntityDataRecord = Record<string, unknown>;\n\nexport interface UseEntityListOptions {\n /** Skip fetching */\n skip?: boolean;\n}\n\nexport interface UseEntityListResult<T = Record<string, unknown>> {\n /** Fetched data */\n data: T[];\n /** Loading state */\n isLoading: boolean;\n /** Error state */\n error: Error | null;\n /** Refetch function */\n refetch: () => void;\n}\n\n/**\n * Hook for fetching entity list data\n *\n * @param entity - Entity name to fetch\n * @param options - Fetch options\n * @returns Entity list data and loading states\n *\n * @example\n * ```tsx\n * const { data, isLoading, error } = useEntityList('tasks');\n * ```\n */\nexport function useEntityList<T = Record<string, unknown>>(\n entity: string | undefined,\n options: UseEntityListOptions = {},\n): UseEntityListResult<T> {\n const { skip = false } = options;\n const [data, setData] = useState<T[]>([]);\n const [isLoading, setIsLoading] = useState(!skip && !!entity);\n const [error, setError] = useState<Error | null>(null);\n\n const refetch = () => {\n if (!entity || skip) return;\n setIsLoading(true);\n setError(null);\n // In a real implementation, this would fetch from an API\n // For the design system, we just simulate a short delay\n setTimeout(() => {\n setData([]);\n setIsLoading(false);\n }, 100);\n };\n\n useEffect(() => {\n if (skip || !entity) {\n setIsLoading(false);\n return;\n }\n\n refetch();\n }, [entity, skip]);\n\n return { data, isLoading, error, refetch };\n}\n\n/**\n * Hook for fetching a single entity by ID\n *\n * @param entity - Entity name\n * @param id - Entity ID\n * @returns Single entity data and loading states\n */\nexport function useEntity<T = Record<string, unknown>>(\n entity: string | undefined,\n id: string | undefined,\n): { data: T | null; isLoading: boolean; error: Error | null } {\n const [data, setData] = useState<T | null>(null);\n const [isLoading, setIsLoading] = useState(!!entity && !!id);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n if (!entity || !id) {\n setIsLoading(false);\n return;\n }\n\n setIsLoading(true);\n // Simulate API call\n setTimeout(() => {\n setData(null);\n setIsLoading(false);\n }, 100);\n }, [entity, id]);\n\n return { data, isLoading, error };\n}\n\n/**\n * Result type for useEntityDetail hook\n */\nexport interface UseEntityDetailResult<T = Record<string, unknown>> {\n /** Fetched entity data */\n data: T | null;\n /** Loading state */\n isLoading: boolean;\n /** Error state */\n error: Error | null;\n /** Refetch function */\n refetch: () => void;\n}\n\n/**\n * Hook for fetching entity detail by ID (alias for useEntity with refetch)\n *\n * @param entity - Entity name\n * @param id - Entity ID\n * @returns Entity detail data and loading states\n *\n * @example\n * ```tsx\n * const { data, isLoading, error, refetch } = useEntityDetail('tasks', taskId);\n * ```\n */\nexport function useEntityDetail<T = Record<string, unknown>>(\n entity: string | undefined,\n id: string | undefined,\n): UseEntityDetailResult<T> {\n const [data, setData] = useState<T | null>(null);\n const [isLoading, setIsLoading] = useState(!!entity && !!id);\n const [error, setError] = useState<Error | null>(null);\n\n const refetch = () => {\n if (!entity || !id) return;\n setIsLoading(true);\n setError(null);\n // In a real implementation, this would fetch from an API\n // For the design system, we just simulate a short delay\n setTimeout(() => {\n setData(null);\n setIsLoading(false);\n }, 100);\n };\n\n useEffect(() => {\n if (!entity || !id) {\n setIsLoading(false);\n return;\n }\n\n refetch();\n }, [entity, id]);\n\n return { data, isLoading, error, refetch };\n}\n\n/**\n * Pagination parameters for paginated queries\n */\nexport interface PaginationParams {\n /** Current page (1-indexed) */\n page: number;\n /** Items per page */\n pageSize: number;\n /** Search query */\n search?: string;\n /** Sort field */\n sortBy?: string;\n /** Sort direction */\n sortDirection?: \"asc\" | \"desc\";\n /** Filters */\n filters?: Record<string, unknown>;\n}\n\nexport interface UsePaginatedEntityListResult<T = Record<string, unknown>> {\n /** Fetched data */\n data: T[];\n /** Loading state */\n isLoading: boolean;\n /** Error state */\n error: Error | null;\n /** Total item count */\n totalCount: number;\n /** Total pages */\n totalPages: number;\n /** Has next page */\n hasNextPage: boolean;\n /** Has previous page */\n hasPreviousPage: boolean;\n /** Refetch function */\n refetch: () => void;\n}\n\n/**\n * Hook for fetching paginated entity list data\n *\n * @param entity - Entity name to fetch\n * @param params - Pagination parameters\n * @param options - Fetch options\n * @returns Paginated entity list data and loading states\n *\n * @example\n * ```tsx\n * const { data, isLoading, totalPages } = usePaginatedEntityList('tasks', { page: 1, pageSize: 10 });\n * ```\n */\nexport function usePaginatedEntityList<T = Record<string, unknown>>(\n entity: string | undefined,\n params: PaginationParams,\n options: UseEntityListOptions = {},\n): UsePaginatedEntityListResult<T> {\n const { skip = false } = options;\n const [data, setData] = useState<T[]>([]);\n const [isLoading, setIsLoading] = useState(!skip && !!entity);\n const [error, setError] = useState<Error | null>(null);\n const [totalCount, setTotalCount] = useState(0);\n\n const refetch = () => {\n if (!entity || skip) return;\n setIsLoading(true);\n setError(null);\n // In a real implementation, this would fetch from an API with pagination\n // For the design system, we just simulate a short delay\n setTimeout(() => {\n setData([]);\n setTotalCount(0);\n setIsLoading(false);\n }, 100);\n };\n\n useEffect(() => {\n if (skip || !entity) {\n setIsLoading(false);\n return;\n }\n\n refetch();\n }, [\n entity,\n params.page,\n params.pageSize,\n params.search,\n params.sortBy,\n params.sortDirection,\n skip,\n ]);\n\n const totalPages = Math.ceil(totalCount / params.pageSize) || 1;\n\n return {\n data,\n isLoading,\n error,\n totalCount,\n totalPages,\n hasNextPage: params.page < totalPages,\n hasPreviousPage: params.page > 1,\n refetch,\n };\n}\n\nexport default useEntityList;\n","import React, { useState, useMemo, useCallback, useEffect } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { cn } from \"../../lib/cn\";\nimport { Button, Input, Badge, Checkbox, Spinner } from \"../atoms\";\nimport { EmptyState, Pagination } from \"../molecules\";\nimport {\n useEntityList,\n usePaginatedEntityList,\n type PaginationParams,\n} from \"../../hooks/useEntityData\";\nimport { useEventBus, type KFlowEvent } from \"../../hooks/useEventBus\";\nimport { useQuerySingleton } from \"../../hooks/useQuerySingleton\";\nimport {\n ChevronUp,\n ChevronDown,\n ChevronLeft,\n ChevronRight,\n Search,\n Filter,\n MoreHorizontal,\n Download,\n Trash2,\n Edit,\n Eye,\n LucideIcon,\n} from \"lucide-react\";\n\nexport interface Column<T> {\n key: keyof T | string;\n header: string;\n width?: string;\n sortable?: boolean;\n render?: (value: unknown, row: T, index: number) => React.ReactNode;\n}\n\n/**\n * Normalize column input - accepts either Column objects or string field names.\n * String field names are converted to Column objects with auto-generated headers.\n * Accepts readonly arrays for compatibility with generated const arrays.\n */\nfunction normalizeColumns<T>(\n columns: readonly Column<T>[] | readonly string[],\n): Column<T>[] {\n return columns.map((col) => {\n if (typeof col === \"string\") {\n // Convert string field name to Column object\n // Generate header by converting camelCase/snake_case to Title Case\n const header = col\n .replace(/([A-Z])/g, \" $1\") // camelCase to spaces\n .replace(/_/g, \" \") // snake_case to spaces\n .replace(/^\\w/, (c) => c.toUpperCase()) // capitalize first letter\n .trim();\n return { key: col, header } as Column<T>;\n }\n return col;\n });\n}\n\nexport interface RowAction<T> {\n label: string;\n icon?: LucideIcon;\n onClick: (row: T) => void;\n variant?: \"default\" | \"danger\";\n show?: (row: T) => boolean;\n /** Event name for testability (data-event attribute) */\n event?: string;\n}\n\nexport interface DataTableProps<T extends { id: string | number }> {\n /** Fields to display - accepts string[] or Column[] for unified interface. Alias for columns */\n fields?: readonly Column<T>[] | readonly string[];\n /** Columns can be Column objects or simple string field names - accepts readonly for generated const arrays */\n columns?: readonly Column<T>[] | readonly string[];\n /** Data array - primary prop for data. Accepts readonly or mutable arrays, and unknown for generated components */\n data?: readonly T[] | T[] | readonly unknown[] | unknown[] | unknown;\n /** Entity name for auto-fetch OR data array (backwards compatible) */\n entity?: string | readonly T[] | T[];\n /** Item actions from generated code - maps to rowActions */\n itemActions?: readonly {\n label: string;\n event?: string;\n /** Navigation URL - supports template interpolation like \"/products/{{id}}\" or \"/products/:id\" */\n navigatesTo?: string;\n /** Action used by generated code - alternative to event */\n action?: string;\n /** Placement accepts string for compatibility with generated code */\n placement?: \"row\" | \"bulk\" | string;\n icon?: LucideIcon;\n /** Variant accepts all button variants for compatibility */\n variant?: \"default\" | \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | string;\n /** Click handler from generated code */\n onClick?: (row: T) => void;\n }[];\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n emptyIcon?: LucideIcon;\n emptyTitle?: string;\n emptyDescription?: string;\n emptyAction?: { label: string; onClick: () => void };\n\n // Selection\n selectable?: boolean;\n selectedIds?: readonly (string | number)[];\n onSelectionChange?: (ids: (string | number)[]) => void;\n\n // Sorting\n sortBy?: string;\n sortDirection?: \"asc\" | \"desc\";\n onSort?: (key: string, direction: \"asc\" | \"desc\") => void;\n\n // Pagination (manual control)\n pagination?: {\n page: number;\n pageSize: number;\n total: number;\n onPageChange: (page: number) => void;\n onPageSizeChange?: (size: number) => void;\n };\n\n // Server-side pagination (automatic when enabled)\n enablePagination?: boolean;\n /** Items per page for automatic pagination (default: 20) */\n defaultPageSize?: number;\n /** Show total count in pagination */\n showTotal?: boolean;\n\n // Search\n searchable?: boolean;\n searchValue?: string;\n onSearch?: (value: string) => void;\n searchPlaceholder?: string;\n\n // Row click navigation\n onRowClick?: (row: T) => void;\n\n // Row actions\n rowActions?: readonly RowAction<T>[];\n\n // Bulk actions\n bulkActions?: ReadonlyArray<{\n label: string;\n icon?: LucideIcon;\n onClick: (selectedRows: T[]) => void;\n variant?: \"default\" | \"danger\";\n }>;\n\n // Header actions\n headerActions?: React.ReactNode;\n\n /**\n * Query singleton binding for filter/sort state.\n * When provided, syncs with the query singleton for filtering and sorting.\n * Example: \"@TaskQuery\"\n */\n query?: string;\n\n className?: string;\n}\n\nexport function DataTable<T extends { id: string | number }>({\n fields,\n columns,\n data,\n entity,\n itemActions,\n isLoading = false,\n error: externalError,\n emptyIcon,\n emptyTitle = \"No items found\",\n emptyDescription = \"No items to display.\",\n emptyAction,\n selectable = false,\n selectedIds = [],\n onSelectionChange,\n sortBy: externalSortBy,\n sortDirection: externalSortDirection = \"asc\",\n onSort,\n pagination,\n enablePagination = false,\n defaultPageSize = 20,\n showTotal = true,\n searchable = false,\n searchValue = \"\",\n onSearch,\n searchPlaceholder = \"Search...\",\n onRowClick,\n rowActions: externalRowActions,\n bulkActions,\n headerActions,\n query,\n className,\n}: DataTableProps<T>) {\n const [openActionMenu, setOpenActionMenu] = useState<string | number | null>(\n null,\n );\n const eventBus = useEventBus();\n const navigate = useNavigate();\n\n // Query singleton for filter/sort state\n const queryState = useQuerySingleton(query);\n\n // Server-side pagination state - initialize from query singleton if available\n const [paginationParams, setPaginationParams] = useState<PaginationParams>(\n () => ({\n page: 1,\n pageSize: defaultPageSize,\n search: queryState?.search ?? searchValue,\n sortBy: queryState?.sortField ?? externalSortBy,\n sortDirection: queryState?.sortDirection ?? externalSortDirection,\n filters: queryState?.filters,\n }),\n );\n\n // Sync with query singleton changes (e.g., from FilterGroup or SearchInput)\n useEffect(() => {\n if (queryState) {\n setPaginationParams((prev) => ({\n ...prev,\n search: queryState.search,\n sortBy: queryState.sortField ?? undefined,\n sortDirection: queryState.sortDirection ?? \"asc\",\n filters: queryState.filters,\n page: 1, // Reset to page 1 when filters change\n }));\n }\n }, [\n queryState?.search,\n queryState?.sortField,\n queryState?.sortDirection,\n JSON.stringify(queryState?.filters),\n ]);\n\n // Listen for UI:SEARCH events from event bus\n useEffect(() => {\n const handleSearch = (event: KFlowEvent) => {\n // Only handle if no query binding (avoid double-handling when query singleton is used)\n if (query) return;\n const term = (event.payload?.searchTerm as string) ?? \"\";\n setPaginationParams((prev) => ({ ...prev, search: term, page: 1 }));\n };\n\n const handleClearSearch = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n setPaginationParams((prev) => ({ ...prev, search: \"\", page: 1 }));\n };\n\n const handleFilter = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n const { field, value } = event.payload ?? {};\n if (field) {\n setPaginationParams((prev) => ({\n ...prev,\n filters: { ...prev.filters, [field as string]: value },\n page: 1,\n }));\n }\n };\n\n const handleClearFilters = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n setPaginationParams((prev) => ({\n ...prev,\n filters: {},\n search: \"\",\n page: 1,\n }));\n };\n\n const unsubSearch = eventBus.on(\"UI:SEARCH\", handleSearch);\n const unsubClear = eventBus.on(\"UI:CLEAR_SEARCH\", handleClearSearch);\n const unsubFilter = eventBus.on(\"UI:FILTER\", handleFilter);\n const unsubClearFilters = eventBus.on(\n \"UI:CLEAR_FILTERS\",\n handleClearFilters,\n );\n\n return () => {\n unsubSearch();\n unsubClear();\n unsubFilter();\n unsubClearFilters();\n };\n }, [eventBus, query]);\n\n // Sync external search value with pagination params\n useEffect(() => {\n if (searchValue !== paginationParams.search) {\n setPaginationParams((prev) => ({\n ...prev,\n search: searchValue,\n page: 1,\n }));\n }\n }, [searchValue]);\n\n // Determine if entity is a string name (for auto-fetch) or data array (backwards compatible)\n const isEntityName = typeof entity === \"string\";\n const entityName = isEntityName ? entity : undefined;\n\n // Auto-fetch data when entity is a string name and no external data provided\n const shouldAutoFetch = isEntityName && !data;\n\n // Use paginated or unpaginated hook based on enablePagination\n const paginatedResult = usePaginatedEntityList(\n shouldAutoFetch && enablePagination ? entityName : undefined,\n paginationParams,\n { skip: !shouldAutoFetch || !enablePagination },\n );\n\n const unpaginatedResult = useEntityList(\n shouldAutoFetch && !enablePagination ? entityName : undefined,\n {\n skip: !shouldAutoFetch || enablePagination,\n },\n );\n\n // Choose which result to use\n const queryResult = enablePagination ? paginatedResult : unpaginatedResult;\n\n // Use external data if provided, otherwise use fetched data or entity data (backwards compat)\n const rawData =\n data ??\n (enablePagination ? paginatedResult.data : unpaginatedResult.data) ??\n entity ??\n [];\n\n // Apply client-side filtering when data is passed via props (not auto-fetched)\n // This enables search filtering in preview mode (OrbitalRuntime)\n const filteredData = useMemo(() => {\n const dataArray = (Array.isArray(rawData) ? rawData : []) as T[];\n\n // Only apply client-side filtering if:\n // 1. We're NOT auto-fetching (data comes from props)\n // 2. There's a search term\n if (!shouldAutoFetch && paginationParams.search?.trim()) {\n const searchLower = paginationParams.search.toLowerCase();\n return dataArray.filter((item) => {\n // Search all string/number fields\n return Object.values(item as Record<string, unknown>).some((value) => {\n if (value === null || value === undefined) return false;\n return String(value).toLowerCase().includes(searchLower);\n });\n });\n }\n\n return dataArray;\n }, [rawData, shouldAutoFetch, paginationParams.search]);\n\n const items = filteredData as readonly T[];\n\n // Pagination info for server-side pagination\n const serverPaginationInfo = enablePagination\n ? {\n page: paginationParams.page,\n totalPages: paginatedResult.totalPages,\n total: paginatedResult.totalCount,\n }\n : null;\n\n // Combine loading and error states\n const fetchLoading = queryResult.isLoading;\n const fetchError = queryResult.error;\n const isLoadingCombined = isLoading || fetchLoading;\n const error =\n externalError ||\n (fetchError instanceof Error\n ? fetchError\n : fetchError\n ? new Error(String(fetchError))\n : null);\n\n // Handler for server-side pagination\n const handleServerPageChange = useCallback((newPage: number) => {\n setPaginationParams((prev) => ({ ...prev, page: newPage }));\n }, []);\n\n const handleServerPageSizeChange = useCallback((newPageSize: number) => {\n setPaginationParams((prev) => ({\n ...prev,\n pageSize: newPageSize,\n page: 1,\n }));\n }, []);\n\n // Handle server-side sort\n const handleServerSort = useCallback((key: string) => {\n setPaginationParams((prev) => ({\n ...prev,\n sortBy: key,\n sortDirection:\n prev.sortBy === key && prev.sortDirection === \"asc\" ? \"desc\" : \"asc\",\n page: 1,\n }));\n }, []);\n\n // Convert itemActions to rowActions format if provided\n const rowActions =\n externalRowActions ??\n (itemActions\n ?.filter((a) => a.placement !== \"bulk\")\n .map((action) => ({\n label: action.label,\n icon: action.icon,\n variant: action.variant,\n event: action.event, // Preserve event name for testability\n onClick: (row: T) => {\n // Handle navigation if navigatesTo is defined\n if (action.navigatesTo) {\n // Replace :id or {{id}} with actual row id\n const url = action.navigatesTo\n .replace(/:id\\b/g, String((row as { id: string | number }).id))\n .replace(\n /\\{\\{id\\}\\}/g,\n String((row as { id: string | number }).id),\n );\n navigate(url);\n return;\n }\n // Dispatch event via event bus if defined (for trait state machine integration)\n if (action.event) {\n eventBus.emit(`UI:${action.event}`, { row, entity: entityName });\n }\n },\n })) as RowAction<T>[] | undefined);\n\n // Find VIEW action or navigatesTo action from itemActions for row click behavior\n const viewAction = itemActions?.find(\n (a) => a.event === \"VIEW\" || a.navigatesTo,\n );\n\n // Handle row click - trigger VIEW event if available, or use custom onRowClick\n const handleRowClick = (row: T) => {\n if (onRowClick) {\n onRowClick(row);\n } else if (viewAction) {\n // Handle navigation if navigatesTo is defined\n if (viewAction.navigatesTo) {\n const url = viewAction.navigatesTo\n .replace(/:id\\b/g, String((row as { id: string | number }).id))\n .replace(/\\{\\{id\\}\\}/g, String((row as { id: string | number }).id));\n navigate(url);\n return;\n }\n // Auto-trigger VIEW event when row is clicked\n eventBus.emit(\"UI:VIEW\", { row, entity: entityName });\n }\n };\n\n // Determine if rows are clickable\n const isRowClickable = !!onRowClick || !!viewAction;\n\n // Support fields and columns (alias) - normalize to Column objects\n const effectiveColumns = fields ?? columns ?? [];\n const normalizedColumns: Column<T>[] = useMemo(\n () => normalizeColumns<T>(effectiveColumns),\n [effectiveColumns],\n );\n\n const allSelected = items.length > 0 && selectedIds.length === items.length;\n const someSelected = selectedIds.length > 0 && !allSelected;\n\n const handleSelectAll = () => {\n if (allSelected) {\n onSelectionChange?.([]);\n } else {\n onSelectionChange?.(items.map((row) => row.id));\n }\n };\n\n const handleSelectRow = (id: string | number) => {\n if (selectedIds.includes(id)) {\n onSelectionChange?.(selectedIds.filter((i) => i !== id));\n } else {\n onSelectionChange?.([...selectedIds, id]);\n }\n };\n\n const handleSort = (key: string) => {\n // Use server-side sort when enablePagination is true\n if (enablePagination && shouldAutoFetch) {\n handleServerSort(key);\n return;\n }\n // Otherwise use external sort handler\n if (!onSort) return;\n const currentSortBy = externalSortBy;\n const currentSortDirection = externalSortDirection;\n const newDirection =\n currentSortBy === key && currentSortDirection === \"asc\" ? \"desc\" : \"asc\";\n onSort(key, newDirection);\n };\n\n // Determine current sort state for UI\n const sortBy =\n enablePagination && shouldAutoFetch\n ? paginationParams.sortBy\n : externalSortBy;\n const sortDirection =\n enablePagination && shouldAutoFetch\n ? paginationParams.sortDirection\n : externalSortDirection;\n\n const selectedRows = useMemo(\n () => items.filter((row) => selectedIds.includes(row.id)),\n [items, selectedIds],\n );\n\n return (\n <div\n className={cn(\n \"bg-[var(--color-card)] border-2 border-[var(--color-border)] rounded-none overflow-hidden\",\n className,\n )}\n >\n {/* Header */}\n {(searchable || bulkActions || headerActions) && (\n <div className=\"px-4 py-3 border-b-2 border-[var(--color-border)] flex flex-col sm:flex-row items-stretch sm:items-center justify-between gap-4\">\n <div className=\"flex flex-col sm:flex-row items-stretch sm:items-center gap-3\">\n {searchable && (\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--color-muted-foreground)]\" />\n <Input\n type=\"search\"\n value={searchValue}\n onChange={(e) => {\n const value = e.target.value;\n // Call external handler if provided\n onSearch?.(value);\n // Also emit UI:SEARCH event for internal filtering (preview mode)\n eventBus.emit(\"UI:SEARCH\", { searchTerm: value });\n }}\n placeholder={searchPlaceholder}\n className=\"pl-9 w-full sm:w-64\"\n />\n </div>\n )}\n\n {/* Bulk actions */}\n {bulkActions && selectedIds.length > 0 && (\n <div className=\"flex items-center gap-2 pl-0 sm:pl-3 border-l-0 sm:border-l border-[var(--color-border)]\">\n <span className=\"text-sm text-[var(--color-muted-foreground)] whitespace-nowrap\">\n {selectedIds.length} selected\n </span>\n <div className=\"flex flex-wrap gap-2\">\n {bulkActions.map((action, idx) => (\n <Button\n key={idx}\n variant={\n action.variant === \"danger\" ? \"danger\" : \"secondary\"\n }\n size=\"sm\"\n leftIcon={\n action.icon && <action.icon className=\"h-4 w-4\" />\n }\n onClick={() => action.onClick(selectedRows)}\n >\n {action.label}\n </Button>\n ))}\n </div>\n </div>\n )}\n </div>\n\n <div className=\"flex sm:ml-auto\">{headerActions}</div>\n </div>\n )}\n\n {/* Table */}\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead className=\"bg-[var(--color-table-header)] border-b-2 border-[var(--color-border)]\">\n <tr>\n {selectable && (\n <th className=\"w-12 px-4 py-3\">\n <Checkbox\n checked={allSelected}\n // @ts-ignore - indeterminate not in types\n indeterminate={someSelected}\n onChange={handleSelectAll}\n />\n </th>\n )}\n {normalizedColumns.map((col) => (\n <th\n key={String(col.key)}\n className={cn(\n \"px-4 py-3 text-left text-xs font-bold text-[var(--color-foreground)] uppercase tracking-wider whitespace-nowrap\",\n col.sortable &&\n \"cursor-pointer select-none hover:bg-[var(--color-table-row-hover)]\",\n )}\n style={{ width: col.width }}\n onClick={() => col.sortable && handleSort(String(col.key))}\n >\n <div className=\"flex items-center gap-1\">\n {col.header}\n {col.sortable &&\n sortBy === col.key &&\n (sortDirection === \"asc\" ? (\n <ChevronUp className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4\" />\n ))}\n </div>\n </th>\n ))}\n {rowActions && <th className=\"w-12 px-4 py-3\" />}\n </tr>\n </thead>\n <tbody className=\"divide-y divide-gray-200 dark:divide-gray-700\">\n {isLoadingCombined ? (\n <tr>\n <td\n colSpan={\n normalizedColumns.length +\n (selectable ? 1 : 0) +\n (rowActions ? 1 : 0)\n }\n className=\"px-4 py-12 text-center\"\n >\n <div className=\"flex flex-col items-center gap-2\">\n <Spinner size=\"lg\" />\n <span className=\"text-[var(--color-muted-foreground)]\">\n Loading...\n </span>\n </div>\n </td>\n </tr>\n ) : error ? (\n <tr>\n <td\n colSpan={\n normalizedColumns.length +\n (selectable ? 1 : 0) +\n (rowActions ? 1 : 0)\n }\n className=\"px-4 py-12 text-center text-[var(--color-error)]\"\n >\n Error: {error.message}\n </td>\n </tr>\n ) : items.length === 0 ? (\n <tr>\n <td\n colSpan={\n normalizedColumns.length +\n (selectable ? 1 : 0) +\n (rowActions ? 1 : 0)\n }\n className=\"px-4 py-12\"\n >\n <EmptyState\n icon={emptyIcon}\n title={emptyTitle}\n description={emptyDescription}\n actionLabel={emptyAction?.label}\n onAction={emptyAction?.onClick}\n />\n </td>\n </tr>\n ) : (\n items.map((row, rowIndex) => (\n <tr\n key={row.id}\n className={cn(\n \"border-b border-[var(--color-table-border)] last:border-0 hover:bg-[var(--color-table-row-hover)] transition-colors\",\n selectedIds.includes(row.id) &&\n \"bg-[var(--color-primary)]/10 font-medium\",\n isRowClickable && \"cursor-pointer\",\n )}\n onClick={() => isRowClickable && handleRowClick(row)}\n >\n {selectable && (\n <td className=\"px-4 py-3\">\n <Checkbox\n checked={selectedIds.includes(row.id)}\n onChange={() => handleSelectRow(row.id)}\n />\n </td>\n )}\n {normalizedColumns.map((col) => (\n <td\n key={String(col.key)}\n className=\"px-4 py-3 text-sm text-[var(--color-foreground)] whitespace-nowrap sm:whitespace-normal\"\n >\n {col.render\n ? col.render(row[col.key as keyof T], row, rowIndex)\n : String(row[col.key as keyof T] ?? \"\")}\n </td>\n ))}\n {rowActions && (\n <td className=\"px-4 py-3 relative\">\n <button\n className=\"p-1 rounded hover:bg-[var(--color-muted)]\"\n onClick={(e) => {\n e.stopPropagation();\n setOpenActionMenu(\n openActionMenu === row.id ? null : row.id,\n );\n }}\n >\n <MoreHorizontal className=\"h-4 w-4 text-[var(--color-muted-foreground)]\" />\n </button>\n {openActionMenu === row.id && (\n <>\n <div\n className=\"fixed inset-0 z-40\"\n onClick={(e) => {\n e.stopPropagation();\n setOpenActionMenu(null);\n }}\n />\n <div className=\"absolute right-0 mt-1 w-48 bg-[var(--color-card)] rounded-[var(--radius-lg)] shadow-[var(--shadow-lg)] border border-[var(--color-border)] py-1 z-50\">\n {rowActions\n .filter(\n (action) => !action.show || action.show(row),\n )\n .map((action, idx) => (\n <button\n key={idx}\n data-event={action.event}\n data-testid={\n action.event\n ? `action-${action.event}`\n : undefined\n }\n className={cn(\n \"w-full flex items-center gap-2 px-4 py-2 text-sm\",\n action.variant === \"danger\"\n ? \"text-[var(--color-error)] hover:bg-[var(--color-error)]/10\"\n : \"text-[var(--color-foreground)] hover:bg-[var(--color-muted)]\",\n )}\n onClick={(e) => {\n e.stopPropagation();\n action.onClick(row);\n setOpenActionMenu(null);\n }}\n >\n {action.icon && (\n <action.icon className=\"h-4 w-4\" />\n )}\n {action.label}\n </button>\n ))}\n </div>\n </>\n )}\n </td>\n )}\n </tr>\n ))\n )}\n </tbody>\n </table>\n </div>\n\n {/* Manual Pagination */}\n {pagination && (\n <div className=\"px-4 py-3 border-t-2 border-[var(--color-border)] flex flex-col sm:flex-row items-center justify-between gap-4\">\n <div className=\"text-sm text-[var(--color-muted-foreground)] text-center sm:text-left\">\n Showing {(pagination.page - 1) * pagination.pageSize + 1} to{\" \"}\n {Math.min(pagination.page * pagination.pageSize, pagination.total)}{\" \"}\n of {pagination.total} results\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"secondary\"\n size=\"sm\"\n disabled={pagination.page === 1}\n onClick={() => pagination.onPageChange(pagination.page - 1)}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </Button>\n <span className=\"text-sm text-[var(--color-muted-foreground)]\">\n Page {pagination.page} of{\" \"}\n {Math.ceil(pagination.total / pagination.pageSize)}\n </span>\n <Button\n variant=\"secondary\"\n size=\"sm\"\n disabled={\n pagination.page * pagination.pageSize >= pagination.total\n }\n onClick={() => pagination.onPageChange(pagination.page + 1)}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </Button>\n </div>\n </div>\n )}\n\n {/* Server-side Pagination (automatic when enablePagination is true) */}\n {enablePagination &&\n serverPaginationInfo &&\n serverPaginationInfo.totalPages > 1 && (\n <div className=\"px-4 py-3 border-t-2 border-[var(--color-border)]\">\n <Pagination\n currentPage={serverPaginationInfo.page}\n totalPages={serverPaginationInfo.totalPages}\n onPageChange={handleServerPageChange}\n showTotal={showTotal}\n totalItems={serverPaginationInfo.total}\n showPageSize\n pageSize={paginationParams.pageSize}\n onPageSizeChange={handleServerPageSizeChange}\n />\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Card, Typography } from \"../atoms\";\nimport { TrendingUp, TrendingDown, Minus, LucideIcon } from \"lucide-react\";\nimport { useEntityList } from \"../../hooks/useEntityData\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\n\n/**\n * Schema metric definition\n * Supports both computed metrics (with field) and static metrics (with value)\n */\nexport interface MetricDefinition {\n /** Field name for computed metrics (optional if value is provided) */\n field?: string;\n /** Display label */\n label: string;\n /** Static value for display (alternative to field-based computation) */\n value?: string | number;\n /** Icon name for display */\n icon?: string;\n /** Value format (e.g., 'currency', 'percent', 'number') */\n format?: \"currency\" | \"percent\" | \"number\" | string;\n}\n\nexport interface StatCardProps {\n /** Main label */\n label?: string;\n /** Title (alias for label) */\n title?: string;\n /** Primary value - accepts array/unknown from generated code (will use first element or length) */\n value?: string | number | (string | number | undefined)[] | unknown;\n /** Previous value for comparison */\n previousValue?: number;\n /** Current value as number for trend calculation */\n currentValue?: number;\n /** Manual trend percentage (overrides calculation) */\n trend?: number;\n /** Trend direction (overrides calculation) */\n trendDirection?: \"up\" | \"down\" | \"neutral\";\n /** Whether up is good (green) or bad (red) */\n invertTrend?: boolean;\n /** Icon to display */\n icon?: LucideIcon;\n /** Icon background color */\n iconBg?: string;\n /** Icon color */\n iconColor?: string;\n /** Subtitle or description */\n subtitle?: string;\n /** Action button */\n action?: {\n label: string;\n /** Event to dispatch via event bus (for trait state machine integration) */\n event?: string;\n /** Navigation URL - supports template interpolation */\n navigatesTo?: string;\n /** Legacy onClick callback */\n onClick?: () => void;\n };\n className?: string;\n\n // Schema-based props\n /** Entity name for schema-driven stats */\n entity?: string;\n /** Metrics to display (schema format) - accepts readonly for compatibility with generated const arrays */\n metrics?: readonly MetricDefinition[];\n /** Data to calculate stats from - accepts readonly for compatibility with generated const arrays */\n data?: readonly Record<string, unknown>[];\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n}\n\nexport const StatCard: React.FC<StatCardProps> = ({\n label: propLabel,\n title: propTitle,\n value: propValue,\n previousValue,\n currentValue,\n trend: manualTrend,\n trendDirection: manualDirection,\n invertTrend = false,\n icon: Icon,\n iconBg = \"bg-[var(--color-muted)]\",\n iconColor = \"text-[var(--color-foreground)]\",\n subtitle,\n action,\n className,\n // Schema-based props\n entity,\n metrics,\n data: externalData,\n isLoading: externalLoading,\n error: externalError,\n}) => {\n // Use title as fallback for label\n const labelToUse = propLabel ?? propTitle;\n const eventBus = useEventBus();\n\n // Handle action click with event bus integration\n const handleActionClick = React.useCallback(() => {\n if (action?.event) {\n eventBus.emit(`UI:${action.event}`, { entity });\n }\n if (action?.onClick) {\n action.onClick();\n }\n }, [action, eventBus, entity]);\n // Auto-fetch data when entity is provided but no external data\n const shouldAutoFetch = !!entity && !externalData && !!metrics;\n const { data: fetchedData, isLoading: fetchLoading } = useEntityList(\n shouldAutoFetch ? entity : undefined,\n { skip: !shouldAutoFetch },\n );\n\n // Use external data if provided, otherwise use fetched data\n const data = (externalData ?? fetchedData ?? []) as readonly Record<\n string,\n unknown\n >[];\n\n // Determine loading and error state\n const isLoading = externalLoading ?? (shouldAutoFetch ? fetchLoading : false);\n const error = externalError;\n\n // Helper to compute a single metric value\n const computeMetricValue = React.useCallback(\n (metric: MetricDefinition, items: readonly Record<string, unknown>[]) => {\n // If static value is provided, use it directly\n if (metric.value !== undefined) {\n return metric.value;\n }\n\n const field = metric.field;\n\n // If no field specified, return 0\n if (!field) {\n return 0;\n }\n\n if (field === \"count\") {\n return items.length;\n }\n\n // Handle explicit field:value format (e.g., \"status:active\")\n if (field.includes(\":\")) {\n const [fieldName, fieldValue] = field.split(\":\");\n return items.filter((item) => item[fieldName] === fieldValue).length;\n }\n\n // Check if field exists on any item\n const fieldExistsOnItems = items.some((item) => field in item);\n\n if (fieldExistsOnItems) {\n // Sum numeric field\n return items.reduce((acc, item) => {\n const val = item[field];\n return acc + (typeof val === \"number\" ? val : 0);\n }, 0);\n }\n\n // Auto-detect: field name might be a status value\n // Check common status field names: status, state, phase\n const statusFields = [\"status\", \"state\", \"phase\"];\n for (const statusField of statusFields) {\n const hasStatusField = items.some((item) => statusField in item);\n if (hasStatusField) {\n // Count items where statusField === field (the metric field is actually a value)\n const count = items.filter(\n (item) => item[statusField] === field,\n ).length;\n if (count > 0 || items.length === 0) {\n return count;\n }\n }\n }\n\n // Fallback: return 0\n return 0;\n },\n [],\n );\n\n // Schema-driven: calculate stats from data and metrics (supports multiple metrics)\n const schemaStats = React.useMemo(() => {\n if (!metrics || metrics.length === 0) return null;\n\n // Compute all metrics\n return metrics.map((metric) => ({\n label: metric.label,\n value: computeMetricValue(metric, data),\n format: metric.format,\n }));\n }, [metrics, data, computeMetricValue]);\n\n // If multiple metrics, render them as a row of stats\n if (schemaStats && schemaStats.length > 1) {\n if (isLoading) {\n return (\n <div\n className={cn(\"grid gap-4\", className)}\n style={{ gridTemplateColumns: `repeat(${schemaStats.length}, 1fr)` }}\n >\n {schemaStats.map((_, idx) => (\n <Card key={idx} className=\"p-4\">\n <div className=\"animate-pulse space-y-2\">\n <div className=\"h-3 bg-[var(--color-muted)] rounded w-16\" />\n <div className=\"h-6 bg-[var(--color-muted)] rounded w-12\" />\n </div>\n </Card>\n ))}\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"grid gap-4\", className)}\n style={{ gridTemplateColumns: `repeat(${schemaStats.length}, 1fr)` }}\n >\n {schemaStats.map((stat, idx) => (\n <Card key={idx} className=\"p-4\">\n <Typography variant=\"overline\" color=\"secondary\">\n {stat.label}\n </Typography>\n <Typography variant=\"h4\" className=\"text-xl\">\n {stat.value}\n </Typography>\n </Card>\n ))}\n </div>\n );\n }\n\n // Use schema stats if available (single metric), otherwise use props\n const label = schemaStats?.[0]?.label || labelToUse || entity || \"Stat\";\n // Handle array values (use first element or array length)\n const normalizedPropValue = Array.isArray(propValue)\n ? (propValue[0] ?? propValue.length)\n : propValue;\n const value = schemaStats?.[0]?.value ?? normalizedPropValue ?? 0;\n // Calculate trend if not provided manually\n const calculatedTrend = useMemo(() => {\n if (manualTrend !== undefined) return manualTrend;\n if (previousValue === undefined || currentValue === undefined)\n return undefined;\n if (previousValue === 0) return currentValue > 0 ? 100 : 0;\n return ((currentValue - previousValue) / previousValue) * 100;\n }, [manualTrend, previousValue, currentValue]);\n\n const trendDirection =\n manualDirection ||\n (calculatedTrend === undefined || calculatedTrend === 0\n ? \"neutral\"\n : calculatedTrend > 0\n ? \"up\"\n : \"down\");\n\n const isPositive = invertTrend\n ? trendDirection === \"down\"\n : trendDirection === \"up\";\n\n const TrendIcon =\n trendDirection === \"up\"\n ? TrendingUp\n : trendDirection === \"down\"\n ? TrendingDown\n : Minus;\n\n // Show error state\n if (error) {\n return (\n <Card className={cn(\"p-6\", className)}>\n <div className=\"space-y-1\">\n <Typography variant=\"overline\" color=\"secondary\">\n {label}\n </Typography>\n <Typography variant=\"small\" color=\"error\">\n Error: {error.message}\n </Typography>\n </div>\n </Card>\n );\n }\n\n if (isLoading) {\n return (\n <Card className={cn(\"p-6\", className)}>\n <div className=\"animate-pulse space-y-3\">\n <div className=\"h-4 bg-[var(--color-muted)] rounded w-24\" />\n <div className=\"h-8 bg-[var(--color-muted)] rounded w-32\" />\n <div className=\"h-4 bg-[var(--color-muted)] rounded w-20\" />\n </div>\n </Card>\n );\n }\n\n return (\n <Card className={cn(\"p-6\", className)}>\n <div className=\"flex items-start justify-between\">\n <div className=\"space-y-1\">\n <Typography variant=\"overline\" color=\"secondary\">\n {label}\n </Typography>\n <Typography variant=\"h4\" className=\"text-2xl\">\n {value}\n </Typography>\n\n {/* Trend indicator */}\n {calculatedTrend !== undefined && (\n <div className=\"flex items-center gap-1\">\n <div\n className={cn(\n \"flex items-center gap-0.5 text-sm font-bold\",\n isPositive\n ? \"text-[var(--color-success)]\"\n : trendDirection === \"neutral\"\n ? \"text-[var(--color-muted-foreground)]\"\n : \"text-[var(--color-error)]\",\n )}\n >\n <TrendIcon className=\"h-4 w-4\" />\n <span>{Math.abs(calculatedTrend).toFixed(1)}%</span>\n </div>\n <Typography variant=\"small\" color=\"secondary\" as=\"span\">\n vs last period\n </Typography>\n </div>\n )}\n\n {subtitle && !calculatedTrend && (\n <Typography variant=\"small\" color=\"secondary\">\n {subtitle}\n </Typography>\n )}\n </div>\n\n {Icon && (\n <div className={cn(\"p-3\", iconBg)}>\n <Icon className={cn(\"h-6 w-6\", iconColor)} />\n </div>\n )}\n </div>\n\n {action && (\n <button\n onClick={handleActionClick}\n className=\"mt-4 text-sm font-bold text-[var(--color-foreground)] hover:underline\"\n >\n {action.label} →\n </button>\n )}\n </Card>\n );\n};\n\nfunction useMemo<T>(factory: () => T, deps: unknown[]): T {\n return React.useMemo(factory, deps);\n}\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../atoms\";\nimport { ArrowLeft, LucideIcon } from \"lucide-react\";\nimport { useNavigate, useParams } from \"react-router-dom\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\n\nexport interface PageBreadcrumb {\n label: string;\n href?: string;\n}\n\n/**\n * Schema-based action definition\n */\nexport interface SchemaAction {\n label: string;\n /** Navigate to URL when clicked */\n navigatesTo?: string;\n /** Custom click handler */\n onClick?: () => void;\n /** Event to dispatch via event bus (for trait state machine integration) */\n event?: string;\n variant?: \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\n icon?: LucideIcon;\n loading?: boolean;\n disabled?: boolean;\n}\n\nexport interface PageHeaderProps {\n /** Page title - accepts unknown to handle generated code accessing dynamic entity data */\n title?: string | number | unknown;\n /** Optional subtitle/description */\n subtitle?: string | number | unknown;\n /** Show back button */\n showBack?: boolean;\n /** Event to emit when back is clicked (default: BACK) */\n backEvent?: string;\n /** Breadcrumbs */\n breadcrumbs?: readonly PageBreadcrumb[];\n /** Status badge */\n status?: {\n label: string;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n };\n /** Actions array - first action with variant='primary' (or first action) is the main action */\n actions?: readonly Readonly<SchemaAction>[];\n /** Loading state indicator */\n isLoading?: boolean;\n /** Tabs for sub-navigation */\n tabs?: ReadonlyArray<{\n label: string;\n value: string;\n count?: number;\n }>;\n activeTab?: string;\n onTabChange?: (value: string) => void;\n /** Custom content in the header */\n children?: React.ReactNode;\n className?: string;\n}\n\nexport const PageHeader: React.FC<PageHeaderProps> = ({\n title,\n subtitle,\n showBack = false,\n backEvent = \"BACK\",\n breadcrumbs,\n status,\n actions,\n isLoading,\n tabs,\n activeTab,\n onTabChange,\n children,\n className,\n}) => {\n const navigate = useNavigate();\n const params = useParams();\n const eventBus = useEventBus();\n\n const handleBack = () => {\n // Emit event for trait state machine to handle\n // The trait can transition state and/or trigger navigate effect\n eventBus.emit(`UI:${backEvent}`);\n };\n\n /**\n * Replace template placeholders like {{id}} with actual URL params.\n * E.g., \"/tasks/{{id}}/edit\" with params {id: \"123\"} becomes \"/tasks/123/edit\"\n */\n const replacePlaceholders = (url: string): string => {\n return url.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) => {\n return String(params[key] || \"\");\n });\n };\n\n // Create click handler for schema actions\n const createActionHandler = (action: SchemaAction) => () => {\n // Emit event via event bus if defined (for trait state machine integration)\n if (action.event) {\n eventBus.emit(`UI:${action.event}`);\n }\n if (action.navigatesTo) {\n const resolvedUrl = replacePlaceholders(action.navigatesTo);\n navigate(resolvedUrl);\n }\n if (action.onClick) {\n action.onClick();\n }\n };\n\n const statusColors = {\n default: \"bg-[var(--color-muted)] text-[var(--color-foreground)]\",\n success: \"bg-[var(--color-success)]/10 text-[var(--color-success)]\",\n warning: \"bg-[var(--color-warning)]/10 text-[var(--color-warning)]\",\n danger: \"bg-[var(--color-error)]/10 text-[var(--color-error)]\",\n info: \"bg-[var(--color-info)]/10 text-[var(--color-info)]\",\n };\n\n return (\n <div className={cn(\"mb-6\", className)}>\n {/* Breadcrumbs */}\n {breadcrumbs && breadcrumbs.length > 0 && (\n <nav className=\"mb-4\">\n <ol className=\"flex items-center gap-2 text-sm\">\n {breadcrumbs.map((crumb, idx) => (\n <React.Fragment key={idx}>\n {idx > 0 && (\n <span className=\"text-[var(--color-muted-foreground)]\">\n /\n </span>\n )}\n {crumb.href ? (\n <a\n href={crumb.href}\n className=\"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\"\n >\n {crumb.label}\n </a>\n ) : (\n <span className=\"text-[var(--color-foreground)] font-medium\">\n {crumb.label}\n </span>\n )}\n </React.Fragment>\n ))}\n </ol>\n </nav>\n )}\n\n {/* Main header row */}\n <div className=\"flex items-start justify-between gap-4\">\n <div className=\"flex items-start gap-4\">\n {showBack && (\n <button\n onClick={handleBack}\n className=\"mt-1 p-2 rounded-[var(--radius-lg)] hover:bg-[var(--color-muted)] transition-colors\"\n >\n <ArrowLeft className=\"h-5 w-5 text-[var(--color-muted-foreground)]\" />\n </button>\n )}\n <div>\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-bold text-[var(--color-foreground)]\">\n {title != null ? String(title) : \"\"}\n </h1>\n {status && (\n <span\n className={cn(\n \"px-2.5 py-1 rounded-[var(--radius-full)] text-xs font-medium\",\n statusColors[status.variant || \"default\"],\n )}\n >\n {status.label}\n </span>\n )}\n </div>\n {subtitle != null && subtitle !== \"\" && (\n <p className=\"mt-1 text-sm text-[var(--color-muted-foreground)]\">\n {String(subtitle)}\n </p>\n )}\n </div>\n </div>\n\n {/* Actions */}\n <div className=\"flex items-center gap-2 shrink-0\">\n {actions?.map((action, idx) => (\n <Button\n key={`action-${idx}`}\n data-event={action.event}\n data-testid={action.event ? `action-${action.event}` : undefined}\n variant={action.variant || (idx === 0 ? \"primary\" : \"secondary\")}\n leftIcon={action.icon && <action.icon className=\"h-4 w-4\" />}\n onClick={createActionHandler(action)}\n isLoading={action.loading || isLoading}\n disabled={action.disabled || isLoading}\n >\n {action.label}\n </Button>\n ))}\n </div>\n </div>\n\n {/* Tabs */}\n {tabs && tabs.length > 0 && (\n <div className=\"mt-6 border-b border-[var(--color-border)]\">\n <nav className=\"flex gap-6\">\n {tabs.map((tab) => (\n <button\n key={tab.value}\n onClick={() => onTabChange?.(tab.value)}\n className={cn(\n \"pb-3 text-sm font-bold border-b-2 transition-colors rounded-none\",\n activeTab === tab.value\n ? \"border-[var(--color-primary)] text-[var(--color-foreground)]\"\n : \"border-transparent text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] hover:border-[var(--color-border)]\",\n )}\n >\n {tab.label}\n {tab.count !== undefined && (\n <span\n className={cn(\n \"ml-2 px-2 py-0.5 rounded-[var(--radius-full)] text-xs\",\n activeTab === tab.value\n ? \"bg-[var(--color-primary)]/10 text-[var(--color-primary)]\"\n : \"bg-[var(--color-muted)] text-[var(--color-muted-foreground)]\",\n )}\n >\n {tab.count}\n </span>\n )}\n </button>\n ))}\n </nav>\n </div>\n )}\n\n {/* Custom content */}\n {children}\n </div>\n );\n};\n","/**\n * SelectionProvider - Manages selected entity state\n *\n * Separates selection state from the EventBusProvider to maintain\n * clean architecture (event bus stays pure pub/sub).\n *\n * This provider:\n * - Listens to UI:VIEW and UI:SELECT events to track selected entity\n * - Listens to UI:CLOSE, UI:DESELECT, UI:CANCEL to clear selection\n * - Provides the selected entity to any component that needs it\n *\n * @packageDocumentation\n */\n\nimport React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useCallback,\n type ReactNode,\n} from 'react';\nimport { useEventBus, type KFlowEvent } from '../hooks/useEventBus';\n\n// ============================================================================\n// Types\n// ============================================================================\n\nexport interface SelectionContextType<T = unknown> {\n /** The currently selected entity */\n selected: T | null;\n /** Manually set the selected entity */\n setSelected: (entity: T | null) => void;\n /** Clear the selection */\n clearSelection: () => void;\n /** Check if an entity is selected */\n isSelected: (entity: T) => boolean;\n}\n\n// ============================================================================\n// Context\n// ============================================================================\n\nconst SelectionContext = createContext<SelectionContextType | null>(null);\n\n// ============================================================================\n// Provider\n// ============================================================================\n\ninterface SelectionProviderProps {\n children: ReactNode;\n /** Enable debug logging */\n debug?: boolean;\n /** Custom comparison function for isSelected */\n compareEntities?: (a: unknown, b: unknown) => boolean;\n}\n\n/**\n * Default entity comparison - compares by id field\n */\nconst defaultCompareEntities = (a: unknown, b: unknown): boolean => {\n if (a === b) return true;\n if (!a || !b) return false;\n if (typeof a === 'object' && typeof b === 'object') {\n const aId = (a as Record<string, unknown>).id;\n const bId = (b as Record<string, unknown>).id;\n return aId !== undefined && aId === bId;\n }\n return false;\n};\n\n/**\n * Provider component for selection state.\n *\n * Must be used within an EventBusProvider.\n *\n * @example\n * ```tsx\n * function OrderListPage() {\n * return (\n * <EventBusProvider>\n * <SelectionProvider debug={process.env.NODE_ENV === 'development'}>\n * <OrderTable />\n * <OrderDetailDrawer />\n * </SelectionProvider>\n * </EventBusProvider>\n * );\n * }\n * ```\n */\nexport function SelectionProvider({\n children,\n debug = false,\n compareEntities = defaultCompareEntities,\n}: SelectionProviderProps) {\n const eventBus = useEventBus();\n const [selected, setSelectedState] = useState<unknown | null>(null);\n\n /**\n * Set the selected entity\n */\n const setSelected = useCallback(\n (entity: unknown | null) => {\n setSelectedState(entity);\n if (debug) {\n console.log('[SelectionProvider] Selection set:', entity);\n }\n },\n [debug]\n );\n\n /**\n * Clear the selection\n */\n const clearSelection = useCallback(() => {\n setSelectedState(null);\n if (debug) {\n console.log('[SelectionProvider] Selection cleared');\n }\n }, [debug]);\n\n /**\n * Check if an entity is selected\n */\n const isSelected = useCallback(\n (entity: unknown): boolean => {\n return compareEntities(selected, entity);\n },\n [selected, compareEntities]\n );\n\n /**\n * Listen to event bus for selection events\n */\n useEffect(() => {\n // Handle selection events\n const handleSelect = (event: KFlowEvent) => {\n const row = event.payload?.row;\n if (row) {\n setSelected(row);\n if (debug) {\n console.log(`[SelectionProvider] ${event.type} received:`, row);\n }\n }\n };\n\n // Handle deselection events\n const handleDeselect = (event: KFlowEvent) => {\n clearSelection();\n if (debug) {\n console.log(`[SelectionProvider] ${event.type} received - clearing selection`);\n }\n };\n\n // Subscribe to selection events\n const unsubView = eventBus.on('UI:VIEW', handleSelect);\n const unsubSelect = eventBus.on('UI:SELECT', handleSelect);\n\n // Subscribe to deselection events\n const unsubClose = eventBus.on('UI:CLOSE', handleDeselect);\n const unsubDeselect = eventBus.on('UI:DESELECT', handleDeselect);\n const unsubCancel = eventBus.on('UI:CANCEL', handleDeselect);\n\n return () => {\n unsubView();\n unsubSelect();\n unsubClose();\n unsubDeselect();\n unsubCancel();\n };\n }, [eventBus, setSelected, clearSelection, debug]);\n\n const contextValue: SelectionContextType = {\n selected,\n setSelected,\n clearSelection,\n isSelected,\n };\n\n return (\n <SelectionContext.Provider value={contextValue}>\n {children}\n </SelectionContext.Provider>\n );\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\n/**\n * Hook to access selection state.\n *\n * @throws Error if used outside SelectionProvider\n *\n * @example\n * ```tsx\n * function OrderDetailDrawer() {\n * const { selected, clearSelection } = useSelection<Order>();\n *\n * if (!selected) return null;\n *\n * return (\n * <Drawer onClose={clearSelection}>\n * <OrderDetail order={selected} />\n * </Drawer>\n * );\n * }\n * ```\n */\nexport function useSelection<T = unknown>(): SelectionContextType<T> {\n const context = useContext(SelectionContext);\n\n if (!context) {\n throw new Error('useSelection must be used within a SelectionProvider');\n }\n\n return context as SelectionContextType<T>;\n}\n\n/**\n * Hook to access selection state with fallback for components\n * that may be used outside SelectionProvider.\n *\n * Returns null if no SelectionProvider is found.\n */\nexport function useSelectionOptional<T = unknown>(): SelectionContextType<T> | null {\n const context = useContext(SelectionContext);\n return context as SelectionContextType<T> | null;\n}\n\nexport { SelectionContext };\n","/**\n * useUIEvents - UI Event to State Machine Bridge\n *\n * Listens for UI events from the event bus and dispatches\n * corresponding state machine events.\n *\n * Components emit events like `UI:VIEW`, `UI:SAVE`, `UI:CANCEL`\n * This hook translates them to state machine dispatch calls.\n */\n\nimport { useEffect, useState, useMemo, useContext } from \"react\";\nimport { useEventBus, type KFlowEvent } from \"./useEventBus\";\nimport { SelectionContext } from \"../providers/SelectionProvider\";\n\n/**\n * Map of UI events to state machine events.\n * UI events are prefixed with \"UI:\" and the suffix is the event name.\n */\nconst UI_EVENT_MAP: Record<string, string> = {\n // Form/CRUD events\n \"UI:SAVE\": \"SAVE\",\n \"UI:CANCEL\": \"CANCEL\",\n \"UI:CLOSE\": \"CLOSE\",\n \"UI:VIEW\": \"VIEW\",\n \"UI:EDIT\": \"EDIT\",\n \"UI:DELETE\": \"DELETE\",\n \"UI:CREATE\": \"CREATE\",\n \"UI:SELECT\": \"SELECT\",\n \"UI:DESELECT\": \"DESELECT\",\n \"UI:SUBMIT\": \"SAVE\",\n \"UI:UPDATE_STATUS\": \"UPDATE_STATUS\",\n \"UI:SEARCH\": \"SEARCH\",\n \"UI:CLEAR_SEARCH\": \"CLEAR_SEARCH\",\n \"UI:ADD\": \"CREATE\",\n // Game events (for closed circuit with GameMenu, GamePauseOverlay, GameOverScreen)\n \"UI:PAUSE\": \"PAUSE\",\n \"UI:RESUME\": \"RESUME\",\n \"UI:RESTART\": \"RESTART\",\n \"UI:GAME_OVER\": \"GAME_OVER\",\n \"UI:START\": \"START\",\n \"UI:QUIT\": \"QUIT\",\n \"UI:INIT\": \"INIT\",\n};\n\n/**\n * Hook to bridge UI events to state machine dispatch\n *\n * @param dispatch - The state machine dispatch function\n * @param validEvents - Optional array of valid event names (filters which events to handle)\n * @param eventBusInstance - Optional event bus instance (for testing, uses hook if not provided)\n */\nexport function useUIEvents<E extends string>(\n dispatch: (event: E, payload?: unknown) => void,\n validEvents?: readonly E[],\n eventBusInstance?: ReturnType<typeof useEventBus>,\n): void {\n const defaultEventBus = useEventBus();\n const eventBus = eventBusInstance ?? defaultEventBus;\n\n // Stabilize validEvents to prevent re-subscriptions when array reference changes\n // but contents are the same. This is critical because generated trait hooks\n // pass inline arrays which create new references on every render.\n const validEventsKey = validEvents\n ? validEvents.slice().sort().join(\",\")\n : \"\";\n const stableValidEvents = useMemo(\n () => validEvents,\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [validEventsKey],\n );\n\n useEffect(() => {\n // Create handlers for all UI events\n const unsubscribes: Array<() => void> = [];\n\n // Listen for all UI events\n Object.entries(UI_EVENT_MAP).forEach(([uiEvent, smEvent]) => {\n const handler = (event: KFlowEvent) => {\n // Only dispatch if the event is valid for this state machine\n if (!stableValidEvents || stableValidEvents.includes(smEvent as E)) {\n dispatch(smEvent as E, event.payload);\n }\n };\n\n const unsubscribe = eventBus.on(uiEvent, handler);\n unsubscribes.push(unsubscribe);\n });\n\n // Also listen for generic UI events that aren't in the map\n const genericHandler = (event: KFlowEvent) => {\n const eventName = event.payload?.event as string | undefined;\n if (eventName) {\n const smEvent = eventName as E;\n if (!stableValidEvents || stableValidEvents.includes(smEvent)) {\n dispatch(smEvent, event.payload);\n }\n }\n };\n const genericUnsubscribe = eventBus.on(\"UI:DISPATCH\", genericHandler);\n unsubscribes.push(genericUnsubscribe);\n\n // Listen for custom UI events not in the static map\n // Components emit events with UI: prefix (e.g., UI:OPEN_MODAL)\n // We need to listen for both the prefixed and non-prefixed versions\n if (stableValidEvents) {\n stableValidEvents.forEach((smEvent) => {\n // Skip events already handled by UI_EVENT_MAP\n const uiPrefixedEvent = `UI:${smEvent}`;\n const alreadyMapped =\n Object.keys(UI_EVENT_MAP).includes(uiPrefixedEvent);\n if (!alreadyMapped) {\n const directHandler = (event: KFlowEvent) => {\n dispatch(smEvent, event.payload);\n };\n // Listen for UI:EVENT (what components emit)\n const unsubscribePrefixed = eventBus.on(\n uiPrefixedEvent,\n directHandler,\n );\n unsubscribes.push(unsubscribePrefixed);\n // Also listen for EVENT directly (for internal trait events)\n const unsubscribeDirect = eventBus.on(smEvent, directHandler);\n unsubscribes.push(unsubscribeDirect);\n }\n });\n }\n\n return () => {\n unsubscribes.forEach((unsub) => unsub());\n };\n }, [eventBus, dispatch, stableValidEvents]);\n}\n\n/**\n * Hook for selected entity tracking\n * Many list UIs need to track which item is selected.\n *\n * This hook uses SelectionProvider if available (preferred),\n * otherwise falls back to listening to events directly.\n *\n * @example Using with SelectionProvider (recommended)\n * ```tsx\n * function MyPage() {\n * return (\n * <EventBusProvider>\n * <SelectionProvider>\n * <MyComponent />\n * </SelectionProvider>\n * </EventBusProvider>\n * );\n * }\n *\n * function MyComponent() {\n * const [selected, setSelected] = useSelectedEntity<Order>();\n * // selected is automatically updated when UI:VIEW/UI:SELECT events fire\n * }\n * ```\n */\nexport function useSelectedEntity<T>(\n eventBusInstance?: ReturnType<typeof useEventBus>,\n): [T | null, (entity: T | null) => void] {\n const defaultEventBus = useEventBus();\n const eventBus = eventBusInstance ?? defaultEventBus;\n\n // Try to use SelectionProvider context first (preferred - survives component mount/unmount)\n // Import dynamically to avoid circular dependency\n const selectionContext = useSelectionContext<T>();\n\n // Local state for fallback mode (when SelectionProvider is not available)\n const [localSelected, setLocalSelected] = useState<T | null>(null);\n\n // Track if we're using context mode\n const usingContext = selectionContext !== null;\n\n // Listen for selection events (fallback mode only - when no SelectionProvider)\n useEffect(() => {\n // Skip event listening if we have a SelectionProvider (it handles events itself)\n if (usingContext) return;\n\n const handleSelect = (event: KFlowEvent) => {\n const row = event.payload?.row as T | undefined;\n if (row) {\n setLocalSelected(row);\n }\n };\n\n const handleDeselect = () => {\n setLocalSelected(null);\n };\n\n const unsubSelect = eventBus.on(\"UI:SELECT\", handleSelect);\n const unsubView = eventBus.on(\"UI:VIEW\", handleSelect);\n const unsubDeselect = eventBus.on(\"UI:DESELECT\", handleDeselect);\n const unsubClose = eventBus.on(\"UI:CLOSE\", handleDeselect);\n const unsubCancel = eventBus.on(\"UI:CANCEL\", handleDeselect);\n\n return () => {\n unsubSelect();\n unsubView();\n unsubDeselect();\n unsubClose();\n unsubCancel();\n };\n }, [eventBus, usingContext]);\n\n // Return context values if available, otherwise local state\n if (selectionContext) {\n return [selectionContext.selected, selectionContext.setSelected];\n }\n\n return [localSelected, setLocalSelected];\n}\n\n/**\n * Internal hook to safely access SelectionContext without throwing.\n * Returns null if SelectionProvider is not in the tree.\n */\nfunction useSelectionContext<T>(): {\n selected: T | null;\n setSelected: (entity: T | null) => void;\n} | null {\n // useContext returns null if the context is not available (no provider in tree)\n const context = useContext(SelectionContext);\n return context as {\n selected: T | null;\n setSelected: (entity: T | null) => void;\n } | null;\n}\n","/**\n * DetailPanel Organism Component\n *\n * Composes atoms and molecules to create a professional detail view.\n *\n * When `entity` prop is provided without `data`, automatically fetches data\n * using the useEntityDetail hook with ID from URL params.\n */\n\nimport React, { useCallback } from \"react\";\nimport { useParams, useNavigate } from \"react-router-dom\";\nimport {\n Calendar,\n Tag,\n TrendingUp,\n User,\n Clock,\n CheckCircle2,\n AlertCircle,\n DollarSign,\n FileText,\n Package,\n X,\n} from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport {\n Card,\n Badge,\n Typography,\n Icon,\n Avatar,\n Button,\n Divider,\n ProgressBar,\n} from \"../atoms\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { SimpleGrid } from \"../molecules/SimpleGrid\";\nimport { LoadingState } from \"../molecules/LoadingState\";\nimport { ErrorState } from \"../molecules/ErrorState\";\nimport { EmptyState } from \"../molecules/EmptyState\";\nimport { cn } from \"../../lib/cn\";\nimport { useEntityDetail } from \"../../hooks/useEntityData\";\nimport { useSelectedEntity } from \"../../hooks/useUIEvents\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\n\nfunction getFieldIcon(fieldName: string): LucideIcon {\n const name = fieldName.toLowerCase();\n if (name.includes(\"date\") || name.includes(\"time\")) return Calendar;\n if (name.includes(\"status\")) return Tag;\n if (name.includes(\"priority\")) return AlertCircle;\n if (name.includes(\"progress\") || name.includes(\"percent\")) return TrendingUp;\n if (\n name.includes(\"assignee\") ||\n name.includes(\"owner\") ||\n name.includes(\"user\") ||\n name.includes(\"member\")\n )\n return User;\n if (name.includes(\"due\")) return Clock;\n if (name.includes(\"complete\")) return CheckCircle2;\n if (\n name.includes(\"budget\") ||\n name.includes(\"cost\") ||\n name.includes(\"price\")\n )\n return DollarSign;\n if (\n name.includes(\"description\") ||\n name.includes(\"note\") ||\n name.includes(\"comment\")\n )\n return FileText;\n return Package;\n}\n\nfunction getBadgeVariant(\n fieldName: string,\n value: string,\n): \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\" {\n const name = fieldName.toLowerCase();\n const val = String(value).toLowerCase();\n\n if (name.includes(\"status\")) {\n if (\n val.includes(\"complete\") ||\n val.includes(\"done\") ||\n val.includes(\"active\")\n )\n return \"success\";\n if (val.includes(\"progress\") || val.includes(\"pending\")) return \"warning\";\n if (val.includes(\"block\") || val.includes(\"cancel\")) return \"danger\";\n return \"info\";\n }\n\n if (name.includes(\"priority\")) {\n if (val.includes(\"high\") || val.includes(\"urgent\")) return \"danger\";\n if (val.includes(\"medium\") || val.includes(\"normal\")) return \"warning\";\n if (val.includes(\"low\")) return \"info\";\n }\n\n return \"default\";\n}\n\nfunction formatFieldLabel(fieldName: string): string {\n return fieldName\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, (str) => str.toUpperCase());\n}\n\nfunction formatFieldValue(value: unknown, fieldName: string): string {\n if (typeof value === \"number\") {\n if (\n fieldName.toLowerCase().includes(\"progress\") ||\n fieldName.toLowerCase().includes(\"percent\")\n ) {\n return `${value}%`;\n }\n if (\n fieldName.toLowerCase().includes(\"budget\") ||\n fieldName.toLowerCase().includes(\"cost\")\n ) {\n return `$${value.toLocaleString()}`;\n }\n return value.toLocaleString();\n }\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n return String(value);\n}\n\nexport interface DetailField {\n label: string;\n value: React.ReactNode;\n icon?: LucideIcon;\n copyable?: boolean;\n}\n\nexport interface DetailSection {\n title: string;\n fields: DetailField[];\n}\n\n/**\n * Action definition for DetailPanel\n */\nexport interface DetailPanelAction {\n label: string;\n icon?: LucideIcon;\n onClick?: () => void;\n /** Event to emit via event bus */\n event?: string;\n /** Navigation URL */\n navigatesTo?: string;\n /** Button variant (primary for main action, others for secondary) */\n variant?: \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\n}\n\n/**\n * Field definition for unified interface - can be a simple string or object\n */\nexport type FieldDef = string | { key: string; header?: string };\n\n/**\n * Normalize fields to simple string array\n */\nfunction normalizeFieldDefs(fields: readonly FieldDef[] | undefined): string[] {\n if (!fields) return [];\n return fields.map((f) => (typeof f === \"string\" ? f : f.key));\n}\n\nexport interface DetailPanelProps {\n title?: string;\n subtitle?: string;\n status?: {\n label: string;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n };\n avatar?: React.ReactNode;\n sections?: readonly DetailSection[];\n /** Unified actions array - first action with variant='primary' is the main action */\n actions?: readonly DetailPanelAction[];\n footer?: React.ReactNode;\n slideOver?: boolean;\n onClose?: () => void;\n className?: string;\n\n // Schema-based props\n entity?: string;\n /** Fields to display - accepts string[] or {key, header}[] for unified interface */\n fields?: readonly FieldDef[] | readonly DetailField[];\n /** Alias for fields - backwards compatibility */\n fieldNames?: readonly string[];\n data?: Record<string, unknown> | unknown;\n isLoading?: boolean;\n error?: Error | null;\n /** Panel position (for drawer/sidebar placement) */\n position?: \"left\" | \"right\";\n /** Panel width (CSS value, e.g., '400px', '50%') */\n width?: string;\n}\n\nexport const DetailPanel: React.FC<DetailPanelProps> = ({\n title: propTitle,\n subtitle,\n status,\n avatar,\n sections: propSections,\n actions,\n footer,\n slideOver = false,\n onClose,\n className,\n entity,\n fields: propFields,\n fieldNames,\n data: externalData,\n isLoading: externalLoading = false,\n error: externalError,\n}) => {\n // Get ID from URL params for auto-fetching on detail pages\n const { id: urlId } = useParams<{ id: string }>();\n const navigate = useNavigate();\n const eventBus = useEventBus();\n\n // Support fields and fieldNames (alias) - normalize to string array\n // Check if propFields contains FieldDef (string or {key}) or DetailField (has label/value)\n const isFieldDefArray = (\n arr: readonly unknown[] | undefined,\n ): arr is readonly FieldDef[] => {\n if (!arr || arr.length === 0) return false;\n const first = arr[0];\n return (\n typeof first === \"string\" ||\n (typeof first === \"object\" && first !== null && \"key\" in first)\n );\n };\n\n const effectiveFieldNames = isFieldDefArray(propFields)\n ? normalizeFieldDefs(propFields)\n : fieldNames;\n\n // Get selected entity from event bus (for drawer/sidebar usage when entity is selected via UI:VIEW/UI:SELECT)\n const [selectedEntity] = useSelectedEntity<Record<string, unknown>>();\n\n // Handle action click with event bus and navigation support\n const handleActionClick = useCallback(\n (action: DetailPanelAction, data?: Record<string, unknown>) => {\n if (action.navigatesTo) {\n // Replace template variables in URL\n const url = action.navigatesTo.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) =>\n String(data?.[key] ?? \"\"),\n );\n navigate(url);\n return;\n }\n if (action.event) {\n eventBus.emit(`UI:${action.event}`, { row: data, entity });\n }\n if (action.onClick) {\n action.onClick();\n }\n },\n [navigate, eventBus, entity],\n );\n\n // Auto-fetch data when entity is provided but no external data and we have an ID\n const shouldAutoFetch =\n !!entity && !externalData && !selectedEntity && !!urlId;\n const {\n data: fetchedData,\n isLoading: fetchLoading,\n error: fetchError,\n } = useEntityDetail(\n shouldAutoFetch ? entity : undefined,\n shouldAutoFetch ? urlId : undefined,\n );\n\n // Use external data if provided, then selected entity from event bus, then fetched data\n const data = externalData ?? selectedEntity ?? fetchedData;\n const isLoading = externalLoading || (shouldAutoFetch && fetchLoading);\n const error = externalError ?? (shouldAutoFetch ? fetchError : null);\n\n let title = propTitle;\n // Use a mutable array for building sections, but accept readonly from props\n let sections: DetailSection[] | undefined = propSections\n ? [...propSections]\n : undefined;\n\n // Normalize data to Record type for indexing\n const normalizedData =\n data && typeof data === \"object\" && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : undefined;\n\n // Build sections from schema if provided\n if (normalizedData && effectiveFieldNames) {\n const primaryField = effectiveFieldNames[0];\n if (!title && primaryField && normalizedData[primaryField]) {\n title = String(normalizedData[primaryField]);\n }\n\n // Categorize fields\n const statusFields = effectiveFieldNames.filter(\n (f) =>\n f.toLowerCase().includes(\"status\") ||\n f.toLowerCase().includes(\"priority\"),\n );\n const progressFields = effectiveFieldNames.filter(\n (f) =>\n f.toLowerCase().includes(\"progress\") ||\n f.toLowerCase().includes(\"percent\"),\n );\n const metricFields = effectiveFieldNames.filter(\n (f) =>\n (f.toLowerCase().includes(\"budget\") ||\n f.toLowerCase().includes(\"cost\") ||\n f.toLowerCase().includes(\"count\")) &&\n !progressFields.includes(f),\n );\n const dateFields = effectiveFieldNames.filter(\n (f) =>\n f.toLowerCase().includes(\"date\") || f.toLowerCase().includes(\"time\"),\n );\n const descriptionFields = effectiveFieldNames.filter(\n (f) =>\n f.toLowerCase().includes(\"description\") ||\n f.toLowerCase().includes(\"note\"),\n );\n const otherFields = effectiveFieldNames.filter(\n (f) =>\n f !== primaryField &&\n !statusFields.includes(f) &&\n !progressFields.includes(f) &&\n !metricFields.includes(f) &&\n !dateFields.includes(f) &&\n !descriptionFields.includes(f),\n );\n\n sections = [];\n\n // Overview section\n if (statusFields.length > 0 || otherFields.length > 0) {\n const overviewFields: DetailField[] = [];\n\n [...statusFields, ...otherFields.slice(0, 3)].forEach((field) => {\n const value = normalizedData[field];\n if (value !== undefined && value !== null) {\n overviewFields.push({\n label: formatFieldLabel(field),\n value: formatFieldValue(value, field),\n icon: getFieldIcon(field),\n });\n }\n });\n\n if (overviewFields.length > 0) {\n sections.push({ title: \"Overview\", fields: overviewFields });\n }\n }\n\n // Metrics section\n if (progressFields.length > 0 || metricFields.length > 0) {\n const metricsFields: DetailField[] = [];\n\n [...progressFields, ...metricFields].forEach((field) => {\n const value = normalizedData[field];\n if (value !== undefined && value !== null) {\n metricsFields.push({\n label: formatFieldLabel(field),\n value: formatFieldValue(value, field),\n icon: getFieldIcon(field),\n });\n }\n });\n\n if (metricsFields.length > 0) {\n sections.push({ title: \"Metrics\", fields: metricsFields });\n }\n }\n\n // Timeline section\n if (dateFields.length > 0) {\n const timelineFields: DetailField[] = [];\n\n dateFields.forEach((field) => {\n const value = normalizedData[field];\n if (value !== undefined && value !== null) {\n timelineFields.push({\n label: formatFieldLabel(field),\n value: formatFieldValue(value, field),\n icon: getFieldIcon(field),\n });\n }\n });\n\n if (timelineFields.length > 0) {\n sections.push({ title: \"Timeline\", fields: timelineFields });\n }\n }\n\n // Description section\n if (descriptionFields.length > 0) {\n const descFields: DetailField[] = [];\n\n descriptionFields.forEach((field) => {\n const value = normalizedData[field];\n if (value !== undefined && value !== null) {\n descFields.push({\n label: formatFieldLabel(field),\n value: String(value),\n icon: getFieldIcon(field),\n });\n }\n });\n\n if (descFields.length > 0) {\n sections.push({ title: \"Details\", fields: descFields });\n }\n }\n }\n\n if (isLoading) {\n return (\n <LoadingState\n message={`Loading ${entity || \"details\"}...`}\n className={className}\n />\n );\n }\n\n if (error) {\n return (\n <ErrorState\n title=\"Error loading data\"\n message={error.message || \"An error occurred while loading the data.\"}\n onRetry={() => window.location.reload()}\n className={className}\n />\n );\n }\n\n if (\n !normalizedData &&\n !isLoading &&\n effectiveFieldNames &&\n effectiveFieldNames.length > 0\n ) {\n return (\n <EmptyState\n title=\"Not Found\"\n description={`The requested ${entity || \"item\"} could not be found.`}\n className={className}\n />\n );\n }\n\n const content = (\n <VStack gap=\"lg\">\n {/* Header Card */}\n <Card variant=\"elevated\">\n <VStack gap=\"md\" className=\"p-6\">\n <HStack justify=\"between\" align=\"start\">\n <VStack gap=\"sm\" flex className=\"min-w-0\">\n {avatar}\n\n <Typography variant=\"h2\" weight=\"bold\">\n {title || entity || \"Details\"}\n </Typography>\n\n {subtitle && (\n <Typography variant=\"body\" color=\"secondary\">\n {subtitle}\n </Typography>\n )}\n\n {/* Status badges */}\n {normalizedData && effectiveFieldNames && (\n <HStack gap=\"xs\" wrap>\n {effectiveFieldNames\n .filter(\n (f) =>\n f.toLowerCase().includes(\"status\") ||\n f.toLowerCase().includes(\"priority\"),\n )\n .map((field) => {\n const value = normalizedData[field];\n if (!value) return null;\n return (\n <Badge\n key={field}\n variant={getBadgeVariant(field, String(value))}\n >\n {String(value)}\n </Badge>\n );\n })}\n </HStack>\n )}\n\n {status && (\n <Badge variant={(status.variant as any) || \"default\"}>\n {status.label}\n </Badge>\n )}\n </VStack>\n\n {slideOver && onClose && (\n <Button variant=\"ghost\" size=\"sm\" onClick={onClose} icon={X} />\n )}\n </HStack>\n\n {/* Progress bars */}\n {normalizedData &&\n effectiveFieldNames &&\n effectiveFieldNames\n .filter(\n (f) =>\n f.toLowerCase().includes(\"progress\") ||\n f.toLowerCase().includes(\"percent\"),\n )\n .map((field) => {\n const value = normalizedData[field];\n if (\n value === undefined ||\n value === null ||\n typeof value !== \"number\"\n )\n return null;\n return (\n <VStack key={field} gap=\"xs\" className=\"w-full\">\n <HStack justify=\"between\">\n <Typography variant=\"small\" color=\"secondary\">\n {formatFieldLabel(field)}\n </Typography>\n <Typography variant=\"small\" weight=\"medium\">\n {value}%\n </Typography>\n </HStack>\n <ProgressBar value={value} />\n </VStack>\n );\n })}\n\n {/* Actions */}\n {actions && actions.length > 0 && (\n <>\n <Divider />\n <HStack gap=\"sm\">\n {actions.map((action, idx) => (\n <Button\n key={idx}\n variant={action.variant || \"secondary\"}\n onClick={() => handleActionClick(action, normalizedData)}\n icon={action.icon}\n >\n {action.label}\n </Button>\n ))}\n </HStack>\n </>\n )}\n </VStack>\n </Card>\n\n {/* Sections */}\n {sections &&\n sections.map((section, sectionIdx) => (\n <Card key={sectionIdx} variant=\"bordered\">\n <VStack gap=\"md\" className=\"p-6\">\n <Typography variant=\"h4\" weight=\"semibold\">\n {section.title}\n </Typography>\n\n <Divider />\n\n <SimpleGrid minChildWidth=\"250px\" maxCols={2} gap=\"lg\">\n {section.fields.map((field, fieldIdx) => (\n <HStack key={fieldIdx} gap=\"sm\" align=\"start\">\n {field.icon && (\n <Icon\n icon={field.icon}\n size=\"md\"\n className=\"text-[var(--color-muted-foreground)] mt-1\"\n />\n )}\n\n <VStack gap=\"xs\" flex className=\"min-w-0\">\n <Typography\n variant=\"small\"\n color=\"secondary\"\n weight=\"medium\"\n >\n {field.label}\n </Typography>\n\n <Typography variant=\"body\" className=\"break-words\">\n {field.value || \"—\"}\n </Typography>\n </VStack>\n </HStack>\n ))}\n </SimpleGrid>\n </VStack>\n </Card>\n ))}\n\n {/* Footer */}\n {footer && <Card variant=\"bordered\">{footer}</Card>}\n </VStack>\n );\n\n return (\n <div\n className={cn(\n slideOver &&\n \"fixed inset-y-0 right-0 w-full max-w-2xl bg-[var(--color-card)] shadow-[var(--shadow-lg)] z-50 overflow-y-auto p-6\",\n className,\n )}\n >\n {content}\n </div>\n );\n};\n\nDetailPanel.displayName = \"DetailPanel\";\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"../atoms\";\n\nexport interface FormSectionProps {\n /** Section title */\n title?: string;\n /** Section description */\n description?: string;\n /** Form fields */\n children: React.ReactNode;\n /** Collapsible */\n collapsible?: boolean;\n /** Default collapsed state */\n defaultCollapsed?: boolean;\n /** Use card wrapper */\n card?: boolean;\n /** Grid columns for fields */\n columns?: 1 | 2 | 3;\n className?: string;\n}\n\nexport const FormSection: React.FC<FormSectionProps> = ({\n title,\n description,\n children,\n collapsible = false,\n defaultCollapsed = false,\n card = false,\n columns = 1,\n className,\n}) => {\n const [collapsed, setCollapsed] = React.useState(defaultCollapsed);\n\n const gridClass = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 md:grid-cols-2\",\n 3: \"grid-cols-1 md:grid-cols-2 lg:grid-cols-3\",\n }[columns];\n\n const content = (\n <>\n {(title || description) && (\n <div className=\"mb-4\">\n {title && (\n <div\n className={cn(\n \"flex items-center justify-between\",\n collapsible && \"cursor-pointer\",\n )}\n onClick={() => collapsible && setCollapsed(!collapsed)}\n >\n <h3 className=\"text-base font-semibold text-[var(--color-foreground)]\">\n {title}\n </h3>\n {collapsible && (\n <button\n type=\"button\"\n className=\"p-1 rounded hover:bg-[var(--color-muted)]\"\n >\n <svg\n className={cn(\n \"h-5 w-5 text-[var(--color-muted-foreground)] transition-transform\",\n collapsed && \"rotate-180\",\n )}\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M19 9l-7 7-7-7\"\n />\n </svg>\n </button>\n )}\n </div>\n )}\n {description && (\n <p className=\"mt-1 text-sm text-[var(--color-muted-foreground)]\">\n {description}\n </p>\n )}\n </div>\n )}\n {(!collapsible || !collapsed) && (\n <div className={cn(\"grid gap-4\", gridClass)}>{children}</div>\n )}\n </>\n );\n\n if (card) {\n return <Card className={cn(\"p-6\", className)}>{content}</Card>;\n }\n\n return <div className={className}>{content}</div>;\n};\n\n/**\n * Form layout with multiple sections\n */\nexport interface FormLayoutProps {\n children: React.ReactNode;\n /** Show section dividers */\n dividers?: boolean;\n className?: string;\n}\n\nexport const FormLayout: React.FC<FormLayoutProps> = ({\n children,\n dividers = true,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"space-y-8\",\n dividers &&\n \"[&>*+*]:pt-8 [&>*+*]:border-t [&>*+*]:border-[var(--color-border)]\",\n className,\n )}\n >\n {children}\n </div>\n );\n};\n\n/**\n * Form actions bar (submit/cancel buttons)\n */\nexport interface FormActionsProps {\n children: React.ReactNode;\n /** Sticky at bottom */\n sticky?: boolean;\n /** Alignment */\n align?: \"left\" | \"right\" | \"between\" | \"center\";\n className?: string;\n}\n\nexport const FormActions: React.FC<FormActionsProps> = ({\n children,\n sticky = false,\n align = \"right\",\n className,\n}) => {\n const alignClass = {\n left: \"justify-start\",\n right: \"justify-end\",\n between: \"justify-between\",\n center: \"justify-center\",\n }[align];\n\n return (\n <div\n className={cn(\n \"flex items-center gap-3 pt-6 border-t border-[var(--color-border)]\",\n alignClass,\n sticky &&\n \"sticky bottom-0 bg-[var(--color-card)] py-4 -mx-6 px-6 shadow-[0_-4px_6px_-1px_rgb(0,0,0,0.05)]\",\n className,\n )}\n >\n {children}\n </div>\n );\n};\n","/**\n * Form Organism Component\n *\n * A form container component with submit/reset handling.\n * Supports both children-based and schema-based form generation.\n * Renders correct input types based on field definitions including relations.\n *\n * Extended for inspection forms with:\n * - Conditional field visibility via S-expressions\n * - Hidden calculations that emit GLOBAL_VARIABLE_SET events\n * - Violation triggers that emit VIOLATION_DETECTED events\n * - Nested sections with collapsible support\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Input } from \"../atoms/Input\";\nimport { Button } from \"../atoms/Button\";\nimport { Select, type SelectOption } from \"../atoms/Select\";\nimport { Textarea } from \"../atoms/Textarea\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport { Box } from \"../atoms/Box\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Icon } from \"../atoms/Icon\";\nimport {\n RelationSelect,\n type RelationOption,\n} from \"../molecules/RelationSelect\";\nimport { Alert } from \"../molecules/Alert\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\nimport {\n debug,\n debugGroup,\n debugGroupEnd,\n isDebugEnabled,\n} from \"../../lib/debug\";\nimport {\n evaluate,\n createMinimalContext,\n type SExpr,\n type EvaluationContext as SharedEvaluationContext,\n} from \"@orbital/shared\";\n\n/**\n * S-Expression type for conditional logic (re-export from @orbital/shared)\n */\nexport type SExpression = SExpr;\n\n/**\n * Form-specific evaluation context\n */\nexport interface FormEvaluationContext {\n formValues: Record<string, unknown>;\n globalVariables: Record<string, unknown>;\n localVariables?: Record<string, unknown>;\n entity?: Record<string, unknown>;\n}\n\n/**\n * Convert form context to shared evaluator context\n */\nfunction toSharedContext(\n formCtx: FormEvaluationContext,\n): SharedEvaluationContext {\n return createMinimalContext(\n {\n formValues: formCtx.formValues,\n globalVariables: formCtx.globalVariables,\n localVariables: formCtx.localVariables ?? {},\n ...formCtx.entity,\n },\n {},\n \"active\",\n );\n}\n\n/**\n * Evaluate an S-expression using the shared evaluator\n */\nfunction evaluateFormExpression(\n expr: SExpression,\n formCtx: FormEvaluationContext,\n): unknown {\n const ctx = toSharedContext(formCtx);\n return evaluate(expr, ctx);\n}\n\n/**\n * Hidden calculation definition\n */\nexport interface HiddenCalculation {\n variableName: string;\n expression: SExpression;\n triggerFields: string[];\n}\n\n/**\n * Violation definition\n */\nexport interface ViolationDefinition {\n law: string;\n article: string;\n actionType: \"measure\" | \"admin\" | \"penalty\";\n message: string;\n}\n\n/**\n * Violation trigger definition\n */\nexport interface ViolationTrigger {\n condition: SExpression;\n violation: ViolationDefinition;\n fieldId?: string;\n}\n\n/**\n * Form section definition for nested sections\n */\nexport interface FormSection {\n id: string;\n title: string;\n condition?: SExpression;\n fields: SchemaField[];\n collapsible?: boolean;\n}\n\n/**\n * Form tab definition for tabbed inspection forms\n */\nexport interface FormTabDefinition {\n /** Unique tab identifier */\n id: string;\n /** Tab display label */\n label: string;\n /** Icon name for the tab (from Icon component) */\n icon?: string;\n /** Sections within this tab */\n sections: FormSection[];\n /** Condition for showing/hiding the entire tab */\n condition?: SExpression;\n /** Badge count or text to display on tab */\n badge?: string | number;\n /** Whether this tab has validation errors */\n hasErrors?: boolean;\n}\n\n/**\n * Relation configuration for foreign key fields\n */\nexport interface RelationConfig {\n /** Target entity name (e.g., 'User', 'Project') */\n entity: string;\n /** Field on target entity to display (defaults to 'name') */\n displayField?: string;\n /** Cardinality: one-to-one or one-to-many */\n cardinality?: \"one\" | \"many\";\n}\n\n/**\n * Schema field definition\n * Supports both 'name' and 'field' for compatibility with different schema formats\n */\nexport interface SchemaField {\n /** Field name (primary) */\n name?: string;\n /** Field name (alias for compatibility) */\n field?: string;\n /** Display label */\n label?: string;\n /** Field type (string, number, email, date, boolean, enum, relation, etc.) */\n type?: string;\n /** Input type for rendering (text, select, textarea, checkbox, etc.) */\n inputType?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Whether field is required */\n required?: boolean;\n /** Default value */\n defaultValue?: unknown;\n /** Options for select/enum fields - accepts readonly for generated const arrays */\n options?: readonly SelectOption[];\n /** Enum values (alternative to options, just strings) - accepts readonly for generated const arrays */\n values?: readonly string[];\n /** Relation configuration for foreign key references */\n relation?: RelationConfig;\n /** Minimum value (for number) or length (for string) */\n min?: number;\n /** Maximum value or length */\n max?: number;\n /** Pattern for validation */\n pattern?: string;\n /** Validation rules */\n validation?: Record<string, unknown>;\n /** Whether field is readonly (displays value but cannot edit) */\n readonly?: boolean;\n /** Whether field is disabled (alternative to readonly for compatibility) */\n disabled?: boolean;\n}\n\nexport interface FormProps extends Omit<\n React.FormHTMLAttributes<HTMLFormElement>,\n \"onSubmit\"\n> {\n /** Form fields (traditional React children) */\n children?: React.ReactNode;\n /** Submit handler - receives form data, or event name string for trait dispatch */\n onSubmit?:\n | ((\n e: React.FormEvent<HTMLFormElement>,\n data?: Record<string, unknown>,\n ) => void)\n | string;\n /** Cancel handler - function or event name string for trait dispatch */\n onCancel?: (() => void) | string;\n /** Form layout */\n layout?: \"vertical\" | \"horizontal\" | \"inline\";\n /** Gap between fields */\n gap?: \"sm\" | \"md\" | \"lg\";\n /** Additional CSS classes */\n className?: string;\n\n // Schema-based props\n /** Entity type name (schema format) */\n entity?: string;\n /** Form mode - 'create' for new records, 'edit' for updating existing */\n mode?: \"create\" | \"edit\";\n /** Fields definition (schema format) - accepts readonly for generated const arrays */\n fields?: readonly Readonly<SchemaField>[];\n /** Initial form data */\n initialData?: Record<string, unknown> | unknown;\n /** Loading state */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Submit button label */\n submitLabel?: string;\n /** Cancel button label (if provided, shows cancel button) */\n cancelLabel?: string;\n /** Show cancel button (defaults to true for schema forms) */\n showCancel?: boolean;\n /** Form title (used by ModalSlot to extract title) */\n title?: string;\n\n // Event dispatch props (for trait state machine integration)\n /** Event to dispatch on successful submit (defaults to 'SAVE') */\n submitEvent?: string;\n /** Event to dispatch on cancel (defaults to 'CANCEL') */\n cancelEvent?: string;\n\n // Relation data props\n /** Data for relation fields: { fieldName: RelationOption[] } */\n relationsData?: Record<string, readonly RelationOption[]>;\n /** Loading state for relation data: { fieldName: boolean } */\n relationsLoading?: Record<string, boolean>;\n\n // Inspection form extensions\n /** Map of fieldId → S-expression condition for conditional field display (boolean true means enabled but config loaded separately) */\n conditionalFields?: Record<string, SExpression> | boolean;\n /** Hidden calculations that emit GLOBAL_VARIABLE_SET on field change (boolean true means enabled but config loaded separately) */\n hiddenCalculations?: HiddenCalculation[] | boolean;\n /** Violation conditions that emit VIOLATION_DETECTED when met (boolean true means enabled but config loaded separately) */\n violationTriggers?: ViolationTrigger[] | boolean;\n /** Context for S-expression evaluation - accepts flexible types from generated code */\n evaluationContext?: FormEvaluationContext | Record<string, unknown>;\n /** Nested form sections with optional conditions */\n sections?: FormSection[];\n /** Callback when any field value changes */\n onFieldChange?: (change: {\n fieldId: string;\n value: unknown;\n formValues: Record<string, unknown>;\n }) => void;\n /** Config path for form configuration (schema-driven) */\n configPath?: string;\n /** Whether the form supports repeatable entries */\n repeatable?: boolean;\n}\n\nconst layoutStyles = {\n vertical: \"flex flex-col\",\n horizontal: \"flex flex-row flex-wrap items-end\",\n inline: \"flex flex-row flex-wrap items-center\",\n};\n\nconst gapStyles = {\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n};\n\n/**\n * Get enum options from field definition\n */\nfunction getEnumOptions(field: SchemaField): SelectOption[] {\n // First check if options are already SelectOption format\n // Spread to convert readonly to mutable array\n if (field.options && field.options.length > 0) {\n return [...field.options];\n }\n\n // Check for values array (just strings)\n if (field.values && field.values.length > 0) {\n return field.values.map((v) => ({\n value: v,\n label: v.charAt(0).toUpperCase() + v.slice(1).replace(/_/g, \" \"),\n }));\n }\n\n // Check for validation.enum\n const validation = field.validation as Record<string, unknown> | undefined;\n if (validation?.enum && Array.isArray(validation.enum)) {\n return (validation.enum as string[]).map((v) => ({\n value: v,\n label: v.charAt(0).toUpperCase() + v.slice(1).replace(/_/g, \" \"),\n }));\n }\n\n return [];\n}\n\n/**\n * Determine the appropriate input type based on field definition\n */\nfunction determineInputType(field: SchemaField): string {\n // If inputType is explicitly set, use it\n if (field.inputType) {\n return field.inputType;\n }\n\n // Check for relation type\n if (field.type === \"relation\" || field.relation) {\n return \"relation\";\n }\n\n // Check for enum type\n if (\n field.type === \"enum\" ||\n field.values ||\n getEnumOptions(field).length > 0\n ) {\n return \"select\";\n }\n\n // Map type to inputType\n switch (field.type?.toLowerCase()) {\n case \"email\":\n return \"email\";\n case \"password\":\n return \"password\";\n case \"url\":\n return \"url\";\n case \"number\":\n case \"integer\":\n case \"float\":\n return \"number\";\n case \"date\":\n return \"date\";\n case \"datetime\":\n case \"timestamp\":\n return \"datetime-local\";\n case \"boolean\":\n return \"checkbox\";\n case \"textarea\":\n case \"text\":\n return field.max && field.max > 200 ? \"textarea\" : \"text\";\n default:\n return \"text\";\n }\n}\n\nexport const Form: React.FC<FormProps> = ({\n children,\n onSubmit,\n onCancel,\n layout = \"vertical\",\n gap = \"md\",\n className,\n // Schema-based props\n entity,\n fields,\n initialData = {},\n isLoading = false,\n error,\n submitLabel = \"Save\",\n cancelLabel = \"Cancel\",\n showCancel,\n title,\n submitEvent = \"SAVE\",\n cancelEvent = \"CANCEL\",\n relationsData = {},\n relationsLoading = {},\n // Inspection form extensions - may come as boolean true from generated code (meaning enabled but config loaded separately)\n conditionalFields: conditionalFieldsRaw = {},\n hiddenCalculations: hiddenCalculationsRaw = [],\n violationTriggers: violationTriggersRaw = [],\n evaluationContext: externalContext,\n sections = [],\n onFieldChange,\n ...props\n}) => {\n const eventBus = useEventBus();\n const normalizedInitialData = (initialData as Record<string, unknown>) ?? {};\n\n // Normalize props that might come as boolean true from generated code\n const conditionalFields =\n typeof conditionalFieldsRaw === \"boolean\" ? {} : conditionalFieldsRaw;\n const hiddenCalculations =\n typeof hiddenCalculationsRaw === \"boolean\" ? [] : hiddenCalculationsRaw;\n const violationTriggers =\n typeof violationTriggersRaw === \"boolean\" ? [] : violationTriggersRaw;\n const [formData, setFormData] = React.useState<Record<string, unknown>>(\n normalizedInitialData,\n );\n const [collapsedSections, setCollapsedSections] = React.useState<Set<string>>(\n new Set(),\n );\n\n // Default to showing cancel button for schema-based forms\n const shouldShowCancel = showCancel ?? (fields && fields.length > 0);\n\n // Build evaluation context from form data and external context\n const evalContext: FormEvaluationContext = React.useMemo(\n () => ({\n formValues: formData,\n globalVariables: (externalContext?.globalVariables ?? {}) as Record<\n string,\n unknown\n >,\n localVariables: (externalContext?.localVariables ?? {}) as Record<\n string,\n unknown\n >,\n entity: (externalContext?.entity ?? {}) as Record<string, unknown>,\n }),\n [formData, externalContext],\n );\n\n // Sync form data when initialData changes (e.g., when data loads from API)\n React.useEffect(() => {\n const data = initialData as Record<string, unknown> | undefined;\n if (data && Object.keys(data).length > 0) {\n setFormData(data);\n }\n }, [initialData]);\n\n /**\n * Process hidden calculations when triggered fields change\n */\n const processCalculations = React.useCallback(\n (changedFieldId: string, newFormData: Record<string, unknown>) => {\n if (!hiddenCalculations.length) return;\n\n const context: FormEvaluationContext = {\n formValues: newFormData,\n globalVariables: (externalContext?.globalVariables ?? {}) as Record<\n string,\n unknown\n >,\n localVariables: (externalContext?.localVariables ?? {}) as Record<\n string,\n unknown\n >,\n entity: (externalContext?.entity ?? {}) as Record<string, unknown>,\n };\n\n hiddenCalculations.forEach((calc) => {\n if (calc.triggerFields.includes(changedFieldId)) {\n const value = evaluateFormExpression(calc.expression, context);\n eventBus.emit(\"UI:GLOBAL_VARIABLE_SET\", {\n variable: calc.variableName,\n value,\n });\n debug(\n \"forms\",\n `Calculation triggered: ${calc.variableName} = ${value}`,\n );\n }\n });\n },\n [hiddenCalculations, externalContext, eventBus],\n );\n\n /**\n * Check violation triggers when form data changes\n */\n const checkViolations = React.useCallback(\n (changedFieldId: string, newFormData: Record<string, unknown>) => {\n if (!violationTriggers.length) return;\n\n const context: FormEvaluationContext = {\n formValues: newFormData,\n globalVariables: (externalContext?.globalVariables ?? {}) as Record<\n string,\n unknown\n >,\n localVariables: (externalContext?.localVariables ?? {}) as Record<\n string,\n unknown\n >,\n entity: (externalContext?.entity ?? {}) as Record<string, unknown>,\n };\n\n violationTriggers.forEach((trigger: ViolationTrigger) => {\n const conditionMet = evaluateFormExpression(trigger.condition, context);\n if (conditionMet) {\n eventBus.emit(\"UI:VIOLATION_DETECTED\", {\n fieldId: trigger.fieldId ?? changedFieldId,\n ...trigger.violation,\n });\n debug(\n \"forms\",\n `Violation detected: ${trigger.violation.law} ${trigger.violation.article}`,\n );\n }\n });\n },\n [violationTriggers, externalContext, eventBus],\n );\n\n const handleChange = (name: string, value: unknown) => {\n const newFormData = { ...formData, [name]: value };\n setFormData(newFormData);\n\n // Emit field change event\n eventBus.emit(\"UI:FIELD_CHANGED\", {\n fieldId: name,\n value,\n formValues: newFormData,\n });\n\n // Call external handler if provided\n onFieldChange?.({ fieldId: name, value, formValues: newFormData });\n\n // Process calculations and check violations\n processCalculations(name, newFormData);\n checkViolations(name, newFormData);\n };\n\n /**\n * Check if a field should be visible based on its condition\n */\n const isFieldVisible = React.useCallback(\n (fieldName: string): boolean => {\n const condition = conditionalFields[fieldName];\n if (!condition) return true;\n return Boolean(evaluateFormExpression(condition, evalContext));\n },\n [conditionalFields, evalContext],\n );\n\n /**\n * Check if a section should be visible based on its condition\n */\n const isSectionVisible = React.useCallback(\n (section: FormSection): boolean => {\n if (!section.condition) return true;\n return Boolean(evaluateFormExpression(section.condition, evalContext));\n },\n [evalContext],\n );\n\n /**\n * Toggle section collapsed state\n */\n const toggleSection = (sectionId: string) => {\n setCollapsedSections((prev) => {\n const next = new Set(prev);\n if (next.has(sectionId)) {\n next.delete(sectionId);\n } else {\n next.add(sectionId);\n }\n return next;\n });\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n // Dispatch submit event for trait state machine integration\n eventBus.emit(`UI:${submitEvent}`, { data: formData, entity });\n // Handle onSubmit - can be a function or event name string\n if (typeof onSubmit === \"function\") {\n onSubmit(e, formData);\n } else if (typeof onSubmit === \"string\") {\n eventBus.emit(`UI:${onSubmit}`, { data: formData, entity });\n }\n };\n\n const handleCancel = () => {\n // Dispatch cancel event for trait state machine integration\n eventBus.emit(`UI:${cancelEvent}`);\n eventBus.emit(\"UI:CLOSE\");\n // Handle onCancel - can be a function or event name string\n if (typeof onCancel === \"function\") {\n onCancel();\n } else if (typeof onCancel === \"string\") {\n eventBus.emit(`UI:${onCancel}`);\n }\n };\n\n /**\n * Render a single field with conditional visibility\n */\n const renderField = React.useCallback(\n (field: SchemaField) => {\n const fieldName = field.name || field.field;\n if (!fieldName) return null;\n\n // Check conditional visibility\n if (!isFieldVisible(fieldName)) {\n return null;\n }\n\n const inputType = determineInputType(field);\n const label =\n field.label ||\n fieldName.charAt(0).toUpperCase() +\n fieldName.slice(1).replace(/([A-Z])/g, \" $1\");\n const currentValue = formData[fieldName] ?? field.defaultValue ?? \"\";\n\n return (\n <VStack key={fieldName} gap=\"xs\">\n {inputType !== \"checkbox\" && (\n <Typography as=\"label\" variant=\"label\" weight=\"bold\">\n {label}\n {field.required && (\n <Typography as=\"span\" color=\"error\" className=\"ml-1\">\n *\n </Typography>\n )}\n </Typography>\n )}\n {renderFieldInput(field, fieldName, inputType, currentValue, label)}\n </VStack>\n );\n },\n [formData, isFieldVisible, relationsData, relationsLoading, isLoading],\n );\n\n // Generate form fields from schema\n const schemaFields = React.useMemo(() => {\n if (!fields || fields.length === 0) return null;\n\n if (isDebugEnabled()) {\n debugGroup(`Form: ${entity || \"unknown\"}`);\n debug(`Fields count: ${fields.length}`);\n debug(\"Conditional fields:\", Object.keys(conditionalFields));\n debugGroupEnd();\n }\n\n return fields.map(renderField).filter(Boolean);\n }, [fields, renderField, entity, conditionalFields]);\n\n // Generate form sections with nested fields\n const sectionElements = React.useMemo(() => {\n if (!sections || sections.length === 0) return null;\n\n return sections\n .map((section) => {\n if (!isSectionVisible(section)) {\n return null;\n }\n\n const isCollapsed = collapsedSections.has(section.id);\n\n return (\n <Box key={section.id} border rounded=\"lg\" overflow=\"hidden\">\n <Box\n className={cn(\n \"px-4 py-3 bg-[var(--color-muted)] flex items-center justify-between\",\n section.collapsible &&\n \"cursor-pointer hover:bg-[var(--color-muted)]/80\",\n )}\n onClick={\n section.collapsible\n ? () => toggleSection(section.id)\n : undefined\n }\n >\n <Typography variant=\"label\" weight=\"semibold\">\n {section.title}\n </Typography>\n {section.collapsible && (\n <Icon\n name=\"chevron-down\"\n size=\"md\"\n className={cn(\n \"text-[var(--color-muted-foreground)] transition-transform\",\n isCollapsed && \"rotate-180\",\n )}\n />\n )}\n </Box>\n {!isCollapsed && (\n <Box padding=\"md\">\n <VStack gap={gap === \"sm\" ? \"sm\" : gap === \"lg\" ? \"lg\" : \"md\"}>\n {section.fields.map(renderField).filter(Boolean)}\n </VStack>\n </Box>\n )}\n </Box>\n );\n })\n .filter(Boolean);\n }, [sections, isSectionVisible, collapsedSections, renderField, gap]);\n\n /**\n * Render the appropriate input component based on field type\n */\n function renderFieldInput(\n field: SchemaField,\n fieldName: string,\n inputType: string,\n currentValue: unknown,\n label: string,\n ): React.ReactNode {\n const commonProps = {\n id: fieldName,\n name: fieldName,\n required: field.required,\n disabled: isLoading,\n placeholder: field.placeholder,\n };\n\n switch (inputType) {\n case \"checkbox\":\n return (\n <Checkbox\n {...commonProps}\n label={label + (field.required ? \" *\" : \"\")}\n checked={Boolean(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.checked)}\n />\n );\n\n case \"textarea\":\n return (\n <Textarea\n {...commonProps}\n value={String(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n minLength={field.min}\n maxLength={field.max}\n />\n );\n\n case \"select\": {\n const options = getEnumOptions(field);\n return (\n <Select\n {...commonProps}\n options={options}\n value={String(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n placeholder={field.placeholder || `Select ${label}...`}\n />\n );\n }\n\n case \"relation\": {\n // Get relation options from relationsData\n const relationOptions = relationsData[fieldName] || [];\n const relationLoading = relationsLoading[fieldName] || false;\n\n return (\n <RelationSelect\n {...commonProps}\n value={currentValue ? String(currentValue) : undefined}\n onChange={(value) => handleChange(fieldName, value)}\n options={relationOptions}\n isLoading={relationLoading}\n placeholder={field.placeholder || `Select ${label}...`}\n searchPlaceholder={`Search ${field.relation?.entity || label}...`}\n clearable={!field.required}\n />\n );\n }\n\n case \"number\":\n return (\n <Input\n {...commonProps}\n type=\"number\"\n value={\n currentValue !== undefined && currentValue !== \"\"\n ? String(currentValue)\n : \"\"\n }\n onChange={(e) =>\n handleChange(\n fieldName,\n e.target.value ? Number(e.target.value) : undefined,\n )\n }\n min={field.min}\n max={field.max}\n />\n );\n\n case \"date\":\n return (\n <Input\n {...commonProps}\n type=\"date\"\n value={formatDateValue(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n />\n );\n\n case \"datetime-local\":\n return (\n <Input\n {...commonProps}\n type=\"datetime-local\"\n value={formatDateTimeValue(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n />\n );\n\n case \"email\":\n return (\n <Input\n {...commonProps}\n type=\"email\"\n value={String(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n />\n );\n\n case \"url\":\n return (\n <Input\n {...commonProps}\n type=\"url\"\n value={String(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n />\n );\n\n case \"password\":\n return (\n <Input\n {...commonProps}\n type=\"password\"\n value={String(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n />\n );\n\n case \"text\":\n default:\n return (\n <Input\n {...commonProps}\n type=\"text\"\n value={String(currentValue)}\n onChange={(e) => handleChange(fieldName, e.target.value)}\n minLength={field.min}\n maxLength={field.max}\n pattern={field.pattern}\n />\n );\n }\n }\n\n return (\n <form\n className={cn(layoutStyles[layout], gapStyles[gap], className)}\n onSubmit={handleSubmit}\n {...props}\n >\n {/* Error state */}\n {error && (\n <Alert variant=\"error\" className=\"mb-4\">\n {error.message || \"An error occurred\"}\n </Alert>\n )}\n\n {/* Render sections (inspection forms with nested sections) */}\n {sectionElements && sectionElements.length > 0 && (\n <VStack gap={gap === \"sm\" ? \"sm\" : gap === \"lg\" ? \"lg\" : \"md\"}>\n {sectionElements}\n </VStack>\n )}\n\n {/* Render schema-generated fields (flat fields outside sections) */}\n {schemaFields}\n\n {/* Render children (traditional form content) */}\n {children}\n\n {/* Action buttons for schema-based forms */}\n {((schemaFields && schemaFields.length > 0) ||\n (sectionElements && sectionElements.length > 0)) && (\n <HStack gap=\"sm\" className=\"pt-4\">\n <Button\n type=\"submit\"\n variant=\"primary\"\n disabled={isLoading}\n data-event={submitEvent}\n data-testid={`action-${submitEvent}`}\n >\n {isLoading ? \"Saving...\" : submitLabel}\n </Button>\n {shouldShowCancel && (\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={handleCancel}\n disabled={isLoading}\n data-event={cancelEvent}\n data-testid={`action-${cancelEvent}`}\n >\n {cancelLabel}\n </Button>\n )}\n </HStack>\n )}\n </form>\n );\n};\n\n/**\n * Format date value for date input\n */\nfunction formatDateValue(value: unknown): string {\n if (!value) return \"\";\n\n if (value instanceof Date) {\n return value.toISOString().split(\"T\")[0];\n }\n\n if (typeof value === \"string\") {\n // Try to parse as date\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n return date.toISOString().split(\"T\")[0];\n }\n return value;\n }\n\n return \"\";\n}\n\n/**\n * Format datetime value for datetime-local input\n */\nfunction formatDateTimeValue(value: unknown): string {\n if (!value) return \"\";\n\n if (value instanceof Date) {\n return value.toISOString().slice(0, 16);\n }\n\n if (typeof value === \"string\") {\n // Try to parse as date\n const date = new Date(value);\n if (!isNaN(date.getTime())) {\n return date.toISOString().slice(0, 16);\n }\n return value;\n }\n\n return \"\";\n}\n\nForm.displayName = \"Form\";\n","/**\n * Header Organism Component\n *\n * A header component for mobile/responsive layouts with menu toggle, brand, and user avatar.\n * Styled to match the main Layout component's mobile header.\n */\n\nimport React from \"react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport { Menu, X } from \"lucide-react\";\nimport { SearchInput } from \"../molecules/SearchInput\";\nimport { Avatar } from \"../atoms/Avatar\";\nimport { Badge } from \"../atoms/Badge\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface HeaderProps {\n /**\n * Logo/Brand content\n */\n logo?: React.ReactNode;\n\n /**\n * Logo image source\n */\n logoSrc?: string;\n\n /**\n * Brand/App name\n */\n brandName?: string;\n\n /**\n * Navigation items (for desktop header variant)\n */\n navigationItems?: Array<{\n label: string;\n href?: string;\n onClick?: () => void;\n icon?: LucideIcon;\n badge?: string | number;\n active?: boolean;\n }>;\n\n /**\n * Show menu toggle button\n * @default true\n */\n showMenuToggle?: boolean;\n\n /**\n * Is menu open (for toggle icon)\n */\n isMenuOpen?: boolean;\n\n /**\n * Menu toggle callback\n */\n onMenuToggle?: () => void;\n\n /**\n * Show search input\n * @default false\n */\n showSearch?: boolean;\n\n /**\n * Search placeholder\n */\n searchPlaceholder?: string;\n\n /**\n * Search callback\n */\n onSearch?: (value: string) => void;\n\n /**\n * User avatar configuration\n */\n userAvatar?: {\n src?: string;\n alt?: string;\n initials?: string;\n };\n\n /**\n * User name (display name or email)\n */\n userName?: string;\n\n /**\n * Callback when user avatar is clicked\n */\n onUserClick?: () => void;\n\n /**\n * Action buttons (right side)\n */\n actions?: React.ReactNode;\n\n /**\n * Sticky header\n * @default true\n */\n sticky?: boolean;\n\n /**\n * Variant - mobile shows menu toggle, desktop shows full nav\n * @default 'mobile'\n */\n variant?: \"mobile\" | \"desktop\";\n\n /**\n * Callback when logo/brand is clicked\n */\n onLogoClick?: () => void;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const Header: React.FC<HeaderProps> = ({\n logo,\n logoSrc,\n brandName = \"KFlow\",\n navigationItems,\n showMenuToggle = true,\n isMenuOpen = false,\n onMenuToggle,\n showSearch = false,\n searchPlaceholder = \"Search...\",\n onSearch,\n userAvatar,\n userName,\n onUserClick,\n actions,\n sticky = true,\n variant = \"mobile\",\n onLogoClick,\n className,\n}) => {\n // Get user initials\n const userInitials =\n userAvatar?.initials || userName?.[0]?.toUpperCase() || \"U\";\n\n return (\n <header\n className={cn(\n \"h-16 border-b border-[var(--color-border)]\",\n \"flex items-center px-4 justify-between bg-[var(--color-card)]\",\n sticky && \"sticky top-0 z-50\",\n variant === \"mobile\" && \"lg:hidden\",\n className,\n )}\n >\n {/* Left section: Menu toggle + Brand */}\n <div className=\"flex items-center gap-3\">\n {/* Menu toggle button */}\n {showMenuToggle && (\n <button\n onClick={onMenuToggle}\n className=\"p-2 -ml-2 text-[var(--color-foreground)] hover:bg-[var(--color-muted)] transition-colors\"\n aria-label={isMenuOpen ? \"Close menu\" : \"Open menu\"}\n >\n {isMenuOpen ? <X size={24} /> : <Menu size={24} />}\n </button>\n )}\n\n {/* Logo/Brand */}\n <div\n className={cn(\n \"flex items-center gap-2\",\n onLogoClick && \"cursor-pointer\",\n )}\n onClick={onLogoClick}\n >\n {logo ? (\n typeof logo === \"string\" ? (\n <img src={logo} alt={brandName} className=\"h-8 w-8\" />\n ) : (\n logo\n )\n ) : logoSrc ? (\n <img src={logoSrc} alt={brandName} className=\"h-8 w-8\" />\n ) : null}\n\n {brandName && (\n <span className=\"text-lg font-bold text-[var(--color-foreground)]\">\n {brandName}\n </span>\n )}\n </div>\n </div>\n\n {/* Center section: Navigation (desktop variant) or Search */}\n {variant === \"desktop\" &&\n navigationItems &&\n navigationItems.length > 0 && (\n <nav className=\"hidden md:flex items-center gap-1 flex-1 justify-center\">\n {navigationItems.map((item, index) => (\n <button\n key={index}\n onClick={item.onClick}\n className={cn(\n \"flex items-center gap-2 px-3 py-2 rounded-[var(--radius-lg)] transition-colors\",\n item.active\n ? \"bg-[var(--color-primary)]/10 text-[var(--color-primary)]\"\n : \"text-[var(--color-muted-foreground)] hover:bg-[var(--color-muted)] hover:text-[var(--color-foreground)]\",\n )}\n >\n {item.icon && <item.icon size={18} />}\n <span className=\"font-medium\">{item.label}</span>\n {item.badge !== undefined && (\n <Badge variant=\"danger\" size=\"sm\">\n {item.badge}\n </Badge>\n )}\n </button>\n ))}\n </nav>\n )}\n\n {/* Search (if enabled) */}\n {showSearch && (\n <div className=\"hidden lg:block flex-1 max-w-md mx-4\">\n <SearchInput placeholder={searchPlaceholder} onSearch={onSearch} />\n </div>\n )}\n\n {/* Right section: Actions + User */}\n <div className=\"flex items-center gap-3\">\n {/* Custom actions */}\n {actions}\n\n {/* User avatar */}\n {(userAvatar || userName) && (\n <button\n onClick={onUserClick}\n className={cn(\n \"w-8 h-8 rounded-[var(--radius-full)] bg-[var(--color-primary)]/10 flex items-center justify-center\",\n \"text-[var(--color-primary)] font-bold text-xs\",\n \"hover:ring-2 hover:ring-[var(--color-ring)] transition-all\",\n onUserClick && \"cursor-pointer\",\n )}\n >\n {userAvatar?.src ? (\n <Avatar\n src={userAvatar.src}\n alt={userAvatar.alt || userName}\n size=\"sm\"\n />\n ) : (\n userInitials\n )}\n </button>\n )}\n </div>\n </header>\n );\n};\n\nHeader.displayName = \"Header\";\n","/**\n * Navigation Organism Component\n * \n * A navigation component with items, active indicators, icons, and badges.\n * Uses Menu, ButtonGroup molecules and Button, Icon, Badge, Typography, Divider atoms.\n */\n\nimport React from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { Menu, MenuItem } from '../molecules/Menu';\nimport { Button } from '../atoms/Button';\nimport { Badge } from '../atoms/Badge';\nimport { cn } from '../../lib/cn';\n\nexport interface NavigationItem {\n /**\n * Item ID\n */\n id: string;\n \n /**\n * Item label\n */\n label: string;\n \n /**\n * Item icon\n */\n icon?: LucideIcon;\n \n /**\n * Item badge\n */\n badge?: string | number;\n \n /**\n * Item href\n */\n href?: string;\n \n /**\n * Item click handler\n */\n onClick?: () => void;\n \n /**\n * Is active\n */\n isActive?: boolean;\n \n /**\n * Disable item\n */\n disabled?: boolean;\n \n /**\n * Sub-menu items\n */\n subMenu?: NavigationItem[];\n}\n\nexport interface NavigationProps {\n /**\n * Navigation items\n */\n items: NavigationItem[];\n \n /**\n * Navigation orientation\n * @default 'horizontal'\n */\n orientation?: 'horizontal' | 'vertical';\n \n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const Navigation: React.FC<NavigationProps> = ({\n items,\n orientation = 'horizontal',\n className,\n}) => {\n const renderNavigationItem = (item: NavigationItem, hasSubMenu: boolean) => {\n if (hasSubMenu) {\n const menuItems: MenuItem[] = item.subMenu!.map((subItem) => ({\n id: subItem.id,\n label: subItem.label,\n icon: subItem.icon,\n badge: subItem.badge,\n disabled: subItem.disabled,\n onClick: subItem.onClick,\n }));\n\n return (\n <Menu\n key={item.id}\n trigger={\n <Button\n variant={item.isActive ? 'primary' : 'ghost'}\n size=\"sm\"\n icon={item.icon}\n disabled={item.disabled}\n >\n {item.label}\n {item.badge !== undefined && (\n <Badge variant=\"danger\" size=\"sm\">\n {item.badge}\n </Badge>\n )}\n </Button>\n }\n items={menuItems}\n position={orientation === 'horizontal' ? 'bottom-left' : 'bottom-right'}\n />\n );\n }\n\n return (\n <Button\n key={item.id}\n variant={item.isActive ? 'primary' : 'ghost'}\n size=\"sm\"\n icon={item.icon}\n onClick={item.onClick}\n disabled={item.disabled}\n className=\"relative\"\n >\n {item.label}\n {item.badge !== undefined && (\n <Badge variant=\"danger\" size=\"sm\" className=\"absolute -top-1 -right-1\">\n {item.badge}\n </Badge>\n )}\n </Button>\n );\n };\n\n return (\n <nav\n className={cn(\n 'flex',\n orientation === 'horizontal' ? 'flex-row items-center gap-1' : 'flex-col gap-1',\n className\n )}\n role=\"navigation\"\n >\n {items.map((item) => {\n const hasSubMenu = !!(item.subMenu && item.subMenu.length > 0);\n return renderNavigationItem(item, hasSubMenu);\n })}\n </nav>\n );\n};\n\nNavigation.displayName = 'Navigation';\n","/**\n * Section Component\n * \n * A semantic section wrapper with optional title, description, and action.\n * Perfect for grouping related content with consistent spacing.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\nimport { Typography } from '../atoms/Typography';\n\nexport type SectionPadding = 'none' | 'sm' | 'md' | 'lg' | 'xl';\nexport type SectionVariant = 'default' | 'card' | 'bordered' | 'filled';\n\nexport interface SectionProps {\n /** Section title */\n title?: string;\n /** Section subtitle/description */\n description?: string;\n /** Action element (e.g., button, link) */\n action?: React.ReactNode;\n /** Padding amount */\n padding?: SectionPadding;\n /** Visual variant */\n variant?: SectionVariant;\n /** Show divider below header */\n divider?: boolean;\n /** Custom class name */\n className?: string;\n /** Children elements */\n children: React.ReactNode;\n /** Header custom class name */\n headerClassName?: string;\n /** Content custom class name */\n contentClassName?: string;\n /** HTML element to render as */\n as?: React.ElementType;\n}\n\nconst paddingStyles: Record<SectionPadding, string> = {\n none: 'p-0',\n sm: 'p-3',\n md: 'p-4',\n lg: 'p-6',\n xl: 'p-8',\n};\n\n// Using CSS variables for theme-aware styling\nconst variantStyles: Record<SectionVariant, string> = {\n default: '',\n card: [\n 'bg-[var(--color-card)]',\n 'border-[length:var(--border-width)] border-[var(--color-border)]',\n 'shadow-[var(--shadow-main)]',\n 'rounded-[var(--radius-md)]',\n ].join(' '),\n bordered: [\n 'border-[length:var(--border-width)] border-[var(--color-border)]',\n 'rounded-[var(--radius-md)]',\n ].join(' '),\n filled: 'bg-[var(--color-muted)] rounded-[var(--radius-md)]',\n};\n\n/**\n * Section - Semantic content grouping with header\n */\nexport const Section: React.FC<SectionProps> = ({\n title,\n description,\n action,\n padding = 'md',\n variant = 'default',\n divider = false,\n className,\n children,\n headerClassName,\n contentClassName,\n as: Component = 'section',\n}) => {\n const hasHeader = title || description || action;\n\n return (\n <Component\n className={cn(\n paddingStyles[padding],\n variantStyles[variant],\n className\n )}\n >\n {hasHeader && (\n <div\n className={cn(\n 'flex flex-col sm:flex-row sm:items-start sm:justify-between gap-2 sm:gap-4',\n divider && 'pb-4 mb-4 border-b-[length:var(--border-width)] border-[var(--color-border)]',\n !divider && 'mb-4',\n headerClassName\n )}\n >\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography\n variant=\"h4\"\n className=\"text-[var(--color-foreground)] font-semibold\"\n >\n {title}\n </Typography>\n )}\n {description && (\n <Typography\n variant=\"body\"\n color=\"muted\"\n className=\"mt-1\"\n >\n {description}\n </Typography>\n )}\n </div>\n {action && (\n <div className=\"flex-shrink-0 flex items-center gap-2\">\n {action}\n </div>\n )}\n </div>\n )}\n <div className={contentClassName}>\n {children}\n </div>\n </Component>\n );\n};\n\nexport default Section;\n","/**\n * Sidebar Organism Component\n * \n * A sidebar component with logo, navigation items, user section, and collapse/expand.\n * Styled to match the main Layout component with theme-aware CSS variables.\n */\n\nimport React, { useState } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport { ChevronLeft, ChevronRight, X } from 'lucide-react';\nimport { Badge } from '../atoms/Badge';\nimport { cn } from '../../lib/cn';\n\nexport interface SidebarItem {\n /** Item ID */\n id: string;\n /** Item label */\n label: string;\n /** Item icon */\n icon?: LucideIcon;\n /** Item badge */\n badge?: string | number;\n /** Item href */\n href?: string;\n /** Item click handler */\n onClick?: () => void;\n /** Is active */\n active?: boolean;\n /** @deprecated Use `active` instead */\n isActive?: boolean;\n /** Sub-items (for nested navigation) */\n subItems?: SidebarItem[];\n}\n\nexport interface SidebarProps {\n /** Logo/Brand content - can be a ReactNode or logo config */\n logo?: React.ReactNode;\n /** Logo image source */\n logoSrc?: string;\n /** Brand/App name */\n brandName?: string;\n /** Navigation items */\n items: SidebarItem[];\n /** User section content */\n userSection?: React.ReactNode;\n /** Footer content (e.g., theme toggle) */\n footerContent?: React.ReactNode;\n /** Collapsed state (controlled) */\n collapsed?: boolean;\n /** Default collapsed state */\n defaultCollapsed?: boolean;\n /** Callback when collapse state changes */\n onCollapseChange?: (collapsed: boolean) => void;\n /** Hide the collapse/expand button */\n hideCollapseButton?: boolean;\n /** Show a close button (for mobile) */\n showCloseButton?: boolean;\n /** Callback when close button is clicked */\n onClose?: () => void;\n /** Callback when logo/brand is clicked */\n onLogoClick?: () => void;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Single navigation item component\n */\nconst SidebarNavItem: React.FC<{\n item: SidebarItem;\n collapsed: boolean;\n}> = ({ item, collapsed }) => {\n const Icon = item.icon;\n const isActive = item.active ?? item.isActive;\n\n return (\n <button\n onClick={item.onClick}\n className={cn(\n 'w-full flex items-center gap-3 px-3 py-2.5 transition-all duration-[var(--transition-fast)] group relative',\n 'rounded-[var(--radius-sm)] border-[length:var(--border-width-thin)] border-transparent',\n isActive\n ? [\n 'bg-[var(--color-foreground)] text-[var(--color-background)]',\n 'font-medium shadow-[var(--shadow-sm)]',\n 'border-[var(--color-border)] translate-x-1 -translate-y-0.5',\n ].join(' ')\n : [\n 'text-[var(--color-foreground)]',\n 'hover:bg-[var(--color-muted)] hover:border-[var(--color-border)]',\n 'active:bg-[var(--color-foreground)] active:text-[var(--color-background)]',\n ].join(' ')\n )}\n title={collapsed ? item.label : undefined}\n >\n {Icon && (\n <Icon\n size={20}\n className={cn(\n 'min-w-[20px] flex-shrink-0',\n isActive && 'text-[var(--color-background)]'\n )}\n />\n )}\n\n {!collapsed && (\n <span className=\"font-medium truncate flex-1 text-left\">{item.label}</span>\n )}\n\n {!collapsed && item.badge !== undefined && (\n <Badge variant=\"danger\" size=\"sm\">{item.badge}</Badge>\n )}\n\n {/* Tooltip for collapsed state */}\n {collapsed && (\n <div className={cn(\n 'absolute left-full ml-2 px-2 py-1 text-xs opacity-0 group-hover:opacity-100',\n 'pointer-events-none whitespace-nowrap z-50 transition-opacity',\n 'bg-[var(--color-primary)] text-[var(--color-primary-foreground)]',\n 'border-[length:var(--border-width-thin)] border-[var(--color-border)]',\n 'rounded-[var(--radius-sm)]'\n )}>\n {item.label}\n </div>\n )}\n </button>\n );\n};\n\nexport const Sidebar: React.FC<SidebarProps> = ({\n logo,\n logoSrc,\n brandName = 'KFlow',\n items,\n userSection,\n footerContent,\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapseChange,\n hideCollapseButton = false,\n showCloseButton = false,\n onClose,\n onLogoClick,\n className,\n}) => {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const collapsed = controlledCollapsed !== undefined ? controlledCollapsed : internalCollapsed;\n\n const handleToggle = () => {\n const newCollapsed = !collapsed;\n if (controlledCollapsed === undefined) {\n setInternalCollapsed(newCollapsed);\n }\n onCollapseChange?.(newCollapsed);\n };\n\n return (\n <aside\n className={cn(\n 'flex flex-col h-full',\n 'bg-[var(--color-card)] border-r border-[var(--color-border)]',\n 'transition-all duration-300 ease-in-out',\n collapsed ? 'w-20' : 'w-64',\n className\n )}\n >\n {/* Header with Logo */}\n <div className=\"h-16 flex items-center justify-between px-4 border-b border-[var(--color-border)] flex-shrink-0\">\n <div\n className={cn(\n 'flex items-center gap-3 cursor-pointer',\n collapsed && 'justify-center w-full'\n )}\n onClick={onLogoClick}\n >\n {/* Logo image or custom logo */}\n {logo ? (\n typeof logo === 'string' ? (\n <img src={logo} alt={brandName} className=\"h-8 w-8\" />\n ) : (\n logo\n )\n ) : logoSrc ? (\n <img src={logoSrc} alt={brandName} className=\"h-8 w-8\" />\n ) : (\n <div className=\"h-8 w-8 bg-[var(--color-primary)] flex items-center justify-center rounded-[var(--radius-sm)]\">\n <span className=\"text-[var(--color-primary-foreground)] font-bold text-sm\">K</span>\n </div>\n )}\n\n {/* Brand name */}\n {!collapsed && (\n <span className=\"text-xl font-bold text-[var(--color-foreground)]\">\n {brandName}\n </span>\n )}\n </div>\n\n {/* Collapse button */}\n {!hideCollapseButton && (\n <button\n onClick={handleToggle}\n className={cn(\n 'p-1.5 hover:bg-[var(--color-muted)] text-[var(--color-foreground)] hidden lg:block',\n 'rounded-[var(--radius-sm)]',\n collapsed && 'mx-auto'\n )}\n title={collapsed ? \"Expand Sidebar\" : \"Collapse Sidebar\"}\n >\n {collapsed ? <ChevronRight size={18} /> : <ChevronLeft size={18} />}\n </button>\n )}\n\n {/* Close button for mobile */}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"p-1.5 hover:bg-[var(--color-muted)] text-[var(--color-foreground)] lg:hidden rounded-[var(--radius-sm)]\"\n aria-label=\"Close sidebar\"\n >\n <X size={18} />\n </button>\n )}\n </div>\n\n {/* Navigation */}\n <nav className=\"flex-1 py-6 px-3 space-y-1 overflow-y-auto\">\n {items.map((item) => (\n <SidebarNavItem\n key={item.id}\n item={item}\n collapsed={collapsed}\n />\n ))}\n </nav>\n\n {/* Footer with User Section and additional content */}\n {(footerContent || userSection) && (\n <div className=\"p-3 border-t border-[var(--color-border)] space-y-1 flex-shrink-0\">\n <div className={cn(\n 'flex items-center',\n collapsed ? 'justify-center flex-col gap-4' : 'justify-between px-2'\n )}>\n {footerContent && (\n <div className=\"flex items-center\">\n {footerContent}\n </div>\n )}\n {userSection && (\n <div className=\"flex items-center\">\n {userSection}\n </div>\n )}\n </div>\n\n {collapsed && !hideCollapseButton && (\n <button\n onClick={handleToggle}\n className=\"w-full flex justify-center p-2 mt-2 text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)] lg:hidden\"\n >\n <ChevronRight size={20} />\n </button>\n )}\n </div>\n )}\n </aside>\n );\n};\n\nSidebar.displayName = 'Sidebar';\n","/**\n * Split Component\n * \n * A two-column layout with configurable ratios.\n * Perfect for sidebar/content layouts or side-by-side comparisons.\n */\nimport React from 'react';\nimport { cn } from '../../lib/cn';\n\nexport type SplitRatio = '1:1' | '1:2' | '2:1' | '1:3' | '3:1' | '1:4' | '4:1' | '2:3' | '3:2';\nexport type SplitGap = 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface SplitProps {\n /** Size ratio between left and right panels */\n ratio?: SplitRatio;\n /** Gap between panels */\n gap?: SplitGap;\n /** Reverse the order (right first) */\n reverse?: boolean;\n /** Stack vertically on mobile */\n stackOnMobile?: boolean;\n /** Breakpoint to switch from stacked to side-by-side */\n stackBreakpoint?: 'sm' | 'md' | 'lg' | 'xl';\n /** Align items vertically */\n align?: 'start' | 'center' | 'end' | 'stretch';\n /** Custom class name */\n className?: string;\n /** Left/first panel class name */\n leftClassName?: string;\n /** Right/second panel class name */\n rightClassName?: string;\n /** Exactly two children: [left, right] */\n children: [React.ReactNode, React.ReactNode];\n}\n\nconst gapStyles: Record<SplitGap, string> = {\n none: 'gap-0',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n};\n\nconst alignStyles = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n};\n\n// Tailwind classes for each ratio\nconst ratioStyles: Record<SplitRatio, [string, string]> = {\n '1:1': ['w-1/2', 'w-1/2'],\n '1:2': ['w-1/3', 'w-2/3'],\n '2:1': ['w-2/3', 'w-1/3'],\n '1:3': ['w-1/4', 'w-3/4'],\n '3:1': ['w-3/4', 'w-1/4'],\n '1:4': ['w-1/5', 'w-4/5'],\n '4:1': ['w-4/5', 'w-1/5'],\n '2:3': ['w-2/5', 'w-3/5'],\n '3:2': ['w-3/5', 'w-2/5'],\n};\n\n// Responsive variants for stacking\nconst breakpointPrefixes = {\n sm: 'sm:',\n md: 'md:',\n lg: 'lg:',\n xl: 'xl:',\n};\n\n/**\n * Split - Two-column layout with flexible ratios\n */\nexport const Split: React.FC<SplitProps> = ({\n ratio = '1:1',\n gap = 'md',\n reverse = false,\n stackOnMobile = true,\n stackBreakpoint = 'md',\n align = 'stretch',\n className,\n leftClassName,\n rightClassName,\n children,\n}) => {\n const [left, right] = children;\n const [leftRatio, rightRatio] = ratioStyles[ratio];\n const bp = breakpointPrefixes[stackBreakpoint];\n\n // Build responsive width classes\n const leftWidth = stackOnMobile \n ? `w-full ${bp}${leftRatio}` \n : leftRatio;\n const rightWidth = stackOnMobile \n ? `w-full ${bp}${rightRatio}` \n : rightRatio;\n\n return (\n <div\n className={cn(\n 'flex',\n stackOnMobile ? `flex-col ${bp}flex-row` : 'flex-row',\n reverse && `${bp}flex-row-reverse`,\n gapStyles[gap],\n alignStyles[align],\n className\n )}\n >\n <div className={cn(leftWidth, leftClassName)}>\n {left}\n </div>\n <div className={cn(rightWidth, rightClassName)}>\n {right}\n </div>\n </div>\n );\n};\n\nexport default Split;\n\n","/**\n * Table Organism Component\n *\n * A table component with header row, data rows, pagination, sorting, and filters.\n * Uses Pagination, SearchInput, ButtonGroup, Card, Menu molecules and Button, Icon, Checkbox, Typography, Badge, Divider atoms.\n */\n\nimport React, { useState } from \"react\";\nimport { ArrowUp, ArrowDown, MoreVertical } from \"lucide-react\";\nimport { Pagination } from \"../molecules/Pagination\";\nimport { SearchInput } from \"../molecules/SearchInput\";\nimport { Card } from \"../atoms/Card\";\nimport { Menu, MenuItem } from \"../molecules/Menu\";\nimport { Button } from \"../atoms/Button\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport { Typography } from \"../atoms/Typography\";\nimport { cn } from \"../../lib/cn\";\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nexport interface TableColumn<T = any> {\n /**\n * Column key\n */\n key: string;\n\n /**\n * Column header label\n */\n label: string;\n\n /**\n * Sortable column\n * @default false\n */\n sortable?: boolean;\n\n /**\n * Custom cell renderer\n */\n render?: (value: any, row: T, index: number) => React.ReactNode;\n\n /**\n * Column width\n */\n width?: string;\n}\n\nexport interface TableProps<T = any> {\n /**\n * Table columns\n */\n columns: TableColumn<T>[];\n\n /**\n * Table entity data\n */\n entity: T[];\n\n /**\n * Row key getter\n */\n getRowKey: (row: T, index: number) => string;\n\n /**\n * Enable row selection\n * @default false\n */\n selectable?: boolean;\n\n /**\n * Selected row keys\n */\n selectedRows?: string[];\n\n /**\n * Callback when selection changes\n */\n onSelectionChange?: (selectedKeys: string[]) => void;\n\n /**\n * Enable sorting\n * @default false\n */\n sortable?: boolean;\n\n /**\n * Current sort column\n */\n sortColumn?: string;\n\n /**\n * Current sort direction\n */\n sortDirection?: SortDirection;\n\n /**\n * Callback when sort changes\n */\n onSortChange?: (column: string, direction: SortDirection) => void;\n\n /**\n * Enable search/filter\n * @default false\n */\n searchable?: boolean;\n\n /**\n * Search placeholder\n */\n searchPlaceholder?: string;\n\n /**\n * Enable pagination\n * @default false\n */\n paginated?: boolean;\n\n /**\n * Current page\n */\n currentPage?: number;\n\n /**\n * Total pages\n */\n totalPages?: number;\n\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n\n /**\n * Row actions menu items\n */\n rowActions?: (row: T) => MenuItem[];\n\n /**\n * Empty state message\n */\n emptyMessage?: string;\n\n /**\n * Loading state\n * @default false\n */\n loading?: boolean;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\nexport const Table = <T extends Record<string, any>>({\n columns,\n entity,\n getRowKey,\n selectable = false,\n selectedRows = [],\n onSelectionChange,\n sortable = false,\n sortColumn,\n sortDirection,\n onSortChange,\n searchable = false,\n searchPlaceholder = \"Search...\",\n paginated = false,\n currentPage = 1,\n totalPages = 1,\n onPageChange,\n rowActions,\n emptyMessage = \"No data available\",\n loading = false,\n className,\n}: TableProps<T>) => {\n const [searchQuery, setSearchQuery] = useState(\"\");\n\n const filteredData =\n searchable && searchQuery\n ? entity.filter((row) =>\n columns.some((col) => {\n const value = row[col.key];\n return value\n ?.toString()\n .toLowerCase()\n .includes(searchQuery.toLowerCase());\n }),\n )\n : entity;\n\n const handleSort = (column: string) => {\n if (!sortable || !onSortChange) return;\n\n const newDirection =\n sortColumn === column && sortDirection === \"asc\"\n ? \"desc\"\n : sortColumn === column && sortDirection === \"desc\"\n ? null\n : \"asc\";\n\n onSortChange(column, newDirection);\n };\n\n const handleSelectAll = (checked: boolean) => {\n if (!selectable || !onSelectionChange) return;\n onSelectionChange(\n checked ? filteredData.map((row, idx) => getRowKey(row, idx)) : [],\n );\n };\n\n const handleSelectRow = (rowKey: string, checked: boolean) => {\n if (!selectable || !onSelectionChange) return;\n const newSelection = checked\n ? [...selectedRows, rowKey]\n : selectedRows.filter((key) => key !== rowKey);\n onSelectionChange(newSelection);\n };\n\n const allSelected =\n selectable &&\n filteredData.length > 0 &&\n filteredData.every((row, idx) =>\n selectedRows.includes(getRowKey(row, idx)),\n );\n\n return (\n <div className={cn(\"w-full\", className)}>\n {/* Search */}\n {searchable && (\n <div className=\"mb-4\">\n <SearchInput\n placeholder={searchPlaceholder}\n onSearch={setSearchQuery}\n className=\"max-w-md\"\n />\n </div>\n )}\n\n {/* Table */}\n <Card>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full\">\n <thead>\n <tr className=\"border-b-[length:var(--border-width)] border-[var(--color-table-border)]\">\n {selectable && (\n <th className=\"px-4 py-3 text-left bg-[var(--color-table-header)]\">\n <Checkbox\n checked={allSelected}\n onChange={(e) => handleSelectAll(e.target.checked)}\n />\n </th>\n )}\n {columns.map((column) => (\n <th\n key={column.key}\n className={cn(\n \"px-4 py-3 text-left text-xs font-bold text-[var(--color-foreground)] uppercase tracking-wider bg-[var(--color-table-header)]\",\n sortable &&\n column.sortable &&\n \"cursor-pointer hover:bg-[var(--color-table-row-hover)]\",\n )}\n style={{ width: column.width }}\n onClick={() => column.sortable && handleSort(column.key)}\n >\n <div className=\"flex items-center gap-2\">\n <Typography variant=\"small\" weight=\"semibold\">\n {column.label}\n </Typography>\n {sortable &&\n column.sortable &&\n sortColumn === column.key && (\n <Icon\n icon={sortDirection === \"asc\" ? ArrowUp : ArrowDown}\n size=\"sm\"\n />\n )}\n </div>\n </th>\n ))}\n {rowActions && (\n <th className=\"px-4 py-3 text-right\">Actions</th>\n )}\n </tr>\n </thead>\n <tbody>\n {loading ? (\n <tr>\n <td\n colSpan={\n columns.length +\n (selectable ? 1 : 0) +\n (rowActions ? 1 : 0)\n }\n className=\"px-4 py-8 text-center\"\n >\n <Typography variant=\"body\" color=\"secondary\">\n Loading...\n </Typography>\n </td>\n </tr>\n ) : filteredData.length === 0 ? (\n <tr>\n <td\n colSpan={\n columns.length +\n (selectable ? 1 : 0) +\n (rowActions ? 1 : 0)\n }\n className=\"px-4 py-8 text-center\"\n >\n <Typography variant=\"body\" color=\"secondary\">\n {emptyMessage}\n </Typography>\n </td>\n </tr>\n ) : (\n filteredData.map((row, index) => {\n const rowKey = getRowKey(row, index);\n const isSelected = selectedRows.includes(rowKey);\n return (\n <tr\n key={rowKey}\n className={cn(\n \"border-b border-[var(--color-table-border)] last:border-b-0\",\n \"hover:bg-[var(--color-table-row-hover)]\",\n isSelected &&\n \"bg-[var(--color-table-header)] font-medium\",\n )}\n >\n {selectable && (\n <td className=\"px-4 py-3\">\n <Checkbox\n checked={isSelected}\n onChange={(e) =>\n handleSelectRow(rowKey, e.target.checked)\n }\n />\n </td>\n )}\n {columns.map((column) => (\n <td key={column.key} className=\"px-4 py-3\">\n {column.render ? (\n column.render(row[column.key], row, index)\n ) : (\n <Typography variant=\"body\">\n {row[column.key]?.toString() || \"-\"}\n </Typography>\n )}\n </td>\n ))}\n {rowActions && (\n <td className=\"px-4 py-3 text-right\">\n <Menu\n trigger={\n <Button\n variant=\"ghost\"\n size=\"sm\"\n icon={MoreVertical}\n >\n Actions\n </Button>\n }\n items={rowActions(row)}\n position=\"bottom-right\"\n />\n </td>\n )}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n </Card>\n\n {/* Pagination */}\n {paginated && totalPages > 1 && (\n <div className=\"mt-4\">\n <Pagination\n currentPage={currentPage}\n totalPages={totalPages}\n onPageChange={onPageChange || (() => {})}\n />\n </div>\n )}\n </div>\n );\n};\n\nTable.displayName = \"Table\";\n","/**\n * List Organism Component\n *\n * A beautifully designed, scannable list view.\n *\n * Design inspiration: Linear, Notion, Apple Reminders\n * - Soft, harmonious color palette\n * - Refined typography with proper hierarchy\n * - Subtle shadows and depth\n * - Delightful hover micro-interactions\n * - Elegant status indicators\n *\n * Orbital Component Interface Compliance:\n * - Entity binding with auto-fetch when entity is a string\n * - Event emission via useEventBus (UI:* events)\n * - Event listening for UI:SEARCH and UI:CLEAR_SEARCH\n * - isLoading and error state props\n */\n\nimport React, { useEffect, useState, useMemo } from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport type { LucideIcon } from \"lucide-react\";\nimport {\n Calendar,\n MoreHorizontal,\n Package,\n ChevronRight,\n Pencil,\n Eye,\n} from \"lucide-react\";\nimport { Typography, Checkbox, Divider } from \"../atoms\";\nimport { HStack } from \"../atoms/Stack\";\nimport { Menu, type MenuItem } from \"../molecules/Menu\";\nimport { EmptyState } from \"../molecules/EmptyState\";\nimport { LoadingState } from \"../molecules/LoadingState\";\nimport { ErrorState } from \"../molecules/ErrorState\";\nimport { cn } from \"../../lib/cn\";\nimport { useEntityList } from \"../../hooks/useEntityData\";\nimport { useEventBus, type KFlowEvent } from \"../../hooks/useEventBus\";\nimport { useQuerySingleton } from \"../../hooks/useQuerySingleton\";\n\nexport interface ListItem {\n id: string;\n title?: string;\n description?: string;\n icon?: LucideIcon;\n avatar?: {\n src?: string;\n alt?: string;\n initials?: string;\n };\n badge?: string | number;\n metadata?: React.ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n completed?: boolean;\n [key: string]: unknown;\n _fields?: Record<string, unknown>;\n}\n\nexport interface SchemaItemAction {\n label: string;\n /** Event to dispatch on click */\n event?: string;\n navigatesTo?: string;\n /** Action placement - accepts all common placement values */\n placement?: \"row\" | \"bulk\" | \"card\" | \"footer\" | string;\n action?: string;\n variant?: \"primary\" | \"secondary\" | \"ghost\" | \"danger\" | \"default\";\n /** Click handler from generated code */\n onClick?: (row: unknown) => void;\n}\n\n/**\n * Field definition - can be a simple string or object with key/header\n */\nexport type FieldDef = string | { key: string; header?: string };\n\n/**\n * Normalize fields to simple string array\n */\nfunction normalizeFields(fields: readonly FieldDef[] | undefined): string[] {\n if (!fields) return [];\n return fields.map((f) => (typeof f === \"string\" ? f : f.key));\n}\n\nexport interface ListProps {\n /** Entity name for auto-fetch OR data array (backwards compatible) */\n entity?: ListItem[] | readonly { id: string }[] | readonly unknown[] | string;\n /** Data array - primary prop for data */\n data?: ListItem[] | readonly { id: string }[] | readonly unknown[] | unknown;\n /** Entity type name for display */\n type?: string;\n /** Loading state */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n selectable?: boolean;\n selectedItems?: readonly string[];\n onSelectionChange?: (selectedIds: string[]) => void;\n /** Item actions - schema-driven or function-based */\n itemActions?: ((item: ListItem) => MenuItem[]) | readonly SchemaItemAction[];\n showDividers?: boolean;\n variant?: \"default\" | \"card\";\n emptyMessage?: string;\n className?: string;\n renderItem?: (item: ListItem, index: number) => React.ReactNode;\n children?: React.ReactNode;\n onItemAction?: (action: string, item: ListItem, index: number) => void;\n onRowClick?: (item: ListItem) => void;\n /** Fields to display - accepts string[] or {key, header}[] for unified interface */\n fields?: readonly FieldDef[];\n /** Alias for fields - backwards compatibility */\n fieldNames?: readonly string[];\n /**\n * Query singleton binding for filter/sort state.\n * When provided, syncs with the query singleton for filtering and sorting.\n * Example: \"@TaskQuery\"\n */\n query?: string;\n}\n\n// Refined color palette for status indicators using CSS variables\nconst STATUS_STYLES: Record<\n string,\n { bg: string; text: string; dot: string; border: string }\n> = {\n complete: {\n bg: \"bg-[var(--color-success)]/10\",\n text: \"text-[var(--color-success)]\",\n dot: \"bg-[var(--color-success)] ring-4 ring-[var(--color-success)]/20\",\n border: \"border-[var(--color-success)]/30\",\n },\n active: {\n bg: \"bg-[var(--color-info)]/10\",\n text: \"text-[var(--color-info)]\",\n dot: \"bg-[var(--color-info)] ring-4 ring-[var(--color-info)]/20\",\n border: \"border-[var(--color-info)]/30\",\n },\n pending: {\n bg: \"bg-[var(--color-warning)]/10\",\n text: \"text-[var(--color-warning)]\",\n dot: \"bg-[var(--color-warning)] ring-4 ring-[var(--color-warning)]/20\",\n border: \"border-[var(--color-warning)]/30\",\n },\n blocked: {\n bg: \"bg-[var(--color-error)]/10\",\n text: \"text-[var(--color-error)]\",\n dot: \"bg-[var(--color-error)] ring-4 ring-[var(--color-error)]/20\",\n border: \"border-[var(--color-error)]/30\",\n },\n high: {\n bg: \"bg-[var(--color-warning)]/10\",\n text: \"text-[var(--color-warning)]\",\n dot: \"bg-[var(--color-warning)] ring-4 ring-[var(--color-warning)]/20\",\n border: \"border-[var(--color-warning)]/30\",\n },\n medium: {\n bg: \"bg-[var(--color-accent)]/10\",\n text: \"text-[var(--color-accent)]\",\n dot: \"bg-[var(--color-accent)] ring-4 ring-[var(--color-accent)]/20\",\n border: \"border-[var(--color-accent)]/30\",\n },\n low: {\n bg: \"bg-[var(--color-muted)]\",\n text: \"text-[var(--color-muted-foreground)]\",\n dot: \"bg-[var(--color-muted-foreground)] ring-4 ring-[var(--color-muted-foreground)]/20\",\n border: \"border-[var(--color-border)]\",\n },\n default: {\n bg: \"bg-[var(--color-muted)]\",\n text: \"text-[var(--color-muted-foreground)]\",\n dot: \"bg-[var(--color-muted-foreground)] ring-4 ring-[var(--color-muted-foreground)]/20\",\n border: \"border-[var(--color-border)]\",\n },\n};\n\nfunction getStatusStyle(fieldName: string, value: string) {\n const val = String(value).toLowerCase();\n\n if (val.includes(\"complete\") || val.includes(\"done\"))\n return STATUS_STYLES.complete;\n if (val.includes(\"active\") || val.includes(\"progress\"))\n return STATUS_STYLES.active;\n if (val.includes(\"pending\") || val.includes(\"waiting\"))\n return STATUS_STYLES.pending;\n if (val.includes(\"block\") || val.includes(\"cancel\"))\n return STATUS_STYLES.blocked;\n if (val.includes(\"high\") || val.includes(\"urgent\")) return STATUS_STYLES.high;\n if (val.includes(\"medium\") || val.includes(\"normal\"))\n return STATUS_STYLES.medium;\n if (val.includes(\"low\")) return STATUS_STYLES.low;\n\n return STATUS_STYLES.default;\n}\n\nfunction formatValue(value: unknown, fieldName: string): string {\n if (typeof value === \"number\") {\n if (\n fieldName.toLowerCase().includes(\"progress\") ||\n fieldName.toLowerCase().includes(\"percent\")\n ) {\n return `${value}%`;\n }\n if (\n fieldName.toLowerCase().includes(\"budget\") ||\n fieldName.toLowerCase().includes(\"cost\")\n ) {\n return new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n maximumFractionDigits: 0,\n }).format(value);\n }\n return value.toLocaleString();\n }\n if (value instanceof Date) {\n return value.toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n });\n }\n if (typeof value === \"string\" && /^\\d{4}-\\d{2}-\\d{2}/.test(value)) {\n return new Date(value).toLocaleDateString(\"en-US\", {\n month: \"short\",\n day: \"numeric\",\n });\n }\n return String(value);\n}\n\nfunction formatFieldLabel(fieldName: string): string {\n return fieldName\n .replace(/([A-Z])/g, \" $1\")\n .replace(/^./, (str) => str.toUpperCase())\n .replace(/Id$/, \"\")\n .trim();\n}\n\n// Custom Badge component with refined styling\nconst StatusBadge: React.FC<{ value: string; fieldName: string }> = ({\n value,\n fieldName,\n}) => {\n const style = getStatusStyle(fieldName, value);\n return (\n <span\n className={cn(\n \"inline-flex items-center gap-2 px-2.5 py-1 rounded-[var(--radius-full)] text-xs font-semibold tracking-wide\",\n \"border shadow-[var(--shadow-sm)] backdrop-blur-sm transition-colors\",\n style.bg,\n style.text,\n style.border,\n )}\n >\n <span\n className={cn(\n \"w-1.5 h-1.5 rounded-[var(--radius-full)] shadow-[var(--shadow-sm)]\",\n style.dot,\n )}\n />\n {value}\n </span>\n );\n};\n\n// Elegant progress bar\nconst ProgressIndicator: React.FC<{ value: number }> = ({ value }) => {\n const clampedValue = Math.min(100, Math.max(0, value));\n return (\n <div className=\"flex items-center gap-2 min-w-[100px]\">\n <div className=\"flex-1 h-1.5 bg-[var(--color-muted)] rounded-[var(--radius-full)] overflow-hidden\">\n <div\n className={cn(\n \"h-full rounded-[var(--radius-full)] transition-all duration-500\",\n clampedValue >= 100\n ? \"bg-[var(--color-success)]\"\n : clampedValue >= 70\n ? \"bg-[var(--color-info)]\"\n : clampedValue >= 40\n ? \"bg-[var(--color-warning)]\"\n : \"bg-[var(--color-muted-foreground)]\",\n )}\n style={{ width: `${clampedValue}%` }}\n />\n </div>\n <span className=\"text-xs font-medium text-[var(--color-muted-foreground)] tabular-nums w-8 text-right\">\n {clampedValue}%\n </span>\n </div>\n );\n};\n\nexport const List: React.FC<ListProps> = ({\n entity,\n data,\n isLoading: externalLoading = false,\n error: externalError,\n selectable = false,\n selectedItems = [],\n onSelectionChange,\n itemActions,\n emptyMessage = \"No items to display\",\n className,\n renderItem: customRenderItem,\n onItemAction,\n onRowClick,\n fields,\n fieldNames,\n type,\n query,\n}) => {\n const navigate = useNavigate();\n const eventBus = useEventBus();\n\n // Support fields and fieldNames (alias) - normalize to string[]\n const effectiveFieldNames =\n normalizeFields(fields).length > 0 ? normalizeFields(fields) : fieldNames;\n\n // Query singleton for filter/sort state\n const queryState = useQuerySingleton(query);\n\n // Search state for event bus integration - initialize from query singleton if available\n const [searchTerm, setSearchTerm] = useState(queryState?.search ?? \"\");\n const [filters, setFilters] = useState<Record<string, unknown>>(\n queryState?.filters ?? {},\n );\n\n // Determine if entity is a string name (for auto-fetch) or data array (backwards compatible)\n const isEntityName = typeof entity === \"string\";\n const entityName = isEntityName ? entity : undefined;\n\n // Auto-fetch data when entity is a string name and no external data provided\n const shouldAutoFetch = isEntityName && !data;\n\n const {\n data: fetchedData,\n isLoading: fetchLoading,\n error: fetchError,\n } = useEntityList(shouldAutoFetch ? entityName : undefined, {\n skip: !shouldAutoFetch,\n });\n\n // Sync with query singleton changes (e.g., from FilterGroup or SearchInput)\n useEffect(() => {\n if (queryState) {\n setSearchTerm(queryState.search);\n setFilters(queryState.filters);\n }\n }, [queryState?.search, JSON.stringify(queryState?.filters)]);\n\n // Listen for UI:SEARCH, UI:FILTER and related events\n useEffect(() => {\n const handleSearch = (event: KFlowEvent) => {\n // Only handle if no query binding (avoid double-handling when query singleton is used)\n if (query) return;\n const term = (event.payload?.searchTerm as string) ?? \"\";\n setSearchTerm(term);\n };\n\n const handleClearSearch = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n setSearchTerm(\"\");\n };\n\n const handleFilter = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n const { field, value } = event.payload ?? {};\n if (field) {\n setFilters((prev) => ({ ...prev, [field as string]: value }));\n }\n };\n\n const handleClearFilters = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n setFilters({});\n setSearchTerm(\"\");\n };\n\n const unsubSearch = eventBus.on(\"UI:SEARCH\", handleSearch);\n const unsubClear = eventBus.on(\"UI:CLEAR_SEARCH\", handleClearSearch);\n const unsubFilter = eventBus.on(\"UI:FILTER\", handleFilter);\n const unsubClearFilters = eventBus.on(\n \"UI:CLEAR_FILTERS\",\n handleClearFilters,\n );\n\n return () => {\n unsubSearch();\n unsubClear();\n unsubFilter();\n unsubClearFilters();\n };\n }, [eventBus, query]);\n\n // Combine loading and error states\n const isLoading = externalLoading || (shouldAutoFetch && fetchLoading);\n const error =\n externalError ||\n (fetchError instanceof Error\n ? fetchError\n : fetchError\n ? new Error(String(fetchError))\n : null);\n\n // Normalize data: handle arrays, single objects, and entity arrays\n const normalizeData = (d: typeof data | typeof entity) => {\n if (Array.isArray(d)) return d;\n if (d && typeof d === \"object\" && \"id\" in d) return [d];\n return [];\n };\n\n // Use external data if provided, otherwise use fetched data or entity data (backwards compat)\n const rawDataSource = data ?? fetchedData ?? entity;\n const rawItems = normalizeData(rawDataSource);\n\n // Apply client-side search filtering if using external data (server handles it for auto-fetch)\n const filteredItems = useMemo(() => {\n if (!searchTerm || shouldAutoFetch) {\n return rawItems;\n }\n const lowerSearch = searchTerm.toLowerCase();\n return rawItems.filter((item) => {\n const itemData = item as Record<string, unknown>;\n return Object.values(itemData).some((value) => {\n if (value === null || value === undefined) return false;\n return String(value).toLowerCase().includes(lowerSearch);\n });\n });\n }, [rawItems, searchTerm, shouldAutoFetch]);\n\n const getItemActions = React.useCallback(\n (item: ListItem): MenuItem[] => {\n if (!itemActions) return [];\n\n if (typeof itemActions === \"function\") {\n return itemActions(item);\n }\n\n return (itemActions as SchemaItemAction[]).map((action, idx) => ({\n id: `${item.id}-action-${idx}`,\n label: action.label,\n onClick: () => {\n // Handle navigation if navigatesTo is defined\n if (action.navigatesTo) {\n const url = action.navigatesTo.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key) =>\n String(item[key] || item.id || \"\"),\n );\n navigate(url);\n return;\n }\n // Dispatch event via event bus if defined (for trait state machine integration)\n if (action.event) {\n eventBus.emit(`UI:${action.event}`, {\n row: item,\n entity: entityName,\n });\n }\n // Legacy callback support\n if (action.action && onItemAction) {\n onItemAction(action.action, item, idx);\n }\n },\n }));\n },\n [itemActions, navigate, onItemAction, eventBus, entityName],\n );\n\n const normalizedItemActions = itemActions ? getItemActions : undefined;\n\n if (isLoading) {\n return (\n <LoadingState\n message={`Loading ${type || \"items\"}...`}\n className={className}\n />\n );\n }\n\n // Show error state\n if (error) {\n return (\n <EmptyState\n icon={Package}\n title={`Error loading ${type || \"items\"}`}\n description={error.message}\n className={className}\n />\n );\n }\n\n const safeItems: ListItem[] = Array.isArray(filteredItems)\n ? filteredItems.map((item, index) => {\n if (typeof item === \"object\" && item !== null) {\n const normalizedItem = {\n ...item,\n id: (item as ListItem).id || `item-${index}`,\n } as ListItem;\n\n if (effectiveFieldNames && effectiveFieldNames.length > 0) {\n const firstField = effectiveFieldNames[0];\n\n if (\n !normalizedItem.title &&\n item[firstField as keyof typeof item]\n ) {\n normalizedItem.title = String(\n item[firstField as keyof typeof item],\n );\n }\n\n normalizedItem._fields = effectiveFieldNames.reduce(\n (acc, field) => {\n const value = item[field as keyof typeof item];\n if (value !== undefined && value !== null) {\n acc[field] = value;\n }\n return acc;\n },\n {} as Record<string, unknown>,\n );\n }\n\n return normalizedItem;\n }\n return { id: `item-${index}`, title: String(item) } as ListItem;\n })\n : [];\n\n const handleSelect = (itemId: string, checked: boolean) => {\n if (!selectable || !onSelectionChange) return;\n const newSelection = checked\n ? [...selectedItems, itemId]\n : selectedItems.filter((id) => id !== itemId);\n onSelectionChange(newSelection);\n };\n\n const defaultRenderItem = (\n item: ListItem,\n index: number,\n isLast: boolean,\n ) => {\n const isSelected = selectedItems.includes(item.id);\n\n // Get all actions once\n const actions = normalizedItemActions ? normalizedItemActions(item) : [];\n const hasActions = actions.length > 0;\n\n // Find specific actions for UI promotion\n const viewAction = actions.find(\n (a) =>\n a.label.toLowerCase().includes(\"view\") ||\n a.label.toLowerCase() === \"open\",\n );\n const editAction = actions.find((a) =>\n a.label.toLowerCase().includes(\"edit\"),\n );\n\n // Determine row click handler: Explicit item click > Generic row click > View action\n const handleClick =\n item.onClick ||\n (onRowClick ? () => onRowClick(item) : undefined) ||\n viewAction?.onClick;\n\n // Categorize fields\n const primaryField = effectiveFieldNames?.[0];\n const statusField = effectiveFieldNames?.find((f) =>\n f.toLowerCase().includes(\"status\"),\n );\n const priorityField = effectiveFieldNames?.find((f) =>\n f.toLowerCase().includes(\"priority\"),\n );\n const progressField = effectiveFieldNames?.find(\n (f) =>\n f.toLowerCase().includes(\"progress\") ||\n f.toLowerCase().includes(\"percent\"),\n );\n const dateFields =\n effectiveFieldNames?.filter(\n (f) =>\n f.toLowerCase().includes(\"date\") || f.toLowerCase().includes(\"due\"),\n ) || [];\n const metadataFields =\n effectiveFieldNames\n ?.filter(\n (f) =>\n f !== primaryField &&\n f !== statusField &&\n f !== priorityField &&\n f !== progressField &&\n !dateFields.includes(f),\n )\n .slice(0, 2) || [];\n\n // Get status for left indicator\n const statusValue = statusField ? item._fields?.[statusField] : null;\n const statusStyle = statusValue\n ? getStatusStyle(statusField!, String(statusValue))\n : null;\n\n // Get progress value\n const progressValue = progressField ? item._fields?.[progressField] : null;\n const hasProgress = typeof progressValue === \"number\";\n\n return (\n <div key={item.id}>\n <div\n className={cn(\n \"group flex items-center gap-5 px-6 py-5\",\n \"transition-all duration-300 ease-out\",\n handleClick && \"cursor-pointer\",\n // Hover state\n \"hover:bg-[var(--color-muted)]/80\",\n // Selected state\n isSelected && \"bg-[var(--color-primary)]/10 shadow-inner\",\n item.disabled && \"opacity-50 cursor-not-allowed grayscale\",\n )}\n onClick={handleClick}\n >\n {/* Checkbox if selectable */}\n {selectable && (\n <div className=\"flex-shrink-0 pt-0.5\">\n <Checkbox\n checked={isSelected}\n onChange={(e) => handleSelect(item.id, e.target.checked)}\n onClick={(e) => e.stopPropagation()}\n className={cn(\n \"transition-transform active:scale-95\",\n isSelected\n ? \"border-[var(--color-primary)] bg-[var(--color-primary)]\"\n : \"border-[var(--color-border)]\",\n )}\n />\n </div>\n )}\n\n {/* Main content */}\n <div className=\"flex-1 min-w-0 space-y-2.5\">\n {/* Primary row: Title + Badges */}\n <div className=\"flex items-center gap-4\">\n <h3\n className={cn(\n \"text-[15px] font-semibold text-[var(--color-foreground)] truncate flex-1\",\n \"tracking-tight leading-snug\",\n item.completed &&\n \"line-through text-[var(--color-muted-foreground)]\",\n )}\n >\n {item.title || \"Untitled\"}\n </h3>\n\n {/* Status & Priority badges */}\n <div className=\"flex items-center gap-2 flex-shrink-0\">\n {!!statusValue && (\n <StatusBadge\n value={String(statusValue)}\n fieldName={statusField!}\n />\n )}\n {!!(priorityField && item._fields?.[priorityField]) && (\n <StatusBadge\n value={String(item._fields![priorityField])}\n fieldName={priorityField}\n />\n )}\n </div>\n </div>\n\n {/* Secondary row: Metadata */}\n <div className=\"flex items-center gap-6 text-[13px] font-medium text-[var(--color-muted-foreground)]\">\n {/* Date fields with icon */}\n {dateFields.slice(0, 1).map((field) => {\n const value = item._fields?.[field];\n if (!value) return null;\n return (\n <span\n key={field}\n className=\"flex items-center gap-2 text-[var(--color-muted-foreground)] group-hover:text-[var(--color-foreground)] transition-colors\"\n >\n <Calendar className=\"w-3.5 h-3.5\" />\n <span>{formatValue(value, field)}</span>\n </span>\n );\n })}\n\n {/* Other metadata fields */}\n {metadataFields.map((field, i) => {\n const value = item._fields?.[field];\n if (value === undefined || value === null) return null;\n return (\n <span\n key={field}\n className=\"truncate flex items-center gap-1.5 text-[var(--color-muted-foreground)]\"\n >\n <span className=\"opacity-75\">\n {formatFieldLabel(field)}:\n </span>\n <span className=\"text-[var(--color-foreground)]\">\n {formatValue(value, field)}\n </span>\n </span>\n );\n })}\n\n {/* Progress indicator */}\n {hasProgress && (\n <div className=\"ml-auto\">\n <ProgressIndicator value={progressValue as number} />\n </div>\n )}\n </div>\n </div>\n\n {/* Actions - visible on hover */}\n {/* Actions - visible on hover */}\n <div\n className={cn(\n \"flex items-center gap-1 flex-shrink-0 transition-opacity duration-200\",\n \"opacity-0 group-hover:opacity-100\",\n )}\n >\n {/* Direct Edit Action */}\n {editAction && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n editAction.onClick?.();\n }}\n className={cn(\n \"p-2 rounded-[var(--radius-lg)] transition-all duration-200\",\n \"hover:bg-[var(--color-primary)]/10 hover:text-[var(--color-primary)]\",\n \"text-[var(--color-muted-foreground)]\",\n \"active:scale-95\",\n )}\n title={editAction.label}\n >\n <Pencil className=\"w-4 h-4\" />\n </button>\n )}\n\n {/* Direct View Action (Only if explicit button needed - optional if row click handles it, but keeping for clarity/accessibility) */}\n {viewAction && (\n <button\n onClick={(e) => {\n e.stopPropagation();\n viewAction.onClick?.();\n }}\n className={cn(\n \"p-2 rounded-[var(--radius-lg)] transition-all duration-200\",\n \"hover:bg-[var(--color-muted)] hover:text-[var(--color-foreground)]\",\n \"text-[var(--color-muted-foreground)]\",\n \"active:scale-95\",\n )}\n title={viewAction.label}\n >\n <Eye className=\"w-4 h-4\" />\n </button>\n )}\n\n {/* Overflow Menu for filtered actions */}\n {(() => {\n const filteredActions = actions.filter(\n (a) =>\n !a.label.toLowerCase().includes(\"edit\") &&\n !a.label.toLowerCase().includes(\"view\") &&\n !a.label.toLowerCase().includes(\"open\"),\n );\n\n return filteredActions.length > 0 ? (\n <Menu\n trigger={\n <button\n className={cn(\n \"p-2 rounded-[var(--radius-lg)] transition-all duration-200\",\n \"hover:bg-[var(--color-muted)] hover:shadow-[var(--shadow-sm)]\",\n \"text-[var(--color-muted-foreground)] hover:text-[var(--color-foreground)]\",\n \"active:scale-95\",\n )}\n >\n <MoreHorizontal className=\"w-4 h-4\" />\n </button>\n }\n items={filteredActions}\n position=\"bottom-right\"\n />\n ) : null;\n })()}\n\n {handleClick && (\n <ChevronRight className=\"w-4 h-4 text-[var(--color-muted-foreground)]/50 group-hover:text-[var(--color-muted-foreground)] group-hover:translate-x-0.5 transition-all\" />\n )}\n </div>\n </div>\n\n {/* Subtle divider - inset */}\n {!isLast && (\n <div className=\"ml-[calc(1.5rem)] mr-6 border-b border-[var(--color-border)]/40\" />\n )}\n </div>\n );\n };\n\n if (safeItems.length === 0) {\n return (\n <EmptyState\n icon={Package}\n title={`No ${type || \"items\"} found`}\n description={emptyMessage}\n className={className}\n />\n );\n }\n\n return (\n <div\n className={cn(\n // Container with refined styling\n \"bg-[var(--color-card)] backdrop-blur-sm\",\n \"rounded-[var(--radius-xl)]\", // Increased rounding\n \"border border-[var(--color-border)]\",\n \"shadow-[var(--shadow-lg)]\", // Softer, improved shadow\n \"overflow-hidden\",\n className,\n )}\n >\n {safeItems.map((item, index) =>\n customRenderItem\n ? customRenderItem(item, index)\n : defaultRenderItem(item, index, index === safeItems.length - 1),\n )}\n </div>\n );\n};\n\nList.displayName = \"List\";\n","/**\n * CardGrid Component\n *\n * A responsive grid specifically designed for card layouts.\n * Uses CSS Grid auto-fit for automatic responsive columns.\n *\n * When `entity` prop is provided without `data`, automatically fetches data\n * using the useEntityList hook. Supports server-side pagination and search.\n */\nimport React, { useState, useEffect, useMemo, useCallback } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { cn } from '../../lib/cn';\nimport {\n useEntityList,\n usePaginatedEntityList,\n type PaginationParams,\n} from '../../hooks/useEntityData';\nimport { useEventBus, type KFlowEvent } from '../../hooks/useEventBus';\nimport { useQuerySingleton } from '../../hooks/useQuerySingleton';\nimport { Button } from '../atoms';\nimport { Pagination } from '../molecules/Pagination';\n\nexport type CardGridGap = 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\n/**\n * Action configuration for card items (schema-driven)\n */\nexport interface CardItemAction {\n /** Action button label */\n label: string;\n /** Event to dispatch on click (schema metadata) */\n event?: string;\n /** Navigation URL - supports template interpolation like \"/products/{{row.id}}\" */\n navigatesTo?: string;\n /** Callback on click */\n onClick?: (item: unknown) => void;\n /** Action used by generated code - alternative to event */\n action?: string;\n /** Action placement - accepts string for compatibility with generated code */\n placement?: 'card' | 'footer' | 'row' | string;\n /** Button variant - accepts string for compatibility with generated code */\n variant?: 'primary' | 'secondary' | 'ghost' | 'danger' | string;\n}\n\n/**\n * Field definition - can be a simple string or object with key/header\n */\nexport type FieldDef = string | { key: string; header?: string };\n\n/**\n * Normalize fields to simple string array\n */\nfunction normalizeFields(fields: readonly FieldDef[] | undefined): string[] {\n if (!fields) return [];\n return fields.map((f) => (typeof f === 'string' ? f : f.key));\n}\n\nexport interface CardGridProps {\n /** Minimum width of each card (default: 280px) */\n minCardWidth?: number;\n /** Maximum number of columns */\n maxCols?: 1 | 2 | 3 | 4 | 5 | 6;\n /** Gap between cards */\n gap?: CardGridGap;\n /** Align cards vertically in their cells */\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\n /** Custom class name */\n className?: string;\n /** Children elements (cards) - optional when using entity/data props */\n children?: React.ReactNode;\n /** Entity type for data-bound usage */\n entity?: string;\n /** Fields to display - accepts string[] or {key, header}[] for unified interface */\n fields?: readonly FieldDef[];\n /** Alias for fields - backwards compatibility */\n fieldNames?: readonly string[];\n /** Alias for fields - backwards compatibility */\n columns?: readonly FieldDef[];\n /** Data array for data-bound usage - accepts readonly for generated const arrays */\n data?: readonly unknown[] | unknown;\n /** Loading state indicator */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Actions for each card item (schema-driven) */\n itemActions?: readonly CardItemAction[];\n /** Callback when a card is clicked */\n onCardClick?: (item: unknown) => void;\n /** Enable server-side pagination */\n enablePagination?: boolean;\n /** Items per page (default: 20) */\n pageSize?: number;\n /** Show total count in pagination */\n showTotal?: boolean;\n /** Filter configuration for entity data */\n filter?: { field: string; value?: string };\n /**\n * Query singleton binding for filter/sort state.\n * When provided, syncs with the query singleton for filtering and sorting.\n * Example: \"@TaskQuery\"\n */\n query?: string;\n}\n\nconst gapStyles: Record<CardGridGap, string> = {\n none: 'gap-0',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8',\n};\n\nconst alignStyles = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch',\n};\n\n/**\n * CardGrid - Responsive card collection layout\n *\n * Can be used in two ways:\n * 1. With children: <CardGrid><Card>...</Card></CardGrid>\n * 2. With data: <CardGrid entity=\"Task\" fieldNames={['title']} data={tasks} />\n *\n * Supports server-side pagination when enablePagination is true.\n */\nexport const CardGrid: React.FC<CardGridProps> = ({\n minCardWidth = 280,\n maxCols,\n gap = 'md',\n alignItems = 'stretch',\n className,\n children,\n entity,\n fields,\n fieldNames,\n columns,\n data: externalData,\n isLoading: externalLoading,\n error: externalError,\n itemActions,\n onCardClick,\n enablePagination = false,\n pageSize: defaultPageSize = 20,\n showTotal = true,\n filter,\n query,\n}) => {\n const eventBus = useEventBus();\n const navigate = useNavigate();\n\n // Query singleton for filter/sort state\n const queryState = useQuerySingleton(query);\n\n // Support fields, fieldNames, and columns (aliases) - normalize to string[]\n const effectiveFieldNames =\n normalizeFields(fields).length > 0\n ? normalizeFields(fields)\n : (fieldNames ?? normalizeFields(columns));\n\n // Pagination state - initialize from query singleton if available\n const [paginationParams, setPaginationParams] = useState<PaginationParams>(() => ({\n page: 1,\n pageSize: defaultPageSize,\n search: queryState?.search ?? '',\n sortBy: queryState?.sortField ?? undefined,\n sortDirection: queryState?.sortDirection ?? 'asc',\n filters: queryState?.filters,\n }));\n\n // Sync with query singleton changes (e.g., from FilterGroup or SearchInput)\n useEffect(() => {\n if (queryState) {\n setPaginationParams((prev) => ({\n ...prev,\n search: queryState.search,\n sortBy: queryState.sortField ?? undefined,\n sortDirection: queryState.sortDirection ?? 'asc',\n filters: queryState.filters,\n page: 1, // Reset to page 1 when filters change\n }));\n }\n }, [\n queryState?.search,\n queryState?.sortField,\n queryState?.sortDirection,\n JSON.stringify(queryState?.filters),\n ]);\n\n // Listen for search and filter events from the event bus\n useEffect(() => {\n const handleSearch = (event: KFlowEvent) => {\n // Only handle if no query binding (avoid double-handling when query singleton is used)\n if (query) return;\n const term = (event.payload?.searchTerm as string) ?? '';\n setPaginationParams((prev) => ({ ...prev, search: term, page: 1 }));\n };\n\n const handleClearSearch = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n setPaginationParams((prev) => ({ ...prev, search: '', page: 1 }));\n };\n\n const handleFilter = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n const { field, value } = event.payload ?? {};\n if (field) {\n setPaginationParams((prev) => ({\n ...prev,\n filters: { ...prev.filters, [field as string]: value },\n page: 1,\n }));\n }\n };\n\n const handleClearFilters = (event: KFlowEvent) => {\n // Only handle if no query binding\n if (query) return;\n setPaginationParams((prev) => ({\n ...prev,\n filters: {},\n search: '',\n page: 1,\n }));\n };\n\n const unsubSearch = eventBus.on('UI:SEARCH', handleSearch);\n const unsubClear = eventBus.on('UI:CLEAR_SEARCH', handleClearSearch);\n const unsubFilter = eventBus.on('UI:FILTER', handleFilter);\n const unsubClearFilters = eventBus.on('UI:CLEAR_FILTERS', handleClearFilters);\n\n return () => {\n unsubSearch();\n unsubClear();\n unsubFilter();\n unsubClearFilters();\n };\n }, [eventBus, query]);\n\n // Build the grid-template-columns value\n const gridTemplateColumns = `repeat(auto-fit, minmax(min(${minCardWidth}px, 100%), 1fr))`;\n\n // Auto-fetch data when entity is provided but no external data\n const shouldAutoFetch = !!entity && !externalData && !children;\n\n // Use paginated or unpaginated hook based on enablePagination\n const paginatedResult = usePaginatedEntityList(\n shouldAutoFetch && enablePagination ? entity : undefined,\n paginationParams,\n { skip: !shouldAutoFetch || !enablePagination }\n );\n\n const unpaginatedResult = useEntityList(\n shouldAutoFetch && !enablePagination ? entity : undefined,\n {\n skip: !shouldAutoFetch || enablePagination,\n }\n );\n\n // Choose which result to use\n const queryResult = enablePagination ? paginatedResult : unpaginatedResult;\n\n // Use external data if provided, otherwise use fetched data\n const data = externalData ?? (enablePagination ? paginatedResult.data : unpaginatedResult.data);\n const isLoading = externalLoading ?? (shouldAutoFetch ? queryResult.isLoading : false);\n const error = externalError ?? (shouldAutoFetch ? queryResult.error : null);\n\n // Debug logging to trace data flow\n console.log(`%c[CardGrid] entity: ${entity}`, 'color: orange;');\n console.log('[CardGrid] shouldAutoFetch:', shouldAutoFetch);\n console.log('[CardGrid] externalData:', externalData);\n console.log('[CardGrid] data:', data);\n if (Array.isArray(data) && data.length > 0) {\n console.log('[CardGrid] First record:', JSON.stringify(data[0]));\n console.log(\n '[CardGrid] All statuses:',\n data.map((d: any) => d.status)\n );\n }\n\n // Pagination info (only available when using paginated hook)\n const paginationInfo = enablePagination\n ? {\n page: paginationParams.page,\n totalPages: paginatedResult.totalPages,\n total: paginatedResult.totalCount,\n }\n : null;\n\n // Normalize data to array\n const rawData = Array.isArray(data) ? data : data ? [data] : [];\n\n // For non-paginated mode with external data, apply client-side filtering\n const normalizedData = useMemo(() => {\n // When using server-side pagination/search, data is already filtered\n if (enablePagination || shouldAutoFetch) {\n return rawData;\n }\n\n // Client-side filtering for external data\n if (!paginationParams.search?.trim()) {\n return rawData;\n }\n const lowerSearch = paginationParams.search.toLowerCase();\n return rawData.filter((item) => {\n const itemData = item as Record<string, unknown>;\n return Object.values(itemData).some((value) => {\n if (value === null || value === undefined) return false;\n return String(value).toLowerCase().includes(lowerSearch);\n });\n });\n }, [rawData, paginationParams.search, enablePagination, shouldAutoFetch]);\n\n // Handle page change\n const handlePageChange = useCallback((newPage: number) => {\n setPaginationParams((prev) => ({ ...prev, page: newPage }));\n }, []);\n\n // Handle page size change\n const handlePageSizeChange = useCallback((newPageSize: number) => {\n setPaginationParams((prev) => ({\n ...prev,\n pageSize: newPageSize,\n page: 1,\n }));\n }, []);\n\n // Render data-bound cards if data is provided\n const renderContent = () => {\n if (children) {\n return children;\n }\n\n // Show loading state\n if (isLoading) {\n return (\n <div className=\"col-span-full text-center py-8 text-[var(--color-muted-foreground)]\">\n Loading {entity || 'items'}...\n </div>\n );\n }\n\n // Show error state\n if (error) {\n return (\n <div className=\"col-span-full text-center py-8 text-[var(--color-error)]\">\n Error loading {entity || 'items'}: {error.message}\n </div>\n );\n }\n\n if (normalizedData.length === 0) {\n return (\n <div className=\"col-span-full text-center py-8 text-[var(--color-muted-foreground)]\">\n No {entity || 'items'} found\n </div>\n );\n }\n\n return normalizedData.map((item, index) => {\n const itemData = item as Record<string, unknown>;\n const id = (itemData.id as string) || String(index);\n const fields = effectiveFieldNames || Object.keys(itemData).slice(0, 3);\n\n // Handle action click - navigate, dispatch event, or call callback\n const handleActionClick = (action: CardItemAction) => (e: React.MouseEvent) => {\n e.stopPropagation();\n\n // Handle navigation with template interpolation\n if (action.navigatesTo) {\n const url = action.navigatesTo.replace(/\\{\\{row\\.(\\w+)\\}\\}/g, (_, field) => {\n const value = itemData[field];\n return value !== undefined && value !== null ? String(value) : '';\n });\n navigate(url);\n return;\n }\n\n if (action.event) {\n eventBus.emit(`UI:${action.event}`, { row: itemData, entity });\n }\n if (action.onClick) {\n action.onClick(itemData);\n }\n };\n\n return (\n <div\n key={id}\n className={cn(\n 'bg-[var(--color-card)] rounded-[var(--radius-lg)] border border-[var(--color-border)] p-4 shadow-[var(--shadow-sm)]',\n onCardClick && 'cursor-pointer hover:border-[var(--color-primary)] transition-colors'\n )}\n onClick={() => onCardClick?.(itemData)}\n >\n {fields.map((field) => {\n const value = itemData[field];\n if (value === undefined || value === null) return null;\n return (\n <div key={field} className=\"mb-2 last:mb-0\">\n <span className=\"text-xs text-[var(--color-muted-foreground)] uppercase\">\n {field}\n </span>\n <div className=\"text-sm text-[var(--color-foreground)]\">{String(value)}</div>\n </div>\n );\n })}\n {/* Item Actions */}\n {itemActions && itemActions.length > 0 && (\n <div className=\"mt-3 pt-3 border-t border-[var(--color-border)] flex gap-2\">\n {itemActions.map((action, actionIdx) => {\n // Cast variant to Button's expected type, defaulting to 'secondary'\n const buttonVariant = (action.variant || 'secondary') as\n | 'primary'\n | 'secondary'\n | 'ghost'\n | 'danger'\n | 'success'\n | 'warning';\n return (\n <Button\n key={actionIdx}\n variant={buttonVariant}\n size=\"sm\"\n onClick={handleActionClick(action)}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n )}\n </div>\n );\n });\n };\n\n return (\n <div className=\"flex flex-col gap-4\">\n <div\n className={cn(\n 'grid',\n gapStyles[gap],\n alignStyles[alignItems],\n maxCols === 1 && 'grid-cols-1',\n maxCols === 2 && 'sm:grid-cols-2',\n maxCols === 3 && 'sm:grid-cols-2 lg:grid-cols-3',\n maxCols === 4 && 'sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4',\n maxCols === 5 && 'sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5',\n maxCols === 6 && 'sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-6',\n className\n )}\n style={!maxCols ? { gridTemplateColumns } : undefined}\n >\n {renderContent()}\n </div>\n\n {/* Pagination controls */}\n {enablePagination && paginationInfo && paginationInfo.totalPages > 1 && (\n <Pagination\n currentPage={paginationInfo.page}\n totalPages={paginationInfo.totalPages}\n onPageChange={handlePageChange}\n showTotal={showTotal}\n totalItems={paginationInfo.total}\n showPageSize\n pageSize={paginationParams.pageSize}\n onPageSizeChange={handlePageSizeChange}\n />\n )}\n </div>\n );\n};\n\nCardGrid.displayName = 'CardGrid';\n","/**\n * MasterDetail Component\n *\n * A layout pattern that shows a list/table of entities.\n * This is a thin wrapper around DataTable that accepts master-detail specific props.\n *\n * When `entity` prop is provided without `data`, automatically fetches data\n * using the useEntityList hook.\n *\n * The \"detail\" part is typically rendered separately via another render_ui effect\n * to a sidebar or detail panel when an item is selected.\n */\n\nimport React from 'react';\nimport { DataTable, type DataTableProps } from './DataTable';\nimport { useEntityList } from '../../hooks/useEntityData';\n\nexport interface MasterDetailProps<T extends { id: string | number } = { id: string | number }> {\n /** Entity type name - when provided without data, auto-fetches from API */\n entity?: string;\n /** Fields to show in the master list (maps to DataTable columns) */\n masterFields?: readonly string[];\n /** Fields for detail view (passed through but typically handled by separate render_ui) */\n detailFields?: readonly string[];\n /** Data array - if not provided and entity is set, data is auto-fetched */\n data?: readonly T[] | T[];\n /** Loading state */\n loading?: boolean;\n /** Loading state alias */\n isLoading?: boolean;\n /** Error state */\n error?: Error | null;\n /** Row click handler */\n onRowClick?: (row: T) => void;\n /** Selection change handler */\n onSelectionChange?: (ids: (string | number)[]) => void;\n /** Additional class name */\n className?: string;\n}\n\nexport function MasterDetail<T extends { id: string | number }>({\n entity,\n masterFields = [],\n detailFields: _detailFields, // Captured but not used here - detail handled separately\n data: externalData,\n loading: externalLoading,\n isLoading: externalIsLoading,\n error: externalError,\n onRowClick,\n onSelectionChange,\n className,\n ...rest\n}: MasterDetailProps<T>): React.ReactElement {\n // Auto-fetch data when entity is provided but no external data\n const shouldAutoFetch = !!entity && !externalData;\n const { data: fetchedData, isLoading: fetchLoading, error: fetchError } = useEntityList(\n shouldAutoFetch ? entity : undefined,\n { skip: !shouldAutoFetch }\n );\n\n // Use external data if provided, otherwise use fetched data\n const data = externalData ?? (fetchedData as T[] | undefined);\n const loading = externalLoading ?? (shouldAutoFetch ? fetchLoading : false);\n const isLoading = externalIsLoading ?? (shouldAutoFetch ? fetchLoading : false);\n const error = externalError ?? (shouldAutoFetch ? fetchError : null);\n\n return (\n <DataTable<T>\n columns={masterFields}\n data={data}\n isLoading={loading || isLoading}\n error={error}\n onRowClick={onRowClick}\n onSelectionChange={onSelectionChange}\n className={className}\n emptyTitle={`No ${entity || 'items'} found`}\n emptyDescription={`Create your first ${entity?.toLowerCase() || 'item'} to get started.`}\n {...(rest as Partial<DataTableProps<T>>)}\n />\n );\n}\n\nMasterDetail.displayName = 'MasterDetail';\n\nexport default MasterDetail;\n","/**\n * ConfirmDialog Component\n *\n * Confirmation dialog for destructive or important actions.\n * Composes Modal molecule with Button atoms.\n *\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React from \"react\";\nimport { AlertTriangle, Trash2, Check } from \"lucide-react\";\nimport { Modal, type ModalSize } from \"../molecules/Modal\";\nimport { Button } from \"../atoms/Button\";\nimport { Icon } from \"../atoms/Icon\";\nimport { Typography } from \"../atoms/Typography\";\nimport { cn } from \"../../lib/cn\";\n\nexport type ConfirmDialogVariant = \"danger\" | \"warning\" | \"info\" | \"default\";\n\nexport interface ConfirmDialogProps {\n /** Whether the dialog is open (defaults to true when rendered by slot wrapper) */\n isOpen?: boolean;\n /** Callback when dialog is closed (injected by slot wrapper) */\n onClose?: () => void;\n /** Callback when action is confirmed (injected by slot wrapper) */\n onConfirm?: () => void;\n /** Dialog title */\n title: string;\n /** Dialog message/description */\n message?: string | React.ReactNode;\n /** Alias for message (schema compatibility) */\n description?: string | React.ReactNode;\n /** Confirm button text */\n confirmText?: string;\n /** Alias for confirmText (schema compatibility) */\n confirmLabel?: string;\n /** Cancel button text */\n cancelText?: string;\n /** Alias for cancelText (schema compatibility) */\n cancelLabel?: string;\n /** Dialog variant */\n variant?: ConfirmDialogVariant;\n /** Dialog size */\n size?: ModalSize;\n /** Loading state for confirm button */\n isLoading?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst variantConfig = {\n danger: {\n icon: Trash2,\n iconBg: \"bg-[var(--color-error)]\",\n iconColor: \"text-[var(--color-error-foreground)]\",\n confirmVariant: \"primary\" as const,\n },\n warning: {\n icon: AlertTriangle,\n iconBg: \"bg-[var(--color-warning)]\",\n iconColor: \"text-[var(--color-warning-foreground)]\",\n confirmVariant: \"primary\" as const,\n },\n info: {\n icon: Check,\n iconBg: \"bg-[var(--color-info)]\",\n iconColor: \"text-[var(--color-info-foreground)]\",\n confirmVariant: \"primary\" as const,\n },\n default: {\n icon: Check,\n iconBg: \"bg-[var(--color-primary)]\",\n iconColor: \"text-[var(--color-primary-foreground)]\",\n confirmVariant: \"primary\" as const,\n },\n};\n\n/**\n * ConfirmDialog - Confirmation dialog for important actions\n */\nexport const ConfirmDialog: React.FC<ConfirmDialogProps> = ({\n isOpen = true,\n onClose = () => {},\n onConfirm = () => {},\n title,\n message,\n description,\n confirmText,\n confirmLabel,\n cancelText,\n cancelLabel,\n variant = \"danger\",\n size = \"sm\",\n isLoading = false,\n className,\n}) => {\n const config = variantConfig[variant];\n\n // Resolve aliases\n const resolvedMessage = message ?? description ?? \"\";\n const resolvedConfirmText = confirmText ?? confirmLabel ?? \"Confirm\";\n const resolvedCancelText = cancelText ?? cancelLabel ?? \"Cancel\";\n\n const handleConfirm = () => {\n onConfirm();\n };\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={onClose}\n size={size}\n showCloseButton={false}\n closeOnOverlayClick={!isLoading}\n closeOnEscape={!isLoading}\n className={className}\n footer={\n <div className=\"flex justify-end gap-3\">\n <Button variant=\"secondary\" onClick={onClose} disabled={isLoading}>\n {resolvedCancelText}\n </Button>\n <Button\n variant={config.confirmVariant}\n onClick={handleConfirm}\n disabled={isLoading}\n >\n {isLoading ? \"Loading...\" : resolvedConfirmText}\n </Button>\n </div>\n }\n >\n <div className=\"flex gap-4\">\n {/* Icon */}\n <div\n className={cn(\n \"flex-shrink-0 w-12 h-12 flex items-center justify-center\",\n config.iconBg,\n )}\n >\n <Icon icon={config.icon} size=\"lg\" className={config.iconColor} />\n </div>\n\n {/* Content */}\n <div className=\"flex-1\">\n <Typography variant=\"h5\" className=\"mb-2\">\n {title}\n </Typography>\n {typeof resolvedMessage === \"string\" ? (\n <Typography\n variant=\"body2\"\n className=\"text-[var(--color-muted-foreground)]\"\n >\n {resolvedMessage}\n </Typography>\n ) : (\n resolvedMessage\n )}\n </div>\n </div>\n </Modal>\n );\n};\n\nConfirmDialog.displayName = \"ConfirmDialog\";\n\nexport default ConfirmDialog;\n","/**\n * WizardContainer Component\n *\n * Multi-step wizard pattern with progress indicator.\n * Composes Box, Typography, and Button atoms.\n *\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React, { useState, useCallback } from \"react\";\nimport { ChevronLeft, ChevronRight, Check } from \"lucide-react\";\nimport { Button } from \"../atoms/Button\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Box } from \"../atoms/Box\";\nimport { Icon } from \"../atoms/Icon\";\nimport { cn } from \"../../lib/cn\";\n\n/** Form field definition for wizard sections */\nexport interface WizardField {\n id: string;\n type: string;\n label?: string;\n required?: boolean;\n repeatable?: boolean;\n options?: Array<{ value: string; label: string; isDefault?: boolean }>;\n defaultValue?: unknown;\n condition?: unknown[];\n placeholder?: string;\n entityField?: string;\n minLength?: number;\n maxLength?: number;\n dataSource?: Record<string, unknown>;\n displayFields?: string[];\n searchConfig?: Record<string, unknown>;\n hiddenCalculations?: Array<{\n variable: string;\n expression: unknown;\n scope?: string;\n }>;\n signatureConfig?: Record<string, unknown>;\n displayTemplate?: Record<string, unknown>;\n lawReference?: Record<string, unknown>;\n contextMenu?: string[];\n calculated?: Record<string, unknown>;\n readOnly?: boolean;\n minDate?: unknown;\n stats?: Array<{ label: string; value: unknown; icon?: string }>;\n items?: Array<{ id: string; label: string; autoCheck?: unknown }>;\n [key: string]: unknown;\n}\n\n/** Section within a wizard step */\nexport interface WizardSection {\n id: string;\n title?: string;\n description?: string;\n fields?: WizardField[];\n subsections?: WizardSection[];\n condition?: unknown[];\n repeatable?: boolean;\n minItems?: number;\n addButtonLabel?: string;\n hiddenCalculations?: Array<{\n variable: string;\n expression: unknown;\n scope?: string;\n }>;\n dataSource?: Record<string, unknown>;\n readOnly?: boolean;\n [key: string]: unknown;\n}\n\n/** Entity mapping configuration */\nexport interface WizardEntityMapping {\n entity: string;\n mode:\n | \"search_or_create\"\n | \"create_multiple\"\n | \"select_one\"\n | \"update\"\n | string;\n parentField?: string;\n idField?: string;\n [key: string]: unknown;\n}\n\n/** Validation rule for wizard steps */\nexport interface WizardValidationRule {\n condition: unknown[];\n message: string;\n}\n\n/** Law reference for compliance */\nexport interface WizardLawReference {\n law: string;\n article: string;\n description?: string;\n}\n\nexport interface WizardStep {\n /** Step identifier */\n id?: string;\n /** Tab identifier (schema-driven) */\n tabId?: string;\n /** Step title */\n title?: string;\n /** Step name (schema-driven, used as title if title not provided) */\n name?: string;\n /** Step description (optional) */\n description?: string;\n /** Step content (React component mode) */\n content?: React.ReactNode;\n /** Whether this step can be skipped */\n optional?: boolean;\n /** Custom validation for this step */\n isValid?: () => boolean;\n\n // Schema-driven wizard properties\n /** Form sections within this step */\n sections?: WizardSection[];\n /** Global variables required before entering this step */\n globalVariablesRequired?: string[];\n /** Global variables set by this step */\n globalVariablesSet?: string[];\n /** Local variables scoped to this step */\n localVariables?: string[];\n /** Entity mapping configuration */\n entityMapping?: WizardEntityMapping;\n /** Validation rules for this step */\n validationRules?: WizardValidationRule[];\n /** Law references for compliance */\n lawReferences?: WizardLawReference[];\n /** Phase of the inspection process */\n phase?: string;\n /** Context menu actions */\n contextMenu?: string[];\n\n /** Allow additional properties from schema */\n [key: string]: unknown;\n}\n\nexport interface WizardContainerProps {\n /** Wizard steps */\n steps: WizardStep[];\n /** Current step index (controlled) - accepts unknown for generated code compatibility */\n currentStep?: number | string | unknown;\n /** Callback when step changes */\n onStepChange?: (stepIndex: number) => void;\n /** Callback when wizard is completed */\n onComplete?: () => void;\n /** Show progress indicator */\n showProgress?: boolean;\n /** Allow navigation to previous steps */\n allowBack?: boolean;\n /** Modal mode (compact header, no padding) */\n compact?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Entity type name (schema-driven) */\n entity?: string;\n}\n\n/**\n * WizardContainer - Multi-step wizard\n */\nexport const WizardContainer: React.FC<WizardContainerProps> = ({\n steps,\n currentStep: controlledStep,\n onStepChange,\n onComplete,\n showProgress = true,\n allowBack = true,\n compact = false,\n className,\n entity: _entity, // Accept but don't use directly yet\n}) => {\n const [internalStep, setInternalStep] = useState(0);\n\n // Normalize controlledStep to number (handles string/unknown from generated code)\n const normalizedControlledStep = (() => {\n if (controlledStep === undefined || controlledStep === null)\n return undefined;\n if (typeof controlledStep === \"number\") return controlledStep;\n if (typeof controlledStep === \"string\") return parseInt(controlledStep, 10);\n // Handle unknown - try to convert to number\n const num = Number(controlledStep);\n return isNaN(num) ? undefined : num;\n })();\n const currentStep =\n normalizedControlledStep !== undefined\n ? normalizedControlledStep\n : internalStep;\n const totalSteps = steps.length;\n const currentStepData = steps[currentStep];\n const isFirstStep = currentStep === 0;\n const isLastStep = currentStep === totalSteps - 1;\n\n const goToStep = useCallback(\n (stepIndex: number) => {\n if (stepIndex < 0 || stepIndex >= totalSteps) return;\n\n if (controlledStep === undefined) {\n setInternalStep(stepIndex);\n }\n onStepChange?.(stepIndex);\n },\n [controlledStep, totalSteps, onStepChange],\n );\n\n const handleNext = () => {\n // Validate current step if validator exists\n if (currentStepData.isValid && !currentStepData.isValid()) {\n return;\n }\n\n if (isLastStep) {\n onComplete?.();\n } else {\n goToStep(currentStep + 1);\n }\n };\n\n const handleBack = () => {\n if (!isFirstStep && allowBack) {\n goToStep(currentStep - 1);\n }\n };\n\n return (\n <Box className={cn(\"flex flex-col h-full\", className)}>\n {/* Progress indicator */}\n {showProgress && (\n <Box\n border\n className={cn(\n \"border-b-2 border-x-0 border-t-0 border-[var(--color-border)]\",\n compact ? \"px-4 py-2\" : \"px-6 py-4\",\n )}\n >\n <div className=\"flex items-center gap-2\">\n {steps.map((step, index) => {\n const isActive = index === currentStep;\n const isCompleted = index < currentStep;\n // Use id, tabId, or index as key; use title or name for display\n const stepKey = step.id ?? step.tabId ?? `step-${index}`;\n const stepTitle = step.title ?? step.name ?? `Step ${index + 1}`;\n\n return (\n <React.Fragment key={stepKey}>\n {/* Step indicator */}\n <button\n onClick={() => isCompleted && allowBack && goToStep(index)}\n disabled={!isCompleted || !allowBack}\n className={cn(\n \"w-8 h-8 flex items-center justify-center text-sm font-bold transition-colors\",\n \"border-2 border-[var(--color-border)]\",\n isActive &&\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n isCompleted &&\n \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)] cursor-pointer hover:bg-[var(--color-primary-hover)]\",\n !isActive &&\n !isCompleted &&\n \"bg-[var(--color-card)] text-[var(--color-foreground)]\",\n )}\n >\n {isCompleted ? <Icon icon={Check} size=\"sm\" /> : index + 1}\n </button>\n\n {/* Step title (on desktop) */}\n <div\n className={cn(\n \"hidden md:block\",\n isActive\n ? \"text-[var(--color-foreground)] font-bold\"\n : \"text-[var(--color-muted-foreground)]\",\n )}\n >\n <Typography\n variant=\"small\"\n weight={isActive ? \"bold\" : \"normal\"}\n >\n {stepTitle}\n </Typography>\n </div>\n\n {/* Connector line */}\n {index < totalSteps - 1 && (\n <div\n className={cn(\n \"flex-1 h-0.5\",\n index < currentStep\n ? \"bg-[var(--color-primary)]\"\n : \"bg-[var(--color-border)]\",\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n </Box>\n )}\n\n {/* Step header */}\n {!compact && currentStepData && (\n <Box\n paddingX=\"lg\"\n paddingY=\"md\"\n border\n className=\"border-b-2 border-x-0 border-t-0 border-[var(--color-border)]\"\n >\n <Typography variant=\"h4\" as=\"h2\">\n {currentStepData.title ??\n currentStepData.name ??\n `Step ${currentStep + 1}`}\n </Typography>\n {currentStepData.description && (\n <Typography\n variant=\"body2\"\n className=\"text-[var(--color-muted-foreground)] mt-1\"\n >\n {currentStepData.description}\n </Typography>\n )}\n </Box>\n )}\n\n {/* Step content */}\n <div className={cn(\"flex-1 overflow-auto\", compact ? \"p-4\" : \"p-6\")}>\n {currentStepData?.content}\n </div>\n\n {/* Navigation buttons */}\n <Box\n border\n className={cn(\n \"border-t-2 border-x-0 border-b-0 border-[var(--color-border)] flex justify-between\",\n compact ? \"px-4 py-2\" : \"px-6 py-4\",\n )}\n >\n <Button\n variant=\"secondary\"\n onClick={handleBack}\n disabled={isFirstStep || !allowBack}\n >\n <Icon icon={ChevronLeft} size=\"sm\" />\n Back\n </Button>\n\n <div className=\"flex items-center gap-2\">\n <Typography\n variant=\"caption\"\n className=\"text-[var(--color-muted-foreground)]\"\n >\n Step {currentStep + 1} of {totalSteps}\n </Typography>\n </div>\n\n <Button variant=\"primary\" onClick={handleNext}>\n {isLastStep ? \"Complete\" : \"Next\"}\n {!isLastStep && <Icon icon={ChevronRight} size=\"sm\" />}\n </Button>\n </Box>\n </Box>\n );\n};\n\nWizardContainer.displayName = \"WizardContainer\";\n\nexport default WizardContainer;\n","/**\n * OrbitalVisualization Component\n *\n * Visualizes KFlow schemas as atomic orbitals based on complexity.\n * Uses CSS 3D transforms for lightweight rendering without Three.js.\n *\n * Orbital Types (based on complexity score):\n * - 1s (1-3): Simple sphere - Red\n * - 2s (4-8): Larger sphere - Orange\n * - 2p (9-15): Dumbbell shape - Yellow\n * - 3s (16-25): Sphere with node - Green\n * - 3p (26-40): Complex dumbbell - Blue\n * - 3d (41-60): Cloverleaf - Indigo\n * - 4f (61+): Multi-lobe - Violet\n */\n\nimport React, { useMemo } from \"react\";\n\n// ============ Types ============\n\nexport interface OrbitalVisualizationProps {\n /** Full KFlow schema object */\n schema?: {\n dataEntities?: unknown[];\n ui?: { pages?: { sections?: unknown[] }[] };\n traits?: unknown[];\n };\n /** Direct complexity override (1-100+) */\n complexity?: number;\n /** Size of the visualization */\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n /** Show complexity label */\n showLabel?: boolean;\n /** Animation enabled */\n animated?: boolean;\n /** Click handler */\n onClick?: () => void;\n /** Additional CSS classes */\n className?: string;\n}\n\ninterface OrbitalConfig {\n type: string;\n name: string;\n color: string;\n glowColor: string;\n lobes: number;\n hasNode: boolean;\n scale: number;\n}\n\n// ============ Constants ============\n\n// Muted emission spectrum colors (softer ROYGBIV)\nconst ORBITAL_CONFIGS: Record<string, OrbitalConfig> = {\n \"1s\": {\n type: \"1s\",\n name: \"1s Orbital\",\n color: \"#C45B5B\",\n glowColor: \"rgba(196, 91, 91, 0.3)\",\n lobes: 1,\n hasNode: false,\n scale: 0.6,\n },\n \"2s\": {\n type: \"2s\",\n name: \"2s Orbital\",\n color: \"#D4875B\",\n glowColor: \"rgba(212, 135, 91, 0.3)\",\n lobes: 1,\n hasNode: false,\n scale: 0.8,\n },\n \"2p\": {\n type: \"2p\",\n name: \"2p Orbital\",\n color: \"#C9B458\",\n glowColor: \"rgba(201, 180, 88, 0.3)\",\n lobes: 2,\n hasNode: false,\n scale: 1.0,\n },\n \"3s\": {\n type: \"3s\",\n name: \"3s Orbital\",\n color: \"#5BA87A\",\n glowColor: \"rgba(91, 168, 122, 0.3)\",\n lobes: 1,\n hasNode: true,\n scale: 1.0,\n },\n \"3p\": {\n type: \"3p\",\n name: \"3p Orbital\",\n color: \"#5B8DC4\",\n glowColor: \"rgba(91, 141, 196, 0.3)\",\n lobes: 2,\n hasNode: true,\n scale: 1.1,\n },\n \"3d\": {\n type: \"3d\",\n name: \"3d Orbital\",\n color: \"#6B5B8A\",\n glowColor: \"rgba(107, 91, 138, 0.3)\",\n lobes: 4,\n hasNode: true,\n scale: 1.2,\n },\n \"4f\": {\n type: \"4f\",\n name: \"4f Orbital\",\n color: \"#8A5B9C\",\n glowColor: \"rgba(138, 91, 156, 0.3)\",\n lobes: 6,\n hasNode: true,\n scale: 1.3,\n },\n};\n\nconst SIZE_MAP = {\n sm: 120,\n md: 200,\n lg: 300,\n xl: 400,\n};\n\n// ============ Utility Functions ============\n\n/**\n * Calculate complexity score from schema\n */\nfunction calculateComplexity(\n schema?: OrbitalVisualizationProps[\"schema\"],\n): number {\n if (!schema) return 1;\n\n const entities = schema.dataEntities?.length || 0;\n const pages = schema.ui?.pages?.length || 0;\n const traits = schema.traits?.length || 0;\n const sections =\n schema.ui?.pages?.reduce(\n (acc, page) => acc + (page.sections?.length || 0),\n 0,\n ) || 0;\n\n // Complexity formula: entities×3 + pages×2 + traits×2 + sections×1\n return entities * 3 + pages * 2 + traits * 2 + sections * 1;\n}\n\n/**\n * Get orbital type based on complexity score\n */\nfunction getOrbitalType(complexity: number): string {\n if (complexity <= 3) return \"1s\";\n if (complexity <= 8) return \"2s\";\n if (complexity <= 15) return \"2p\";\n if (complexity <= 25) return \"3s\";\n if (complexity <= 40) return \"3p\";\n if (complexity <= 60) return \"3d\";\n return \"4f\";\n}\n\n// ============ Sub-Components ============\n\ninterface OrbitalSphereProps {\n config: OrbitalConfig;\n size: number;\n animated: boolean;\n}\n\n/** Renders a single sphere lobe */\nconst OrbitalSphere: React.FC<OrbitalSphereProps> = ({\n config,\n size,\n animated,\n}) => {\n const sphereSize = size * config.scale * 0.4;\n\n return (\n <div\n className=\"absolute rounded-full\"\n style={{\n width: sphereSize,\n height: sphereSize,\n background: `radial-gradient(circle at 30% 30%, ${config.color}dd, ${config.color}88 50%, ${config.color}44 100%)`,\n boxShadow: `\n inset -10px -10px 20px rgba(0,0,0,0.3),\n inset 5px 5px 15px rgba(255,255,255,0.2),\n 0 0 ${size * 0.15}px ${config.glowColor},\n 0 0 ${size * 0.3}px ${config.glowColor}\n `,\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n animation: animated\n ? \"orbital-pulse 3s ease-in-out infinite\"\n : undefined,\n }}\n />\n );\n};\n\ninterface DumbbellOrbitalProps {\n config: OrbitalConfig;\n size: number;\n animated: boolean;\n rotation?: number;\n}\n\n/** Renders a p-orbital dumbbell shape */\nconst DumbbellOrbital: React.FC<DumbbellOrbitalProps> = ({\n config,\n size,\n animated,\n rotation = 0,\n}) => {\n const lobeSize = size * config.scale * 0.25;\n const offset = size * 0.18;\n\n return (\n <div\n className=\"absolute\"\n style={{\n width: size,\n height: size,\n left: \"50%\",\n top: \"50%\",\n transform: `translate(-50%, -50%) rotate(${rotation}deg)`,\n animation: animated ? \"orbital-rotate 8s linear infinite\" : undefined,\n }}\n >\n {/* Top lobe */}\n <div\n className=\"absolute rounded-full\"\n style={{\n width: lobeSize,\n height: lobeSize * 1.4,\n background: `radial-gradient(ellipse at 50% 30%, ${config.color}dd, ${config.color}66 70%, transparent 100%)`,\n boxShadow: `0 0 ${size * 0.1}px ${config.glowColor}`,\n left: \"50%\",\n top: `calc(50% - ${offset}px)`,\n transform: \"translate(-50%, -100%)\",\n borderRadius: \"50% 50% 40% 40%\",\n }}\n />\n {/* Bottom lobe */}\n <div\n className=\"absolute rounded-full\"\n style={{\n width: lobeSize,\n height: lobeSize * 1.4,\n background: `radial-gradient(ellipse at 50% 70%, ${config.color}dd, ${config.color}66 70%, transparent 100%)`,\n boxShadow: `0 0 ${size * 0.1}px ${config.glowColor}`,\n left: \"50%\",\n bottom: `calc(50% - ${offset}px)`,\n transform: \"translate(-50%, 100%)\",\n borderRadius: \"40% 40% 50% 50%\",\n }}\n />\n {/* Node (nucleus) */}\n {config.hasNode && (\n <div\n className=\"absolute rounded-[var(--radius-full)] bg-[var(--color-foreground)]\"\n style={{\n width: size * 0.06,\n height: size * 0.06,\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n boxShadow: `0 0 ${size * 0.05}px rgba(255,255,255,0.8)`,\n }}\n />\n )}\n </div>\n );\n};\n\ninterface CloverleafOrbitalProps {\n config: OrbitalConfig;\n size: number;\n animated: boolean;\n}\n\n/** Renders a d-orbital cloverleaf shape */\nconst CloverleafOrbital: React.FC<CloverleafOrbitalProps> = ({\n config,\n size,\n animated,\n}) => {\n const lobes = config.lobes;\n const angleStep = 360 / lobes;\n const lobeSize = size * 0.18;\n const lobeDistance = size * 0.22;\n\n return (\n <div\n className=\"absolute\"\n style={{\n width: size,\n height: size,\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n animation: animated ? \"orbital-rotate 12s linear infinite\" : undefined,\n }}\n >\n {Array.from({ length: lobes }).map((_, i) => {\n const angle = i * angleStep * (Math.PI / 180);\n const x = Math.cos(angle) * lobeDistance;\n const y = Math.sin(angle) * lobeDistance;\n\n return (\n <div\n key={i}\n className=\"absolute rounded-full\"\n style={{\n width: lobeSize,\n height: lobeSize * 1.3,\n background: `radial-gradient(ellipse at 50% 40%, ${config.color}dd, ${config.color}55 80%, transparent 100%)`,\n boxShadow: `0 0 ${size * 0.08}px ${config.glowColor}`,\n left: `calc(50% + ${x}px)`,\n top: `calc(50% + ${y}px)`,\n transform: `translate(-50%, -50%) rotate(${i * angleStep + 90}deg)`,\n }}\n />\n );\n })}\n {/* Central node */}\n <div\n className=\"absolute rounded-[var(--radius-full)] bg-[var(--color-foreground)]\"\n style={{\n width: size * 0.08,\n height: size * 0.08,\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n boxShadow: `0 0 ${size * 0.06}px rgba(255,255,255,0.9)`,\n }}\n />\n </div>\n );\n};\n\n// ============ Main Component ============\n\nexport const OrbitalVisualization: React.FC<OrbitalVisualizationProps> = ({\n schema,\n complexity: overrideComplexity,\n size = \"md\",\n showLabel = true,\n animated = true,\n onClick,\n className = \"\",\n}) => {\n // Calculate complexity and orbital type\n const complexity = useMemo(() => {\n if (overrideComplexity !== undefined) return overrideComplexity;\n return calculateComplexity(schema);\n }, [schema, overrideComplexity]);\n\n const orbitalType = useMemo(() => getOrbitalType(complexity), [complexity]);\n const config = ORBITAL_CONFIGS[orbitalType];\n const pixelSize = SIZE_MAP[size];\n\n // Render appropriate orbital shape\n const renderOrbital = () => {\n switch (config.lobes) {\n case 1:\n return (\n <OrbitalSphere config={config} size={pixelSize} animated={animated} />\n );\n case 2:\n return (\n <>\n <DumbbellOrbital\n config={config}\n size={pixelSize}\n animated={animated}\n rotation={0}\n />\n {config.hasNode && (\n <>\n <DumbbellOrbital\n config={config}\n size={pixelSize * 0.7}\n animated={animated}\n rotation={60}\n />\n <DumbbellOrbital\n config={config}\n size={pixelSize * 0.7}\n animated={animated}\n rotation={120}\n />\n </>\n )}\n </>\n );\n case 4:\n case 6:\n return (\n <CloverleafOrbital\n config={config}\n size={pixelSize}\n animated={animated}\n />\n );\n default:\n return (\n <OrbitalSphere config={config} size={pixelSize} animated={animated} />\n );\n }\n };\n\n return (\n <div\n className={`relative flex flex-col items-center justify-center ${className}`}\n style={{ width: pixelSize, height: pixelSize + (showLabel ? 60 : 0) }}\n onClick={onClick}\n role={onClick ? \"button\" : undefined}\n tabIndex={onClick ? 0 : undefined}\n >\n {/* Orbital container */}\n <div\n className=\"relative\"\n style={{\n width: pixelSize,\n height: pixelSize,\n perspective: pixelSize * 2,\n cursor: onClick ? \"pointer\" : \"default\",\n }}\n >\n {/* Background glow */}\n <div\n className=\"absolute rounded-full opacity-30\"\n style={{\n width: pixelSize * 0.8,\n height: pixelSize * 0.8,\n left: \"50%\",\n top: \"50%\",\n transform: \"translate(-50%, -50%)\",\n background: `radial-gradient(circle, ${config.glowColor} 0%, transparent 70%)`,\n filter: \"blur(20px)\",\n }}\n />\n\n {/* Orbital shape */}\n {renderOrbital()}\n </div>\n\n {/* Label */}\n {showLabel && (\n <div className=\"mt-4 text-center\">\n <div className=\"text-lg font-semibold text-[var(--color-foreground)]\">\n {config.name}\n </div>\n <div className=\"text-sm text-[var(--color-muted-foreground)]\">\n Complexity: {complexity} units\n </div>\n </div>\n )}\n\n {/* CSS Animations */}\n <style>{`\n @keyframes orbital-pulse {\n 0%, 100% { transform: translate(-50%, -50%) scale(1); opacity: 1; }\n 50% { transform: translate(-50%, -50%) scale(1.05); opacity: 0.9; }\n }\n\n @keyframes orbital-rotate {\n from { transform: translate(-50%, -50%) rotate(0deg); }\n to { transform: translate(-50%, -50%) rotate(360deg); }\n }\n `}</style>\n </div>\n );\n};\n\nexport default OrbitalVisualization;\n","/**\n * SplitPane Component\n *\n * Two-pane resizable split layout for master-detail views,\n * dual-pane editors, and code + preview layouts.\n *\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React, { useState, useRef, useCallback } from \"react\";\nimport { cn } from \"../../../lib/cn\";\n\nexport interface SplitPaneProps {\n /** Direction of the split */\n direction?: \"horizontal\" | \"vertical\";\n /** Initial ratio (0-100, percentage of first pane) */\n ratio?: number;\n /** Minimum size of either pane in pixels */\n minSize?: number;\n /** Allow user resizing */\n resizable?: boolean;\n /** Content for the left/top pane */\n left: React.ReactNode;\n /** Content for the right/bottom pane */\n right: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n /** Class for left/top pane */\n leftClassName?: string;\n /** Class for right/bottom pane */\n rightClassName?: string;\n}\n\n/**\n * SplitPane - Two-pane resizable layout\n */\nexport const SplitPane: React.FC<SplitPaneProps> = ({\n direction = \"horizontal\",\n ratio: initialRatio = 50,\n minSize = 100,\n resizable = true,\n left,\n right,\n className,\n leftClassName,\n rightClassName,\n}) => {\n const [ratio, setRatio] = useState(initialRatio);\n const containerRef = useRef<HTMLDivElement>(null);\n const isDragging = useRef(false);\n\n const handleMouseDown = useCallback(\n (e: React.MouseEvent) => {\n if (!resizable) return;\n e.preventDefault();\n isDragging.current = true;\n\n const handleMouseMove = (e: MouseEvent) => {\n if (!isDragging.current || !containerRef.current) return;\n\n const rect = containerRef.current.getBoundingClientRect();\n let newRatio: number;\n\n if (direction === \"horizontal\") {\n const x = e.clientX - rect.left;\n newRatio = (x / rect.width) * 100;\n } else {\n const y = e.clientY - rect.top;\n newRatio = (y / rect.height) * 100;\n }\n\n // Clamp to min/max based on minSize\n const minRatio =\n (minSize / (direction === \"horizontal\" ? rect.width : rect.height)) *\n 100;\n const maxRatio = 100 - minRatio;\n newRatio = Math.max(minRatio, Math.min(maxRatio, newRatio));\n\n setRatio(newRatio);\n };\n\n const handleMouseUp = () => {\n isDragging.current = false;\n document.removeEventListener(\"mousemove\", handleMouseMove);\n document.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n document.addEventListener(\"mousemove\", handleMouseMove);\n document.addEventListener(\"mouseup\", handleMouseUp);\n },\n [direction, minSize, resizable],\n );\n\n const isHorizontal = direction === \"horizontal\";\n\n return (\n <div\n ref={containerRef}\n className={cn(\n \"flex w-full h-full\",\n isHorizontal ? \"flex-row\" : \"flex-col\",\n className,\n )}\n >\n {/* Left/Top pane */}\n <div\n className={cn(\"overflow-auto\", leftClassName)}\n style={{\n [isHorizontal ? \"width\" : \"height\"]: `${ratio}%`,\n flexShrink: 0,\n }}\n >\n {left}\n </div>\n\n {/* Resize handle */}\n {resizable && (\n <div\n onMouseDown={handleMouseDown}\n className={cn(\n \"flex-shrink-0 bg-[var(--color-border)] transition-colors\",\n isHorizontal\n ? \"w-1 cursor-col-resize hover:w-1.5 hover:bg-[var(--color-muted-foreground)]\"\n : \"h-1 cursor-row-resize hover:h-1.5 hover:bg-[var(--color-muted-foreground)]\",\n )}\n />\n )}\n\n {/* Right/Bottom pane */}\n <div className={cn(\"flex-1 overflow-auto\", rightClassName)}>{right}</div>\n </div>\n );\n};\n\nSplitPane.displayName = \"SplitPane\";\n\nexport default SplitPane;\n","/**\n * DashboardGrid Component\n *\n * Multi-column grid for widgets and stats cards.\n * Supports cell spanning for flexible dashboard layouts.\n *\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React from \"react\";\nimport { cn } from \"../../../lib/cn\";\n\nexport interface DashboardGridCell {\n /** Unique cell ID */\n id: string;\n /** Content to render in the cell */\n content: React.ReactNode;\n /** Number of columns this cell spans (1-4) */\n colSpan?: 1 | 2 | 3 | 4;\n /** Number of rows this cell spans (1-2) */\n rowSpan?: 1 | 2;\n}\n\nexport interface DashboardGridProps {\n /** Number of columns */\n columns?: 2 | 3 | 4;\n /** Gap between cells */\n gap?: \"sm\" | \"md\" | \"lg\";\n /** Cell definitions */\n cells: DashboardGridCell[];\n /** Additional CSS classes */\n className?: string;\n}\n\nconst gapStyles = {\n sm: \"gap-2\",\n md: \"gap-4\",\n lg: \"gap-6\",\n};\n\nconst columnStyles = {\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n};\n\nconst colSpanStyles = {\n 1: \"col-span-1\",\n 2: \"col-span-2\",\n 3: \"col-span-3\",\n 4: \"col-span-4\",\n};\n\nconst rowSpanStyles = {\n 1: \"row-span-1\",\n 2: \"row-span-2\",\n};\n\n/**\n * DashboardGrid - Multi-column widget grid\n */\nexport const DashboardGrid: React.FC<DashboardGridProps> = ({\n columns = 3,\n gap = \"md\",\n cells,\n className,\n}) => {\n return (\n <div\n className={cn(\n \"grid w-full\",\n columnStyles[columns],\n gapStyles[gap],\n className,\n )}\n >\n {cells.map((cell) => (\n <div\n key={cell.id}\n className={cn(\n \"border-2 border-[var(--color-border)] bg-[var(--color-card)]\",\n colSpanStyles[cell.colSpan || 1],\n rowSpanStyles[cell.rowSpan || 1],\n )}\n >\n {cell.content}\n </div>\n ))}\n </div>\n );\n};\n\nDashboardGrid.displayName = \"DashboardGrid\";\n\nexport default DashboardGrid;\n","/**\n * TabbedContainer Component\n *\n * Tabbed content areas with shared header/context.\n * Wraps the Tabs molecule with layout-specific styling.\n *\n * Uses wireframe theme styling (high contrast, sharp edges).\n */\nimport React, { useState, useCallback } from \"react\";\nimport { cn } from \"../../../lib/cn\";\nimport { Typography } from \"../../atoms/Typography\";\n\nexport interface TabDefinition {\n /** Tab identifier */\n id: string;\n /** Tab label */\n label: string;\n /** Tab content (optional if using sectionId) */\n content?: React.ReactNode;\n /** Section ID to render (alternative to content) */\n sectionId?: string;\n /** Optional badge/count */\n badge?: string | number;\n /** Disable this tab */\n disabled?: boolean;\n}\n\nexport interface TabbedContainerProps {\n /** Tab definitions */\n tabs: TabDefinition[];\n /** Default active tab ID */\n defaultTab?: string;\n /** Controlled active tab */\n activeTab?: string;\n /** Callback when tab changes */\n onTabChange?: (tabId: string) => void;\n /** Tab position */\n position?: \"top\" | \"left\";\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * TabbedContainer - Tabbed content areas\n */\nexport const TabbedContainer: React.FC<TabbedContainerProps> = ({\n tabs,\n defaultTab,\n activeTab: controlledActiveTab,\n onTabChange,\n position = \"top\",\n className,\n}) => {\n const [internalActiveTab, setInternalActiveTab] = useState(\n defaultTab || tabs[0]?.id || \"\",\n );\n\n const activeTab =\n controlledActiveTab !== undefined ? controlledActiveTab : internalActiveTab;\n\n const handleTabChange = useCallback(\n (tabId: string) => {\n if (controlledActiveTab === undefined) {\n setInternalActiveTab(tabId);\n }\n onTabChange?.(tabId);\n },\n [controlledActiveTab, onTabChange],\n );\n\n const activeTabDef = tabs.find((tab) => tab.id === activeTab);\n const activeContent =\n activeTabDef?.content ||\n (activeTabDef?.sectionId ? (\n <div className=\"p-4 text-[var(--color-muted-foreground)]\">\n Section: {activeTabDef.sectionId}\n </div>\n ) : null);\n\n const isVertical = position === \"left\";\n\n return (\n <div\n className={cn(\n \"flex w-full h-full\",\n isVertical ? \"flex-row\" : \"flex-col\",\n className,\n )}\n >\n {/* Tab list */}\n <div\n role=\"tablist\"\n className={cn(\n \"flex flex-shrink-0\",\n isVertical\n ? \"flex-col border-r-2 border-[var(--color-border)]\"\n : \"flex-row border-b-2 border-[var(--color-border)]\",\n )}\n >\n {tabs.map((tab) => {\n const isActive = tab.id === activeTab;\n const isDisabled = tab.disabled;\n\n return (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={isActive}\n aria-controls={`tabpanel-${tab.id}`}\n aria-disabled={isDisabled}\n disabled={isDisabled}\n onClick={() => !isDisabled && handleTabChange(tab.id)}\n className={cn(\n \"flex items-center gap-2 px-4 py-3 text-sm font-medium transition-colors\",\n \"focus:outline-none focus:ring-2 focus:ring-[var(--color-ring)] focus:ring-offset-2\",\n \"disabled:opacity-50 disabled:cursor-not-allowed\",\n isActive\n ? \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\"\n : \"bg-[var(--color-card)] text-[var(--color-foreground)] hover:bg-[var(--color-muted)]\",\n isVertical ? \"justify-start\" : \"justify-center\",\n )}\n >\n <Typography\n variant=\"small\"\n weight={isActive ? \"bold\" : \"normal\"}\n color=\"inherit\"\n >\n {tab.label}\n </Typography>\n {tab.badge !== undefined && (\n <span\n className={cn(\n \"px-1.5 py-0.5 text-xs font-medium rounded\",\n isActive\n ? \"bg-[var(--color-primary-foreground)] text-[var(--color-primary)]\"\n : \"bg-[var(--color-primary)] text-[var(--color-primary-foreground)]\",\n )}\n >\n {tab.badge}\n </span>\n )}\n </button>\n );\n })}\n </div>\n\n {/* Tab panel */}\n <div\n role=\"tabpanel\"\n id={`tabpanel-${activeTab}`}\n aria-labelledby={`tab-${activeTab}`}\n className=\"flex-1 overflow-auto\"\n >\n {activeContent}\n </div>\n </div>\n );\n};\n\nTabbedContainer.displayName = \"TabbedContainer\";\n\nexport default TabbedContainer;\n","/**\n * Entity Store\n *\n * Simple module-level store for runtime entities.\n * No providers needed - hooks import and use directly.\n *\n * NOTE: Mutations create new Map instances to trigger React rerenders\n * when using useSyncExternalStore.\n */\n\nimport {\n type EntityFilterValue,\n type FilterOperator,\n type EntityFilters,\n applyFilters,\n createFilter\n} from './filtering';\n\n// Re-export filtering types for convenience\nexport type { EntityFilterValue, FilterOperator, EntityFilters };\nexport { applyFilters, createFilter };\n\nexport interface Entity {\n id: string;\n type: string;\n [key: string]: unknown;\n}\n\ntype Listener = () => void;\n\n// Module-level state - use `let` so we can reassign to new Map on mutations\nlet entities = new Map<string, Entity>();\nlet filters = new Map<string, EntityFilters>();\nconst listeners = new Set<Listener>();\nlet idCounter = 0;\n\n/**\n * Subscribe to store changes\n */\nexport function subscribe(listener: Listener): () => void {\n listeners.add(listener);\n return () => listeners.delete(listener);\n}\n\n/**\n * Notify all listeners of changes\n */\nfunction notify(): void {\n listeners.forEach(listener => listener());\n}\n\n/**\n * Get all entities\n */\nexport function getEntities(): Map<string, Entity> {\n return entities;\n}\n\n/**\n * Get entity by ID\n */\nexport function getEntity(id: string): Entity | undefined {\n return entities.get(id);\n}\n\n/**\n * Get entities by type\n */\nexport function getByType(type: string | string[]): Entity[] {\n const types = Array.isArray(type) ? type : [type];\n return [...entities.values()].filter(e => types.includes(e.type));\n}\n\n/**\n * Get all entities as array\n */\nexport function getAllEntities(): Entity[] {\n return [...entities.values()];\n}\n\n/**\n * Get singleton entity by type (first of that type)\n */\nexport function getSingleton(type: string): Entity | undefined {\n return [...entities.values()].find(e => e.type === type);\n}\n\n/**\n * Spawn a new entity\n */\nexport function spawnEntity(config: { type: string; id?: string; [key: string]: unknown }): string {\n const id = config.id ?? `entity_${++idCounter}`;\n const entity: Entity = { ...config, id };\n // Create new Map to trigger React rerender\n entities = new Map(entities);\n entities.set(id, entity);\n notify();\n return id;\n}\n\n/**\n * Update an entity\n */\nexport function updateEntity(id: string, updates: Partial<Entity>): void {\n const entity = entities.get(id);\n if (entity) {\n // Create new Map to trigger React rerender\n entities = new Map(entities);\n entities.set(id, { ...entity, ...updates });\n notify();\n }\n}\n\n/**\n * Update singleton entity by type\n */\nexport function updateSingleton(type: string, updates: Partial<Entity>): void {\n const entity = getSingleton(type);\n if (entity) {\n updateEntity(entity.id, updates);\n }\n}\n\n/**\n * Remove an entity\n */\nexport function removeEntity(id: string): void {\n if (entities.has(id)) {\n // Create new Map to trigger React rerender\n entities = new Map(entities);\n entities.delete(id);\n notify();\n }\n}\n\n/**\n * Clear all entities\n */\nexport function clearEntities(): void {\n // Create new Map to trigger React rerender\n entities = new Map();\n notify();\n}\n\n// ============================================================================\n// Filter Management\n// ============================================================================\n\n/**\n * Set a filter for an entity type\n * @param entityType - The entity type to filter (e.g., \"Player\", \"Enemy\")\n * @param field - The filter key (e.g., 'status' or 'date_from')\n * @param value - The filter value\n * @param operator - The comparison operator\n * @param targetField - The actual record field to compare (defaults to field)\n */\nexport function setFilter(\n entityType: string,\n field: string,\n value: unknown,\n operator: FilterOperator = 'eq',\n targetField?: string\n): void {\n filters = new Map(filters);\n const entityFilters = new Map(filters.get(entityType) || []);\n entityFilters.set(field, createFilter(field, value, operator, targetField));\n filters.set(entityType, entityFilters);\n notify();\n}\n\n/**\n * Clear a specific filter\n */\nexport function clearFilter(entityType: string, field: string): void {\n const entityFilters = filters.get(entityType);\n if (entityFilters && entityFilters.has(field)) {\n filters = new Map(filters);\n const newFilters = new Map(entityFilters);\n newFilters.delete(field);\n filters.set(entityType, newFilters);\n notify();\n }\n}\n\n/**\n * Clear all filters for an entity type\n */\nexport function clearAllFilters(entityType: string): void {\n if (filters.has(entityType)) {\n filters = new Map(filters);\n filters.set(entityType, new Map());\n notify();\n }\n}\n\n/**\n * Get active filters for an entity type\n */\nexport function getFilters(entityType: string): EntityFilters {\n return filters.get(entityType) || new Map();\n}\n\n/**\n * Get entities by type with optional filtering\n */\nexport function getByTypeFiltered(type: string | string[]): Entity[] {\n const types = Array.isArray(type) ? type : [type];\n let result = [...entities.values()].filter(e => types.includes(e.type));\n\n // Apply filters for each type\n for (const t of types) {\n const typeFilters = filters.get(t);\n if (typeFilters && typeFilters.size > 0) {\n result = applyFilters(result, typeFilters);\n }\n }\n\n return result;\n}\n\n/**\n * Get snapshot for React useSyncExternalStore\n */\nexport function getSnapshot(): Map<string, Entity> {\n return entities;\n}\n\n/**\n * Get filter snapshot for React useSyncExternalStore\n */\nexport function getFilterSnapshot(): Map<string, EntityFilters> {\n return filters;\n}\n","/**\n * useEntities Hook\n *\n * React hook to access the entity store.\n * Uses useSyncExternalStore for efficient updates.\n */\n\nimport { useSyncExternalStore, useCallback } from 'react';\nimport {\n subscribe,\n getSnapshot,\n getEntity,\n getByType,\n getAllEntities,\n getSingleton,\n spawnEntity,\n updateEntity,\n updateSingleton,\n removeEntity,\n clearEntities,\n} from '../stores/entityStore';\nimport type { Entity } from '../stores/entityStore';\n\n// Re-export Entity type\nexport type { Entity };\n\n/**\n * Hook to access all entities\n */\nexport function useEntities() {\n const entities = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n\n return {\n entities,\n getEntity,\n getByType,\n getAllEntities,\n getSingleton,\n spawnEntity,\n updateEntity,\n updateSingleton,\n removeEntity,\n clearEntities,\n };\n}\n\n/**\n * Hook to access a specific entity by ID\n */\nexport function useEntity(id: string): Entity | undefined {\n const entities = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n return entities.get(id);\n}\n\n/**\n * Hook to access entities of a specific type\n */\nexport function useEntitiesByType(type: string): Entity[] {\n const entities = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n return [...entities.values()].filter(e => e.type === type);\n}\n\n/**\n * Hook to access a singleton entity by type\n */\nexport function useSingletonEntity<T extends Entity = Entity>(type: string): T | undefined {\n const entities = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);\n return [...entities.values()].find(e => e.type === type) as T | undefined;\n}\n\n/**\n * Hook for Player entity (convenience)\n */\nexport function usePlayer() {\n const player = useSingletonEntity('Player');\n const update = useCallback((updates: Partial<Entity>) => {\n if (player) updateEntity(player.id, updates);\n }, [player?.id]);\n\n return { player, updatePlayer: update };\n}\n\n/**\n * Hook for Physics entity (convenience)\n */\nexport function usePhysics() {\n const physics = useSingletonEntity('Physics');\n const update = useCallback((updates: Partial<Entity>) => {\n if (physics) updateEntity(physics.id, updates);\n }, [physics?.id]);\n\n return { physics, updatePhysics: update };\n}\n\n/**\n * Hook for Input entity (convenience)\n */\nexport function useInput() {\n const input = useSingletonEntity('Input');\n const update = useCallback((updates: Partial<Entity>) => {\n if (input) updateEntity(input.id, updates);\n }, [input?.id]);\n\n return { input, updateInput: update };\n}\n\n// Re-export store functions for direct use\nexport {\n spawnEntity,\n updateEntity,\n updateSingleton,\n removeEntity,\n clearEntities,\n getEntity,\n getByType,\n getAllEntities,\n getSingleton,\n};\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\nimport { useEntities, type Entity } from '../../../hooks/useEntities';\nimport { updateSingleton, getSingleton, spawnEntity, updateEntity, getByType, getAllEntities } from '../../../stores/entityStore';\nimport { debugInput, debugCollision } from '../../../lib/debug';\n\n/**\n * Game entity with position and rendering data\n */\nexport interface GameEntity extends Entity {\n x: number;\n y: number;\n vx?: number;\n vy?: number;\n width?: number;\n height?: number;\n layer?: number;\n sprite?: string;\n color?: string;\n rotation?: number;\n scale?: number;\n visible?: boolean;\n collider?: {\n width: number;\n height: number;\n offsetX?: number;\n offsetY?: number;\n };\n}\n\n/**\n * Entity renderer function type\n */\nexport type EntityRenderer = (\n ctx: CanvasRenderingContext2D,\n entity: GameEntity\n) => void;\n\n/** Input key bindings - supports both field-based and event-based formats */\ninterface InputBinding {\n key: string;\n /** Direct field mapping (e.g., 'left', 'right', 'jump') */\n field?: 'left' | 'right' | 'jump' | 'attack';\n /** Event-based mapping (e.g., 'MOVE_LEFT', 'JUMP') - mapped to fields */\n event?: string;\n /** Whether to hold the input (continuous) or trigger once */\n hold?: boolean;\n}\n\n/** Collision definition from schema */\nexport interface CollisionDef {\n /** Entity types that collide [typeA, typeB] */\n between: [string, string];\n /** Collision type: 'solid' resolves overlap, 'trigger' emits event */\n type: 'solid' | 'trigger';\n /** Event to emit for trigger collisions */\n emits?: string;\n}\n\n/** AABB helper */\ninterface AABB {\n x: number;\n y: number;\n width: number;\n height: number;\n}\n\nfunction getAABB(entity: GameEntity): AABB {\n const width = entity.width ?? 32;\n const height = entity.height ?? 32;\n return {\n x: entity.x - width / 2,\n y: entity.y - height / 2,\n width,\n height,\n };\n}\n\nfunction aabbOverlap(a: AABB, b: AABB): boolean {\n return (\n a.x < b.x + b.width &&\n a.x + a.width > b.x &&\n a.y < b.y + b.height &&\n a.y + a.height > b.y\n );\n}\n\nfunction resolveCollision(\n mover: AABB,\n solid: AABB,\n moverVy: number\n): { dx: number; dy: number; side: 'top' | 'bottom' | 'left' | 'right' } {\n const overlapLeft = (mover.x + mover.width) - solid.x;\n const overlapRight = (solid.x + solid.width) - mover.x;\n const overlapTop = (mover.y + mover.height) - solid.y;\n const overlapBottom = (solid.y + solid.height) - mover.y;\n\n const minOverlapX = overlapLeft < overlapRight ? -overlapLeft : overlapRight;\n const minOverlapY = overlapTop < overlapBottom ? -overlapTop : overlapBottom;\n\n if (Math.abs(minOverlapX) < Math.abs(minOverlapY)) {\n return { dx: minOverlapX, dy: 0, side: minOverlapX < 0 ? 'right' : 'left' };\n } else {\n const side = minOverlapY < 0 ? 'bottom' : 'top';\n return { dx: 0, dy: minOverlapY, side };\n }\n}\n\n/** Map event names to input fields */\nconst EVENT_TO_FIELD: Record<string, 'left' | 'right' | 'jump' | 'attack'> = {\n 'MOVE_LEFT': 'left',\n 'MOVE_RIGHT': 'right',\n 'JUMP': 'jump',\n 'ATTACK': 'attack',\n};\n\n/** Get the field from a binding (supports both field and event formats) */\nfunction getFieldFromBinding(binding: InputBinding): 'left' | 'right' | 'jump' | 'attack' | undefined {\n if (binding.field) return binding.field;\n if (binding.event) return EVENT_TO_FIELD[binding.event];\n return undefined;\n}\n\nconst DEFAULT_INPUT_BINDINGS: InputBinding[] = [\n { key: 'ArrowLeft', field: 'left' },\n { key: 'a', field: 'left' },\n { key: 'ArrowRight', field: 'right' },\n { key: 'd', field: 'right' },\n { key: ' ', field: 'jump' },\n { key: 'ArrowUp', field: 'jump' },\n { key: 'w', field: 'jump' },\n];\n\nexport interface GameCanvasProps {\n /** Entity type names to render (optional filter) */\n renderEntities?: string[];\n /** Rendering functions per entity type */\n renderers?: Record<string, EntityRenderer>;\n /**\n * Renderer type hint from schema (e.g., 'phaser', 'canvas').\n * Currently ignored - component uses Canvas2D.\n * Reserved for future multi-renderer support.\n */\n renderer?: string;\n /** Background color or gradient */\n background?: string;\n /** Canvas width in pixels or 'full' for responsive */\n width?: number | 'full';\n /** Canvas height in pixels or 'auto' for aspect ratio */\n height?: number | 'auto';\n /** Aspect ratio (e.g., '16:9', '4:3') */\n aspectRatio?: string;\n /** Camera offset for scrolling */\n cameraOffset?: { x: number; y: number };\n /** Debug mode shows hitboxes and entity info */\n debug?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Click handler for canvas */\n onClick?: (x: number, y: number, entity?: GameEntity) => void;\n /** Enable keyboard input handling (updates Input entity) */\n enableInput?: boolean;\n /** Custom input key bindings */\n inputBindings?: InputBinding[];\n /** Collision definitions from schema */\n collisions?: CollisionDef[];\n /** Event bus for emitting collision events */\n eventBus?: { emit: (event: string, payload?: unknown) => void };\n}\n\nconst defaultRenderer: EntityRenderer = (ctx, entity) => {\n const w = entity.width ?? 32;\n const h = entity.height ?? 32;\n ctx.fillStyle = entity.color ?? '#ff0000';\n ctx.fillRect(-w / 2, -h / 2, w, h);\n};\n\nexport function GameCanvas({\n renderEntities,\n renderers = {},\n background = '#87CEEB',\n width = 'full',\n height = 'auto',\n aspectRatio = '16:9',\n cameraOffset = { x: 0, y: 0 },\n debug = false,\n className,\n onClick,\n enableInput = true,\n inputBindings = DEFAULT_INPUT_BINDINGS,\n collisions = [],\n eventBus,\n}: GameCanvasProps) {\n // Get entities directly from store\n const { entities } = useEntities();\n\n const canvasRef = React.useRef<HTMLCanvasElement>(null);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const [dimensions, setDimensions] = React.useState({ width: 800, height: 450 });\n\n // Handle keyboard input - updates the Input entity\n React.useEffect(() => {\n if (!enableInput) return;\n\n // Ensure Input entity exists\n const existingInput = getSingleton('Input');\n if (!existingInput) {\n spawnEntity({ id: 'input', type: 'Input', left: false, right: false, jump: false });\n }\n\n const handleKeyDown = (e: KeyboardEvent) => {\n const binding = inputBindings.find((b) => b.key === e.key || b.key === e.code);\n if (binding) {\n const field = getFieldFromBinding(binding);\n if (field) {\n e.preventDefault();\n debugInput('keydown', { key: e.key, field, value: true });\n updateSingleton('Input', { [field]: true });\n }\n }\n };\n\n const handleKeyUp = (e: KeyboardEvent) => {\n const binding = inputBindings.find((b) => b.key === e.key || b.key === e.code);\n if (binding) {\n const field = getFieldFromBinding(binding);\n if (field) {\n e.preventDefault();\n debugInput('keyup', { key: e.key, field, value: false });\n updateSingleton('Input', { [field]: false });\n }\n }\n };\n\n window.addEventListener('keydown', handleKeyDown);\n window.addEventListener('keyup', handleKeyUp);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('keyup', handleKeyUp);\n };\n }, [enableInput, inputBindings]);\n\n // Collision detection - runs every frame\n React.useEffect(() => {\n if (collisions.length === 0) {\n return;\n }\n\n // Track active collisions for enter/exit detection\n const activeCollisions = new Set<string>();\n let frameCount = 0;\n let lastFpsTime = performance.now();\n let fpsFrameCount = 0;\n let currentFps = 0;\n\n let animationId: number;\n const tick = () => {\n // FPS calculation\n fpsFrameCount++;\n const now = performance.now();\n const elapsed = now - lastFpsTime;\n if (elapsed >= 1000) {\n currentFps = (fpsFrameCount * 1000) / elapsed;\n fpsFrameCount = 0;\n lastFpsTime = now;\n }\n\n // Get fresh entities each frame from store (not from captured closure)\n const allEntities = getAllEntities() as GameEntity[];\n\n frameCount++;\n\n // Track which entities are grounded THIS frame\n const groundedThisFrame = new Set<string>();\n\n // Identify groundable entity types (typeA in solid collisions)\n const groundableTypes = new Set<string>();\n for (const collision of collisions) {\n if (collision.type === 'solid') {\n groundableTypes.add(collision.between[0]);\n }\n }\n\n for (const collision of collisions) {\n const [typeA, typeB] = collision.between;\n const entitiesA = allEntities.filter(e => e.type === typeA);\n const entitiesB = allEntities.filter(e => e.type === typeB);\n\n for (const entityA of entitiesA) {\n const aabbA = getAABB(entityA);\n\n for (const entityB of entitiesB) {\n const aabbB = getAABB(entityB);\n const collisionKey = `${entityA.id}:${entityB.id}`;\n\n if (aabbOverlap(aabbA, aabbB)) {\n const isNewCollision = !activeCollisions.has(collisionKey);\n activeCollisions.add(collisionKey);\n\n if (collision.type === 'solid') {\n // Resolve solid collision\n const vy = entityA.vy ?? 0;\n const resolution = resolveCollision(aabbA, aabbB, vy);\n\n const updates: Record<string, unknown> = {\n x: entityA.x + resolution.dx,\n y: entityA.y + resolution.dy,\n };\n\n // Track grounded if landing on top\n if (resolution.side === 'bottom' && vy >= 0) {\n groundedThisFrame.add(entityA.id);\n updates.isGrounded = true;\n updates.vy = 0;\n }\n // Stop horizontal velocity on side collision\n if (resolution.side === 'left' || resolution.side === 'right') {\n updates.vx = 0;\n }\n // Stop upward velocity on ceiling hit\n if (resolution.side === 'top' && vy < 0) {\n updates.vy = 0;\n }\n\n updateEntity(entityA.id, updates);\n\n if (isNewCollision) {\n debugCollision({ id: entityA.id, type: entityA.type }, { id: entityB.id, type: entityB.type }, { event: 'enter', side: resolution.side });\n }\n } else if (collision.type === 'trigger' && isNewCollision) {\n // Emit event for trigger collision\n if (collision.emits && eventBus) {\n eventBus.emit(collision.emits, { entityA: entityA.id, entityB: entityB.id });\n }\n debugCollision({ id: entityA.id, type: entityA.type }, { id: entityB.id, type: entityB.type }, { event: 'enter', emits: collision.emits });\n }\n } else {\n // No longer colliding\n if (activeCollisions.has(collisionKey)) {\n activeCollisions.delete(collisionKey);\n debugCollision({ id: entityA.id, type: entityA.type }, { id: entityB.id, type: entityB.type }, { event: 'exit' });\n }\n\n // Ground check: extend hitbox slightly down to detect resting contact\n if (collision.type === 'solid' && groundableTypes.has(entityA.type)) {\n const groundCheckAABB = {\n ...aabbA,\n height: aabbA.height + 2, // Extend 2 pixels down\n };\n if (aabbOverlap(groundCheckAABB, aabbB)) {\n // Check if platform is below (player's bottom near platform's top)\n const playerBottom = aabbA.y + aabbA.height;\n const platformTop = aabbB.y;\n if (Math.abs(playerBottom - platformTop) < 3) {\n groundedThisFrame.add(entityA.id);\n }\n }\n }\n }\n }\n }\n }\n\n // Update isGrounded for entities that left the ground (were grounded, not grounded this frame)\n for (const entity of allEntities) {\n if (groundableTypes.has(entity.type) && entity.isGrounded && !groundedThisFrame.has(entity.id)) {\n updateEntity(entity.id, { isGrounded: false });\n }\n }\n\n animationId = requestAnimationFrame(tick);\n };\n\n animationId = requestAnimationFrame(tick);\n return () => cancelAnimationFrame(animationId);\n }, [collisions, eventBus]);\n\n // Handle resize\n React.useEffect(() => {\n const updateDimensions = () => {\n if (!containerRef.current) return;\n\n const containerWidth = containerRef.current.clientWidth;\n let canvasWidth = width === 'full' ? containerWidth : width;\n let canvasHeight: number;\n\n if (height === 'auto' && aspectRatio) {\n const [aw, ah] = aspectRatio.split(':').map(Number);\n canvasHeight = (canvasWidth * ah) / aw;\n } else if (typeof height === 'number') {\n canvasHeight = height;\n } else {\n canvasHeight = canvasWidth * (9 / 16);\n }\n\n setDimensions({ width: canvasWidth, height: canvasHeight });\n };\n\n updateDimensions();\n window.addEventListener('resize', updateDimensions);\n return () => window.removeEventListener('resize', updateDimensions);\n }, [width, height, aspectRatio]);\n\n // Render loop\n React.useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n // Set canvas resolution\n const dpr = window.devicePixelRatio || 1;\n canvas.width = dimensions.width * dpr;\n canvas.height = dimensions.height * dpr;\n ctx.scale(dpr, dpr);\n\n // Clear and draw background\n ctx.fillStyle = background;\n ctx.fillRect(0, 0, dimensions.width, dimensions.height);\n\n // Apply camera transform\n ctx.save();\n ctx.translate(-cameraOffset.x, -cameraOffset.y);\n\n // Filter and sort entities\n let entitiesToRender = [...entities.values()] as GameEntity[];\n\n // Filter by type if specified\n if (renderEntities && renderEntities.length > 0) {\n entitiesToRender = entitiesToRender.filter(e => renderEntities.includes(e.type));\n }\n\n // Filter out invisible and sort by layer\n const sortedEntities = entitiesToRender\n .filter((e) => e.visible !== false)\n .sort((a, b) => (a.layer ?? 0) - (b.layer ?? 0));\n\n // Render each entity\n for (const entity of sortedEntities) {\n const render = renderers[entity.type] ?? defaultRenderer;\n\n ctx.save();\n ctx.translate(entity.x, entity.y);\n\n if (entity.rotation) {\n ctx.rotate(entity.rotation);\n }\n if (entity.scale) {\n ctx.scale(entity.scale, entity.scale);\n }\n\n render(ctx, entity);\n\n // Debug: draw hitbox\n if (debug) {\n const collider = entity.collider ?? {\n width: entity.width ?? 32,\n height: entity.height ?? 32,\n offsetX: 0,\n offsetY: 0,\n };\n ctx.strokeStyle = 'lime';\n ctx.lineWidth = 1;\n ctx.strokeRect(\n (collider.offsetX ?? 0) - collider.width / 2,\n (collider.offsetY ?? 0) - collider.height / 2,\n collider.width,\n collider.height\n );\n\n // Draw entity info\n ctx.fillStyle = 'lime';\n ctx.font = '10px monospace';\n ctx.fillText(\n `${entity.type}#${entity.id.slice(0, 4)}`,\n -collider.width / 2,\n -collider.height / 2 - 4\n );\n }\n\n ctx.restore();\n }\n\n ctx.restore();\n\n // Debug: show entity count\n if (debug) {\n ctx.fillStyle = 'lime';\n ctx.font = '12px monospace';\n ctx.fillText(`Entities: ${entities.size}`, 10, 20);\n ctx.fillText(`Camera: (${cameraOffset.x.toFixed(0)}, ${cameraOffset.y.toFixed(0)})`, 10, 35);\n }\n }, [entities, renderEntities, renderers, background, dimensions, cameraOffset, debug]);\n\n // Handle click\n const handleClick = React.useCallback(\n (e: React.MouseEvent<HTMLCanvasElement>) => {\n if (!onClick) return;\n\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const rect = canvas.getBoundingClientRect();\n const x = e.clientX - rect.left + cameraOffset.x;\n const y = e.clientY - rect.top + cameraOffset.y;\n\n // Find clicked entity\n const clickedEntity = ([...entities.values()] as GameEntity[]).find((entity) => {\n const w = entity.width ?? 32;\n const h = entity.height ?? 32;\n return (\n x >= entity.x - w / 2 &&\n x <= entity.x + w / 2 &&\n y >= entity.y - h / 2 &&\n y <= entity.y + h / 2\n );\n });\n\n onClick(x, y, clickedEntity);\n },\n [onClick, entities, cameraOffset]\n );\n\n return (\n <div\n ref={containerRef}\n className={cn('relative overflow-hidden', className)}\n style={{\n width: width === 'full' ? '100%' : width,\n height: typeof height === 'number' ? height : undefined,\n aspectRatio: height === 'auto' ? aspectRatio : undefined,\n }}\n >\n <canvas\n ref={canvasRef}\n onClick={handleClick}\n className=\"absolute inset-0\"\n style={{\n width: '100%',\n height: '100%',\n imageRendering: 'pixelated',\n }}\n />\n </div>\n );\n}\n\nGameCanvas.displayName = 'GameCanvas';\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\n\nexport interface HealthBarProps {\n /** Current health value */\n current: number;\n /** Maximum health value */\n max: number;\n /** Display format */\n format?: 'hearts' | 'bar' | 'numeric';\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Additional CSS classes */\n className?: string;\n /** Animation on change */\n animated?: boolean;\n}\n\nconst heartIcon = (filled: boolean, size: string) => (\n <svg\n className={cn('transition-all duration-200', size, filled ? 'text-red-500' : 'text-gray-400')}\n viewBox=\"0 0 24 24\"\n fill={filled ? 'currentColor' : 'none'}\n stroke=\"currentColor\"\n strokeWidth={filled ? 0 : 2}\n >\n <path d=\"M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z\" />\n </svg>\n);\n\nconst sizeMap = {\n sm: { heart: 'w-4 h-4', bar: 'h-2', text: 'text-sm' },\n md: { heart: 'w-6 h-6', bar: 'h-3', text: 'text-base' },\n lg: { heart: 'w-8 h-8', bar: 'h-4', text: 'text-lg' },\n};\n\nexport function HealthBar({\n current,\n max,\n format = 'hearts',\n size = 'md',\n className,\n animated = true,\n}: HealthBarProps) {\n const sizes = sizeMap[size];\n const percentage = Math.max(0, Math.min(100, (current / max) * 100));\n\n if (format === 'hearts') {\n return (\n <div className={cn('flex items-center gap-1', className)}>\n {Array.from({ length: max }).map((_, i) => (\n <span\n key={i}\n className={cn(animated && 'transition-transform hover:scale-110')}\n >\n {heartIcon(i < current, sizes.heart)}\n </span>\n ))}\n </div>\n );\n }\n\n if (format === 'bar') {\n return (\n <div\n className={cn(\n 'relative overflow-hidden rounded-full bg-gray-700',\n sizes.bar,\n 'w-24',\n className\n )}\n >\n <div\n className={cn(\n 'absolute inset-y-0 left-0 rounded-full',\n percentage > 66 ? 'bg-green-500' : percentage > 33 ? 'bg-yellow-500' : 'bg-red-500',\n animated && 'transition-all duration-300'\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n );\n }\n\n // Numeric format\n return (\n <span className={cn('font-mono font-bold', sizes.text, className)}>\n {current}/{max}\n </span>\n );\n}\n\nHealthBar.displayName = 'HealthBar';\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\n\nexport interface ScoreDisplayProps {\n /** Current score value */\n value: number;\n /** Label to display before score */\n label?: string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n /** Additional CSS classes */\n className?: string;\n /** Animation on value change */\n animated?: boolean;\n /** Number formatting locale */\n locale?: string;\n}\n\nconst sizeMap = {\n sm: 'text-sm',\n md: 'text-lg',\n lg: 'text-2xl',\n xl: 'text-4xl',\n};\n\nexport function ScoreDisplay({\n value,\n label,\n icon,\n size = 'md',\n className,\n animated = true,\n locale = 'en-US',\n}: ScoreDisplayProps) {\n const [displayValue, setDisplayValue] = React.useState(value);\n const [isAnimating, setIsAnimating] = React.useState(false);\n\n React.useEffect(() => {\n if (!animated || displayValue === value) {\n setDisplayValue(value);\n return;\n }\n\n setIsAnimating(true);\n const diff = value - displayValue;\n const steps = Math.min(Math.abs(diff), 20);\n const increment = diff / steps;\n let current = displayValue;\n let step = 0;\n\n const timer = setInterval(() => {\n step++;\n current += increment;\n setDisplayValue(Math.round(current));\n\n if (step >= steps) {\n clearInterval(timer);\n setDisplayValue(value);\n setIsAnimating(false);\n }\n }, 50);\n\n return () => clearInterval(timer);\n }, [value, animated]);\n\n const formattedValue = new Intl.NumberFormat(locale).format(displayValue);\n\n return (\n <div\n className={cn(\n 'flex items-center gap-2 font-bold',\n sizeMap[size],\n isAnimating && 'animate-pulse',\n className\n )}\n >\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\n {label && <span className=\"text-gray-400\">{label}</span>}\n <span className=\"tabular-nums\">{formattedValue}</span>\n </div>\n );\n}\n\nScoreDisplay.displayName = 'ScoreDisplay';\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\nimport { HealthBar } from '../../atoms/game/HealthBar';\nimport { ScoreDisplay } from '../../atoms/game/ScoreDisplay';\n\nexport interface StatBadgeProps {\n /** Stat label */\n label: string;\n /** Current value (defaults to 0 if not provided) */\n value?: number | string;\n /** Maximum value (for bar/hearts format) */\n max?: number;\n /** Data source entity name (for schema config) */\n source?: string;\n /** Field name in the source (for schema config) */\n field?: string;\n /** Display format */\n format?: 'number' | 'hearts' | 'bar' | 'text' | string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg' | string;\n /** Visual variant */\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger' | string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst sizeMap = {\n sm: 'text-xs px-2 py-1',\n md: 'text-sm px-3 py-1.5',\n lg: 'text-base px-4 py-2',\n};\n\nconst variantMap = {\n default: 'bg-gray-800/80 border-gray-700',\n primary: 'bg-blue-900/80 border-blue-700',\n success: 'bg-green-900/80 border-green-700',\n warning: 'bg-yellow-900/80 border-yellow-700',\n danger: 'bg-red-900/80 border-red-700',\n};\n\nexport function StatBadge({\n label,\n value = 0,\n max,\n format = 'number',\n icon,\n size = 'md',\n variant = 'default',\n className,\n // Ignored config props (used for schema binding)\n source: _source,\n field: _field,\n}: StatBadgeProps) {\n const numValue = typeof value === 'number' ? value : parseInt(String(value), 10) || 0;\n\n return (\n <div\n className={cn(\n 'inline-flex items-center gap-2 rounded-lg border backdrop-blur-sm',\n sizeMap[size as keyof typeof sizeMap] ?? sizeMap.md,\n variantMap[variant as keyof typeof variantMap] ?? variantMap.default,\n className\n )}\n >\n {icon && <span className=\"flex-shrink-0 text-lg\">{icon}</span>}\n \n <span className=\"text-gray-400 font-medium\">{label}</span>\n \n {format === 'hearts' && max && (\n <HealthBar\n current={numValue}\n max={max}\n format=\"hearts\"\n size={size === 'lg' ? 'md' : 'sm'}\n />\n )}\n \n {format === 'bar' && max && (\n <HealthBar\n current={numValue}\n max={max}\n format=\"bar\"\n size={size === 'lg' ? 'md' : 'sm'}\n />\n )}\n \n {format === 'number' && (\n <ScoreDisplay\n value={numValue}\n size={size === 'lg' ? 'md' : 'sm'}\n animated\n />\n )}\n \n {format === 'text' && (\n <span className=\"font-bold text-white\">{value}</span>\n )}\n </div>\n );\n}\n\nStatBadge.displayName = 'StatBadge';\n","import * as React from \"react\";\nimport { cn } from \"../../../lib/cn\";\nimport { StatBadge, type StatBadgeProps } from \"../../molecules/game/StatBadge\";\n\nexport interface GameHudStat extends Omit<StatBadgeProps, \"size\"> {\n /** Data source entity name */\n source?: string;\n /** Field name in the source */\n field?: string;\n}\n\n/**\n * Schema-style HUD element definition.\n * Used when elements are passed from schema render_ui effects.\n */\nexport interface GameHudElement {\n type: string;\n bind?: string;\n position?: string;\n label?: string;\n}\n\nexport interface GameHudProps {\n /** Position of the HUD */\n position?: \"top\" | \"bottom\" | \"corners\" | string;\n /** Stats to display - accepts readonly for compatibility with generated const arrays */\n stats?: readonly GameHudStat[];\n /** Alias for stats (schema compatibility) */\n items?: readonly GameHudStat[];\n /**\n * Schema-style elements array (alternative to stats).\n * Converted to stats internally for backwards compatibility.\n */\n elements?: readonly GameHudElement[];\n /** Size variant */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Additional CSS classes */\n className?: string;\n /** Whether to use a semi-transparent background */\n transparent?: boolean;\n}\n\nconst positionMap: Record<string, string> = {\n top: \"top-0 left-0 right-0 flex justify-between items-start p-4\",\n bottom: \"bottom-0 left-0 right-0 flex justify-between items-end p-4\",\n corners: \"inset-0 pointer-events-none\",\n};\n\n/**\n * Convert schema-style elements to GameHudStat format.\n */\nfunction convertElementsToStats(\n elements: readonly GameHudElement[],\n): GameHudStat[] {\n return elements.map((el) => {\n // Parse bind format: \"entity.field\" -> source + field\n const [source, field] = el.bind?.split(\".\") ?? [];\n\n // Map element type to stat label\n const labelMap: Record<string, string> = {\n \"health-bar\": \"Health\",\n \"score-display\": \"Score\",\n lives: \"Lives\",\n timer: \"Time\",\n };\n\n return {\n label: el.label || labelMap[el.type] || el.type,\n source,\n field,\n };\n });\n}\n\nexport function GameHud({\n position: propPosition,\n stats: propStats,\n items,\n elements,\n size = \"md\",\n className,\n transparent = true,\n}: GameHudProps) {\n // Convert elements to stats if provided, with items as alias for stats\n const stats =\n propStats ?? items ?? (elements ? convertElementsToStats(elements) : []);\n\n // Determine position from props or derive from elements\n const position = propPosition ?? \"corners\";\n\n if (position === \"corners\") {\n // Split stats between corners\n const leftStats = stats.slice(0, Math.ceil(stats.length / 2));\n const rightStats = stats.slice(Math.ceil(stats.length / 2));\n\n return (\n <div className={cn(\"absolute\", positionMap[position], className)}>\n {/* Top-left */}\n <div className=\"absolute top-4 left-4 flex flex-col gap-2 pointer-events-auto\">\n {leftStats.map((stat, i) => (\n <StatBadge key={i} {...stat} size={size} />\n ))}\n </div>\n\n {/* Top-right */}\n <div className=\"absolute top-4 right-4 flex flex-col gap-2 items-end pointer-events-auto\">\n {rightStats.map((stat, i) => (\n <StatBadge key={i} {...stat} size={size} />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\n \"absolute z-10\",\n positionMap[position],\n transparent && \"bg-gradient-to-b from-black/50 to-transparent\",\n position === \"bottom\" &&\n \"bg-gradient-to-t from-black/50 to-transparent\",\n className,\n )}\n >\n <div className=\"flex gap-4\">\n {stats.map((stat, i) => (\n <StatBadge key={i} {...stat} size={size} />\n ))}\n </div>\n </div>\n );\n}\n\nGameHud.displayName = \"GameHud\";\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\n\nexport interface ControlButtonProps {\n /** Button label text */\n label?: string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg' | 'xl' | string;\n /** Shape variant */\n shape?: 'circle' | 'rounded' | 'square' | string;\n /** Visual variant */\n variant?: 'primary' | 'secondary' | 'ghost' | string;\n /** Called when button is pressed */\n onPress?: () => void;\n /** Called when button is released */\n onRelease?: () => void;\n /** Whether the button is currently pressed */\n pressed?: boolean;\n /** Whether the button is disabled */\n disabled?: boolean;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst sizeMap = {\n sm: 'w-10 h-10 text-sm',\n md: 'w-14 h-14 text-base',\n lg: 'w-18 h-18 text-lg',\n xl: 'w-24 h-24 text-xl',\n};\n\nconst shapeMap = {\n circle: 'rounded-full',\n rounded: 'rounded-xl',\n square: 'rounded-md',\n};\n\nconst variantMap = {\n primary: 'bg-blue-600 text-white border-blue-400 hover:bg-blue-500',\n secondary: 'bg-gray-700 text-white border-gray-500 hover:bg-gray-600',\n ghost: 'bg-transparent text-white border-white/30 hover:bg-white/10',\n};\n\nexport function ControlButton({\n label,\n icon,\n size = 'md',\n shape = 'circle',\n variant = 'secondary',\n onPress,\n onRelease,\n pressed,\n disabled,\n className,\n}: ControlButtonProps) {\n const [isPressed, setIsPressed] = React.useState(false);\n const actualPressed = pressed ?? isPressed;\n\n const handlePointerDown = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n if (disabled) return;\n setIsPressed(true);\n onPress?.();\n },\n [disabled, onPress]\n );\n\n const handlePointerUp = React.useCallback(\n (e: React.PointerEvent) => {\n e.preventDefault();\n if (disabled) return;\n setIsPressed(false);\n onRelease?.();\n },\n [disabled, onRelease]\n );\n\n const handlePointerLeave = React.useCallback(\n (e: React.PointerEvent) => {\n if (isPressed) {\n setIsPressed(false);\n onRelease?.();\n }\n },\n [isPressed, onRelease]\n );\n\n return (\n <button\n type=\"button\"\n disabled={disabled}\n onPointerDown={handlePointerDown}\n onPointerUp={handlePointerUp}\n onPointerLeave={handlePointerLeave}\n onContextMenu={(e) => e.preventDefault()}\n className={cn(\n 'flex items-center justify-center border-2 font-bold',\n 'select-none touch-none',\n 'transition-all duration-100',\n 'active:scale-95',\n sizeMap[size as keyof typeof sizeMap] ?? sizeMap.md,\n shapeMap[shape as keyof typeof shapeMap] ?? shapeMap.circle,\n variantMap[variant as keyof typeof variantMap] ?? variantMap.secondary,\n actualPressed && 'scale-95 brightness-110 border-white',\n disabled && 'opacity-50 cursor-not-allowed',\n className\n )}\n >\n {icon && <span className=\"text-2xl\">{icon}</span>}\n {label && !icon && <span>{label}</span>}\n </button>\n );\n}\n\nControlButton.displayName = 'ControlButton';\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\nimport { ControlButton } from '../../atoms/game/ControlButton';\n\nexport type DPadDirection = 'up' | 'down' | 'left' | 'right';\n\nexport interface DPadProps {\n /** Called when a direction is pressed/released */\n onDirection: (direction: DPadDirection, pressed: boolean) => void;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether to include diagonal buttons */\n includeDiagonals?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\nconst sizeMap = {\n sm: { button: 'sm' as const, gap: 'gap-0.5', container: 'w-28' },\n md: { button: 'md' as const, gap: 'gap-1', container: 'w-40' },\n lg: { button: 'lg' as const, gap: 'gap-1.5', container: 'w-52' },\n};\n\nconst arrowIcons: Record<DPadDirection, React.ReactNode> = {\n up: '▲',\n down: '▼',\n left: '◀',\n right: '▶',\n};\n\nexport function DPad({\n onDirection,\n size = 'md',\n includeDiagonals = false,\n className,\n disabled,\n}: DPadProps) {\n const sizes = sizeMap[size];\n const [activeDirections, setActiveDirections] = React.useState<Set<DPadDirection>>(new Set());\n\n const handlePress = React.useCallback(\n (direction: DPadDirection) => {\n setActiveDirections((prev) => new Set(prev).add(direction));\n onDirection(direction, true);\n },\n [onDirection]\n );\n\n const handleRelease = React.useCallback(\n (direction: DPadDirection) => {\n setActiveDirections((prev) => {\n const next = new Set(prev);\n next.delete(direction);\n return next;\n });\n onDirection(direction, false);\n },\n [onDirection]\n );\n\n const createButton = (direction: DPadDirection) => (\n <ControlButton\n key={direction}\n icon={arrowIcons[direction]}\n size={sizes.button}\n variant=\"secondary\"\n pressed={activeDirections.has(direction)}\n onPress={() => handlePress(direction)}\n onRelease={() => handleRelease(direction)}\n disabled={disabled}\n />\n );\n\n return (\n <div className={cn('inline-grid grid-cols-3', sizes.gap, sizes.container, className)}>\n {/* Row 1: Empty, Up, Empty */}\n <div />\n {createButton('up')}\n <div />\n\n {/* Row 2: Left, Center, Right */}\n {createButton('left')}\n <div className=\"flex items-center justify-center\">\n <div className=\"w-6 h-6 rounded-full bg-gray-700 border-2 border-gray-600\" />\n </div>\n {createButton('right')}\n\n {/* Row 3: Empty, Down, Empty */}\n <div />\n {createButton('down')}\n <div />\n </div>\n );\n}\n\nDPad.displayName = 'DPad';\n","import * as React from 'react';\nimport { cn } from '../../../lib/cn';\nimport { ControlButton } from '../../atoms/game/ControlButton';\n\nexport interface ActionButtonConfig {\n /** Unique identifier */\n id: string;\n /** Display label */\n label?: string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Button variant */\n variant?: 'primary' | 'secondary' | 'ghost' | string;\n}\n\nexport interface ActionButtonsProps {\n /** Button configurations */\n buttons: ActionButtonConfig[];\n /** Called when a button is pressed/released */\n onAction: (id: string, pressed: boolean) => void;\n /** Layout variant */\n layout?: 'horizontal' | 'vertical' | 'diamond';\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Additional CSS classes */\n className?: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\nconst sizeMap = {\n sm: 'sm' as const,\n md: 'md' as const,\n lg: 'lg' as const,\n};\n\nconst layoutMap = {\n horizontal: 'flex flex-row gap-2',\n vertical: 'flex flex-col gap-2',\n diamond: 'grid grid-cols-3 gap-1',\n};\n\nexport function ActionButtons({\n buttons,\n onAction,\n layout = 'horizontal',\n size = 'md',\n className,\n disabled,\n}: ActionButtonsProps) {\n const [activeButtons, setActiveButtons] = React.useState<Set<string>>(new Set());\n\n const handlePress = React.useCallback(\n (id: string) => {\n setActiveButtons((prev) => new Set(prev).add(id));\n onAction(id, true);\n },\n [onAction]\n );\n\n const handleRelease = React.useCallback(\n (id: string) => {\n setActiveButtons((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n onAction(id, false);\n },\n [onAction]\n );\n\n // Diamond layout: special positioning for 4 buttons (A, B, X, Y style)\n if (layout === 'diamond' && buttons.length === 4) {\n const [top, right, bottom, left] = buttons;\n return (\n <div className={cn(layoutMap[layout], className)}>\n <div />\n <ControlButton\n icon={top.icon}\n label={top.label}\n size={sizeMap[size]}\n variant={top.variant}\n pressed={activeButtons.has(top.id)}\n onPress={() => handlePress(top.id)}\n onRelease={() => handleRelease(top.id)}\n disabled={disabled}\n />\n <div />\n\n <ControlButton\n icon={left.icon}\n label={left.label}\n size={sizeMap[size]}\n variant={left.variant}\n pressed={activeButtons.has(left.id)}\n onPress={() => handlePress(left.id)}\n onRelease={() => handleRelease(left.id)}\n disabled={disabled}\n />\n <div />\n <ControlButton\n icon={right.icon}\n label={right.label}\n size={sizeMap[size]}\n variant={right.variant}\n pressed={activeButtons.has(right.id)}\n onPress={() => handlePress(right.id)}\n onRelease={() => handleRelease(right.id)}\n disabled={disabled}\n />\n\n <div />\n <ControlButton\n icon={bottom.icon}\n label={bottom.label}\n size={sizeMap[size]}\n variant={bottom.variant}\n pressed={activeButtons.has(bottom.id)}\n onPress={() => handlePress(bottom.id)}\n onRelease={() => handleRelease(bottom.id)}\n disabled={disabled}\n />\n <div />\n </div>\n );\n }\n\n return (\n <div className={cn(layoutMap[layout], className)}>\n {buttons.map((button) => (\n <ControlButton\n key={button.id}\n icon={button.icon}\n label={button.label}\n size={sizeMap[size]}\n variant={button.variant}\n pressed={activeButtons.has(button.id)}\n onPress={() => handlePress(button.id)}\n onRelease={() => handleRelease(button.id)}\n disabled={disabled}\n />\n ))}\n </div>\n );\n}\n\nActionButtons.displayName = 'ActionButtons';\n","import * as React from \"react\";\nimport { cn } from \"../../../lib/cn\";\nimport { DPad, type DPadDirection } from \"../../molecules/game/DPad\";\nimport {\n ActionButtons,\n type ActionButtonConfig,\n} from \"../../molecules/game/ActionButtons\";\nimport { ControlButton } from \"../../atoms/game/ControlButton\";\n\nexport interface GameControl {\n /** Unique identifier */\n id?: string;\n /** Alias for id (schema compatibility) */\n key?: string;\n /** Event to emit on press */\n event: string;\n /** Display label */\n label?: string;\n /** Icon component or emoji */\n icon?: React.ReactNode;\n /** Button variant */\n variant?: \"primary\" | \"secondary\" | \"ghost\" | string;\n}\n\nexport interface GameControlsProps {\n /** Control layout type */\n layout: \"dpad\" | \"joystick\" | \"buttons\" | \"custom\" | string;\n /** Position on screen */\n position: \"bottom-left\" | \"bottom-right\" | \"bottom-center\" | \"split\" | string;\n /** Controls to display - accepts readonly for compatibility with generated const arrays */\n controls?: readonly GameControl[];\n /** Called when control is pressed/released */\n onControl?: (event: string, pressed: boolean) => void;\n /** Size variant */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Additional CSS classes */\n className?: string;\n /** Whether controls are visible */\n visible?: boolean;\n /** Opacity when visible */\n opacity?: number;\n}\n\n/** Resolve control id, supporting both id and key aliases */\nconst resolveControlId = (control: GameControl): string =>\n control.id ?? control.key ?? control.event;\n\nconst positionMap: Record<string, string> = {\n \"bottom-left\": \"absolute bottom-4 left-4\",\n \"bottom-right\": \"absolute bottom-4 right-4\",\n \"bottom-center\": \"absolute bottom-4 left-1/2 -translate-x-1/2\",\n split: \"absolute bottom-4 left-0 right-0 flex justify-between px-4\",\n};\n\nexport function GameControls({\n layout,\n position,\n controls = [],\n onControl = () => {},\n size = \"md\",\n className,\n visible = true,\n opacity = 0.9,\n}: GameControlsProps) {\n if (!visible) return null;\n\n // Direction mapping for DPad\n const directionToEvent: Record<DPadDirection, string | undefined> = {\n up: controls.find((c) => resolveControlId(c) === \"up\")?.event,\n down: controls.find((c) => resolveControlId(c) === \"down\")?.event,\n left: controls.find((c) => resolveControlId(c) === \"left\")?.event,\n right: controls.find((c) => resolveControlId(c) === \"right\")?.event,\n };\n\n const handleDirection = (direction: DPadDirection, pressed: boolean) => {\n const event = directionToEvent[direction];\n if (event) {\n onControl(event, pressed);\n }\n };\n\n // Separate directional and action controls\n const directionControls = controls.filter((c) =>\n [\"up\", \"down\", \"left\", \"right\"].includes(resolveControlId(c)),\n );\n const actionControls = controls.filter(\n (c) => ![\"up\", \"down\", \"left\", \"right\"].includes(resolveControlId(c)),\n );\n\n // Split layout: DPad on left, actions on right\n if (position === \"split\") {\n return (\n <div className={cn(positionMap[position], className)} style={{ opacity }}>\n {/* Left side: DPad or direction buttons */}\n {layout === \"dpad\" && directionControls.length > 0 ? (\n <DPad size={size} onDirection={handleDirection} />\n ) : (\n <div className=\"flex gap-2\">\n {directionControls.map((control) => (\n <ControlButton\n key={resolveControlId(control)}\n icon={control.icon}\n label={control.label}\n size={size}\n variant={control.variant ?? \"secondary\"}\n onPress={() => onControl(control.event, true)}\n onRelease={() => onControl(control.event, false)}\n />\n ))}\n </div>\n )}\n\n {/* Right side: Action buttons */}\n <ActionButtons\n buttons={actionControls.map((c) => ({\n id: resolveControlId(c),\n label: c.label,\n icon: c.icon,\n variant: c.variant,\n }))}\n onAction={(id, pressed) => {\n const control = actionControls.find(\n (c) => resolveControlId(c) === id,\n );\n if (control) onControl(control.event, pressed);\n }}\n layout={actionControls.length === 4 ? \"diamond\" : \"horizontal\"}\n size={size}\n />\n </div>\n );\n }\n\n // Non-split layouts\n if (layout === \"dpad\") {\n return (\n <div className={cn(positionMap[position], className)} style={{ opacity }}>\n <DPad size={size} onDirection={handleDirection} />\n </div>\n );\n }\n\n if (layout === \"buttons\" || layout === \"custom\") {\n return (\n <div className={cn(positionMap[position], className)} style={{ opacity }}>\n <div className=\"flex gap-2 flex-wrap\">\n {controls.map((control) => (\n <ControlButton\n key={resolveControlId(control)}\n icon={control.icon}\n label={control.label}\n size={size}\n variant={control.variant ?? \"secondary\"}\n onPress={() => onControl(control.event, true)}\n onRelease={() => onControl(control.event, false)}\n />\n ))}\n </div>\n </div>\n );\n }\n\n // Joystick layout (future: implement virtual joystick)\n return (\n <div className={cn(positionMap[position], className)} style={{ opacity }}>\n <div className=\"w-24 h-24 rounded-full bg-gray-700/50 border-4 border-gray-600 flex items-center justify-center\">\n <div className=\"w-12 h-12 rounded-full bg-gray-500\" />\n </div>\n </div>\n );\n}\n\nGameControls.displayName = \"GameControls\";\n","import * as React from \"react\";\nimport { useNavigate } from \"react-router-dom\";\nimport { cn } from \"../../../lib/cn\";\nimport {\n useEventBus,\n type EventBusContextType,\n} from \"../../../hooks/useEventBus\";\n\nexport interface MenuOption {\n /** Optional ID (generated from index if not provided) */\n id?: string;\n /** Display label */\n label: string;\n /** Event to emit on click */\n event?: string;\n /** Page to navigate to */\n navigatesTo?: string;\n /** Button variant */\n variant?: \"primary\" | \"secondary\" | \"ghost\" | string;\n /** Whether the option is disabled */\n disabled?: boolean;\n /** Sub-label or description */\n subLabel?: string;\n /** Action identifier (alternative to event) */\n action?: string;\n}\n\nexport interface GameMenuProps {\n /** Menu title */\n title: string;\n /** Optional subtitle or version */\n subtitle?: string;\n /** Menu options - accepts readonly for compatibility with generated const arrays */\n options?: readonly MenuOption[];\n /** Alias for options (schema compatibility) */\n menuItems?: readonly MenuOption[];\n /** Called when an option is selected (legacy callback, prefer event bus) */\n onSelect?: (option: MenuOption) => void;\n /** Event bus for emitting UI events (optional, uses hook if not provided) */\n eventBus?: EventBusContextType;\n /** Background image or gradient */\n background?: string;\n /** Logo image URL */\n logo?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst variantMap = {\n primary:\n \"bg-blue-600 hover:bg-blue-500 text-white border-blue-400 shadow-lg shadow-blue-500/25\",\n secondary: \"bg-gray-700 hover:bg-gray-600 text-white border-gray-500\",\n ghost: \"bg-transparent hover:bg-white/10 text-white border-white/20\",\n};\n\n/**\n * Safe navigation hook that works outside Router context.\n * Returns a no-op function if not in Router context.\n */\nfunction useSafeNavigate(): (to: string) => void {\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const navigate = useNavigate();\n return navigate;\n } catch {\n // Outside Router context - return no-op\n return () => {};\n }\n}\n\nexport function GameMenu({\n title,\n subtitle,\n options,\n menuItems,\n onSelect,\n eventBus: eventBusProp,\n background,\n logo,\n className,\n}: GameMenuProps) {\n // Resolve alias: menuItems → options\n const resolvedOptions = options ?? menuItems ?? [];\n const navigate = useSafeNavigate();\n\n // Use provided eventBus or get from context (with fallback for outside provider)\n let eventBusFromHook: EventBusContextType | null = null;\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n eventBusFromHook = useEventBus();\n } catch {\n // Outside EventBusProvider context - will use prop or skip emission\n }\n const eventBus = eventBusProp || eventBusFromHook;\n\n const handleOptionClick = React.useCallback(\n (option: MenuOption) => {\n // Emit event to event bus for closed circuit pattern\n if (option.event && eventBus) {\n eventBus.emit(`UI:${option.event}`, { option });\n }\n\n // Call legacy callback if provided\n if (onSelect) {\n onSelect(option);\n }\n\n // Handle navigation if navigatesTo is specified\n if (option.navigatesTo) {\n navigate(option.navigatesTo);\n }\n },\n [eventBus, onSelect, navigate],\n );\n\n return (\n <div\n className={cn(\n \"min-h-screen w-full flex flex-col items-center justify-center p-8\",\n className,\n )}\n style={{\n background:\n background ??\n \"linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f0e17 100%)\",\n }}\n >\n {/* Logo/Title Section */}\n <div className=\"text-center mb-12 animate-fade-in\">\n {logo && (\n <img\n src={logo}\n alt={title}\n className=\"h-24 w-auto mx-auto mb-6 drop-shadow-2xl\"\n />\n )}\n <h1\n className=\"text-5xl md:text-7xl font-bold text-white tracking-tight\"\n style={{\n textShadow: \"0 4px 12px rgba(0,0,0,0.5)\",\n }}\n >\n {title}\n </h1>\n {subtitle && (\n <p className=\"mt-2 text-lg text-gray-400 tracking-widest uppercase\">\n {subtitle}\n </p>\n )}\n </div>\n\n {/* Menu Options */}\n <div className=\"flex flex-col gap-4 w-full max-w-md\">\n {resolvedOptions.map((option, index) => (\n <button\n key={index}\n onClick={() => handleOptionClick(option)}\n disabled={option.disabled}\n className={cn(\n \"w-full py-4 px-8 rounded-xl border-2 font-bold text-lg\",\n \"transition-all duration-200 transform\",\n \"hover:scale-105 active:scale-95\",\n \"focus:outline-none focus:ring-4 focus:ring-white/25\",\n variantMap[\n (option.variant ?? \"secondary\") as keyof typeof variantMap\n ] ?? variantMap.secondary,\n option.disabled &&\n \"opacity-50 cursor-not-allowed hover:scale-100\",\n )}\n style={{\n animationDelay: `${index * 100}ms`,\n }}\n >\n {option.label}\n </button>\n ))}\n </div>\n\n {/* Decorative Elements */}\n <div className=\"absolute inset-0 pointer-events-none overflow-hidden\">\n <div className=\"absolute top-1/4 left-1/4 w-64 h-64 bg-blue-500/10 rounded-full blur-3xl\" />\n <div className=\"absolute bottom-1/4 right-1/4 w-96 h-96 bg-purple-500/10 rounded-full blur-3xl\" />\n </div>\n </div>\n );\n}\n\nGameMenu.displayName = \"GameMenu\";\n","import * as React from \"react\";\nimport { cn } from \"../../../lib/cn\";\nimport {\n useEventBus,\n type EventBusContextType,\n} from \"../../../hooks/useEventBus\";\n\nexport interface PauseOption {\n /** Display label */\n label: string;\n /** Event to emit on click */\n event?: string;\n /** Page to navigate to */\n navigatesTo?: string;\n /** Button variant */\n variant?: \"primary\" | \"secondary\" | \"ghost\" | \"destructive\";\n}\n\nexport interface GamePauseOverlayProps {\n /** Pause menu options */\n options?: PauseOption[];\n /** Alias for options (schema compatibility) */\n menuItems?: PauseOption[];\n /** Called when an option is selected (legacy callback, prefer event bus) */\n onSelect?: (option: PauseOption) => void;\n /** Event bus for emitting UI events (optional, uses hook if not provided) */\n eventBus?: EventBusContextType;\n /** Title (default: \"PAUSED\") */\n title?: string;\n /** Additional CSS classes */\n className?: string;\n /** Whether the pause menu is visible */\n visible?: boolean;\n /** Called when clicking outside the menu */\n onDismiss?: () => void;\n}\n\nconst variantMap = {\n primary: \"bg-blue-600 hover:bg-blue-500 text-white border-blue-400\",\n secondary: \"bg-gray-700 hover:bg-gray-600 text-white border-gray-500\",\n ghost: \"bg-transparent hover:bg-white/10 text-white border-white/20\",\n destructive: \"bg-red-600 hover:bg-red-500 text-white border-red-400\",\n};\n\nexport function GamePauseOverlay({\n options,\n menuItems,\n onSelect,\n eventBus: eventBusProp,\n title = \"PAUSED\",\n className,\n visible = true,\n onDismiss,\n}: GamePauseOverlayProps) {\n // Resolve alias: menuItems → options\n const resolvedOptions = options ?? menuItems ?? [];\n\n // Use provided eventBus or get from context (with fallback for outside provider)\n let eventBusFromHook: EventBusContextType | null = null;\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n eventBusFromHook = useEventBus();\n } catch {\n // Outside EventBusProvider context - will use prop or skip emission\n }\n const eventBus = eventBusProp || eventBusFromHook;\n\n const handleOptionClick = React.useCallback(\n (option: PauseOption) => {\n // Emit event to event bus for closed circuit pattern\n if (option.event && eventBus) {\n eventBus.emit(`UI:${option.event}`, { option });\n }\n\n // Call legacy callback if provided\n if (onSelect) {\n onSelect(option);\n }\n },\n [eventBus, onSelect],\n );\n\n // Handle escape key to dismiss (also emits RESUME event)\n React.useEffect(() => {\n if (!visible) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n // Emit RESUME event on escape (matches pause overlay circuit contract)\n if (eventBus) {\n eventBus.emit(\"UI:RESUME\", {});\n }\n if (onDismiss) {\n onDismiss();\n }\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\n }, [visible, onDismiss, eventBus]);\n\n if (!visible) return null;\n\n return (\n <div\n className={cn(\n \"absolute inset-0 z-50 flex items-center justify-center\",\n \"bg-black/75 backdrop-blur-sm\",\n \"animate-in fade-in duration-200\",\n className,\n )}\n onClick={(e) => {\n if (e.target === e.currentTarget && onDismiss) {\n onDismiss();\n }\n }}\n >\n <div className=\"bg-gray-900/90 border-2 border-gray-700 rounded-2xl p-8 min-w-80 shadow-2xl\">\n {/* Title */}\n <h2\n className=\"text-4xl font-bold text-white text-center mb-8 tracking-widest\"\n style={{ textShadow: \"0 2px 8px rgba(0,0,0,0.5)\" }}\n >\n {title}\n </h2>\n\n {/* Options */}\n <div className=\"flex flex-col gap-3\">\n {resolvedOptions.map((option, index) => (\n <button\n key={index}\n onClick={() => handleOptionClick(option)}\n className={cn(\n \"w-full py-3 px-6 rounded-lg border-2 font-bold\",\n \"transition-all duration-150\",\n \"hover:scale-105 active:scale-95\",\n \"focus:outline-none focus:ring-2 focus:ring-white/25\",\n variantMap[option.variant ?? \"secondary\"],\n )}\n >\n {option.label}\n </button>\n ))}\n </div>\n\n {/* Hint */}\n {onDismiss && (\n <p className=\"mt-6 text-center text-gray-500 text-sm\">\n Press ESC to resume\n </p>\n )}\n </div>\n </div>\n );\n}\n\nGamePauseOverlay.displayName = \"GamePauseOverlay\";\n","import * as React from \"react\";\nimport { cn } from \"../../../lib/cn\";\nimport { StatBadge } from \"../../molecules/game/StatBadge\";\nimport {\n useEventBus,\n type EventBusContextType,\n} from \"../../../hooks/useEventBus\";\n\nexport interface GameOverStat {\n /** Stat label */\n label: string;\n /** Stat value (required if bind is not provided) */\n value?: number | string;\n /**\n * Schema-style data binding (e.g., \"player.score\").\n * Alternative to value - used when stats come from schema render_ui effects.\n * Component will display 0 as placeholder since runtime binding is not implemented.\n */\n bind?: string;\n /** Display format */\n format?: \"number\" | \"time\" | \"text\";\n /** Icon */\n icon?: React.ReactNode;\n}\n\nexport interface GameOverAction {\n /** Display label */\n label: string;\n /** Event to emit on click */\n event?: string;\n /** Page to navigate to */\n navigatesTo?: string;\n /** Button variant */\n variant?: \"primary\" | \"secondary\" | \"ghost\";\n}\n\nexport interface GameOverScreenProps {\n /** Screen title (e.g., \"Game Over\", \"Victory!\") */\n title: string;\n /** Optional message */\n message?: string;\n /** Stats to display */\n stats?: GameOverStat[];\n /** Action buttons */\n actions?: GameOverAction[];\n /** Alias for actions (schema compatibility) */\n menuItems?: GameOverAction[];\n /** Called when an action is selected (legacy callback, prefer event bus) */\n onAction?: (action: GameOverAction) => void;\n /** Event bus for emitting UI events (optional, uses hook if not provided) */\n eventBus?: EventBusContextType;\n /** Victory or defeat variant */\n variant?: \"victory\" | \"defeat\" | \"neutral\";\n /** High score (optional, shows \"NEW HIGH SCORE!\" if exceeded) */\n highScore?: number | string;\n /** Current score for high score comparison (accepts string for schema bindings) */\n currentScore?: number | string;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst variantColors = {\n victory: {\n bg: \"from-green-900/90 to-emerald-950/90\",\n title: \"text-green-400\",\n accent: \"border-green-500\",\n },\n defeat: {\n bg: \"from-red-900/90 to-gray-950/90\",\n title: \"text-red-400\",\n accent: \"border-red-500\",\n },\n neutral: {\n bg: \"from-gray-900/90 to-gray-950/90\",\n title: \"text-white\",\n accent: \"border-gray-500\",\n },\n};\n\nconst buttonVariants = {\n primary: \"bg-blue-600 hover:bg-blue-500 text-white border-blue-400\",\n secondary: \"bg-gray-700 hover:bg-gray-600 text-white border-gray-500\",\n ghost: \"bg-transparent hover:bg-white/10 text-white border-white/20\",\n};\n\nfunction formatTime(ms: number): string {\n const seconds = Math.floor(ms / 1000);\n const minutes = Math.floor(seconds / 60);\n const remainingSeconds = seconds % 60;\n return `${minutes}:${remainingSeconds.toString().padStart(2, \"0\")}`;\n}\n\nexport function GameOverScreen({\n title,\n message,\n stats = [],\n actions,\n menuItems,\n onAction,\n eventBus: eventBusProp,\n variant = \"neutral\",\n highScore,\n currentScore,\n className,\n}: GameOverScreenProps) {\n // Resolve alias: menuItems → actions\n const resolvedActions = actions ?? menuItems ?? [];\n // Use provided eventBus or get from context (with fallback for outside provider)\n let eventBusFromHook: EventBusContextType | null = null;\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n eventBusFromHook = useEventBus();\n } catch {\n // Outside EventBusProvider context - will use prop or skip emission\n }\n const eventBus = eventBusProp || eventBusFromHook;\n\n const handleActionClick = React.useCallback(\n (action: GameOverAction) => {\n // Emit event to event bus for closed circuit pattern\n if (action.event && eventBus) {\n eventBus.emit(`UI:${action.event}`, { action });\n }\n\n // Call legacy callback if provided\n if (onAction) {\n onAction(action);\n }\n },\n [eventBus, onAction],\n );\n\n const colors = variantColors[variant];\n // Convert string scores to numbers for comparison\n const numericCurrentScore =\n typeof currentScore === \"string\" ? parseFloat(currentScore) : currentScore;\n const numericHighScore =\n typeof highScore === \"string\" ? parseFloat(highScore) : highScore;\n const isNewHighScore =\n numericHighScore !== undefined &&\n numericCurrentScore !== undefined &&\n !isNaN(numericCurrentScore) &&\n !isNaN(numericHighScore) &&\n numericCurrentScore > numericHighScore;\n\n return (\n <div\n className={cn(\n \"min-h-screen w-full flex flex-col items-center justify-center p-8\",\n \"bg-gradient-to-b\",\n colors.bg,\n className,\n )}\n >\n {/* Victory/Defeat Animation */}\n {variant === \"victory\" && (\n <div className=\"absolute inset-0 pointer-events-none overflow-hidden\">\n <div className=\"absolute inset-0 bg-[radial-gradient(circle_at_center,rgba(34,197,94,0.2),transparent_70%)]\" />\n </div>\n )}\n\n {/* Title */}\n <h1\n className={cn(\n \"text-6xl md:text-8xl font-bold mb-4 tracking-tight animate-bounce-once\",\n colors.title,\n )}\n style={{ textShadow: \"0 4px 20px rgba(0,0,0,0.5)\" }}\n >\n {title}\n </h1>\n\n {/* Message */}\n {message && (\n <p className=\"text-xl text-gray-300 mb-8 text-center max-w-md\">\n {message}\n </p>\n )}\n\n {/* New High Score Banner */}\n {isNewHighScore && (\n <div className=\"mb-6 px-6 py-2 bg-yellow-500/20 border-2 border-yellow-500 rounded-full animate-pulse\">\n <span className=\"text-yellow-400 font-bold text-lg tracking-wide\">\n 🏆 NEW HIGH SCORE! 🏆\n </span>\n </div>\n )}\n\n {/* Stats */}\n {stats.length > 0 && (\n <div\n className={cn(\n \"mb-8 p-6 rounded-xl border-2 bg-black/30\",\n colors.accent,\n )}\n >\n <div className=\"grid grid-cols-2 md:grid-cols-3 gap-4\">\n {stats.map((stat, index) => {\n // Use value if provided, or show placeholder for bind (runtime binding not implemented)\n let displayValue: string | number = stat.value ?? 0;\n if (stat.format === \"time\" && typeof displayValue === \"number\") {\n displayValue = formatTime(displayValue);\n }\n\n return (\n <div key={index} className=\"text-center\">\n <div className=\"text-gray-400 text-sm mb-1\">{stat.label}</div>\n <div className=\"text-white text-2xl font-bold flex items-center justify-center gap-2\">\n {stat.icon && <span>{stat.icon}</span>}\n <span className=\"tabular-nums\">{displayValue}</span>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n\n {/* Actions */}\n <div className=\"flex flex-col sm:flex-row gap-4\">\n {resolvedActions.map((action, index) => (\n <button\n key={index}\n onClick={() => handleActionClick(action)}\n className={cn(\n \"px-8 py-4 rounded-xl border-2 font-bold text-lg\",\n \"transition-all duration-200\",\n \"hover:scale-105 active:scale-95\",\n \"focus:outline-none focus:ring-4 focus:ring-white/25\",\n buttonVariants[action.variant ?? \"secondary\"],\n )}\n >\n {action.label}\n </button>\n ))}\n </div>\n </div>\n );\n}\n\nGameOverScreen.displayName = \"GameOverScreen\";\n","import * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { cn } from '../../../lib/cn';\n\nexport interface LevelData {\n /** Unique level identifier */\n id: string;\n /** Level ID (alternative to id) */\n levelId?: string;\n /** Level number */\n number?: number;\n /** Level name/title */\n name?: string;\n /** Stars earned (0-3) */\n stars?: number;\n /** Difficulty level */\n difficulty?: 'easy' | 'medium' | 'hard' | string;\n /** Whether the level is locked */\n isLocked?: boolean;\n /** Best score on this level */\n bestScore?: number;\n /** Thumbnail image URL */\n thumbnail?: string;\n /** Allow additional properties from schema */\n [key: string]: unknown;\n}\n\nexport interface LevelFieldDisplay {\n /** Field name */\n field?: string;\n /** Display type */\n display?: 'title' | 'number' | 'stars' | 'locked' | 'thumbnail' | string;\n}\n\nexport interface LevelSelectProps {\n /** Level data */\n levels?: LevelData[];\n /** Entity name (schema config) */\n entity?: string;\n /** Layout variant */\n layout?: 'grid' | 'list' | 'carousel' | string;\n /** Fields to display per level */\n fields?: LevelFieldDisplay[];\n /** Event to emit on selection (schema config) */\n selectEvent?: string;\n /** Called when a level is selected */\n onSelect?: (level: LevelData) => void;\n /** Path to navigate to on selection. Supports :id, :levelId, :number placeholders */\n navigatesTo?: string;\n /** Currently selected level ID */\n selectedId?: string;\n /** Maximum stars possible per level */\n maxStars?: number;\n /** Additional CSS classes */\n className?: string;\n /** Title above the level grid */\n title?: string;\n}\n\nfunction StarRating({ stars, max = 3 }: { stars: number; max?: number }) {\n return (\n <div className=\"flex gap-1\">\n {Array.from({ length: max }).map((_, i) => (\n <span\n key={i}\n className={cn(\n 'text-lg transition-colors',\n i < stars ? 'text-yellow-400' : 'text-gray-600'\n )}\n >\n ★\n </span>\n ))}\n </div>\n );\n}\n\nfunction LevelCard({\n level,\n fields,\n maxStars,\n selected,\n onSelect,\n}: {\n level: LevelData;\n fields: LevelFieldDisplay[];\n maxStars: number;\n selected: boolean;\n onSelect: () => void;\n}) {\n const showNumber = fields.some((f) => f.display === 'number' || f.field === 'number');\n const showStars = fields.some((f) => f.display === 'stars' || f.field === 'stars' || f.field === 'difficulty');\n const showTitle = fields.some((f) => f.display === 'title' || f.field === 'name' || f.field === 'title');\n const showThumbnail = fields.some((f) => f.display === 'thumbnail' || f.field === 'thumbnail');\n\n return (\n <button\n onClick={onSelect}\n disabled={level.isLocked}\n className={cn(\n 'relative flex flex-col items-center justify-center',\n 'w-24 h-24 rounded-xl border-2',\n 'transition-all duration-200',\n 'focus:outline-none focus:ring-4 focus:ring-blue-500/50',\n level.isLocked\n ? 'bg-gray-800 border-gray-700 opacity-50 cursor-not-allowed'\n : selected\n ? 'bg-blue-600 border-blue-400 scale-110 shadow-lg shadow-blue-500/25'\n : 'bg-gray-700 border-gray-600 hover:bg-gray-600 hover:scale-105'\n )}\n >\n {/* Lock Icon */}\n {level.isLocked && (\n <div className=\"absolute inset-0 flex items-center justify-center bg-black/50 rounded-xl\">\n <span className=\"text-3xl\">🔒</span>\n </div>\n )}\n\n {/* Thumbnail Background */}\n {showThumbnail && level.thumbnail && (\n <div\n className=\"absolute inset-0 rounded-xl bg-cover bg-center opacity-50\"\n style={{ backgroundImage: `url(${level.thumbnail})` }}\n />\n )}\n\n {/* Level Number */}\n {showNumber && (\n <span className=\"text-3xl font-bold text-white z-10\">\n {level.number}\n </span>\n )}\n\n {/* Level Name */}\n {showTitle && level.name && (\n <span className=\"text-xs text-gray-300 mt-1 truncate max-w-full px-2 z-10\">\n {level.name}\n </span>\n )}\n\n {/* Stars */}\n {showStars && !level.isLocked && (\n <div className=\"absolute -bottom-1 left-1/2 -translate-x-1/2\">\n <StarRating stars={level.stars ?? 0} max={maxStars} />\n </div>\n )}\n </button>\n );\n}\n\nexport function LevelSelect({\n levels = [],\n entity: _entity,\n layout = 'grid',\n fields = [{ field: 'number', display: 'number' }],\n selectEvent: _selectEvent,\n onSelect = () => {},\n navigatesTo,\n selectedId,\n maxStars = 3,\n className,\n title,\n}: LevelSelectProps) {\n const navigate = useNavigate();\n\n const handleLevelSelect = React.useCallback(\n (level: LevelData) => {\n // Call the onSelect callback first\n onSelect(level);\n\n // Handle navigation if navigatesTo is specified\n if (navigatesTo) {\n const levelId = level.id || level.levelId || String(level.number);\n const path = navigatesTo\n .replace(':id', levelId)\n .replace(':levelId', level.levelId || levelId)\n .replace(':number', String(level.number ?? ''));\n navigate(path);\n }\n },\n [onSelect, navigatesTo, navigate]\n );\n\n const layoutClasses: Record<string, string> = {\n grid: 'grid grid-cols-4 md:grid-cols-6 lg:grid-cols-8 gap-4',\n list: 'flex flex-col gap-2',\n carousel: 'flex gap-4 overflow-x-auto pb-4 snap-x snap-mandatory',\n };\n\n return (\n <div\n className={cn(\n 'min-h-screen w-full flex flex-col items-center p-8',\n 'bg-gradient-to-b from-gray-900 to-gray-950',\n className\n )}\n >\n {/* Title */}\n {title && (\n <h1 className=\"text-4xl font-bold text-white mb-8 tracking-tight\">\n {title}\n </h1>\n )}\n\n {/* Level Grid */}\n <div className={cn('w-full max-w-4xl', layoutClasses[layout] || layoutClasses.grid)}>\n {levels.map((level) => {\n const levelKey = level.id || level.levelId || String(level.number);\n return (\n <div\n key={levelKey}\n className={layout === 'carousel' ? 'snap-center flex-shrink-0' : ''}\n >\n <LevelCard\n level={level}\n fields={fields as LevelFieldDisplay[]}\n maxStars={maxStars}\n selected={selectedId === levelKey}\n onSelect={() => !level.isLocked && handleLevelSelect(level)}\n />\n </div>\n );\n })}\n </div>\n\n {/* Navigation hint */}\n {layout === 'carousel' && (\n <p className=\"mt-4 text-gray-500 text-sm\">\n Swipe to browse levels\n </p>\n )}\n </div>\n );\n}\n\nLevelSelect.displayName = 'LevelSelect';\n","/**\n * TilemapRenderer Component\n *\n * Canvas-based tilemap renderer with culling and parallax support.\n */\n\nimport React, { useEffect, useRef, useCallback } from 'react';\n\nexport interface TileLayer {\n name: string;\n data: number[];\n width: number;\n height: number;\n visible?: boolean;\n}\n\nexport interface Tileset {\n url: string;\n tileWidth: number;\n tileHeight: number;\n columns: number;\n}\n\nexport interface ParallaxConfig {\n layer: string;\n factor: number; // 0.5 = half speed, 1 = normal, 2 = double speed\n}\n\nexport interface TilemapRendererProps {\n /** Tile layers to render */\n layers: TileLayer[];\n /** Tileset configuration */\n tileset: Tileset;\n /** Camera position */\n camera: { x: number; y: number };\n /** Viewport width in pixels */\n viewportWidth: number;\n /** Viewport height in pixels */\n viewportHeight: number;\n /** Enable pixel art rendering (no smoothing) */\n pixelArt?: boolean;\n /** Parallax configuration per layer */\n parallaxLayers?: ParallaxConfig[];\n /** Optional className */\n className?: string;\n /** Scale factor for rendering */\n scale?: number;\n /** Show debug grid */\n debug?: boolean;\n}\n\n/**\n * Tilemap renderer component with efficient canvas-based rendering\n *\n * @example\n * ```tsx\n * <TilemapRenderer\n * layers={levelData.layers}\n * tileset={{\n * url: '/tilesets/terrain.png',\n * tileWidth: 16,\n * tileHeight: 16,\n * columns: 16\n * }}\n * camera={{ x: playerX - 160, y: playerY - 120 }}\n * viewportWidth={320}\n * viewportHeight={240}\n * pixelArt\n * scale={2}\n * />\n * ```\n */\nexport function TilemapRenderer({\n layers,\n tileset,\n camera,\n viewportWidth,\n viewportHeight,\n pixelArt = true,\n parallaxLayers = [],\n className,\n scale = 1,\n debug = false,\n}: TilemapRendererProps): JSX.Element {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const tilesetImageRef = useRef<HTMLImageElement | null>(null);\n const tilesetLoadedRef = useRef(false);\n\n // Load tileset image\n useEffect(() => {\n const img = new Image();\n img.onload = () => {\n tilesetImageRef.current = img;\n tilesetLoadedRef.current = true;\n };\n img.onerror = () => {\n console.error(`Failed to load tileset: ${tileset.url}`);\n };\n img.src = tileset.url;\n\n return () => {\n tilesetImageRef.current = null;\n tilesetLoadedRef.current = false;\n };\n }, [tileset.url]);\n\n // Get parallax factor for a layer\n const getParallaxFactor = useCallback((layerName: string): number => {\n const config = parallaxLayers.find(p => p.layer === layerName);\n return config?.factor ?? 1;\n }, [parallaxLayers]);\n\n // Render tilemap\n const render = useCallback(() => {\n const canvas = canvasRef.current;\n const tilesetImage = tilesetImageRef.current;\n if (!canvas || !tilesetImage || !tilesetLoadedRef.current) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n // Configure rendering\n ctx.imageSmoothingEnabled = !pixelArt;\n\n // Clear canvas\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n // Apply scale\n ctx.save();\n ctx.scale(scale, scale);\n\n // Render each visible layer\n for (const layer of layers) {\n if (layer.visible === false) continue;\n\n const parallaxFactor = getParallaxFactor(layer.name);\n const offsetX = camera.x * parallaxFactor;\n const offsetY = camera.y * parallaxFactor;\n\n // Calculate visible tile range (with some padding for smooth scrolling)\n const startTileX = Math.max(0, Math.floor(offsetX / tileset.tileWidth) - 1);\n const startTileY = Math.max(0, Math.floor(offsetY / tileset.tileHeight) - 1);\n const endTileX = Math.min(\n layer.width,\n Math.ceil((offsetX + viewportWidth / scale) / tileset.tileWidth) + 1\n );\n const endTileY = Math.min(\n layer.height,\n Math.ceil((offsetY + viewportHeight / scale) / tileset.tileHeight) + 1\n );\n\n // Render visible tiles\n for (let y = startTileY; y < endTileY; y++) {\n for (let x = startTileX; x < endTileX; x++) {\n const tileIndex = y * layer.width + x;\n const tileId = layer.data[tileIndex];\n\n // Skip empty tiles (ID 0)\n if (tileId === 0) continue;\n\n // Calculate source position in tileset (tileId is 1-based in Tiled)\n const adjustedTileId = tileId - 1;\n const srcX = (adjustedTileId % tileset.columns) * tileset.tileWidth;\n const srcY = Math.floor(adjustedTileId / tileset.columns) * tileset.tileHeight;\n\n // Calculate destination position\n const destX = x * tileset.tileWidth - offsetX;\n const destY = y * tileset.tileHeight - offsetY;\n\n // Draw tile\n ctx.drawImage(\n tilesetImage,\n srcX,\n srcY,\n tileset.tileWidth,\n tileset.tileHeight,\n destX,\n destY,\n tileset.tileWidth,\n tileset.tileHeight\n );\n }\n }\n\n // Debug: draw grid\n if (debug) {\n ctx.strokeStyle = 'rgba(255, 0, 0, 0.3)';\n ctx.lineWidth = 1 / scale;\n\n for (let y = startTileY; y <= endTileY; y++) {\n for (let x = startTileX; x <= endTileX; x++) {\n const destX = x * tileset.tileWidth - offsetX;\n const destY = y * tileset.tileHeight - offsetY;\n ctx.strokeRect(destX, destY, tileset.tileWidth, tileset.tileHeight);\n }\n }\n }\n }\n\n ctx.restore();\n }, [layers, tileset, camera, viewportWidth, viewportHeight, pixelArt, scale, debug, getParallaxFactor]);\n\n // Re-render when dependencies change\n useEffect(() => {\n render();\n }, [render]);\n\n // Also re-render when tileset loads\n useEffect(() => {\n const checkAndRender = () => {\n if (tilesetLoadedRef.current) {\n render();\n } else {\n requestAnimationFrame(checkAndRender);\n }\n };\n checkAndRender();\n }, [render]);\n\n return (\n <canvas\n ref={canvasRef}\n width={viewportWidth}\n height={viewportHeight}\n className={className}\n style={{\n imageRendering: pixelArt ? 'pixelated' : 'auto',\n }}\n />\n );\n}\n\nexport default TilemapRenderer;\n","/**\n * InventoryPanel Component\n *\n * Grid-based inventory UI with item selection and tooltips.\n */\n\nimport React, { useState, useCallback } from 'react';\nimport { cn } from '../../../lib/cn';\n\nexport interface InventoryItem {\n id: string;\n type: string;\n quantity: number;\n sprite?: string;\n name?: string;\n description?: string;\n}\n\nexport interface InventoryPanelProps {\n /** Array of items in inventory */\n items: InventoryItem[];\n /** Total number of slots */\n slots: number;\n /** Number of columns in grid */\n columns: number;\n /** Currently selected slot index */\n selectedSlot?: number;\n /** Called when a slot is selected */\n onSelectSlot: (index: number) => void;\n /** Called when an item is used (double-click or Enter) */\n onUseItem?: (item: InventoryItem) => void;\n /** Called when an item is dropped */\n onDropItem?: (item: InventoryItem) => void;\n /** Show item tooltips on hover */\n showTooltips?: boolean;\n /** Optional className */\n className?: string;\n /** Slot size in pixels */\n slotSize?: number;\n}\n\n/**\n * Inventory panel component with grid layout\n *\n * @example\n * ```tsx\n * <InventoryPanel\n * items={playerInventory}\n * slots={20}\n * columns={5}\n * selectedSlot={selectedSlot}\n * onSelectSlot={setSelectedSlot}\n * onUseItem={(item) => console.log('Used:', item.name)}\n * showTooltips\n * />\n * ```\n */\nexport function InventoryPanel({\n items,\n slots,\n columns,\n selectedSlot,\n onSelectSlot,\n onUseItem,\n onDropItem,\n showTooltips = true,\n className,\n slotSize = 48,\n}: InventoryPanelProps): JSX.Element {\n const [hoveredSlot, setHoveredSlot] = useState<number | null>(null);\n const [tooltipPosition, setTooltipPosition] = useState({ x: 0, y: 0 });\n\n // Create slot array with items mapped to indices\n const slotArray = Array.from({ length: slots }, (_, index) => {\n return items[index] ?? null;\n });\n\n const rows = Math.ceil(slots / columns);\n\n const handleSlotClick = useCallback((index: number) => {\n onSelectSlot(index);\n }, [onSelectSlot]);\n\n const handleSlotDoubleClick = useCallback((index: number) => {\n const item = slotArray[index];\n if (item && onUseItem) {\n onUseItem(item);\n }\n }, [slotArray, onUseItem]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent, index: number) => {\n const item = slotArray[index];\n\n switch (e.key) {\n case 'Enter':\n case ' ':\n if (item && onUseItem) {\n e.preventDefault();\n onUseItem(item);\n }\n break;\n case 'Delete':\n case 'Backspace':\n if (item && onDropItem) {\n e.preventDefault();\n onDropItem(item);\n }\n break;\n case 'ArrowRight':\n e.preventDefault();\n onSelectSlot(Math.min(index + 1, slots - 1));\n break;\n case 'ArrowLeft':\n e.preventDefault();\n onSelectSlot(Math.max(index - 1, 0));\n break;\n case 'ArrowDown':\n e.preventDefault();\n onSelectSlot(Math.min(index + columns, slots - 1));\n break;\n case 'ArrowUp':\n e.preventDefault();\n onSelectSlot(Math.max(index - columns, 0));\n break;\n }\n }, [slotArray, onUseItem, onDropItem, onSelectSlot, columns, slots]);\n\n const handleMouseEnter = useCallback((e: React.MouseEvent, index: number) => {\n if (showTooltips && slotArray[index]) {\n setHoveredSlot(index);\n setTooltipPosition({\n x: e.clientX + 10,\n y: e.clientY + 10,\n });\n }\n }, [showTooltips, slotArray]);\n\n const handleMouseLeave = useCallback(() => {\n setHoveredSlot(null);\n }, []);\n\n const hoveredItem = hoveredSlot !== null ? slotArray[hoveredSlot] : null;\n\n return (\n <div className={cn('relative', className)}>\n {/* Inventory Grid */}\n <div\n className=\"grid gap-1 bg-gray-900 p-2 rounded-lg border border-gray-700\"\n style={{\n gridTemplateColumns: `repeat(${columns}, ${slotSize}px)`,\n gridTemplateRows: `repeat(${rows}, ${slotSize}px)`,\n }}\n >\n {slotArray.map((item, index) => (\n <button\n key={index}\n type=\"button\"\n className={cn(\n 'relative flex items-center justify-center',\n 'bg-gray-800 border rounded transition-colors',\n 'hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-blue-500',\n selectedSlot === index\n ? 'border-yellow-400 bg-gray-700'\n : 'border-gray-600'\n )}\n style={{ width: slotSize, height: slotSize }}\n onClick={() => handleSlotClick(index)}\n onDoubleClick={() => handleSlotDoubleClick(index)}\n onKeyDown={(e) => handleKeyDown(e, index)}\n onMouseEnter={(e) => handleMouseEnter(e, index)}\n onMouseLeave={handleMouseLeave}\n tabIndex={0}\n aria-label={item ? `${item.name || item.type}, quantity: ${item.quantity}` : `Empty slot ${index + 1}`}\n >\n {item && (\n <>\n {/* Item sprite or placeholder */}\n {item.sprite ? (\n <img\n src={item.sprite}\n alt={item.name || item.type}\n className=\"w-8 h-8 object-contain\"\n style={{ imageRendering: 'pixelated' }}\n />\n ) : (\n <div className=\"w-8 h-8 bg-gray-600 rounded flex items-center justify-center text-xs text-gray-300\">\n {item.type.charAt(0).toUpperCase()}\n </div>\n )}\n\n {/* Quantity badge */}\n {item.quantity > 1 && (\n <span className=\"absolute bottom-0 right-0 bg-black bg-opacity-70 text-white text-xs px-1 rounded-tl\">\n {item.quantity}\n </span>\n )}\n </>\n )}\n </button>\n ))}\n </div>\n\n {/* Tooltip */}\n {showTooltips && hoveredItem && (\n <div\n className=\"fixed z-50 bg-gray-900 border border-gray-600 rounded-lg p-2 shadow-lg pointer-events-none\"\n style={{\n left: tooltipPosition.x,\n top: tooltipPosition.y,\n maxWidth: 200,\n }}\n >\n <div className=\"font-semibold text-white\">\n {hoveredItem.name || hoveredItem.type}\n </div>\n {hoveredItem.description && (\n <div className=\"text-sm text-gray-400 mt-1\">\n {hoveredItem.description}\n </div>\n )}\n <div className=\"text-xs text-gray-500 mt-1\">\n Quantity: {hoveredItem.quantity}\n </div>\n </div>\n )}\n </div>\n );\n}\n\nexport default InventoryPanel;\n","/**\n * DialogueBox Component\n *\n * NPC dialogue display with typewriter effect and choices.\n */\n\nimport React, { useState, useEffect, useCallback, useRef } from 'react';\nimport { cn } from '../../../lib/cn';\n\nexport interface DialogueChoice {\n text: string;\n action?: string;\n next?: string;\n disabled?: boolean;\n}\n\nexport interface DialogueNode {\n id?: string;\n speaker: string;\n text: string;\n portrait?: string;\n choices?: DialogueChoice[];\n autoAdvance?: number; // ms to auto-advance, undefined = wait for input\n}\n\nexport interface DialogueBoxProps {\n /** Current dialogue node to display */\n dialogue: DialogueNode;\n /** Typewriter speed in ms per character (0 = instant) */\n typewriterSpeed?: number;\n /** Position of dialogue box */\n position?: 'top' | 'bottom';\n /** Called when text animation completes */\n onComplete?: () => void;\n /** Called when a choice is selected */\n onChoice?: (choice: DialogueChoice) => void;\n /** Called when dialogue is advanced (no choices) */\n onAdvance?: () => void;\n /** Optional className */\n className?: string;\n}\n\n/**\n * Dialogue box component with typewriter effect\n *\n * @example\n * ```tsx\n * <DialogueBox\n * dialogue={{\n * speaker: \"Old Man\",\n * text: \"It's dangerous to go alone! Take this.\",\n * portrait: \"/portraits/oldman.png\",\n * choices: [\n * { text: \"Thank you!\", action: \"ACCEPT_ITEM\" },\n * { text: \"No thanks\", next: \"decline_node\" }\n * ]\n * }}\n * typewriterSpeed={30}\n * onChoice={(choice) => handleChoice(choice)}\n * position=\"bottom\"\n * />\n * ```\n */\nexport function DialogueBox({\n dialogue,\n typewriterSpeed = 30,\n position = 'bottom',\n onComplete,\n onChoice,\n onAdvance,\n className,\n}: DialogueBoxProps): JSX.Element {\n const [displayedText, setDisplayedText] = useState('');\n const [isTyping, setIsTyping] = useState(false);\n const [selectedChoice, setSelectedChoice] = useState(0);\n const textRef = useRef(dialogue.text);\n const charIndexRef = useRef(0);\n const autoAdvanceTimerRef = useRef<NodeJS.Timeout | null>(null);\n\n // Reset when dialogue changes\n useEffect(() => {\n textRef.current = dialogue.text;\n charIndexRef.current = 0;\n setDisplayedText('');\n setSelectedChoice(0);\n\n if (typewriterSpeed === 0) {\n // Instant display\n setDisplayedText(dialogue.text);\n setIsTyping(false);\n onComplete?.();\n } else {\n setIsTyping(true);\n }\n\n return () => {\n if (autoAdvanceTimerRef.current) {\n clearTimeout(autoAdvanceTimerRef.current);\n }\n };\n }, [dialogue, typewriterSpeed, onComplete]);\n\n // Typewriter effect\n useEffect(() => {\n if (!isTyping || typewriterSpeed === 0) return;\n\n const interval = setInterval(() => {\n if (charIndexRef.current < textRef.current.length) {\n charIndexRef.current++;\n setDisplayedText(textRef.current.slice(0, charIndexRef.current));\n } else {\n setIsTyping(false);\n clearInterval(interval);\n onComplete?.();\n\n // Auto-advance if configured\n if (dialogue.autoAdvance && !dialogue.choices?.length) {\n autoAdvanceTimerRef.current = setTimeout(() => {\n onAdvance?.();\n }, dialogue.autoAdvance);\n }\n }\n }, typewriterSpeed);\n\n return () => clearInterval(interval);\n }, [isTyping, typewriterSpeed, dialogue.autoAdvance, dialogue.choices, onComplete, onAdvance]);\n\n // Skip to end of text\n const skipTypewriter = useCallback(() => {\n if (isTyping) {\n charIndexRef.current = textRef.current.length;\n setDisplayedText(textRef.current);\n setIsTyping(false);\n onComplete?.();\n }\n }, [isTyping, onComplete]);\n\n // Handle click/tap\n const handleClick = useCallback(() => {\n if (isTyping) {\n skipTypewriter();\n } else if (!dialogue.choices?.length) {\n onAdvance?.();\n }\n }, [isTyping, skipTypewriter, dialogue.choices, onAdvance]);\n\n // Handle keyboard input\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (isTyping) {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n skipTypewriter();\n }\n return;\n }\n\n if (dialogue.choices?.length) {\n const enabledChoices = dialogue.choices.filter(c => !c.disabled);\n\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault();\n setSelectedChoice(prev => Math.max(0, prev - 1));\n break;\n case 'ArrowDown':\n e.preventDefault();\n setSelectedChoice(prev => Math.min(enabledChoices.length - 1, prev + 1));\n break;\n case 'Enter':\n case ' ':\n e.preventDefault();\n const choice = enabledChoices[selectedChoice];\n if (choice) {\n onChoice?.(choice);\n }\n break;\n case '1':\n case '2':\n case '3':\n case '4':\n const choiceIndex = parseInt(e.key) - 1;\n if (choiceIndex < enabledChoices.length) {\n e.preventDefault();\n onChoice?.(enabledChoices[choiceIndex]);\n }\n break;\n }\n } else {\n if (e.key === ' ' || e.key === 'Enter') {\n e.preventDefault();\n onAdvance?.();\n }\n }\n }, [isTyping, skipTypewriter, dialogue.choices, selectedChoice, onChoice, onAdvance]);\n\n const enabledChoices = dialogue.choices?.filter(c => !c.disabled) ?? [];\n\n return (\n <div\n className={cn(\n 'fixed left-0 right-0 z-40',\n position === 'top' ? 'top-0' : 'bottom-0',\n className\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={0}\n role=\"dialog\"\n aria-label=\"Dialogue\"\n >\n <div className=\"mx-4 my-4 bg-gray-900 bg-opacity-95 border-2 border-gray-600 rounded-lg overflow-hidden\">\n <div className=\"flex\">\n {/* Portrait */}\n {dialogue.portrait && (\n <div className=\"flex-shrink-0 p-4 border-r border-gray-700\">\n <img\n src={dialogue.portrait}\n alt={dialogue.speaker}\n className=\"w-24 h-24 object-contain\"\n style={{ imageRendering: 'pixelated' }}\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex-1 p-4\">\n {/* Speaker name */}\n <div className=\"text-yellow-400 font-bold mb-2\">\n {dialogue.speaker}\n </div>\n\n {/* Dialogue text */}\n <div className=\"text-white text-lg leading-relaxed min-h-[60px]\">\n {displayedText}\n {isTyping && (\n <span className=\"animate-pulse\">▌</span>\n )}\n </div>\n\n {/* Choices */}\n {!isTyping && enabledChoices.length > 0 && (\n <div className=\"mt-4 space-y-2\">\n {enabledChoices.map((choice, index) => (\n <button\n key={index}\n type=\"button\"\n className={cn(\n 'block w-full text-left px-4 py-2 rounded transition-colors',\n 'hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-yellow-400',\n selectedChoice === index\n ? 'bg-gray-700 text-yellow-400'\n : 'bg-gray-800 text-white'\n )}\n onClick={(e) => {\n e.stopPropagation();\n onChoice?.(choice);\n }}\n >\n <span className=\"text-gray-500 mr-2\">{index + 1}.</span>\n {choice.text}\n </button>\n ))}\n </div>\n )}\n\n {/* Continue indicator */}\n {!isTyping && !dialogue.choices?.length && (\n <div className=\"mt-4 text-gray-500 text-sm animate-pulse\">\n Press SPACE or click to continue...\n </div>\n )}\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nexport default DialogueBox;\n","/**\n * InputListener - Invisible component that captures keyboard input\n *\n * Rendered by InputCapture trait via render_ui effect.\n * Listens for keydown/keyup events and:\n * 1. Updates the Input singleton entity\n * 2. Emits INPUT:* events via event bus\n *\n * This follows the closed circuit pattern:\n * Trait (render_ui) → Component (InputListener) → Events (INPUT:*) → Trait (state machine)\n *\n * @generated pattern component\n */\n\nimport { useEffect, useCallback } from 'react';\nimport { useEventBus, type EventBusContextType } from '../../../hooks/useEventBus';\nimport { updateSingleton, getSingleton, spawnEntity } from '../../../stores/entityStore';\n\n/**\n * Input binding configuration\n */\nexport interface InputBinding {\n /** Key code or key value (e.g., 'ArrowLeft', 'KeyA', 'Space') */\n key: string;\n /** Field name in the Input singleton (e.g., 'left', 'right', 'jump') */\n field: string;\n /** Optional custom event name (defaults to INPUT:{FIELD}_DOWN/UP) */\n event?: string;\n}\n\n/**\n * InputListener props\n */\nexport interface InputListenerProps {\n /** Key bindings configuration */\n bindings?: readonly InputBinding[];\n /** Whether input listening is enabled */\n enabled?: boolean;\n /** Event bus for emitting events (optional, uses hook if not provided) */\n eventBus?: EventBusContextType;\n}\n\n/**\n * Default key bindings for platformer controls\n */\nconst DEFAULT_BINDINGS: InputBinding[] = [\n { key: 'ArrowLeft', field: 'left' },\n { key: 'KeyA', field: 'left' },\n { key: 'ArrowRight', field: 'right' },\n { key: 'KeyD', field: 'right' },\n { key: 'ArrowUp', field: 'up' },\n { key: 'KeyW', field: 'up' },\n { key: 'ArrowDown', field: 'down' },\n { key: 'KeyS', field: 'down' },\n { key: 'Space', field: 'jump' },\n { key: 'KeyZ', field: 'action' },\n];\n\n/**\n * InputListener Component\n *\n * Invisible component that captures keyboard input and emits events.\n * Designed to be rendered by the InputCapture trait via render_ui effect.\n */\nexport function InputListener({\n bindings = DEFAULT_BINDINGS,\n enabled = true,\n eventBus: eventBusProp,\n}: InputListenerProps) {\n // Get event bus from context or prop\n let eventBusFromHook: EventBusContextType | null = null;\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n eventBusFromHook = useEventBus();\n } catch {\n // Outside EventBusProvider context - will use prop or skip emission\n }\n const eventBus = eventBusProp || eventBusFromHook;\n\n // Ensure Input singleton exists\n useEffect(() => {\n if (!enabled) return;\n\n if (!getSingleton('Input')) {\n spawnEntity({\n id: 'input',\n type: 'Input',\n left: false,\n right: false,\n up: false,\n down: false,\n jump: false,\n action: false,\n });\n }\n }, [enabled]);\n\n // Handle key down\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (!enabled) return;\n\n const binding = bindings.find(b => b.key === e.code || b.key === e.key);\n if (binding) {\n e.preventDefault();\n\n // Update Input singleton\n updateSingleton('Input', { [binding.field]: true });\n\n // Emit event\n if (eventBus) {\n const eventName = binding.event || `INPUT:${binding.field.toUpperCase()}_DOWN`;\n eventBus.emit(eventName, { key: e.key, code: e.code, field: binding.field });\n }\n }\n },\n [bindings, enabled, eventBus]\n );\n\n // Handle key up\n const handleKeyUp = useCallback(\n (e: KeyboardEvent) => {\n if (!enabled) return;\n\n const binding = bindings.find(b => b.key === e.code || b.key === e.key);\n if (binding) {\n e.preventDefault();\n\n // Update Input singleton\n updateSingleton('Input', { [binding.field]: false });\n\n // Emit event\n if (eventBus) {\n const eventName = binding.event\n ? `${binding.event}_UP`\n : `INPUT:${binding.field.toUpperCase()}_UP`;\n eventBus.emit(eventName, { key: e.key, code: e.code, field: binding.field });\n }\n }\n },\n [bindings, enabled, eventBus]\n );\n\n // Attach event listeners\n useEffect(() => {\n if (!enabled) return;\n\n window.addEventListener('keydown', handleKeyDown);\n window.addEventListener('keyup', handleKeyUp);\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown);\n window.removeEventListener('keyup', handleKeyUp);\n };\n }, [enabled, handleKeyDown, handleKeyUp]);\n\n // Invisible component - renders nothing\n return null;\n}\n\nInputListener.displayName = 'InputListener';\n","/**\n * CollisionDetector - Invisible component that runs collision detection\n *\n * Rendered by Collision2DSystem trait via render_ui effect.\n * Runs AABB collision checks each frame and emits collision events.\n *\n * This follows the closed circuit pattern:\n * Trait (render_ui) → Component (CollisionDetector) → Events (COLLISION_*) → Trait (state machine)\n *\n * @generated pattern component\n */\n\nimport { useEffect, useRef, useCallback } from 'react';\nimport { useEventBus, type EventBusContextType } from '../../../hooks/useEventBus';\nimport { getByType, type Entity } from '../../../stores/entityStore';\n\n/**\n * Collision rule configuration\n */\nexport interface CollisionRule {\n /** Entity type A */\n typeA: string;\n /** Entity type B */\n typeB: string;\n /** Whether this is a trigger (pass-through) or solid collision */\n isTrigger?: boolean;\n /** Custom event name to emit (defaults to COLLISION_ENTER/TRIGGER_ENTER) */\n event?: string;\n}\n\n/**\n * CollisionDetector props\n */\nexport interface CollisionDetectorProps {\n /** Collision detection algorithm */\n algorithm?: 'aabb' | 'circle';\n /** Collision rules to check */\n rules?: readonly CollisionRule[];\n /** Whether collision detection is enabled */\n enabled?: boolean;\n /** Event bus for emitting events (optional, uses hook if not provided) */\n eventBus?: EventBusContextType;\n}\n\n/**\n * Default collision rules for platformer\n */\nconst DEFAULT_RULES: CollisionRule[] = [\n { typeA: 'Player', typeB: 'Platform', isTrigger: false },\n { typeA: 'Player', typeB: 'Coin', isTrigger: true, event: 'COLLECT' },\n { typeA: 'Player', typeB: 'Enemy', isTrigger: true, event: 'TAKE_DAMAGE' },\n];\n\n/**\n * AABB collision check\n */\nfunction checkAABB(a: Entity, b: Entity): boolean {\n const ax = (a.x as number) ?? 0;\n const ay = (a.y as number) ?? 0;\n const aw = (a.width as number) ?? 32;\n const ah = (a.height as number) ?? 32;\n\n const bx = (b.x as number) ?? 0;\n const by = (b.y as number) ?? 0;\n const bw = (b.width as number) ?? 32;\n const bh = (b.height as number) ?? 32;\n\n return ax < bx + bw && ax + aw > bx && ay < by + bh && ay + ah > by;\n}\n\n/**\n * Circle collision check\n */\nfunction checkCircle(a: Entity, b: Entity): boolean {\n const ax = (a.x as number) ?? 0;\n const ay = (a.y as number) ?? 0;\n const ar = a.radius != null ? (a.radius as number) : a.width != null ? (a.width as number) / 2 : 16;\n\n const bx = (b.x as number) ?? 0;\n const by = (b.y as number) ?? 0;\n const br = b.radius != null ? (b.radius as number) : b.width != null ? (b.width as number) / 2 : 16;\n\n const dx = ax - bx;\n const dy = ay - by;\n const distance = Math.sqrt(dx * dx + dy * dy);\n\n return distance < ar + br;\n}\n\n/**\n * CollisionDetector Component\n *\n * Invisible component that runs collision detection each frame and emits events.\n * Designed to be rendered by the Collision2DSystem trait via render_ui effect.\n */\nexport function CollisionDetector({\n algorithm = 'aabb',\n rules = DEFAULT_RULES,\n enabled = true,\n eventBus: eventBusProp,\n}: CollisionDetectorProps) {\n // Get event bus from context or prop\n let eventBusFromHook: EventBusContextType | null = null;\n try {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n eventBusFromHook = useEventBus();\n } catch {\n // Outside EventBusProvider context - will use prop or skip emission\n }\n const eventBus = eventBusProp || eventBusFromHook;\n\n // Track active collisions to detect enter/exit\n const activeCollisionsRef = useRef<Set<string>>(new Set());\n\n // Get collision check function based on algorithm\n const checkCollision = algorithm === 'circle' ? checkCircle : checkAABB;\n\n // Collision detection tick\n const tick = useCallback(() => {\n if (!enabled || !eventBus) return;\n\n const activeCollisions = activeCollisionsRef.current;\n const newCollisions = new Set<string>();\n\n // Check each rule\n for (const rule of rules) {\n const entitiesA = getByType(rule.typeA);\n const entitiesB = getByType(rule.typeB);\n\n for (const a of entitiesA) {\n for (const b of entitiesB) {\n // Skip self-collision\n if (a.id === b.id) continue;\n\n const colliding = checkCollision(a, b);\n const pairKey = `${a.id}:${b.id}`;\n const reversePairKey = `${b.id}:${a.id}`;\n\n if (colliding) {\n // Use consistent key ordering\n const key = pairKey < reversePairKey ? pairKey : reversePairKey;\n newCollisions.add(key);\n\n if (!activeCollisions.has(key)) {\n // New collision - emit ENTER event\n const eventName = rule.isTrigger\n ? rule.event || 'TRIGGER_ENTER'\n : rule.event || 'COLLISION_ENTER';\n\n eventBus.emit(eventName, {\n entityA: a,\n entityB: b,\n typeA: rule.typeA,\n typeB: rule.typeB,\n isTrigger: rule.isTrigger ?? false,\n });\n }\n }\n }\n }\n }\n\n // Check for collision exits\n for (const key of activeCollisions) {\n if (!newCollisions.has(key)) {\n eventBus.emit('COLLISION_EXIT', { pairKey: key });\n }\n }\n\n activeCollisionsRef.current = newCollisions;\n }, [enabled, eventBus, rules, checkCollision]);\n\n // Run collision detection loop\n useEffect(() => {\n if (!enabled) return;\n\n let animationId: number;\n\n const loop = () => {\n tick();\n animationId = requestAnimationFrame(loop);\n };\n\n animationId = requestAnimationFrame(loop);\n\n return () => {\n cancelAnimationFrame(animationId);\n };\n }, [enabled, tick]);\n\n // Invisible component - renders nothing\n return null;\n}\n\nCollisionDetector.displayName = 'CollisionDetector';\n","/**\n * UISlotContext\n *\n * React context for providing the UI Slot Manager throughout the application.\n * Traits use this context to render content into slots via render_ui effects.\n *\n * Usage:\n * ```tsx\n * // In App.tsx or layout\n * <UISlotProvider>\n * <App />\n * </UISlotProvider>\n *\n * // In trait hooks or components\n * const { render, clear } = useUISlots();\n * render({ target: 'modal', pattern: 'form-section', props: {...} });\n * ```\n *\n * @packageDocumentation\n */\n\nimport React, { createContext, useContext, useMemo } from 'react';\nimport {\n useUISlotManager,\n type UISlotManager,\n type UISlot,\n type SlotContent,\n type RenderUIConfig,\n type SlotAnimation,\n type SlotChangeCallback,\n} from '../hooks/useUISlots';\n\n// ============================================================================\n// Context\n// ============================================================================\n\n/**\n * Context for the UI Slot Manager\n */\nconst UISlotContext = createContext<UISlotManager | null>(null);\n\n// ============================================================================\n// Provider\n// ============================================================================\n\nexport interface UISlotProviderProps {\n children: React.ReactNode;\n}\n\n/**\n * Provider component that creates and provides the UI Slot Manager.\n *\n * Must wrap any components that use traits with render_ui effects.\n */\nexport function UISlotProvider({ children }: UISlotProviderProps): React.ReactElement {\n const slotManager = useUISlotManager();\n\n // Memoize the context value to prevent unnecessary re-renders\n const contextValue = useMemo(() => slotManager, [slotManager]);\n\n return (\n <UISlotContext.Provider value={contextValue}>\n {children}\n </UISlotContext.Provider>\n );\n}\n\n// ============================================================================\n// Hook\n// ============================================================================\n\n/**\n * Hook to access the UI Slot Manager.\n *\n * Must be used within a UISlotProvider.\n *\n * @throws Error if used outside of UISlotProvider\n *\n * @example\n * ```tsx\n * function MyTraitHook() {\n * const { render, clear } = useUISlots();\n *\n * const showModal = () => {\n * render({\n * target: 'modal',\n * pattern: 'form-section',\n * props: { title: 'Create Item' },\n * });\n * };\n *\n * const closeModal = () => {\n * clear('modal');\n * };\n *\n * return { showModal, closeModal };\n * }\n * ```\n */\nexport function useUISlots(): UISlotManager {\n const context = useContext(UISlotContext);\n\n if (!context) {\n throw new Error(\n 'useUISlots must be used within a UISlotProvider. ' +\n 'Make sure your component tree is wrapped with <UISlotProvider>.'\n );\n }\n\n return context;\n}\n\n/**\n * Hook to get content for a specific slot.\n *\n * Useful for components that only need to read slot state.\n */\nexport function useSlotContent(slot: UISlot): SlotContent | null {\n const { getContent } = useUISlots();\n return getContent(slot);\n}\n\n/**\n * Hook to check if a slot has content.\n */\nexport function useSlotHasContent(slot: UISlot): boolean {\n const { hasContent } = useUISlots();\n return hasContent(slot);\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport {\n UISlotContext,\n type UISlotManager,\n type UISlot,\n type SlotContent,\n type RenderUIConfig,\n type SlotAnimation,\n type SlotChangeCallback,\n};\n","/**\n * Layout Pattern Components\n *\n * Pattern wrappers for layout components that support recursive rendering\n * of nested patterns via the `children` prop.\n *\n * These components bridge the shell's layout primitives (Stack, Box, Grid, etc.)\n * with the pattern system's recursive rendering capability.\n *\n * @packageDocumentation\n */\n\nimport React from 'react';\nimport { VStack, HStack, type StackGap, type StackAlign, type StackJustify } from '../atoms/Stack';\nimport { Box, type BoxPadding, type BoxBg, type BoxRounded, type BoxShadow } from '../atoms/Box';\nimport { Grid, type GridCols, type GridGap, type ResponsiveGridCols } from '../molecules/Grid';\nimport { Center } from '../atoms/Center';\nimport { Spacer } from '../atoms/Spacer';\nimport { Divider, type DividerVariant, type DividerOrientation } from '../atoms/Divider';\n\n// ============================================================================\n// Pattern Props Interface\n// ============================================================================\n\n/**\n * Base props for all layout patterns with children support.\n */\nexport interface LayoutPatternProps {\n /** Nested pattern configurations - rendered recursively */\n children?: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n}\n\n// ============================================================================\n// VStack Pattern\n// ============================================================================\n\nexport interface VStackPatternProps extends LayoutPatternProps {\n /** Gap between children */\n gap?: StackGap;\n /** Cross-axis alignment */\n align?: StackAlign;\n /** Main-axis alignment */\n justify?: StackJustify;\n}\n\n/**\n * VStack pattern component.\n *\n * Renders children in a vertical stack with configurable spacing.\n */\nexport function VStackPattern({\n gap = 'md',\n align = 'stretch',\n justify = 'start',\n className,\n style,\n children,\n}: VStackPatternProps): React.ReactElement {\n return (\n <VStack gap={gap} align={align} justify={justify} className={className} style={style}>\n {children}\n </VStack>\n );\n}\n\nVStackPattern.displayName = 'VStackPattern';\n\n// ============================================================================\n// HStack Pattern\n// ============================================================================\n\nexport interface HStackPatternProps extends LayoutPatternProps {\n /** Gap between children */\n gap?: StackGap;\n /** Cross-axis alignment */\n align?: StackAlign;\n /** Main-axis alignment */\n justify?: StackJustify;\n /** Enable wrapping */\n wrap?: boolean;\n}\n\n/**\n * HStack pattern component.\n *\n * Renders children in a horizontal stack with configurable spacing.\n */\nexport function HStackPattern({\n gap = 'md',\n align = 'center',\n justify = 'start',\n wrap = false,\n className,\n style,\n children,\n}: HStackPatternProps): React.ReactElement {\n return (\n <HStack gap={gap} align={align} justify={justify} wrap={wrap} className={className} style={style}>\n {children}\n </HStack>\n );\n}\n\nHStackPattern.displayName = 'HStackPattern';\n\n// ============================================================================\n// Box Pattern\n// ============================================================================\n\nexport interface BoxPatternProps extends LayoutPatternProps {\n /** Padding shorthand */\n p?: BoxPadding;\n /** Margin shorthand */\n m?: BoxPadding;\n /** Background color token */\n bg?: BoxBg;\n /** Show border */\n border?: boolean;\n /** Border radius */\n radius?: BoxRounded;\n /** Shadow level */\n shadow?: BoxShadow;\n}\n\n/**\n * Box pattern component.\n *\n * Generic styled container with theming support.\n */\nexport function BoxPattern({\n p,\n m,\n bg = 'transparent',\n border = false,\n radius = 'none',\n shadow = 'none',\n className,\n style,\n children,\n}: BoxPatternProps): React.ReactElement {\n return (\n <Box\n padding={p}\n margin={m as BoxPadding | undefined}\n bg={bg}\n border={border}\n rounded={radius}\n shadow={shadow}\n className={className}\n style={style}\n >\n {children}\n </Box>\n );\n}\n\nBoxPattern.displayName = 'BoxPattern';\n\n// ============================================================================\n// Grid Pattern\n// ============================================================================\n\nexport interface GridPatternProps extends LayoutPatternProps {\n /** Number of columns */\n cols?: GridCols | ResponsiveGridCols;\n /** Gap between cells */\n gap?: GridGap;\n /** Row gap override */\n rowGap?: GridGap;\n /** Column gap override */\n colGap?: GridGap;\n}\n\n/**\n * Grid pattern component.\n *\n * CSS Grid layout for multi-column content.\n */\nexport function GridPattern({\n cols = 1,\n gap = 'md',\n rowGap,\n colGap,\n className,\n style,\n children,\n}: GridPatternProps): React.ReactElement {\n return (\n <Grid cols={cols} gap={gap} rowGap={rowGap} colGap={colGap} className={className} style={style}>\n {children}\n </Grid>\n );\n}\n\nGridPattern.displayName = 'GridPattern';\n\n// ============================================================================\n// Center Pattern\n// ============================================================================\n\nexport interface CenterPatternProps extends LayoutPatternProps {\n /** Minimum height */\n minHeight?: string;\n}\n\n/**\n * Center pattern component.\n *\n * Centers content horizontally and vertically.\n */\nexport function CenterPattern({\n minHeight,\n className,\n style,\n children,\n}: CenterPatternProps): React.ReactElement {\n const mergedStyle = minHeight ? { minHeight, ...style } : style;\n return (\n <Center className={className} style={mergedStyle}>\n {children}\n </Center>\n );\n}\n\nCenterPattern.displayName = 'CenterPattern';\n\n// ============================================================================\n// Spacer Pattern\n// ============================================================================\n\nexport interface SpacerPatternProps {\n /** Size or 'flex' for flexible */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'flex';\n}\n\n/**\n * Spacer pattern component.\n *\n * Flexible space that expands or has fixed size.\n */\nexport function SpacerPattern({ size = 'flex' }: SpacerPatternProps): React.ReactElement {\n if (size === 'flex') {\n return <Spacer />;\n }\n\n const sizeMap: Record<string, string> = {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n };\n\n return <div style={{ width: sizeMap[size], height: sizeMap[size], flexShrink: 0 }} />;\n}\n\nSpacerPattern.displayName = 'SpacerPattern';\n\n// ============================================================================\n// Divider Pattern\n// ============================================================================\n\nexport interface DividerPatternProps {\n /** Orientation */\n orientation?: DividerOrientation;\n /** Line style */\n variant?: DividerVariant;\n /** Color token */\n color?: string;\n /** Spacing around divider */\n spacing?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\n/**\n * Divider pattern component.\n *\n * Visual separator between sections.\n */\nexport function DividerPattern({\n orientation = 'horizontal',\n variant = 'solid',\n spacing = 'md',\n}: DividerPatternProps): React.ReactElement {\n const spacingMap: Record<string, string> = {\n xs: 'my-1',\n sm: 'my-2',\n md: 'my-4',\n lg: 'my-6',\n };\n\n const verticalSpacingMap: Record<string, string> = {\n xs: 'mx-1',\n sm: 'mx-2',\n md: 'mx-4',\n lg: 'mx-6',\n };\n\n return (\n <Divider\n orientation={orientation}\n variant={variant}\n className={orientation === 'horizontal' ? spacingMap[spacing] : verticalSpacingMap[spacing]}\n />\n );\n}\n\nDividerPattern.displayName = 'DividerPattern';\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport const LAYOUT_PATTERNS = {\n 'vstack': VStackPattern,\n 'hstack': HStackPattern,\n 'box': BoxPattern,\n 'grid': GridPattern,\n 'center': CenterPattern,\n 'spacer': SpacerPattern,\n 'divider': DividerPattern,\n} as const;\n","/**\n * Component Pattern Wrappers\n *\n * Pattern wrappers for atomic UI components that can be rendered via render_ui.\n * These bridge the shell's atomic components with the pattern system.\n *\n * Interactive components emit events via useEventBus for the closed circuit pattern.\n *\n * @packageDocumentation\n */\n\nimport React from 'react';\nimport { useEventBus } from '../../hooks/useEventBus';\n\n// Shell component imports\nimport { Button, type ButtonVariant, type ButtonSize } from '../atoms/Button';\nimport { Badge, type BadgeVariant } from '../atoms/Badge';\nimport { Avatar } from '../atoms/Avatar';\nimport { Icon } from '../atoms/Icon';\nimport { Input } from '../atoms/Input';\nimport { Textarea } from '../atoms/Textarea';\nimport { Select } from '../atoms/Select';\nimport { Checkbox } from '../atoms/Checkbox';\nimport { Radio } from '../atoms/Radio';\nimport { Label } from '../atoms/Label';\nimport { Spinner } from '../atoms/Spinner';\nimport { ProgressBar } from '../atoms/ProgressBar';\nimport { Card } from '../atoms/Card';\nimport { Typography, Heading } from '../atoms/Typography';\nimport { Alert, type AlertVariant } from '../molecules/Alert';\nimport { Tooltip } from '../molecules/Tooltip';\nimport { Popover } from '../molecules/Popover';\nimport { Menu } from '../molecules/Menu';\nimport { Accordion } from '../molecules/Accordion';\nimport { Container } from '../molecules/Container';\nimport { SimpleGrid } from '../molecules/SimpleGrid';\nimport { FloatingActionButton } from '../molecules/FloatingActionButton';\n\n// ============================================================================\n// Interactive Components (emit events via closed circuit)\n// ============================================================================\n\nexport interface ButtonPatternProps {\n label: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n disabled?: boolean;\n onClick?: string; // Event name to emit\n icon?: string;\n iconPosition?: 'left' | 'right';\n className?: string;\n}\n\n/**\n * Button pattern that emits events via the event bus.\n */\nexport function ButtonPattern({\n label,\n variant = 'primary',\n size = 'md',\n disabled = false,\n onClick,\n icon,\n iconPosition = 'left',\n className,\n}: ButtonPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleClick = () => {\n if (onClick && !disabled) {\n emit(`UI:${onClick}`, {});\n }\n };\n\n return (\n <Button\n variant={variant}\n size={size}\n disabled={disabled}\n onClick={handleClick}\n className={className}\n >\n {icon && iconPosition === 'left' && <Icon name={icon} size=\"sm\" />}\n {label}\n {icon && iconPosition === 'right' && <Icon name={icon} size=\"sm\" />}\n </Button>\n );\n}\n\nButtonPattern.displayName = 'ButtonPattern';\n\nexport interface IconButtonPatternProps {\n icon: string;\n variant?: ButtonVariant;\n size?: ButtonSize;\n onClick?: string;\n ariaLabel?: string;\n className?: string;\n}\n\n/**\n * Icon-only button pattern.\n */\nexport function IconButtonPattern({\n icon,\n variant = 'ghost',\n size = 'md',\n onClick,\n ariaLabel,\n className,\n}: IconButtonPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleClick = () => {\n if (onClick) {\n emit(`UI:${onClick}`, {});\n }\n };\n\n return (\n <Button\n variant={variant}\n size={size}\n onClick={handleClick}\n aria-label={ariaLabel}\n className={className}\n >\n <Icon name={icon} size={size === 'sm' ? 'sm' : 'md'} />\n </Button>\n );\n}\n\nIconButtonPattern.displayName = 'IconButtonPattern';\n\nexport interface LinkPatternProps {\n label: string;\n href?: string;\n external?: boolean;\n onClick?: string;\n className?: string;\n}\n\n/**\n * Link pattern for navigation.\n */\nexport function LinkPattern({\n label,\n href,\n external = false,\n onClick,\n className,\n}: LinkPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleClick = (e: React.MouseEvent) => {\n if (onClick) {\n e.preventDefault();\n emit(`UI:${onClick}`, { href });\n }\n };\n\n return (\n <a\n href={href ?? '#'}\n target={external ? '_blank' : undefined}\n rel={external ? 'noopener noreferrer' : undefined}\n onClick={onClick ? handleClick : undefined}\n className={className}\n >\n {label}\n </a>\n );\n}\n\nLinkPattern.displayName = 'LinkPattern';\n\n// ============================================================================\n// Display Components\n// ============================================================================\n\nexport interface TextPatternProps {\n content: string;\n variant?: 'body' | 'caption' | 'overline';\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n weight?: 'normal' | 'medium' | 'semibold' | 'bold';\n color?: string;\n align?: 'left' | 'center' | 'right';\n className?: string;\n}\n\n/**\n * Text pattern for typography.\n */\nexport function TextPattern({\n content,\n variant = 'body',\n size = 'md',\n weight = 'normal',\n color,\n align,\n className,\n}: TextPatternProps): React.ReactElement {\n return (\n <Typography\n variant={variant}\n size={size}\n weight={weight}\n className={className}\n style={{ color, textAlign: align }}\n >\n {content}\n </Typography>\n );\n}\n\nTextPattern.displayName = 'TextPattern';\n\nexport interface HeadingPatternProps {\n content: string;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl';\n className?: string;\n}\n\n/**\n * Heading pattern.\n */\nexport function HeadingPattern({\n content,\n level = 2,\n size,\n className,\n}: HeadingPatternProps): React.ReactElement {\n return (\n <Heading level={level} size={size} className={className}>\n {content}\n </Heading>\n );\n}\n\nHeadingPattern.displayName = 'HeadingPattern';\n\nexport interface BadgePatternProps {\n label: string;\n variant?: BadgeVariant;\n size?: 'sm' | 'md';\n className?: string;\n}\n\n/**\n * Badge pattern for status/counts.\n */\nexport function BadgePattern({\n label,\n variant = 'default',\n size = 'md',\n className,\n}: BadgePatternProps): React.ReactElement {\n return <Badge variant={variant} size={size} className={className}>{label}</Badge>;\n}\n\nBadgePattern.displayName = 'BadgePattern';\n\nexport interface AvatarPatternProps {\n src?: string;\n alt?: string;\n name?: string;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n}\n\n/**\n * Avatar pattern.\n */\nexport function AvatarPattern({\n src,\n alt,\n name,\n size = 'md',\n className,\n}: AvatarPatternProps): React.ReactElement {\n return <Avatar src={src} alt={alt ?? name ?? ''} name={name} size={size} className={className} />;\n}\n\nAvatarPattern.displayName = 'AvatarPattern';\n\nexport interface IconPatternProps {\n name: string;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n color?: string;\n className?: string;\n}\n\n/**\n * Icon pattern.\n */\nexport function IconPattern({\n name,\n size = 'md',\n color,\n className,\n}: IconPatternProps): React.ReactElement {\n return <Icon name={name} size={size} className={className} style={{ color }} />;\n}\n\nIconPattern.displayName = 'IconPattern';\n\nexport interface ImagePatternProps {\n src: string;\n alt: string;\n width?: number | string;\n height?: number | string;\n objectFit?: 'cover' | 'contain' | 'fill';\n fallback?: string;\n className?: string;\n}\n\n/**\n * Image pattern.\n */\nexport function ImagePattern({\n src,\n alt,\n width,\n height,\n objectFit = 'cover',\n className,\n}: ImagePatternProps): React.ReactElement {\n return (\n <img\n src={src}\n alt={alt}\n width={width}\n height={height}\n className={className}\n style={{ objectFit }}\n />\n );\n}\n\nImagePattern.displayName = 'ImagePattern';\n\nexport interface CardPatternProps {\n title?: string;\n subtitle?: string;\n padding?: 'none' | 'sm' | 'md' | 'lg';\n shadow?: 'none' | 'sm' | 'md' | 'lg';\n onClick?: string;\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Card pattern.\n */\nexport function CardPattern({\n title,\n subtitle,\n padding = 'md',\n shadow = 'md',\n onClick,\n className,\n children,\n}: CardPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleClick = onClick\n ? () => emit(`UI:${onClick}`, {})\n : undefined;\n\n return (\n <Card\n title={title}\n subtitle={subtitle}\n padding={padding}\n shadow={shadow}\n onClick={handleClick}\n className={className}\n >\n {children}\n </Card>\n );\n}\n\nCardPattern.displayName = 'CardPattern';\n\nexport interface ProgressBarPatternProps {\n value: number;\n max?: number;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'danger';\n size?: 'sm' | 'md' | 'lg';\n showLabel?: boolean;\n className?: string;\n}\n\n/**\n * Progress bar pattern.\n */\nexport function ProgressBarPattern({\n value,\n max = 100,\n variant = 'primary',\n size = 'md',\n showLabel = false,\n className,\n}: ProgressBarPatternProps): React.ReactElement {\n return (\n <ProgressBar\n value={value}\n max={max}\n variant={variant}\n size={size}\n showLabel={showLabel}\n className={className}\n />\n );\n}\n\nProgressBarPattern.displayName = 'ProgressBarPattern';\n\nexport interface SpinnerPatternProps {\n size?: 'xs' | 'sm' | 'md' | 'lg';\n color?: string;\n className?: string;\n}\n\n/**\n * Spinner pattern.\n */\nexport function SpinnerPattern({\n size = 'md',\n className,\n}: SpinnerPatternProps): React.ReactElement {\n return <Spinner size={size} className={className} />;\n}\n\nSpinnerPattern.displayName = 'SpinnerPattern';\n\n// ============================================================================\n// Form Input Components\n// ============================================================================\n\nexport interface InputPatternProps {\n value?: string;\n placeholder?: string;\n type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';\n disabled?: boolean;\n error?: string;\n onChange?: string;\n onBlur?: string;\n className?: string;\n}\n\n/**\n * Input pattern.\n */\nexport function InputPattern({\n value = '',\n placeholder,\n type = 'text',\n disabled = false,\n error,\n onChange,\n onBlur,\n className,\n}: InputPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n const [localValue, setLocalValue] = React.useState(value);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setLocalValue(e.target.value);\n if (onChange) {\n emit(`UI:${onChange}`, { value: e.target.value });\n }\n };\n\n const handleBlur = () => {\n if (onBlur) {\n emit(`UI:${onBlur}`, { value: localValue });\n }\n };\n\n return (\n <Input\n value={localValue}\n placeholder={placeholder}\n type={type}\n disabled={disabled}\n error={error}\n onChange={handleChange}\n onBlur={handleBlur}\n className={className}\n />\n );\n}\n\nInputPattern.displayName = 'InputPattern';\n\nexport interface TextareaPatternProps {\n value?: string;\n placeholder?: string;\n rows?: number;\n disabled?: boolean;\n error?: string;\n onChange?: string;\n className?: string;\n}\n\n/**\n * Textarea pattern.\n */\nexport function TextareaPattern({\n value = '',\n placeholder,\n rows = 4,\n disabled = false,\n error,\n onChange,\n className,\n}: TextareaPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n const [localValue, setLocalValue] = React.useState(value);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n setLocalValue(e.target.value);\n if (onChange) {\n emit(`UI:${onChange}`, { value: e.target.value });\n }\n };\n\n return (\n <Textarea\n value={localValue}\n placeholder={placeholder}\n rows={rows}\n disabled={disabled}\n error={error}\n onChange={handleChange}\n className={className}\n />\n );\n}\n\nTextareaPattern.displayName = 'TextareaPattern';\n\nexport interface SelectPatternProps {\n value?: string;\n options: Array<{ value: string; label: string }>;\n placeholder?: string;\n disabled?: boolean;\n error?: string;\n onChange?: string;\n className?: string;\n}\n\n/**\n * Select pattern.\n */\nexport function SelectPattern({\n value = '',\n options,\n placeholder,\n disabled = false,\n error,\n onChange,\n className,\n}: SelectPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n const [localValue, setLocalValue] = React.useState(value);\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n setLocalValue(e.target.value);\n if (onChange) {\n emit(`UI:${onChange}`, { value: e.target.value });\n }\n };\n\n return (\n <Select\n value={localValue}\n options={options}\n placeholder={placeholder}\n disabled={disabled}\n error={error}\n onChange={handleChange}\n className={className}\n />\n );\n}\n\nSelectPattern.displayName = 'SelectPattern';\n\nexport interface CheckboxPatternProps {\n checked?: boolean;\n label?: string;\n disabled?: boolean;\n onChange?: string;\n className?: string;\n}\n\n/**\n * Checkbox pattern.\n */\nexport function CheckboxPattern({\n checked = false,\n label,\n disabled = false,\n onChange,\n className,\n}: CheckboxPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n const [localChecked, setLocalChecked] = React.useState(checked);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setLocalChecked(e.target.checked);\n if (onChange) {\n emit(`UI:${onChange}`, { checked: e.target.checked });\n }\n };\n\n return (\n <Checkbox\n checked={localChecked}\n label={label}\n disabled={disabled}\n onChange={handleChange}\n className={className}\n />\n );\n}\n\nCheckboxPattern.displayName = 'CheckboxPattern';\n\nexport interface RadioPatternProps {\n value: string;\n checked?: boolean;\n name?: string;\n label?: string;\n disabled?: boolean;\n onChange?: string;\n className?: string;\n}\n\n/**\n * Radio pattern.\n */\nexport function RadioPattern({\n value,\n checked = false,\n name,\n label,\n disabled = false,\n onChange,\n className,\n}: RadioPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleChange = () => {\n if (onChange) {\n emit(`UI:${onChange}`, { value });\n }\n };\n\n return (\n <Radio\n value={value}\n checked={checked}\n name={name}\n label={label}\n disabled={disabled}\n onChange={handleChange}\n className={className}\n />\n );\n}\n\nRadioPattern.displayName = 'RadioPattern';\n\nexport interface LabelPatternProps {\n text: string;\n htmlFor?: string;\n required?: boolean;\n className?: string;\n}\n\n/**\n * Label pattern.\n */\nexport function LabelPattern({\n text,\n htmlFor,\n required = false,\n className,\n}: LabelPatternProps): React.ReactElement {\n return (\n <Label htmlFor={htmlFor} required={required} className={className}>\n {text}\n </Label>\n );\n}\n\nLabelPattern.displayName = 'LabelPattern';\n\n// ============================================================================\n// Feedback Components\n// ============================================================================\n\nexport interface AlertPatternProps {\n message: string;\n title?: string;\n variant?: AlertVariant;\n dismissible?: boolean;\n onDismiss?: string;\n className?: string;\n}\n\n/**\n * Alert pattern.\n */\nexport function AlertPattern({\n message,\n title,\n variant = 'info',\n dismissible = false,\n onDismiss,\n className,\n}: AlertPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleDismiss = () => {\n if (onDismiss) {\n emit(`UI:${onDismiss}`, {});\n }\n };\n\n return (\n <Alert\n message={message}\n title={title}\n variant={variant}\n dismissible={dismissible}\n onDismiss={dismissible ? handleDismiss : undefined}\n className={className}\n />\n );\n}\n\nAlertPattern.displayName = 'AlertPattern';\n\nexport interface TooltipPatternProps {\n content: string;\n position?: 'top' | 'bottom' | 'left' | 'right';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Tooltip pattern.\n */\nexport function TooltipPattern({\n content,\n position = 'top',\n className,\n children,\n}: TooltipPatternProps): React.ReactElement {\n return (\n <Tooltip content={content} position={position} className={className}>\n {children}\n </Tooltip>\n );\n}\n\nTooltipPattern.displayName = 'TooltipPattern';\n\nexport interface PopoverPatternProps {\n content: React.ReactNode;\n position?: 'top' | 'bottom' | 'left' | 'right';\n trigger?: 'click' | 'hover';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Popover pattern.\n */\nexport function PopoverPattern({\n content,\n position = 'bottom',\n trigger = 'click',\n className,\n children,\n}: PopoverPatternProps): React.ReactElement {\n return (\n <Popover content={content} position={position} trigger={trigger} className={className}>\n {children}\n </Popover>\n );\n}\n\nPopoverPattern.displayName = 'PopoverPattern';\n\n// ============================================================================\n// Navigation Components\n// ============================================================================\n\nexport interface MenuPatternProps {\n items: Array<{\n label: string;\n event: string;\n icon?: string;\n disabled?: boolean;\n variant?: 'default' | 'danger';\n }>;\n trigger?: React.ReactNode;\n position?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n className?: string;\n}\n\n/**\n * Menu pattern.\n */\nexport function MenuPattern({\n items,\n trigger,\n position = 'bottom-start',\n className,\n}: MenuPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const menuItems = items.map((item) => ({\n ...item,\n onClick: () => emit(`UI:${item.event}`, {}),\n }));\n\n return (\n <Menu items={menuItems} trigger={trigger} position={position} className={className} />\n );\n}\n\nMenuPattern.displayName = 'MenuPattern';\n\nexport interface AccordionPatternProps {\n items: Array<{ title: string; content: React.ReactNode }>;\n multiple?: boolean;\n defaultOpen?: number[];\n className?: string;\n}\n\n/**\n * Accordion pattern.\n */\nexport function AccordionPattern({\n items,\n multiple = false,\n defaultOpen = [],\n className,\n}: AccordionPatternProps): React.ReactElement {\n return (\n <Accordion\n items={items}\n multiple={multiple}\n defaultOpen={defaultOpen}\n className={className}\n />\n );\n}\n\nAccordionPattern.displayName = 'AccordionPattern';\n\n// ============================================================================\n// Layout Components\n// ============================================================================\n\nexport interface ContainerPatternProps {\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | '2xl' | 'full';\n padding?: 'none' | 'sm' | 'md' | 'lg';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Container pattern.\n */\nexport function ContainerPattern({\n maxWidth = 'lg',\n padding = 'md',\n className,\n children,\n}: ContainerPatternProps): React.ReactElement {\n return (\n <Container maxWidth={maxWidth} padding={padding} className={className}>\n {children}\n </Container>\n );\n}\n\nContainerPattern.displayName = 'ContainerPattern';\n\nexport interface SimpleGridPatternProps {\n minChildWidth?: string;\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n className?: string;\n children?: React.ReactNode;\n}\n\n/**\n * Simple grid pattern.\n */\nexport function SimpleGridPattern({\n minChildWidth = '250px',\n gap = 'md',\n className,\n children,\n}: SimpleGridPatternProps): React.ReactElement {\n return (\n <SimpleGrid minChildWidth={minChildWidth} gap={gap} className={className}>\n {children}\n </SimpleGrid>\n );\n}\n\nSimpleGridPattern.displayName = 'SimpleGridPattern';\n\nexport interface FloatButtonPatternProps {\n icon: string;\n onClick?: string;\n position?: 'bottom-right' | 'bottom-left' | 'bottom-center';\n variant?: 'primary' | 'secondary';\n className?: string;\n}\n\n/**\n * Floating action button pattern.\n */\nexport function FloatButtonPattern({\n icon,\n onClick,\n position = 'bottom-right',\n variant = 'primary',\n className,\n}: FloatButtonPatternProps): React.ReactElement {\n const { emit } = useEventBus();\n\n const handleClick = () => {\n if (onClick) {\n emit(`UI:${onClick}`, {});\n }\n };\n\n return (\n <FloatingActionButton\n icon={icon}\n onClick={handleClick}\n position={position}\n variant={variant}\n className={className}\n />\n );\n}\n\nFloatButtonPattern.displayName = 'FloatButtonPattern';\n\n// ============================================================================\n// Export Pattern Registry\n// ============================================================================\n\nexport const COMPONENT_PATTERNS = {\n // Interactive\n 'button': ButtonPattern,\n 'icon-button': IconButtonPattern,\n 'link': LinkPattern,\n // Display\n 'text': TextPattern,\n 'heading': HeadingPattern,\n 'badge': BadgePattern,\n 'avatar': AvatarPattern,\n 'icon': IconPattern,\n 'image': ImagePattern,\n 'card': CardPattern,\n 'progress-bar': ProgressBarPattern,\n 'spinner': SpinnerPattern,\n // Form inputs\n 'input': InputPattern,\n 'textarea': TextareaPattern,\n 'select': SelectPattern,\n 'checkbox': CheckboxPattern,\n 'radio': RadioPattern,\n 'label': LabelPattern,\n // Feedback\n 'alert': AlertPattern,\n 'tooltip': TooltipPattern,\n 'popover': PopoverPattern,\n // Navigation\n 'menu': MenuPattern,\n 'accordion': AccordionPattern,\n // Layout\n 'container': ContainerPattern,\n 'simple-grid': SimpleGridPattern,\n 'float-button': FloatButtonPattern,\n} as const;\n","/**\n * CustomPattern Component\n *\n * Renders freeform HTML elements with Tailwind classes for custom UI designs.\n * Supports nested children and the closed circuit pattern (action prop for events).\n *\n * @packageDocumentation\n */\n\nimport React from \"react\";\nimport { useEventBus } from \"../../hooks/useEventBus\";\nimport { cn } from \"../../lib/cn\";\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Allowed HTML elements for custom patterns.\n */\nexport const ALLOWED_CUSTOM_COMPONENTS = [\n \"div\",\n \"span\",\n \"button\",\n \"a\",\n \"p\",\n \"h1\",\n \"h2\",\n \"h3\",\n \"h4\",\n \"h5\",\n \"h6\",\n \"header\",\n \"footer\",\n \"section\",\n \"article\",\n \"nav\",\n \"main\",\n \"aside\",\n \"ul\",\n \"ol\",\n \"li\",\n \"img\",\n \"label\",\n \"input\",\n \"form\",\n] as const;\n\nexport type AllowedCustomComponent = (typeof ALLOWED_CUSTOM_COMPONENTS)[number];\n\n/**\n * Check if a component name is allowed.\n */\nexport function isAllowedComponent(\n component: string,\n): component is AllowedCustomComponent {\n return ALLOWED_CUSTOM_COMPONENTS.includes(\n component as AllowedCustomComponent,\n );\n}\n\n/**\n * Interactive elements that require action prop for closed circuit.\n */\nconst INTERACTIVE_ELEMENTS = new Set<string>([\"button\", \"a\"]);\n\n/**\n * Check if an element is interactive (requires action for closed circuit).\n */\nexport function isInteractiveElement(component: string): boolean {\n return INTERACTIVE_ELEMENTS.has(component);\n}\n\n// ============================================================================\n// Props\n// ============================================================================\n\nexport interface CustomPatternProps {\n /** HTML element to render */\n component: AllowedCustomComponent;\n /** Tailwind classes */\n className?: string;\n /** Token path(s) for design token resolution */\n token?: string | string[];\n /** Text content (for leaf elements) */\n content?: string;\n /** Event to emit on click (REQUIRED for interactive elements) */\n action?: string;\n /** Event payload */\n payload?: Record<string, unknown>;\n /** Nested children patterns */\n children?: React.ReactNode;\n /** Image source (for img elements) */\n src?: string;\n /** Image alt text (for img elements) */\n alt?: string;\n /** Link href (for a elements) */\n href?: string;\n /** Open link in new tab */\n external?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Additional HTML attributes */\n htmlProps?: Record<string, unknown>;\n}\n\n// ============================================================================\n// Component\n// ============================================================================\n\n/**\n * Renders a custom HTML element with Tailwind styling.\n *\n * Follows the closed circuit pattern - interactive elements emit events via action prop.\n *\n * @example\n * ```tsx\n * <CustomPattern\n * component=\"button\"\n * className=\"bg-blue-500 text-white px-4 py-2 rounded\"\n * action=\"SUBMIT\"\n * content=\"Submit\"\n * />\n * ```\n */\nexport function CustomPattern({\n component,\n className,\n token,\n content,\n action,\n payload,\n children,\n src,\n alt,\n href,\n external,\n disabled,\n htmlProps,\n}: CustomPatternProps): React.ReactElement | null {\n const { emit } = useEventBus();\n // Note: token prop is deprecated/unused - use className with CSS variables instead\n const classes = cn(className);\n\n // Validate component\n if (!isAllowedComponent(component)) {\n console.warn(\n `CustomPattern: Unknown component \"${component}\", falling back to div`,\n );\n return (\n <div\n className={cn(\n classes,\n \"p-4 border border-dashed border-[var(--color-error)]/50 text-[var(--color-error)]\",\n )}\n >\n Unknown component: {component}\n </div>\n );\n }\n\n // Handle click for interactive elements\n const handleClick = (e: React.MouseEvent) => {\n if (disabled) return;\n\n // For links without action, let browser handle navigation\n if (component === \"a\" && href && !action) {\n return;\n }\n\n // Emit event if action is defined\n if (action) {\n e.preventDefault();\n emit(`UI:${action}`, payload ?? {});\n }\n };\n\n // Build common props\n const commonProps: Record<string, unknown> = {\n className: classes || undefined,\n ...htmlProps,\n };\n\n // Add click handler for interactive elements or elements with action\n if (action || isInteractiveElement(component)) {\n commonProps.onClick = handleClick;\n }\n\n // Handle disabled state\n if (disabled) {\n commonProps[\"aria-disabled\"] = true;\n if (component === \"button\") {\n commonProps.disabled = true;\n }\n }\n\n // Determine content to render\n const renderContent = children ?? content;\n\n // Render based on component type\n switch (component) {\n case \"button\":\n return (\n <button\n {...(commonProps as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n >\n {renderContent}\n </button>\n );\n\n case \"a\":\n return (\n <a\n href={href ?? \"#\"}\n target={external ? \"_blank\" : undefined}\n rel={external ? \"noopener noreferrer\" : undefined}\n {...(commonProps as React.AnchorHTMLAttributes<HTMLAnchorElement>)}\n >\n {renderContent}\n </a>\n );\n\n case \"img\":\n return (\n <img\n src={src}\n alt={alt ?? \"\"}\n {...(commonProps as React.ImgHTMLAttributes<HTMLImageElement>)}\n />\n );\n\n case \"input\":\n return (\n <input\n {...(commonProps as React.InputHTMLAttributes<HTMLInputElement>)}\n />\n );\n\n case \"label\":\n return (\n <label\n {...(commonProps as React.LabelHTMLAttributes<HTMLLabelElement>)}\n >\n {renderContent}\n </label>\n );\n\n case \"form\":\n return (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n if (action) {\n emit(`UI:${action}`, payload ?? {});\n }\n }}\n {...(commonProps as React.FormHTMLAttributes<HTMLFormElement>)}\n >\n {renderContent}\n </form>\n );\n\n // Heading elements\n case \"h1\":\n return (\n <h1 {...(commonProps as React.HTMLAttributes<HTMLHeadingElement>)}>\n {renderContent}\n </h1>\n );\n case \"h2\":\n return (\n <h2 {...(commonProps as React.HTMLAttributes<HTMLHeadingElement>)}>\n {renderContent}\n </h2>\n );\n case \"h3\":\n return (\n <h3 {...(commonProps as React.HTMLAttributes<HTMLHeadingElement>)}>\n {renderContent}\n </h3>\n );\n case \"h4\":\n return (\n <h4 {...(commonProps as React.HTMLAttributes<HTMLHeadingElement>)}>\n {renderContent}\n </h4>\n );\n case \"h5\":\n return (\n <h5 {...(commonProps as React.HTMLAttributes<HTMLHeadingElement>)}>\n {renderContent}\n </h5>\n );\n case \"h6\":\n return (\n <h6 {...(commonProps as React.HTMLAttributes<HTMLHeadingElement>)}>\n {renderContent}\n </h6>\n );\n\n // List elements\n case \"ul\":\n return (\n <ul {...(commonProps as React.HTMLAttributes<HTMLUListElement>)}>\n {renderContent}\n </ul>\n );\n case \"ol\":\n return (\n <ol {...(commonProps as React.HTMLAttributes<HTMLOListElement>)}>\n {renderContent}\n </ol>\n );\n case \"li\":\n return (\n <li {...(commonProps as React.HTMLAttributes<HTMLLIElement>)}>\n {renderContent}\n </li>\n );\n\n // Semantic elements\n case \"header\":\n return (\n <header {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </header>\n );\n case \"footer\":\n return (\n <footer {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </footer>\n );\n case \"section\":\n return (\n <section {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </section>\n );\n case \"article\":\n return (\n <article {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </article>\n );\n case \"nav\":\n return (\n <nav {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </nav>\n );\n case \"main\":\n return (\n <main {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </main>\n );\n case \"aside\":\n return (\n <aside {...(commonProps as React.HTMLAttributes<HTMLElement>)}>\n {renderContent}\n </aside>\n );\n\n // Generic elements\n case \"span\":\n return (\n <span {...(commonProps as React.HTMLAttributes<HTMLSpanElement>)}>\n {renderContent}\n </span>\n );\n case \"p\":\n return (\n <p {...(commonProps as React.HTMLAttributes<HTMLParagraphElement>)}>\n {renderContent}\n </p>\n );\n case \"div\":\n default:\n return (\n <div {...(commonProps as React.HTMLAttributes<HTMLDivElement>)}>\n {renderContent}\n </div>\n );\n }\n}\n\nCustomPattern.displayName = \"CustomPattern\";\n\n// ============================================================================\n// Recursive Custom Pattern Renderer\n// ============================================================================\n\nexport interface CustomPatternConfig {\n type: \"custom\";\n component: AllowedCustomComponent;\n className?: string;\n token?: string | string[];\n content?: string;\n action?: string;\n payload?: Record<string, unknown>;\n children?: CustomPatternConfig[];\n src?: string;\n alt?: string;\n href?: string;\n external?: boolean;\n disabled?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Check if a pattern config is a custom pattern.\n */\nexport function isCustomPatternConfig(\n config: unknown,\n): config is CustomPatternConfig {\n return (\n typeof config === \"object\" &&\n config !== null &&\n (config as Record<string, unknown>).type === \"custom\"\n );\n}\n\n/**\n * Recursively render custom pattern configurations.\n *\n * Use this to render nested custom patterns from render_ui effects.\n */\nexport function renderCustomPattern(\n config: CustomPatternConfig,\n key?: string | number,\n): React.ReactElement {\n const {\n component,\n className,\n token,\n content,\n action,\n payload,\n children,\n src,\n alt,\n href,\n external,\n disabled,\n ...rest\n } = config;\n\n // Recursively render children\n const renderedChildren = children?.map((child, index) =>\n renderCustomPattern(child, index),\n );\n\n return (\n <CustomPattern\n key={key}\n component={component}\n className={className}\n token={token}\n content={content}\n action={action}\n payload={payload}\n src={src}\n alt={alt}\n href={href}\n external={external}\n disabled={disabled}\n htmlProps={rest}\n >\n {renderedChildren}\n </CustomPattern>\n );\n}\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport { ALLOWED_CUSTOM_COMPONENTS as CUSTOM_COMPONENT_TYPES };\n","/**\n * UISlotRenderer Component\n *\n * Renders all UI slots. This is the central component that displays\n * content rendered by traits via render_ui effects.\n *\n * Slots are rendered as:\n * - Layout slots: Inline in the page flow (main, sidebar)\n * - Portal slots: Rendered via portals (modal, drawer, toast, etc.)\n * - HUD slots: Fixed position overlays (hud-top, hud-bottom)\n *\n * @packageDocumentation\n */\n\nimport React, { useEffect, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport {\n useUISlots,\n type UISlot,\n type SlotContent,\n} from \"../../context/UISlotContext\";\nimport { Modal } from \"../molecules/Modal\";\nimport { Drawer } from \"../molecules/Drawer\";\nimport { Toast } from \"../molecules/Toast\";\nimport { cn } from \"../../lib/cn\";\n\n// Shared renderer imports (synced from orbital-shared/design-system/renderer)\nimport { isKnownPattern, isPortalSlot, SLOT_DEFINITIONS } from \"../../renderer\";\n\n// Pattern component imports\nimport { PageHeader } from \"./PageHeader\";\nimport { DataTable } from \"./DataTable\";\nimport { CardGrid } from \"./CardGrid\";\nimport { DetailPanel } from \"./DetailPanel\";\nimport { MasterDetail } from \"./MasterDetail\";\nimport { SearchInput } from \"../molecules/SearchInput\";\nimport { EmptyState } from \"../molecules/EmptyState\";\nimport { LoadingState } from \"../molecules/LoadingState\";\nimport { Breadcrumb } from \"../molecules/Breadcrumb\";\nimport { StatCard } from \"./StatCard\";\nimport { Form } from \"./Form\";\nimport { ButtonGroup } from \"../molecules/ButtonGroup\";\n\n// Layout pattern imports\nimport {\n VStackPattern,\n HStackPattern,\n BoxPattern,\n GridPattern,\n CenterPattern,\n SpacerPattern,\n DividerPattern,\n} from \"./LayoutPatterns\";\n\n// Component pattern imports\nimport {\n ButtonPattern,\n IconButtonPattern,\n LinkPattern,\n TextPattern,\n HeadingPattern,\n BadgePattern,\n AvatarPattern,\n IconPattern,\n ImagePattern,\n CardPattern,\n ProgressBarPattern,\n SpinnerPattern,\n InputPattern,\n TextareaPattern,\n SelectPattern,\n CheckboxPattern,\n RadioPattern,\n LabelPattern,\n AlertPattern,\n TooltipPattern,\n PopoverPattern,\n MenuPattern,\n AccordionPattern,\n ContainerPattern,\n SimpleGridPattern,\n FloatButtonPattern,\n} from \"./ComponentPatterns\";\n\n// Custom pattern import\nimport { CustomPattern } from \"./CustomPattern\";\n\n// ============================================================================\n// Component Registry\n// ============================================================================\n\n/**\n * Maps component names to actual React components.\n * The pattern resolver returns a component name (e.g., \"DataTable\"),\n * and this registry provides the actual component.\n *\n * Component names match those in orbital-shared/patterns/component-mapping.json\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const COMPONENT_REGISTRY: Record<string, React.ComponentType<any>> = {\n // Display patterns\n PageHeader,\n DataTable,\n CardGrid,\n DetailPanel,\n MasterDetail,\n List: DataTable, // List uses DataTable component\n StatCard,\n // Form patterns\n Form,\n ButtonGroup,\n SearchInput,\n // State patterns\n EmptyState,\n LoadingState,\n Breadcrumb,\n // Layout patterns\n VStackPattern,\n HStackPattern,\n BoxPattern,\n GridPattern,\n CenterPattern,\n SpacerPattern,\n DividerPattern,\n // Component patterns - Interactive\n ButtonPattern,\n IconButtonPattern,\n LinkPattern,\n // Component patterns - Display\n TextPattern,\n HeadingPattern,\n BadgePattern,\n AvatarPattern,\n IconPattern,\n ImagePattern,\n CardPattern,\n ProgressBarPattern,\n SpinnerPattern,\n // Component patterns - Form inputs\n InputPattern,\n TextareaPattern,\n SelectPattern,\n CheckboxPattern,\n RadioPattern,\n LabelPattern,\n // Component patterns - Feedback\n AlertPattern,\n TooltipPattern,\n PopoverPattern,\n // Component patterns - Navigation\n MenuPattern,\n AccordionPattern,\n // Component patterns - Layout\n ContainerPattern,\n SimpleGridPattern,\n FloatButtonPattern,\n // Custom pattern\n CustomPattern,\n};\n\n/**\n * Maps pattern types to component names.\n * This provides a local fallback when the shared resolver is not initialized.\n * Ideally, this should come from the shared resolver (orbital-shared/patterns/component-mapping.json).\n */\nconst PATTERN_TO_COMPONENT: Record<string, string> = {\n \"page-header\": \"PageHeader\",\n \"entity-table\": \"DataTable\",\n \"entity-cards\": \"CardGrid\",\n \"entity-detail\": \"DetailPanel\",\n \"detail-panel\": \"DetailPanel\",\n \"entity-list\": \"List\",\n \"master-detail\": \"MasterDetail\",\n \"search-bar\": \"SearchInput\",\n \"empty-state\": \"EmptyState\",\n \"loading-state\": \"LoadingState\",\n breadcrumb: \"Breadcrumb\",\n stats: \"StatCard\",\n \"form-section\": \"Form\",\n form: \"Form\",\n \"form-actions\": \"ButtonGroup\",\n \"filter-group\": \"ButtonGroup\",\n \"button-group\": \"ButtonGroup\",\n // Layout patterns\n vstack: \"VStackPattern\",\n hstack: \"HStackPattern\",\n box: \"BoxPattern\",\n grid: \"GridPattern\",\n center: \"CenterPattern\",\n spacer: \"SpacerPattern\",\n divider: \"DividerPattern\",\n // Component patterns - Interactive\n button: \"ButtonPattern\",\n \"icon-button\": \"IconButtonPattern\",\n link: \"LinkPattern\",\n // Component patterns - Display\n text: \"TextPattern\",\n heading: \"HeadingPattern\",\n badge: \"BadgePattern\",\n avatar: \"AvatarPattern\",\n icon: \"IconPattern\",\n image: \"ImagePattern\",\n card: \"CardPattern\",\n \"progress-bar\": \"ProgressBarPattern\",\n spinner: \"SpinnerPattern\",\n // Component patterns - Form inputs\n input: \"InputPattern\",\n textarea: \"TextareaPattern\",\n select: \"SelectPattern\",\n checkbox: \"CheckboxPattern\",\n radio: \"RadioPattern\",\n label: \"LabelPattern\",\n // Component patterns - Feedback\n alert: \"AlertPattern\",\n tooltip: \"TooltipPattern\",\n popover: \"PopoverPattern\",\n // Component patterns - Navigation\n menu: \"MenuPattern\",\n accordion: \"AccordionPattern\",\n // Component patterns - Layout\n container: \"ContainerPattern\",\n \"simple-grid\": \"SimpleGridPattern\",\n \"float-button\": \"FloatButtonPattern\",\n // Custom pattern\n custom: \"CustomPattern\",\n};\n\n/**\n * Get the React component for a pattern type.\n * Uses shared resolver if available, falls back to local mapping.\n */\nfunction getComponentForPattern(\n patternType: string\n): React.ComponentType<any> | null {\n // Get component name from local mapping\n // TODO: When shared resolver is initialized at app startup, use:\n // const resolved = resolvePattern({ type: patternType });\n // const componentName = resolved.component;\n const componentName = PATTERN_TO_COMPONENT[patternType];\n\n if (!componentName) {\n return null;\n }\n\n return COMPONENT_REGISTRY[componentName] ?? null;\n}\n\n// Patterns that support nested children\nconst PATTERNS_WITH_CHILDREN = new Set([\n \"vstack\",\n \"hstack\",\n \"box\",\n \"grid\",\n \"center\",\n \"card\",\n \"tooltip\",\n \"popover\",\n \"container\",\n \"simple-grid\",\n \"custom\", // Custom patterns support nested children\n]);\n\n// ============================================================================\n// Slot Component\n// ============================================================================\n\ninterface UISlotComponentProps {\n slot: UISlot;\n portal?: boolean;\n position?:\n | \"left\"\n | \"right\"\n | \"top-right\"\n | \"top-left\"\n | \"bottom-right\"\n | \"bottom-left\";\n className?: string;\n draggable?: boolean;\n}\n\n/**\n * Individual slot renderer.\n *\n * Handles different slot types with appropriate wrappers.\n */\nfunction UISlotComponent({\n slot,\n portal = false,\n position,\n className,\n}: UISlotComponentProps): React.ReactElement | null {\n const { slots, clear } = useUISlots();\n const content = slots[slot];\n\n // Handle empty slot\n if (!content) {\n // For non-portal slots, render an empty placeholder\n if (!portal) {\n return (\n <div\n id={`slot-${slot}`}\n className={cn(\"ui-slot\", `ui-slot-${slot}`, className)}\n />\n );\n }\n return null;\n }\n\n // Render content based on slot type\n const handleDismiss = () => {\n clear(slot);\n };\n\n // Portal-based slots\n if (portal) {\n return (\n <SlotPortal\n slot={slot}\n content={content}\n position={position}\n onDismiss={handleDismiss}\n />\n );\n }\n\n // Inline slots\n return (\n <div\n id={`slot-${slot}`}\n className={cn(\"ui-slot\", `ui-slot-${slot}`, className)}\n data-pattern={content.pattern}\n data-source-trait={content.sourceTrait}\n >\n <SlotContentRenderer content={content} onDismiss={handleDismiss} />\n </div>\n );\n}\n\n// ============================================================================\n// Portal Renderer\n// ============================================================================\n\ninterface SlotPortalProps {\n slot: UISlot;\n content: SlotContent;\n position?: string;\n onDismiss: () => void;\n}\n\nfunction SlotPortal({\n slot,\n content,\n position,\n onDismiss,\n}: SlotPortalProps): React.ReactElement | null {\n const [portalRoot, setPortalRoot] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n // Find or create portal root\n let root = document.getElementById(\"ui-slot-portal-root\");\n if (!root) {\n root = document.createElement(\"div\");\n root.id = \"ui-slot-portal-root\";\n document.body.appendChild(root);\n }\n setPortalRoot(root);\n }, []);\n\n if (!portalRoot) return null;\n\n // Render slot-specific wrapper\n let wrapper: React.ReactElement;\n\n switch (slot) {\n case \"modal\":\n wrapper = (\n <Modal\n isOpen={true}\n onClose={onDismiss}\n title={content.props.title as string | undefined}\n size={\n content.props.size as \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\" | undefined\n }\n >\n <SlotContentRenderer content={content} onDismiss={onDismiss} />\n </Modal>\n );\n break;\n\n case \"drawer\":\n wrapper = (\n <Drawer\n isOpen={true}\n onClose={onDismiss}\n title={content.props.title as string | undefined}\n position={(content.props.position as \"left\" | \"right\") ?? \"right\"}\n width={content.props.width as string | undefined}\n >\n <SlotContentRenderer content={content} onDismiss={onDismiss} />\n </Drawer>\n );\n break;\n\n case \"toast\":\n wrapper = (\n <div className={cn(\"fixed z-50\", getToastPosition(position))}>\n <Toast\n variant={\n (content.props.variant as\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\") ?? \"info\"\n }\n title={content.props.title as string | undefined}\n message={(content.props.message as string) ?? \"\"}\n onDismiss={onDismiss}\n />\n </div>\n );\n break;\n\n case \"overlay\":\n wrapper = (\n <div\n className=\"fixed inset-0 z-50 bg-[var(--color-foreground)]/50 flex items-center justify-center\"\n onClick={onDismiss}\n >\n <div onClick={(e) => e.stopPropagation()}>\n <SlotContentRenderer content={content} onDismiss={onDismiss} />\n </div>\n </div>\n );\n break;\n\n case \"center\":\n wrapper = (\n <div className=\"fixed inset-0 z-50 flex items-center justify-center pointer-events-none\">\n <div className=\"pointer-events-auto\">\n <SlotContentRenderer content={content} onDismiss={onDismiss} />\n </div>\n </div>\n );\n break;\n\n default:\n wrapper = <SlotContentRenderer content={content} onDismiss={onDismiss} />;\n }\n\n return createPortal(wrapper, portalRoot);\n}\n\nfunction getToastPosition(position?: string): string {\n switch (position) {\n case \"top-left\":\n return \"top-4 left-4\";\n case \"top-right\":\n return \"top-4 right-4\";\n case \"bottom-left\":\n return \"bottom-4 left-4\";\n case \"bottom-right\":\n return \"bottom-4 right-4\";\n default:\n return \"top-4 right-4\";\n }\n}\n\n// ============================================================================\n// Content Renderer\n// ============================================================================\n\ninterface SlotContentRendererProps {\n content: SlotContent;\n onDismiss: () => void;\n}\n\n/**\n * Recursively render nested pattern children.\n *\n * Takes an array of child pattern configurations and renders them recursively.\n */\nfunction renderPatternChildren(\n children:\n | Array<{ type: string; props?: Record<string, unknown> }>\n | undefined,\n onDismiss: () => void,\n): React.ReactNode {\n if (!children || !Array.isArray(children) || children.length === 0) {\n return null;\n }\n\n return children.map((child, index) => {\n if (!child || typeof child !== \"object\") return null;\n\n const childContent: SlotContent = {\n id: `child-${index}`,\n pattern: child.type,\n props: child.props ?? {},\n priority: 0,\n };\n\n return (\n <SlotContentRenderer\n key={`child-${index}-${child.type}`}\n content={childContent}\n onDismiss={onDismiss}\n />\n );\n });\n}\n\n/**\n * Renders the actual content of a slot.\n *\n * Dynamically renders pattern components from the registry.\n * For layout patterns with `hasChildren`, recursively renders nested patterns.\n */\nfunction SlotContentRenderer({\n content,\n onDismiss,\n}: SlotContentRendererProps): React.ReactElement {\n const PatternComponent = getComponentForPattern(content.pattern);\n\n // If we have a registered component, render it with props\n if (PatternComponent) {\n // Check if this pattern supports children and has children defined\n const supportsChildren = PATTERNS_WITH_CHILDREN.has(content.pattern);\n const childrenConfig = content.props.children as\n | Array<{ type: string; props?: Record<string, unknown> }>\n | undefined;\n\n // Render children recursively for layout patterns\n const renderedChildren = supportsChildren\n ? renderPatternChildren(childrenConfig, onDismiss)\n : undefined;\n\n // Extract props without the children config (we pass rendered children instead)\n const { children: _childrenConfig, ...restProps } = content.props;\n\n return (\n <div\n className=\"slot-content\"\n data-pattern={content.pattern}\n data-id={content.id}\n >\n <PatternComponent {...restProps} onDismiss={onDismiss}>\n {renderedChildren}\n </PatternComponent>\n </div>\n );\n }\n\n // Fallback for unknown patterns - show placeholder\n return (\n <div\n className=\"slot-content\"\n data-pattern={content.pattern}\n data-id={content.id}\n >\n {(content.props.children as React.ReactNode) ?? (\n <div className=\"p-4 text-sm text-[var(--color-muted-foreground)] border border-dashed border-[var(--color-border)] rounded\">\n Unknown pattern: {content.pattern}\n {content.sourceTrait && (\n <span className=\"ml-2\">(from {content.sourceTrait})</span>\n )}\n </div>\n )}\n </div>\n );\n}\n\n// ============================================================================\n// Main Component\n// ============================================================================\n\nexport interface UISlotRendererProps {\n /** Include HUD slots */\n includeHud?: boolean;\n /** Include floating slot */\n includeFloating?: boolean;\n /** Additional class name for the container */\n className?: string;\n}\n\n/**\n * Main UI Slot Renderer component.\n *\n * Renders all slot containers. Place this in your page/layout component.\n *\n * @example\n * ```tsx\n * function PageLayout() {\n * return (\n * <div className=\"page-layout\">\n * <UISlotRenderer />\n * </div>\n * );\n * }\n * ```\n */\nexport function UISlotRenderer({\n includeHud = false,\n includeFloating = false,\n className,\n}: UISlotRendererProps): React.ReactElement {\n return (\n <div className={cn(\"ui-slot-renderer\", className)}>\n {/* Layout slots */}\n <UISlotComponent slot=\"sidebar\" className=\"ui-slot-sidebar\" />\n <UISlotComponent slot=\"main\" className=\"ui-slot-main flex-1\" />\n\n {/* Portal slots */}\n <UISlotComponent slot=\"modal\" portal />\n <UISlotComponent slot=\"drawer\" portal />\n <UISlotComponent slot=\"overlay\" portal />\n <UISlotComponent slot=\"center\" portal />\n <UISlotComponent slot=\"toast\" portal position=\"top-right\" />\n\n {/* HUD slots (optional, for games) */}\n {includeHud && (\n <>\n <UISlotComponent\n slot=\"hud-top\"\n className=\"fixed top-0 inset-x-0 z-40\"\n />\n <UISlotComponent\n slot=\"hud-bottom\"\n className=\"fixed bottom-0 inset-x-0 z-40\"\n />\n </>\n )}\n\n {/* Floating slot (optional) */}\n {includeFloating && (\n <UISlotComponent slot=\"floating\" className=\"fixed z-50\" draggable />\n )}\n </div>\n );\n}\n\nUISlotRenderer.displayName = \"UISlotRenderer\";\n\n// ============================================================================\n// Exports\n// ============================================================================\n\nexport { UISlotComponent, SlotContentRenderer };\n","/**\n * ModalSlot Component\n *\n * Wraps modal slot content in a proper Modal component.\n * Used by trait-driven pages to display modal UI from render_ui effects.\n *\n * Handles:\n * - Auto-open when content is present\n * - Dispatches CLOSE/CANCEL events when closed\n * - Extracts title from Form components\n */\n\nimport React from 'react';\nimport { Modal } from '../molecules/Modal';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface ModalSlotProps {\n /** Content to display in the modal */\n children?: React.ReactNode;\n /** Override modal title (extracted from children if not provided) */\n title?: string;\n /** Modal size */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Extract title from Form or other components if they have a title prop\n */\nfunction extractTitle(children: React.ReactNode): string | undefined {\n if (!React.isValidElement(children)) return undefined;\n\n const props = children.props as Record<string, unknown>;\n if (typeof props.title === 'string') {\n return props.title;\n }\n\n return undefined;\n}\n\n/**\n * ModalSlot - Wrapper for modal slot content\n *\n * Automatically shows modal when children are present,\n * and dispatches close events when modal is dismissed.\n */\nexport const ModalSlot: React.FC<ModalSlotProps> = ({\n children,\n title: overrideTitle,\n size = 'md',\n className,\n}) => {\n const eventBus = useEventBus();\n const isOpen = Boolean(children);\n\n // Extract title from children if not explicitly provided\n const title = overrideTitle || extractTitle(children);\n\n const handleClose = () => {\n // Dispatch close events - trait hooks listen for these\n eventBus.emit('UI:CLOSE');\n eventBus.emit('UI:CANCEL');\n };\n\n if (!isOpen) return null;\n\n return (\n <Modal\n isOpen={isOpen}\n onClose={handleClose}\n title={title}\n size={size}\n className={className}\n >\n {children}\n </Modal>\n );\n};\n\nModalSlot.displayName = 'ModalSlot';\n","/**\n * DrawerSlot Component\n *\n * Wraps drawer slot content in a proper Drawer component.\n * Used by trait-driven pages to display drawer UI from render_ui effects.\n *\n * Handles:\n * - Auto-open when content is present\n * - Dispatches CLOSE/CANCEL events when closed\n * - Extracts title from Form or DetailPanel components\n * - Configurable position and size\n */\n\nimport React from 'react';\nimport { Drawer, DrawerPosition, DrawerSize } from '../molecules/Drawer';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface DrawerSlotProps {\n /** Content to display in the drawer */\n children?: React.ReactNode;\n /** Override drawer title (extracted from children if not provided) */\n title?: string;\n /** Drawer position */\n position?: DrawerPosition;\n /** Drawer size */\n size?: DrawerSize;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Extract title from Form, DetailPanel, or other components if they have a title prop\n */\nfunction extractTitle(children: React.ReactNode): string | undefined {\n if (!React.isValidElement(children)) return undefined;\n\n const props = children.props as Record<string, unknown>;\n if (typeof props.title === 'string') {\n return props.title;\n }\n\n return undefined;\n}\n\n/**\n * DrawerSlot - Wrapper for drawer slot content\n *\n * Automatically shows drawer when children are present,\n * and dispatches close events when drawer is dismissed.\n */\nexport const DrawerSlot: React.FC<DrawerSlotProps> = ({\n children,\n title: overrideTitle,\n position = 'right',\n size = 'md',\n className,\n}) => {\n const eventBus = useEventBus();\n const isOpen = Boolean(children);\n\n // Extract title from children if not explicitly provided\n const title = overrideTitle || extractTitle(children);\n\n const handleClose = () => {\n // Dispatch close events - trait hooks listen for these\n eventBus.emit('UI:CLOSE');\n eventBus.emit('UI:CANCEL');\n };\n\n if (!isOpen) return null;\n\n return (\n <Drawer\n isOpen={isOpen}\n onClose={handleClose}\n title={title}\n position={position}\n width={size}\n className={className}\n >\n {children}\n </Drawer>\n );\n};\n\nDrawerSlot.displayName = 'DrawerSlot';\n","/**\n * ToastSlot Component\n *\n * Wraps toast slot content in a proper Toast component with positioning.\n * Used by trait-driven pages to display toast UI from render_ui effects.\n *\n * Handles:\n * - Auto-show when content is present\n * - Dispatches DISMISS event when dismissed\n * - Fixed positioning in corner of screen\n */\n\nimport React from 'react';\nimport { Toast, ToastVariant } from '../molecules/Toast';\nimport { useEventBus } from '../../hooks/useEventBus';\n\nexport interface ToastSlotProps {\n /** Content to display in the toast (message or ReactNode) */\n children?: React.ReactNode;\n /** Toast variant */\n variant?: ToastVariant;\n /** Toast title */\n title?: string;\n /** Auto-dismiss duration in ms (0 = no auto-dismiss) */\n duration?: number;\n /** Custom class name */\n className?: string;\n}\n\n/**\n * Extract toast props from children if they have relevant props\n */\nfunction extractToastProps(children: React.ReactNode): {\n message?: string;\n variant?: ToastVariant;\n title?: string;\n} {\n if (!React.isValidElement(children)) {\n // If children is a string, use it as message\n if (typeof children === 'string') {\n return { message: children };\n }\n return {};\n }\n\n const props = children.props as Record<string, unknown>;\n return {\n message: typeof props.message === 'string' ? props.message : undefined,\n variant: props.variant as ToastVariant | undefined,\n title: typeof props.title === 'string' ? props.title : undefined,\n };\n}\n\n/**\n * ToastSlot - Wrapper for toast slot content\n *\n * Automatically shows toast when children are present,\n * and dispatches dismiss events when toast is dismissed.\n */\nexport const ToastSlot: React.FC<ToastSlotProps> = ({\n children,\n variant: overrideVariant,\n title: overrideTitle,\n duration = 5000,\n className,\n}) => {\n const eventBus = useEventBus();\n const isVisible = Boolean(children);\n\n // Extract props from children if not explicitly provided\n const extracted = extractToastProps(children);\n const variant = overrideVariant || extracted.variant || 'info';\n const title = overrideTitle || extracted.title;\n const message = extracted.message || (typeof children === 'string' ? children : '');\n\n const handleDismiss = () => {\n // Dispatch dismiss event - trait hooks listen for this\n eventBus.emit('UI:DISMISS');\n eventBus.emit('UI:CLOSE');\n };\n\n if (!isVisible) return null;\n\n // If children is a React element (custom toast content), render it directly\n // Otherwise render a standard Toast with the message\n const isCustomContent = React.isValidElement(children) && !message;\n\n return (\n <div className=\"fixed bottom-4 right-4 z-50\">\n {isCustomContent ? (\n children\n ) : (\n <Toast\n variant={variant}\n title={title}\n message={message || 'Notification'}\n duration={duration}\n onDismiss={handleDismiss}\n className={className}\n />\n )}\n </div>\n );\n};\n\nToastSlot.displayName = 'ToastSlot';\n","/**\n * Auth Context Hook Stub\n *\n * Provides a placeholder auth context for the design system.\n * Applications should provide their own AuthContext provider\n * that implements this interface.\n */\n\nexport interface AuthUser {\n uid: string;\n email: string | null;\n displayName: string | null;\n photoURL: string | null;\n}\n\nexport interface AuthContextValue {\n user: AuthUser | null;\n loading: boolean;\n signIn?: () => Promise<void>;\n signOut?: () => Promise<void>;\n}\n\n/**\n * Stub hook that returns empty auth context.\n * Applications should wrap their app with an AuthProvider\n * that supplies real auth state.\n */\nexport function useAuthContext(): AuthContextValue {\n // Return stub values - applications should override with real provider\n return {\n user: null,\n loading: false,\n signIn: undefined,\n signOut: undefined,\n };\n}\n","import React, { useState } from \"react\";\nimport { Outlet, Link, useLocation } from \"react-router-dom\";\nimport { cn } from \"../../lib/cn\";\nimport {\n Menu,\n X,\n Home,\n Users,\n Calendar,\n Settings,\n Bell,\n Search,\n ChevronDown,\n LogOut,\n LucideIcon,\n} from \"lucide-react\";\nimport { Button, Input, Badge, Spinner, ThemeToggle, Avatar } from \"../atoms\";\nimport { useAuthContext } from \"../../hooks/useAuthContext\";\n\nexport interface NavItem {\n label: string;\n href: string;\n icon: LucideIcon;\n badge?: string | number;\n children?: NavItem[];\n}\n\nexport interface DashboardLayoutProps {\n /** App name shown in sidebar */\n appName?: string;\n /** Logo component or URL */\n logo?: React.ReactNode;\n /** Navigation items */\n navItems?: NavItem[];\n /** Current user info (optional - auto-populated from auth context if not provided) */\n user?: {\n name: string;\n email: string;\n avatar?: string;\n };\n /** Header actions (notifications, etc.) */\n headerActions?: React.ReactNode;\n /** Show search in header */\n showSearch?: boolean;\n /** Custom sidebar footer */\n sidebarFooter?: React.ReactNode;\n /** Callback when user clicks sign out (optional - uses auth context signOut if not provided) */\n onSignOut?: () => void;\n}\n\nexport const DashboardLayout: React.FC<DashboardLayoutProps> = ({\n appName = \"{{APP_TITLE}}\",\n logo,\n navItems = [],\n user: userProp,\n headerActions,\n showSearch = true,\n sidebarFooter,\n onSignOut: onSignOutProp,\n}) => {\n const [sidebarOpen, setSidebarOpen] = useState(false);\n const [userMenuOpen, setUserMenuOpen] = useState(false);\n const location = useLocation();\n\n // Get user and signOut from auth context (with prop overrides)\n const { user: authUser, signOut: authSignOut } = useAuthContext();\n\n // Use props if provided, otherwise use auth context\n const user =\n userProp ||\n (authUser\n ? {\n name: authUser.displayName || authUser.email?.split(\"@\")[0] || \"User\",\n email: authUser.email || \"\",\n avatar: authUser.photoURL || undefined,\n }\n : null);\n\n const handleSignOut = onSignOutProp || authSignOut;\n\n return (\n <div className=\"min-h-screen bg-[var(--color-background)] dark:bg-[var(--color-background)]\">\n {/* Mobile sidebar backdrop */}\n {sidebarOpen && (\n <div\n className=\"fixed inset-0 bg-[var(--color-foreground)]/50 dark:bg-[var(--color-foreground)]/70 z-40 lg:hidden\"\n onClick={() => setSidebarOpen(false)}\n />\n )}\n\n {/* Sidebar */}\n <aside\n className={cn(\n \"fixed inset-y-0 left-0 z-50 w-64 bg-[var(--color-card)] dark:bg-[var(--color-card)] border-r border-[var(--color-border)] dark:border-[var(--color-border)]\",\n \"transform transition-transform duration-200 ease-in-out lg:translate-x-0\",\n sidebarOpen ? \"translate-x-0\" : \"-translate-x-full\",\n )}\n >\n {/* Sidebar header */}\n <div className=\"h-16 flex items-center justify-between px-4 border-b border-[var(--color-border)] dark:border-[var(--color-border)]\">\n <Link to=\"/\" className=\"flex items-center gap-2\">\n {logo || (\n <div className=\"w-8 h-8 bg-primary-600 rounded-[var(--radius-lg)] flex items-center justify-center\">\n <span className=\"text-white font-bold text-sm\">\n {appName.charAt(0).toUpperCase()}\n </span>\n </div>\n )}\n <span className=\"font-semibold text-[var(--color-foreground)] dark:text-[var(--color-foreground)]\">\n {appName}\n </span>\n </Link>\n <button\n className=\"lg:hidden p-2 rounded-[var(--radius-md)] hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)] text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)]\"\n onClick={() => setSidebarOpen(false)}\n >\n <X className=\"h-5 w-5\" />\n </button>\n </div>\n\n {/* Navigation */}\n <nav className=\"flex-1 px-3 py-4 space-y-1 overflow-y-auto\">\n {navItems.map((item) => (\n <NavLink\n key={item.href}\n item={item}\n currentPath={location.pathname}\n />\n ))}\n </nav>\n\n {/* Sidebar footer */}\n {sidebarFooter || (\n <div className=\"p-4 border-t border-[var(--color-border)] dark:border-[var(--color-border)]\">\n <Link\n to=\"/settings\"\n className=\"flex items-center gap-3 px-3 py-2 text-sm text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)] rounded-[var(--radius-lg)] hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)]\"\n >\n <Settings className=\"h-5 w-5\" />\n Settings\n </Link>\n </div>\n )}\n </aside>\n\n {/* Main content */}\n <div className=\"lg:pl-64\">\n {/* Header */}\n <header className=\"sticky top-0 z-30 h-16 bg-[var(--color-card)] dark:bg-[var(--color-card)] border-b border-[var(--color-border)] dark:border-[var(--color-border)]\">\n <div className=\"h-full px-4 flex items-center justify-between gap-4\">\n {/* Mobile menu button */}\n <button\n className=\"lg:hidden p-2 rounded-[var(--radius-md)] hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)] text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)] touch-manipulation min-h-[44px] min-w-[44px] flex items-center justify-center\"\n onClick={() => setSidebarOpen(true)}\n aria-label=\"Open sidebar\"\n >\n <Menu className=\"h-5 w-5\" />\n </button>\n\n {/* Search */}\n {showSearch && (\n <div className=\"hidden sm:block flex-1 max-w-md\">\n <div className=\"relative\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)]\" />\n <Input\n type=\"search\"\n placeholder=\"Search...\"\n className=\"pl-10 w-full\"\n />\n </div>\n </div>\n )}\n\n {/* Right side */}\n <div className=\"flex items-center gap-2\">\n {headerActions}\n\n {/* Theme Toggle */}\n <ThemeToggle />\n\n {/* Notifications */}\n <button className=\"relative p-2 rounded-[var(--radius-full)] hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)]\">\n <Bell className=\"h-5 w-5 text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)]\" />\n <span className=\"absolute top-1 right-1 w-2 h-2 bg-[var(--color-error)] rounded-[var(--radius-full)]\" />\n </button>\n\n {/* User menu */}\n {user && (\n <div className=\"relative\">\n <button\n className=\"flex items-center gap-2 p-2 rounded-[var(--radius-lg)] hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)]\"\n onClick={() => setUserMenuOpen(!userMenuOpen)}\n >\n <Avatar\n src={user.avatar}\n alt={user.name}\n initials={user.name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .substring(0, 2)}\n size=\"sm\"\n />\n <span className=\"hidden sm:block text-sm font-medium text-[var(--color-foreground)] dark:text-[var(--color-foreground)]\">\n {user.name}\n </span>\n <ChevronDown className=\"hidden sm:block h-4 w-4 text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)]\" />\n </button>\n\n {userMenuOpen && (\n <>\n <div\n className=\"fixed inset-0 z-40\"\n onClick={() => setUserMenuOpen(false)}\n />\n <div className=\"absolute right-0 mt-2 w-48 bg-[var(--color-card)] dark:bg-[var(--color-card)] rounded-[var(--radius-lg)] shadow-[var(--shadow-lg)] border border-[var(--color-border)] dark:border-[var(--color-border)] py-1 z-50\">\n <div className=\"px-4 py-2 border-b border-[var(--color-border)] dark:border-[var(--color-border)]\">\n <p className=\"text-sm font-medium text-[var(--color-foreground)] dark:text-[var(--color-foreground)]\">\n {user.name}\n </p>\n <p className=\"text-xs text-[var(--color-muted-foreground)] dark:text-[var(--color-muted-foreground)]\">\n {user.email}\n </p>\n </div>\n <Link\n to=\"/settings\"\n className=\"flex items-center gap-2 px-4 py-2 text-sm text-[var(--color-foreground)] dark:text-[var(--color-foreground)] hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)]\"\n >\n <Settings className=\"h-4 w-4\" />\n Settings\n </Link>\n <button\n onClick={() => {\n setUserMenuOpen(false);\n handleSignOut?.();\n }}\n className=\"w-full flex items-center gap-2 px-4 py-2 text-sm text-[var(--color-error)] dark:text-[var(--color-error)] hover:bg-[var(--color-error)]/10 dark:hover:bg-[var(--color-error)]/20\"\n >\n <LogOut className=\"h-4 w-4\" />\n Sign out\n </button>\n </div>\n </>\n )}\n </div>\n )}\n </div>\n </div>\n </header>\n\n {/* Page content */}\n <main className=\"p-4 sm:p-6 pb-20 sm:pb-6\">\n <Outlet />\n </main>\n </div>\n </div>\n );\n};\n\n// NavLink component\nconst NavLink: React.FC<{ item: NavItem; currentPath: string }> = ({\n item,\n currentPath,\n}) => {\n const isActive =\n currentPath === item.href || currentPath.startsWith(item.href + \"/\");\n const Icon = item.icon;\n\n return (\n <Link\n to={item.href}\n className={cn(\n \"flex items-center gap-3 px-3 py-2 rounded-[var(--radius-lg)] text-sm font-medium transition-colors\",\n isActive\n ? \"bg-[var(--color-foreground)] text-[var(--color-background)] shadow-[var(--shadow-sm)]\"\n : \"text-[var(--color-muted-foreground)] hover:bg-[var(--color-muted)] hover:text-[var(--color-foreground)]\",\n )}\n >\n <Icon\n className={cn(\n \"h-5 w-5\",\n isActive\n ? \"text-[var(--color-background)]\"\n : \"text-[var(--color-muted-foreground)]\",\n )}\n />\n <span className=\"flex-1\">{item.label}</span>\n {item.badge && (\n <Badge variant={isActive ? \"primary\" : \"default\"} size=\"sm\">\n {item.badge}\n </Badge>\n )}\n </Link>\n );\n};\n","import React from \"react\";\nimport { Outlet, Link } from \"react-router-dom\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface AuthLayoutProps {\n /** App name */\n appName?: string;\n /** Logo component or URL */\n logo?: React.ReactNode;\n /** Background image URL */\n backgroundImage?: string;\n /** Show branding panel on the side */\n showBranding?: boolean;\n /** Branding panel content */\n brandingContent?: React.ReactNode;\n}\n\nexport const AuthLayout: React.FC<AuthLayoutProps> = ({\n appName = \"{{APP_TITLE}}\",\n logo,\n backgroundImage,\n showBranding = true,\n brandingContent,\n}) => {\n return (\n <div className=\"min-h-screen flex\">\n {/* Branding panel (desktop only) */}\n {showBranding && (\n <div\n className={cn(\n \"hidden lg:flex lg:w-1/2 bg-primary-600 relative overflow-hidden\",\n \"flex-col justify-between p-12\",\n )}\n style={\n backgroundImage\n ? {\n backgroundImage: `url(${backgroundImage})`,\n backgroundSize: \"cover\",\n }\n : undefined\n }\n >\n {/* Gradient overlay */}\n <div className=\"absolute inset-0 bg-gradient-to-br from-primary-600/90 to-primary-800/90\" />\n\n {/* Content */}\n <div className=\"relative z-10\">\n <Link to=\"/\" className=\"flex items-center gap-3\">\n {logo || (\n <div className=\"w-10 h-10 bg-white/20 rounded-[var(--radius-xl)] flex items-center justify-center backdrop-blur\">\n <span className=\"text-white font-bold text-lg\">\n {appName.charAt(0).toUpperCase()}\n </span>\n </div>\n )}\n <span className=\"text-2xl font-bold text-white\">{appName}</span>\n </Link>\n </div>\n\n {/* Custom branding content or default */}\n <div className=\"relative z-10\">\n {brandingContent || (\n <div className=\"space-y-6\">\n <h1 className=\"text-4xl font-bold text-white leading-tight\">\n Welcome to {appName}\n </h1>\n <p className=\"text-lg text-white/80 max-w-md\">\n Sign in to access your dashboard and manage your account.\n </p>\n\n {/* Testimonial or feature list */}\n <div className=\"mt-12 p-6 bg-white/10 rounded-[var(--radius-xl)] backdrop-blur\">\n <p className=\"text-white/90 italic\">\n \"This platform has transformed how we work. Highly\n recommended!\"\n </p>\n <div className=\"mt-4 flex items-center gap-3\">\n <div className=\"w-10 h-10 bg-white/20 rounded-[var(--radius-full)]\" />\n <div>\n <p className=\"text-white font-medium\">Jane Doe</p>\n <p className=\"text-white/60 text-sm\">CEO, Example Co.</p>\n </div>\n </div>\n </div>\n </div>\n )}\n </div>\n\n {/* Decorative elements */}\n <div className=\"absolute -bottom-32 -right-32 w-96 h-96 bg-white/5 rounded-[var(--radius-full)]\" />\n <div className=\"absolute -top-16 -right-16 w-64 h-64 bg-white/5 rounded-[var(--radius-full)]\" />\n </div>\n )}\n\n {/* Auth form panel */}\n <div\n className={cn(\n \"flex-1 flex items-center justify-center p-6 sm:p-12\",\n \"bg-[var(--color-background)]\",\n )}\n >\n <div className=\"w-full max-w-md\">\n {/* Mobile logo */}\n <div className=\"lg:hidden mb-8 text-center\">\n <Link to=\"/\" className=\"inline-flex items-center gap-3\">\n {logo || (\n <div className=\"w-12 h-12 bg-primary-600 rounded-[var(--radius-xl)] flex items-center justify-center\">\n <span className=\"text-white font-bold text-xl\">\n {appName.charAt(0).toUpperCase()}\n </span>\n </div>\n )}\n <span className=\"text-2xl font-bold text-[var(--color-foreground)]\">\n {appName}\n </span>\n </Link>\n </div>\n\n {/* Auth form content (from child routes) */}\n <Outlet />\n </div>\n </div>\n </div>\n );\n};\n","/**\n * CounterTemplate\n *\n * A presentational template for counter/incrementer features.\n * Supports increment, decrement, and reset operations.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Container } from \"../molecules/Container\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Minus, Plus, RotateCcw } from \"lucide-react\";\n\nexport type CounterSize = \"sm\" | \"md\" | \"lg\";\nexport type CounterVariant = \"minimal\" | \"standard\" | \"full\";\n\nexport interface CounterTemplateProps {\n /** Current count value */\n count: number;\n /** Minimum allowed value */\n min?: number;\n /** Maximum allowed value */\n max?: number;\n /** Step size for increment/decrement */\n step?: number;\n /** Called when increment is clicked */\n onIncrement?: () => void;\n /** Called when decrement is clicked */\n onDecrement?: () => void;\n /** Called when reset is clicked */\n onReset?: () => void;\n /** Title displayed above the counter */\n title?: string;\n /** Show reset button */\n showReset?: boolean;\n /** Counter display size */\n size?: CounterSize;\n /** Template variant */\n variant?: CounterVariant;\n /** Additional class name */\n className?: string;\n}\n\nconst sizeStyles: Record<\n CounterSize,\n { display: string; button: \"sm\" | \"md\" | \"lg\" }\n> = {\n sm: { display: \"text-4xl\", button: \"sm\" },\n md: { display: \"text-6xl\", button: \"md\" },\n lg: { display: \"text-8xl\", button: \"lg\" },\n};\n\nexport const CounterTemplate: React.FC<CounterTemplateProps> = ({\n count,\n min = -Infinity,\n max = Infinity,\n step = 1,\n onIncrement,\n onDecrement,\n onReset,\n title = \"Counter\",\n showReset = true,\n size = \"md\",\n variant = \"standard\",\n className,\n}) => {\n const canDecrement = count - step >= min;\n const canIncrement = count + step <= max;\n\n const renderMinimal = () => (\n <HStack gap=\"lg\" align=\"center\" justify=\"center\" className={className}>\n <Button\n variant=\"secondary\"\n size={sizeStyles[size].button}\n onClick={onDecrement}\n disabled={!canDecrement}\n leftIcon={<Minus className=\"h-4 w-4\" />}\n >\n {step > 1 ? `-${step}` : \"\"}\n </Button>\n <Typography\n variant=\"h1\"\n className={cn(\n sizeStyles[size].display,\n \"font-bold tabular-nums min-w-[3ch] text-center\",\n )}\n >\n {count}\n </Typography>\n <Button\n variant=\"secondary\"\n size={sizeStyles[size].button}\n onClick={onIncrement}\n disabled={!canIncrement}\n leftIcon={<Plus className=\"h-4 w-4\" />}\n >\n {step > 1 ? `+${step}` : \"\"}\n </Button>\n </HStack>\n );\n\n const renderStandard = () => (\n <Container size=\"sm\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\" align=\"center\">\n <Typography\n variant=\"h2\"\n className=\"text-[var(--color-muted-foreground)]\"\n >\n {title}\n </Typography>\n <Typography\n variant=\"h1\"\n className={cn(\n sizeStyles[size].display,\n \"font-bold tabular-nums text-primary-600\",\n )}\n >\n {count}\n </Typography>\n <HStack gap=\"md\">\n <Button\n variant=\"secondary\"\n size={sizeStyles[size].button}\n onClick={onDecrement}\n disabled={!canDecrement}\n leftIcon={<Minus className=\"h-4 w-4\" />}\n />\n <Button\n variant=\"primary\"\n size={sizeStyles[size].button}\n onClick={onIncrement}\n disabled={!canIncrement}\n leftIcon={<Plus className=\"h-4 w-4\" />}\n />\n </HStack>\n {showReset && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onReset}\n leftIcon={<RotateCcw className=\"h-4 w-4\" />}\n >\n Reset\n </Button>\n )}\n </VStack>\n </Container>\n );\n\n const renderFull = () => (\n <Container size=\"sm\" padding=\"lg\" className={className}>\n <VStack gap=\"xl\" align=\"center\">\n <Typography\n variant=\"h2\"\n className=\"text-[var(--color-muted-foreground)]\"\n >\n {title}\n </Typography>\n <VStack gap=\"sm\" align=\"center\">\n <Typography\n variant=\"h1\"\n className={cn(\n sizeStyles[size].display,\n \"font-bold tabular-nums text-primary-600\",\n )}\n >\n {count}\n </Typography>\n {(min !== -Infinity || max !== Infinity) && (\n <Typography variant=\"small\" color=\"muted\">\n Range: {min === -Infinity ? \"-∞\" : min} to{\" \"}\n {max === Infinity ? \"∞\" : max}\n </Typography>\n )}\n </VStack>\n <HStack gap=\"md\">\n <Button\n variant=\"secondary\"\n size={sizeStyles[size].button}\n onClick={onDecrement}\n disabled={!canDecrement}\n leftIcon={<Minus className=\"h-4 w-4\" />}\n >\n {step > 1 ? step : \"\"}\n </Button>\n <Button\n variant=\"primary\"\n size={sizeStyles[size].button}\n onClick={onIncrement}\n disabled={!canIncrement}\n leftIcon={<Plus className=\"h-4 w-4\" />}\n >\n {step > 1 ? step : \"\"}\n </Button>\n </HStack>\n {showReset && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onReset}\n leftIcon={<RotateCcw className=\"h-4 w-4\" />}\n >\n Reset to 0\n </Button>\n )}\n </VStack>\n </Container>\n );\n\n switch (variant) {\n case \"minimal\":\n return renderMinimal();\n case \"full\":\n return renderFull();\n default:\n return renderStandard();\n }\n};\n\nCounterTemplate.displayName = \"CounterTemplate\";\n\nexport default CounterTemplate;\n","/**\n * ListTemplate\n *\n * A presentational template for list-based features like todos, shopping lists, notes.\n * Supports add, toggle, delete, and filter operations.\n */\n\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Container } from \"../molecules/Container\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Input } from \"../atoms/Input\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport { Spinner } from \"../atoms/Spinner\";\nimport { Alert } from \"../molecules/Alert\";\nimport { EmptyState } from \"../molecules/EmptyState\";\nimport { Plus, Trash2, RefreshCw, ListTodo } from \"lucide-react\";\n\nexport type FilterValue = \"all\" | \"active\" | \"completed\";\nexport type ListVariant = \"minimal\" | \"standard\" | \"full\";\n\nexport interface ListTemplateItem {\n id: string;\n title: string;\n completed?: boolean;\n [key: string]: unknown;\n}\n\nexport interface ListTemplateProps {\n /** Array of list items */\n items: ListTemplateItem[];\n /** Whether data is loading */\n isLoading?: boolean;\n /** Error object if loading failed */\n error?: Error | string | null;\n /** Current filter value */\n filter?: FilterValue;\n /** Called when a new item is added */\n onAdd?: (title: string) => void;\n /** Called when an item is toggled */\n onToggle?: (id: string) => void;\n /** Called when an item is deleted */\n onDelete?: (id: string) => void;\n /** Called when filter changes */\n onFilterChange?: (filter: FilterValue) => void;\n /** Called to retry loading */\n onRetry?: () => void;\n /** Title displayed above the list */\n title?: string;\n /** Placeholder for the input field */\n placeholder?: string;\n /** Whether to show filter buttons */\n showFilters?: boolean;\n /** Whether to show item count */\n showCount?: boolean;\n /** Message shown when list is empty */\n emptyMessage?: string;\n /** Template variant */\n variant?: ListVariant;\n /** Additional class name */\n className?: string;\n}\n\nexport const ListTemplate: React.FC<ListTemplateProps> = ({\n items = [],\n isLoading = false,\n error = null,\n filter = \"all\",\n onAdd,\n onToggle,\n onDelete,\n onFilterChange,\n onRetry,\n title = \"My List\",\n placeholder = \"Add a new item...\",\n showFilters = true,\n showCount = true,\n emptyMessage = \"No items yet\",\n variant = \"standard\",\n className,\n}) => {\n const [inputValue, setInputValue] = useState(\"\");\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (inputValue.trim() && onAdd) {\n onAdd(inputValue.trim());\n setInputValue(\"\");\n }\n };\n\n const filteredItems = items.filter((item) => {\n if (filter === \"active\") return !item.completed;\n if (filter === \"completed\") return item.completed;\n return true;\n });\n\n const activeCount = items.filter((item) => !item.completed).length;\n const completedCount = items.filter((item) => item.completed).length;\n\n const renderError = () => (\n <Alert\n variant=\"error\"\n title=\"Failed to load items\"\n actions={\n onRetry && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onRetry}\n leftIcon={<RefreshCw className=\"h-4 w-4\" />}\n >\n Retry\n </Button>\n )\n }\n >\n {typeof error === \"string\"\n ? error\n : error?.message || \"An error occurred\"}\n </Alert>\n );\n\n const renderFilters = () => (\n <HStack gap=\"sm\">\n <Button\n variant={filter === \"all\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => onFilterChange?.(\"all\")}\n >\n All ({items.length})\n </Button>\n <Button\n variant={filter === \"active\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => onFilterChange?.(\"active\")}\n >\n Active ({activeCount})\n </Button>\n <Button\n variant={filter === \"completed\" ? \"primary\" : \"ghost\"}\n size=\"sm\"\n onClick={() => onFilterChange?.(\"completed\")}\n >\n Completed ({completedCount})\n </Button>\n </HStack>\n );\n\n const renderItem = (item: ListTemplateItem) => (\n <HStack\n key={item.id}\n gap=\"md\"\n align=\"center\"\n className={cn(\n \"p-3 rounded-[var(--radius-lg)] border border-[var(--color-border)] dark:border-[var(--color-border)]\",\n \"hover:bg-[var(--color-muted)] dark:hover:bg-[var(--color-muted)] transition-colors\",\n item.completed && \"opacity-60\",\n )}\n >\n <Checkbox\n checked={item.completed}\n onChange={() => onToggle?.(item.id)}\n className=\"flex-shrink-0\"\n />\n <Typography\n variant=\"body\"\n className={cn(\n \"flex-1\",\n item.completed && \"line-through text-[var(--color-muted-foreground)]\",\n )}\n >\n {item.title}\n </Typography>\n {onDelete && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={() => onDelete(item.id)}\n className=\"text-[var(--color-error)] hover:text-[var(--color-error)] hover:bg-[var(--color-error)]/10\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n )}\n </HStack>\n );\n\n const renderEmpty = () => (\n <EmptyState\n icon={ListTodo}\n title={emptyMessage}\n description=\"Add your first item using the input above\"\n />\n );\n\n const renderMinimal = () => (\n <VStack gap=\"md\" className={className}>\n <form onSubmit={handleSubmit}>\n <HStack gap=\"sm\">\n <Input\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n className=\"flex-1\"\n />\n <Button type=\"submit\" disabled={!inputValue.trim()}>\n <Plus className=\"h-4 w-4\" />\n </Button>\n </HStack>\n </form>\n {isLoading ? (\n <div className=\"flex justify-center py-8\">\n <Spinner size=\"md\" />\n </div>\n ) : error ? (\n renderError()\n ) : filteredItems.length === 0 ? (\n <Typography\n variant=\"body\"\n color=\"muted\"\n align=\"center\"\n className=\"py-8\"\n >\n {emptyMessage}\n </Typography>\n ) : (\n <VStack gap=\"sm\">{filteredItems.map(renderItem)}</VStack>\n )}\n </VStack>\n );\n\n const renderStandard = () => (\n <Container size=\"md\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\">\n <Typography variant=\"h2\">{title}</Typography>\n\n {error && renderError()}\n\n <form onSubmit={handleSubmit}>\n <HStack gap=\"sm\">\n <Input\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n className=\"flex-1\"\n />\n <Button\n type=\"submit\"\n disabled={!inputValue.trim()}\n leftIcon={<Plus className=\"h-4 w-4\" />}\n >\n Add\n </Button>\n </HStack>\n </form>\n\n {showFilters && items.length > 0 && renderFilters()}\n\n {isLoading ? (\n <div className=\"flex justify-center py-8\">\n <Spinner size=\"md\" />\n </div>\n ) : filteredItems.length === 0 ? (\n renderEmpty()\n ) : (\n <VStack gap=\"sm\">{filteredItems.map(renderItem)}</VStack>\n )}\n\n {showCount && items.length > 0 && (\n <Typography variant=\"small\" color=\"muted\">\n {activeCount} item{activeCount !== 1 ? \"s\" : \"\"} remaining\n </Typography>\n )}\n </VStack>\n </Container>\n );\n\n const renderFull = () => (\n <Container size=\"md\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\">\n <HStack justify=\"between\" align=\"center\">\n <Typography variant=\"h2\">{title}</Typography>\n {showCount && (\n <Typography variant=\"small\" color=\"muted\">\n {items.length} total • {activeCount} active • {completedCount}{\" \"}\n done\n </Typography>\n )}\n </HStack>\n\n {error && renderError()}\n\n <form onSubmit={handleSubmit}>\n <HStack gap=\"sm\">\n <Input\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n placeholder={placeholder}\n className=\"flex-1\"\n />\n <Button\n type=\"submit\"\n disabled={!inputValue.trim()}\n leftIcon={<Plus className=\"h-4 w-4\" />}\n >\n Add Item\n </Button>\n </HStack>\n </form>\n\n {showFilters && items.length > 0 && (\n <div className=\"border-b border-[var(--color-border)] dark:border-[var(--color-border)] pb-4\">\n {renderFilters()}\n </div>\n )}\n\n {isLoading ? (\n <div className=\"flex justify-center py-12\">\n <Spinner size=\"lg\" />\n </div>\n ) : filteredItems.length === 0 ? (\n renderEmpty()\n ) : (\n <VStack gap=\"sm\">{filteredItems.map(renderItem)}</VStack>\n )}\n\n {items.length > 0 && completedCount > 0 && (\n <HStack justify=\"end\">\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"text-[var(--color-muted-foreground)]\"\n onClick={() => {\n items\n .filter((i) => i.completed)\n .forEach((i) => onDelete?.(i.id));\n }}\n >\n Clear completed\n </Button>\n </HStack>\n )}\n </VStack>\n </Container>\n );\n\n switch (variant) {\n case \"minimal\":\n return renderMinimal();\n case \"full\":\n return renderFull();\n default:\n return renderStandard();\n }\n};\n\nListTemplate.displayName = \"ListTemplate\";\n\nexport default ListTemplate;\n","/**\n * FormTemplate\n *\n * A presentational template for form-based features like contact forms, feedback, surveys.\n * Supports submission, validation, and success/error states.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Container } from \"../molecules/Container\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Input } from \"../atoms/Input\";\nimport { Textarea } from \"../atoms/Textarea\";\nimport { Select } from \"../atoms/Select\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport { Alert } from \"../molecules/Alert\";\nimport { FormField } from \"../molecules/FormField\";\nimport { Card, CardContent } from \"../atoms/Card\";\nimport { Send, RotateCcw, CheckCircle } from \"lucide-react\";\n\nexport type FormVariant = \"minimal\" | \"standard\" | \"full\";\n\nexport interface FormFieldConfig {\n name: string;\n label: string;\n type:\n | \"text\"\n | \"email\"\n | \"password\"\n | \"tel\"\n | \"url\"\n | \"number\"\n | \"textarea\"\n | \"select\"\n | \"checkbox\";\n placeholder?: string;\n required?: boolean;\n options?: Array<{ value: string; label: string }>;\n rows?: number;\n}\n\nexport interface FormTemplateProps {\n /** Current form field values */\n formData: Record<string, unknown>;\n /** Whether form is being submitted */\n isSubmitting?: boolean;\n /** Whether submission was successful */\n isSuccess?: boolean;\n /** Error object if submission failed */\n error?: Error | string | null;\n /** Field-level validation errors */\n validationErrors?: Record<string, string>;\n /** Called when form is submitted */\n onSubmit?: (formData: Record<string, unknown>) => void;\n /** Called when a field value changes */\n onFieldChange?: (field: string, value: unknown) => void;\n /** Called to reset the form */\n onReset?: () => void;\n /** Called to dismiss success message */\n onDismissSuccess?: () => void;\n /** Form title */\n title?: string;\n /** Form subtitle/description */\n subtitle?: string;\n /** Submit button label */\n submitLabel?: string;\n /** Success message */\n successMessage?: string;\n /** Whether to show reset button */\n showReset?: boolean;\n /** Form field definitions */\n fields?: FormFieldConfig[];\n /** Template variant */\n variant?: FormVariant;\n /** Additional class name */\n className?: string;\n}\n\nconst defaultFields: FormFieldConfig[] = [\n {\n name: \"name\",\n label: \"Name\",\n type: \"text\",\n required: true,\n placeholder: \"Your name\",\n },\n {\n name: \"email\",\n label: \"Email\",\n type: \"email\",\n required: true,\n placeholder: \"your@email.com\",\n },\n {\n name: \"message\",\n label: \"Message\",\n type: \"textarea\",\n required: true,\n placeholder: \"Your message...\",\n rows: 4,\n },\n];\n\nexport const FormTemplate: React.FC<FormTemplateProps> = ({\n formData = {},\n isSubmitting = false,\n isSuccess = false,\n error = null,\n validationErrors = {},\n onSubmit,\n onFieldChange,\n onReset,\n onDismissSuccess,\n title = \"Contact Us\",\n subtitle,\n submitLabel = \"Submit\",\n successMessage = \"Thank you! Your submission has been received.\",\n showReset = false,\n fields = defaultFields,\n variant = \"standard\",\n className,\n}) => {\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n onSubmit?.(formData);\n };\n\n const renderField = (field: FormFieldConfig) => {\n const value = formData[field.name];\n const fieldError = validationErrors[field.name];\n\n const handleChange = (newValue: unknown) => {\n onFieldChange?.(field.name, newValue);\n };\n\n switch (field.type) {\n case \"textarea\":\n return (\n <FormField\n key={field.name}\n label={field.label}\n required={field.required}\n error={fieldError}\n >\n <Textarea\n value={(value as string) || \"\"}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={field.placeholder}\n rows={field.rows || 4}\n className={cn(fieldError && \"border-red-500\")}\n />\n </FormField>\n );\n\n case \"select\":\n return (\n <FormField\n key={field.name}\n label={field.label}\n required={field.required}\n error={fieldError}\n >\n <Select\n value={(value as string) || \"\"}\n onChange={(e) => handleChange(e.target.value)}\n options={\n field.options?.map((o) => ({\n value: o.value,\n label: o.label,\n })) || []\n }\n placeholder={\n field.placeholder || `Select ${field.label.toLowerCase()}`\n }\n />\n </FormField>\n );\n\n case \"checkbox\":\n return (\n <div key={field.name} className=\"flex items-center gap-2\">\n <Checkbox\n checked={Boolean(value)}\n onChange={(e) => handleChange(e.target.checked)}\n />\n <Typography variant=\"body\">{field.label}</Typography>\n {field.required && (\n <span className=\"text-[var(--color-error)]\">*</span>\n )}\n </div>\n );\n\n default:\n return (\n <FormField\n key={field.name}\n label={field.label}\n required={field.required}\n error={fieldError}\n >\n <Input\n type={field.type}\n value={(value as string) || \"\"}\n onChange={(e) => handleChange(e.target.value)}\n placeholder={field.placeholder}\n className={cn(fieldError && \"border-red-500\")}\n />\n </FormField>\n );\n }\n };\n\n const renderSuccess = () => (\n <VStack gap=\"lg\" align=\"center\" className=\"py-8\">\n <div className=\"w-16 h-16 rounded-[var(--radius-full)] bg-[var(--color-success)]/10 flex items-center justify-center\">\n <CheckCircle className=\"w-8 h-8 text-[var(--color-success)]\" />\n </div>\n <Typography variant=\"h3\" align=\"center\">\n Success!\n </Typography>\n <Typography variant=\"body\" color=\"muted\" align=\"center\">\n {successMessage}\n </Typography>\n {onDismissSuccess && (\n <Button variant=\"primary\" onClick={onDismissSuccess}>\n Send Another\n </Button>\n )}\n </VStack>\n );\n\n const renderForm = () => (\n <form onSubmit={handleSubmit}>\n <VStack gap=\"lg\">\n {error && (\n <Alert variant=\"error\" title=\"Submission Failed\">\n {typeof error === \"string\"\n ? error\n : error?.message || \"Please try again.\"}\n </Alert>\n )}\n\n {fields.map(renderField)}\n\n <HStack gap=\"md\" justify={showReset ? \"between\" : \"end\"}>\n {showReset && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n onClick={onReset}\n leftIcon={<RotateCcw className=\"h-4 w-4\" />}\n >\n Reset\n </Button>\n )}\n <Button\n type=\"submit\"\n isLoading={isSubmitting}\n leftIcon={<Send className=\"h-4 w-4\" />}\n >\n {submitLabel}\n </Button>\n </HStack>\n </VStack>\n </form>\n );\n\n const renderMinimal = () => (\n <VStack gap=\"lg\" className={className}>\n {isSuccess ? renderSuccess() : renderForm()}\n </VStack>\n );\n\n const renderStandard = () => (\n <Container size=\"sm\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\">\n <VStack gap=\"xs\">\n <Typography variant=\"h2\">{title}</Typography>\n {subtitle && (\n <Typography variant=\"body\" color=\"muted\">\n {subtitle}\n </Typography>\n )}\n </VStack>\n\n {isSuccess ? renderSuccess() : renderForm()}\n </VStack>\n </Container>\n );\n\n const renderFull = () => (\n <Container size=\"md\" padding=\"lg\" className={className}>\n <Card>\n <CardContent className=\"p-8\">\n <VStack gap=\"xl\">\n <VStack gap=\"sm\" align=\"center\">\n <Typography variant=\"h2\" align=\"center\">\n {title}\n </Typography>\n {subtitle && (\n <Typography variant=\"body\" color=\"muted\" align=\"center\">\n {subtitle}\n </Typography>\n )}\n </VStack>\n\n {isSuccess ? renderSuccess() : renderForm()}\n </VStack>\n </CardContent>\n </Card>\n </Container>\n );\n\n switch (variant) {\n case \"minimal\":\n return renderMinimal();\n case \"full\":\n return renderFull();\n default:\n return renderStandard();\n }\n};\n\nFormTemplate.displayName = \"FormTemplate\";\n\nexport default FormTemplate;\n","/**\n * CrudTemplate\n *\n * A presentational template for CRUD (Create, Read, Update, Delete) features.\n * Includes data table, search, and modal forms for create/edit.\n */\n\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Container } from \"../molecules/Container\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Input } from \"../atoms/Input\";\nimport { Alert } from \"../molecules/Alert\";\nimport { Modal } from \"../molecules/Modal\";\nimport { FormField } from \"../molecules/FormField\";\nimport { DataTable, type Column, type RowAction } from \"../organisms/DataTable\";\nimport { PageHeader } from \"../organisms/PageHeader\";\nimport { Plus, Search, RefreshCw, Edit, Trash2, Eye } from \"lucide-react\";\n\nexport type CrudVariant = \"minimal\" | \"standard\" | \"full\";\n\nexport interface CrudItem {\n id: string;\n [key: string]: unknown;\n}\n\nexport interface ColumnConfig {\n key: string;\n label: string;\n sortable?: boolean;\n width?: string;\n render?: (value: unknown, row: CrudItem) => React.ReactNode;\n}\n\nexport interface FieldConfig {\n key: string;\n label: string;\n type?: \"text\" | \"email\" | \"number\" | \"textarea\" | \"select\";\n required?: boolean;\n placeholder?: string;\n options?: Array<{ value: string; label: string }>;\n}\n\nexport interface CrudTemplateProps {\n /** Array of items to display */\n items: CrudItem[];\n /** Whether data is loading */\n isLoading?: boolean;\n /** Error object if loading failed */\n error?: Error | string | null;\n /** Currently selected item for editing */\n selectedItem?: CrudItem | null;\n /** Whether the create/edit modal is open */\n isModalOpen?: boolean;\n /** Current search query */\n searchQuery?: string;\n /** Current sort field */\n sortBy?: string;\n /** Current sort order */\n sortOrder?: \"asc\" | \"desc\";\n /** Called to load/refresh items */\n onLoad?: () => void;\n /** Called when creating a new item */\n onCreate?: (data: Record<string, unknown>) => void;\n /** Called when updating an item */\n onUpdate?: (id: string, data: Record<string, unknown>) => void;\n /** Called when deleting an item */\n onDelete?: (id: string) => void;\n /** Called when selecting an item for editing */\n onSelect?: (id: string) => void;\n /** Called when viewing an item */\n onView?: (id: string) => void;\n /** Called when search query changes */\n onSearch?: (query: string) => void;\n /** Called when sort changes */\n onSort?: (field: string, order: \"asc\" | \"desc\") => void;\n /** Called to open create/edit modal */\n onOpenModal?: () => void;\n /** Called to close modal */\n onCloseModal?: () => void;\n /** Page title */\n title?: string;\n /** Singular entity name for labels */\n entityName?: string;\n /** Table column definitions */\n columns?: ColumnConfig[];\n /** Form field definitions for create/edit */\n fields?: FieldConfig[];\n /** Whether to show search input */\n showSearch?: boolean;\n /** Search input placeholder */\n searchPlaceholder?: string;\n /** Whether to show view action */\n showViewAction?: boolean;\n /** Template variant */\n variant?: CrudVariant;\n /** Additional class name */\n className?: string;\n}\n\nconst defaultColumns: ColumnConfig[] = [\n { key: \"name\", label: \"Name\", sortable: true },\n { key: \"status\", label: \"Status\", sortable: true },\n { key: \"createdAt\", label: \"Created\", sortable: true },\n];\n\nconst defaultFields: FieldConfig[] = [\n { key: \"name\", label: \"Name\", type: \"text\", required: true },\n {\n key: \"status\",\n label: \"Status\",\n type: \"select\",\n options: [\n { value: \"active\", label: \"Active\" },\n { value: \"inactive\", label: \"Inactive\" },\n ],\n },\n];\n\nexport const CrudTemplate: React.FC<CrudTemplateProps> = ({\n items = [],\n isLoading = false,\n error = null,\n selectedItem = null,\n isModalOpen = false,\n searchQuery = \"\",\n sortBy,\n sortOrder = \"asc\",\n onLoad,\n onCreate,\n onUpdate,\n onDelete,\n onSelect,\n onView,\n onSearch,\n onSort,\n onOpenModal,\n onCloseModal,\n title = \"Items\",\n entityName = \"Item\",\n columns = defaultColumns,\n fields = defaultFields,\n showSearch = true,\n searchPlaceholder = \"Search...\",\n showViewAction = false,\n variant = \"standard\",\n className,\n}) => {\n // Internal state for the form\n const [formData, setFormData] = useState<Record<string, unknown>>({});\n\n // Reset form when modal opens/closes or selected item changes\n React.useEffect(() => {\n if (isModalOpen) {\n setFormData(selectedItem || {});\n } else {\n setFormData({});\n }\n }, [isModalOpen, selectedItem]);\n\n const handleFormChange = (key: string, value: unknown) => {\n setFormData((prev) => ({ ...prev, [key]: value }));\n };\n\n const handleSubmit = (e: React.FormEvent) => {\n e.preventDefault();\n if (selectedItem) {\n onUpdate?.(selectedItem.id, formData);\n } else {\n onCreate?.(formData);\n }\n onCloseModal?.();\n };\n\n // Convert columns to DataTable format\n const tableColumns: Column<CrudItem>[] = columns.map((col) => ({\n key: col.key,\n header: col.label,\n sortable: col.sortable,\n width: col.width,\n render: col.render,\n }));\n\n // Row actions\n const rowActions: RowAction<CrudItem>[] = [\n ...(showViewAction && onView\n ? [\n {\n label: \"View\",\n icon: Eye,\n onClick: (row: CrudItem) => onView(row.id),\n },\n ]\n : []),\n ...(onSelect\n ? [\n {\n label: \"Edit\",\n icon: Edit,\n onClick: (row: CrudItem) => {\n onSelect(row.id);\n onOpenModal?.();\n },\n },\n ]\n : []),\n ...(onDelete\n ? [\n {\n label: \"Delete\",\n icon: Trash2,\n variant: \"danger\" as const,\n onClick: (row: CrudItem) => {\n if (\n confirm(\n `Are you sure you want to delete this ${entityName.toLowerCase()}?`,\n )\n ) {\n onDelete(row.id);\n }\n },\n },\n ]\n : []),\n ];\n\n const renderField = (field: FieldConfig) => {\n const value = (formData[field.key] as string) || \"\";\n\n if (field.type === \"select\" && field.options) {\n return (\n <FormField\n key={field.key}\n label={field.label}\n required={field.required}\n >\n <select\n value={value}\n onChange={(e) => handleFormChange(field.key, e.target.value)}\n className=\"w-full px-3 py-2 border border-[var(--color-border)] rounded-[var(--radius-md)] focus:ring-2 focus:ring-primary-500\"\n >\n <option value=\"\">Select {field.label.toLowerCase()}</option>\n {field.options.map((opt) => (\n <option key={opt.value} value={opt.value}>\n {opt.label}\n </option>\n ))}\n </select>\n </FormField>\n );\n }\n\n if (field.type === \"textarea\") {\n return (\n <FormField\n key={field.key}\n label={field.label}\n required={field.required}\n >\n <textarea\n value={value}\n onChange={(e) => handleFormChange(field.key, e.target.value)}\n placeholder={field.placeholder}\n rows={4}\n className=\"w-full px-3 py-2 border border-[var(--color-border)] rounded-[var(--radius-md)] focus:ring-2 focus:ring-primary-500\"\n />\n </FormField>\n );\n }\n\n return (\n <FormField key={field.key} label={field.label} required={field.required}>\n <Input\n type={field.type || \"text\"}\n value={value}\n onChange={(e) => handleFormChange(field.key, e.target.value)}\n placeholder={field.placeholder}\n />\n </FormField>\n );\n };\n\n const renderModal = () => (\n <Modal\n isOpen={isModalOpen}\n onClose={() => onCloseModal?.()}\n title={selectedItem ? `Edit ${entityName}` : `New ${entityName}`}\n size=\"md\"\n footer={\n <HStack gap=\"md\" justify=\"end\">\n <Button variant=\"ghost\" onClick={() => onCloseModal?.()}>\n Cancel\n </Button>\n <Button type=\"submit\" form=\"crud-form\">\n {selectedItem ? \"Save Changes\" : \"Create\"}\n </Button>\n </HStack>\n }\n >\n <form id=\"crud-form\" onSubmit={handleSubmit}>\n <VStack gap=\"md\">{fields.map(renderField)}</VStack>\n </form>\n </Modal>\n );\n\n const renderMinimal = () => (\n <VStack gap=\"md\" className={className}>\n {error && (\n <Alert\n variant=\"error\"\n actions={\n onLoad && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onLoad}\n leftIcon={<RefreshCw className=\"h-4 w-4\" />}\n >\n Retry\n </Button>\n )\n }\n >\n {typeof error === \"string\"\n ? error\n : error?.message || \"Failed to load data\"}\n </Alert>\n )}\n\n <DataTable\n columns={tableColumns}\n entity={items}\n isLoading={isLoading}\n rowActions={rowActions.length > 0 ? rowActions : undefined}\n sortBy={sortBy}\n sortDirection={sortOrder}\n onSort={onSort ? (key, dir) => onSort(key, dir) : undefined}\n emptyTitle={`No ${title.toLowerCase()}`}\n emptyDescription={`Get started by creating your first ${entityName.toLowerCase()}.`}\n emptyAction={\n onOpenModal\n ? { label: `Add ${entityName}`, onClick: onOpenModal }\n : undefined\n }\n />\n\n {renderModal()}\n </VStack>\n );\n\n const renderStandard = () => (\n <Container size=\"xl\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\">\n <HStack justify=\"between\" align=\"center\">\n <Typography variant=\"h2\">{title}</Typography>\n {onOpenModal && (\n <Button\n onClick={onOpenModal}\n leftIcon={<Plus className=\"h-4 w-4\" />}\n >\n Add {entityName}\n </Button>\n )}\n </HStack>\n\n {error && (\n <Alert\n variant=\"error\"\n actions={\n onLoad && (\n <Button\n variant=\"ghost\"\n size=\"sm\"\n onClick={onLoad}\n leftIcon={<RefreshCw className=\"h-4 w-4\" />}\n >\n Retry\n </Button>\n )\n }\n >\n {typeof error === \"string\"\n ? error\n : error?.message || \"Failed to load data\"}\n </Alert>\n )}\n\n <DataTable\n columns={tableColumns}\n entity={items}\n isLoading={isLoading}\n rowActions={rowActions.length > 0 ? rowActions : undefined}\n sortBy={sortBy}\n sortDirection={sortOrder}\n onSort={onSort ? (key, dir) => onSort(key, dir) : undefined}\n searchable={showSearch}\n searchValue={searchQuery}\n onSearch={onSearch}\n searchPlaceholder={searchPlaceholder}\n emptyTitle={`No ${title.toLowerCase()}`}\n emptyDescription={`Get started by creating your first ${entityName.toLowerCase()}.`}\n emptyAction={\n onOpenModal\n ? { label: `Add ${entityName}`, onClick: onOpenModal }\n : undefined\n }\n />\n\n {renderModal()}\n </VStack>\n </Container>\n );\n\n const renderFull = () => (\n <Container size=\"xl\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\">\n <PageHeader\n title={title}\n subtitle={`Manage your ${title.toLowerCase()}`}\n actions={[\n ...(onOpenModal\n ? [\n {\n label: `Add ${entityName}`,\n icon: Plus,\n onClick: onOpenModal,\n variant: \"primary\" as const,\n },\n ]\n : []),\n ...(onLoad\n ? [\n {\n label: \"Refresh\",\n icon: RefreshCw,\n onClick: onLoad,\n variant: \"ghost\" as const,\n },\n ]\n : []),\n ]}\n />\n\n {error && (\n <Alert variant=\"error\" dismissible onDismiss={() => {}}>\n {typeof error === \"string\"\n ? error\n : error?.message || \"Failed to load data\"}\n </Alert>\n )}\n\n <DataTable\n columns={tableColumns}\n entity={items}\n isLoading={isLoading}\n rowActions={rowActions.length > 0 ? rowActions : undefined}\n sortBy={sortBy}\n sortDirection={sortOrder}\n onSort={onSort ? (key, dir) => onSort(key, dir) : undefined}\n searchable={showSearch}\n searchValue={searchQuery}\n onSearch={onSearch}\n searchPlaceholder={searchPlaceholder}\n selectable\n bulkActions={\n onDelete\n ? [\n {\n label: \"Delete Selected\",\n icon: Trash2,\n variant: \"danger\",\n onClick: (rows) => {\n if (\n confirm(`Delete ${rows.length} ${title.toLowerCase()}?`)\n ) {\n rows.forEach((row) => onDelete(row.id));\n }\n },\n },\n ]\n : undefined\n }\n emptyTitle={`No ${title.toLowerCase()} yet`}\n emptyDescription={`Create your first ${entityName.toLowerCase()} to get started.`}\n emptyAction={\n onOpenModal\n ? { label: `Create ${entityName}`, onClick: onOpenModal }\n : undefined\n }\n />\n\n {renderModal()}\n </VStack>\n </Container>\n );\n\n switch (variant) {\n case \"minimal\":\n return renderMinimal();\n case \"full\":\n return renderFull();\n default:\n return renderStandard();\n }\n};\n\nCrudTemplate.displayName = \"CrudTemplate\";\n\nexport default CrudTemplate;\n","/**\n * SettingsTemplate\n *\n * A presentational template for settings/preferences features.\n * Supports sections with various input types and save/reset operations.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Container } from \"../molecules/Container\";\nimport { VStack, HStack } from \"../atoms/Stack\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { Input } from \"../atoms/Input\";\nimport { Select } from \"../atoms/Select\";\nimport { Checkbox } from \"../atoms/Checkbox\";\nimport { Card, CardHeader, CardContent } from \"../atoms/Card\";\nimport { Alert } from \"../molecules/Alert\";\nimport { Divider } from \"../atoms/Divider\";\nimport { Save, RotateCcw, Undo2 } from \"lucide-react\";\n\nexport type SettingsVariant = \"minimal\" | \"standard\" | \"full\";\n\nexport interface SettingsFieldConfig {\n key: string;\n label: string;\n type: \"text\" | \"email\" | \"number\" | \"select\" | \"toggle\" | \"checkbox\";\n description?: string;\n placeholder?: string;\n options?: string[] | Array<{ value: string; label: string }>;\n}\n\nexport interface SettingsSectionConfig {\n title: string;\n description?: string;\n fields: SettingsFieldConfig[];\n}\n\nexport interface SettingsTemplateProps {\n /** Current settings values */\n settings: Record<string, unknown>;\n /** Whether settings are being saved */\n isSaving?: boolean;\n /** Whether there are unsaved changes */\n hasChanges?: boolean;\n /** Error object if save failed */\n error?: Error | string | null;\n /** Success message after save */\n successMessage?: string | null;\n /** Called when saving settings */\n onSave?: (settings: Record<string, unknown>) => void;\n /** Called when a setting value changes */\n onChange?: (key: string, value: unknown) => void;\n /** Called to reset to default settings */\n onReset?: () => void;\n /** Called to revert unsaved changes */\n onRevert?: () => void;\n /** Called to dismiss success message */\n onDismissSuccess?: () => void;\n /** Page title */\n title?: string;\n /** Settings sections */\n sections?: SettingsSectionConfig[];\n /** Whether to show reset to defaults button */\n showResetToDefaults?: boolean;\n /** Template variant */\n variant?: SettingsVariant;\n /** Additional class name */\n className?: string;\n}\n\nconst defaultSections: SettingsSectionConfig[] = [\n {\n title: \"General\",\n description: \"General application settings\",\n fields: [\n {\n key: \"theme\",\n label: \"Theme\",\n type: \"select\",\n options: [\"light\", \"dark\", \"system\"],\n },\n {\n key: \"language\",\n label: \"Language\",\n type: \"select\",\n options: [\"en\", \"es\", \"fr\", \"de\"],\n },\n ],\n },\n {\n title: \"Notifications\",\n description: \"Notification preferences\",\n fields: [\n {\n key: \"emailNotifications\",\n label: \"Email Notifications\",\n type: \"toggle\",\n description: \"Receive email notifications\",\n },\n {\n key: \"pushNotifications\",\n label: \"Push Notifications\",\n type: \"toggle\",\n description: \"Receive push notifications\",\n },\n ],\n },\n];\n\nexport const SettingsTemplate: React.FC<SettingsTemplateProps> = ({\n settings = {},\n isSaving = false,\n hasChanges = false,\n error = null,\n successMessage = null,\n onSave,\n onChange,\n onReset,\n onRevert,\n onDismissSuccess,\n title = \"Settings\",\n sections = defaultSections,\n showResetToDefaults = true,\n variant = \"standard\",\n className,\n}) => {\n const handleSave = () => {\n onSave?.(settings);\n };\n\n const renderField = (field: SettingsFieldConfig) => {\n const value = settings[field.key];\n\n if (field.type === \"toggle\" || field.type === \"checkbox\") {\n return (\n <HStack\n key={field.key}\n justify=\"between\"\n align=\"center\"\n className=\"py-2\"\n >\n <VStack gap=\"xs\">\n <Typography variant=\"body\" weight=\"medium\">\n {field.label}\n </Typography>\n {field.description && (\n <Typography variant=\"small\" color=\"muted\">\n {field.description}\n </Typography>\n )}\n </VStack>\n <label className=\"relative inline-flex items-center cursor-pointer\">\n <input\n type=\"checkbox\"\n checked={Boolean(value)}\n onChange={(e) => onChange?.(field.key, e.target.checked)}\n className=\"sr-only peer\"\n />\n <div\n className={cn(\n \"w-11 h-6 rounded-[var(--radius-full)] transition-colors\",\n \"bg-[var(--color-muted)] peer-checked:bg-primary-600\",\n \"after:content-[''] after:absolute after:top-[2px] after:left-[2px]\",\n \"after:bg-[var(--color-card)] after:rounded-[var(--radius-full)] after:h-5 after:w-5 after:transition-all\",\n \"peer-checked:after:translate-x-5\",\n )}\n />\n </label>\n </HStack>\n );\n }\n\n if (field.type === \"select\") {\n const options =\n field.options?.map((opt) =>\n typeof opt === \"string\" ? { value: opt, label: opt } : opt,\n ) || [];\n\n return (\n <VStack key={field.key} gap=\"xs\" className=\"py-2\">\n <Typography variant=\"body\" weight=\"medium\">\n {field.label}\n </Typography>\n {field.description && (\n <Typography variant=\"small\" color=\"muted\">\n {field.description}\n </Typography>\n )}\n <Select\n value={(value as string) || \"\"}\n onChange={(e) => onChange?.(field.key, e.target.value)}\n options={options}\n className=\"mt-1\"\n />\n </VStack>\n );\n }\n\n return (\n <VStack key={field.key} gap=\"xs\" className=\"py-2\">\n <Typography variant=\"body\" weight=\"medium\">\n {field.label}\n </Typography>\n {field.description && (\n <Typography variant=\"small\" color=\"muted\">\n {field.description}\n </Typography>\n )}\n <Input\n type={field.type}\n value={(value as string) || \"\"}\n onChange={(e) => onChange?.(field.key, e.target.value)}\n placeholder={field.placeholder}\n className=\"mt-1\"\n />\n </VStack>\n );\n };\n\n const renderSection = (section: SettingsSectionConfig, index: number) => (\n <Card key={index}>\n <CardHeader>\n <Typography variant=\"h4\">{section.title}</Typography>\n {section.description && (\n <Typography variant=\"small\" color=\"muted\">\n {section.description}\n </Typography>\n )}\n </CardHeader>\n <CardContent>\n <VStack gap=\"sm\" className=\"divide-y divide-[var(--color-border)]\">\n {section.fields.map(renderField)}\n </VStack>\n </CardContent>\n </Card>\n );\n\n const renderMinimal = () => (\n <VStack gap=\"lg\" className={className}>\n {error && (\n <Alert variant=\"error\">\n {typeof error === \"string\"\n ? error\n : error?.message || \"Failed to save settings\"}\n </Alert>\n )}\n\n {successMessage && (\n <Alert variant=\"success\" dismissible onDismiss={onDismissSuccess}>\n {successMessage}\n </Alert>\n )}\n\n <VStack gap=\"md\">\n {sections.flatMap((section) => section.fields).map(renderField)}\n </VStack>\n\n <HStack gap=\"md\" justify=\"end\">\n {hasChanges && onRevert && (\n <Button variant=\"ghost\" onClick={onRevert}>\n Revert\n </Button>\n )}\n <Button\n onClick={handleSave}\n isLoading={isSaving}\n disabled={!hasChanges}\n >\n Save\n </Button>\n </HStack>\n </VStack>\n );\n\n const renderStandard = () => (\n <Container size=\"md\" padding=\"lg\" className={className}>\n <VStack gap=\"lg\">\n <HStack justify=\"between\" align=\"center\">\n <Typography variant=\"h2\">{title}</Typography>\n <HStack gap=\"sm\">\n {hasChanges && onRevert && (\n <Button\n variant=\"ghost\"\n onClick={onRevert}\n leftIcon={<Undo2 className=\"h-4 w-4\" />}\n >\n Revert\n </Button>\n )}\n <Button\n onClick={handleSave}\n isLoading={isSaving}\n disabled={!hasChanges}\n leftIcon={<Save className=\"h-4 w-4\" />}\n >\n Save Changes\n </Button>\n </HStack>\n </HStack>\n\n {error && (\n <Alert variant=\"error\">\n {typeof error === \"string\"\n ? error\n : error?.message || \"Failed to save settings\"}\n </Alert>\n )}\n\n {successMessage && (\n <Alert variant=\"success\" dismissible onDismiss={onDismissSuccess}>\n {successMessage}\n </Alert>\n )}\n\n <VStack gap=\"lg\">{sections.map(renderSection)}</VStack>\n\n {showResetToDefaults && onReset && (\n <>\n <Divider />\n <HStack justify=\"between\" align=\"center\">\n <VStack gap=\"xs\">\n <Typography variant=\"h5\">Reset to Defaults</Typography>\n <Typography variant=\"small\" color=\"muted\">\n Restore all settings to their default values\n </Typography>\n </VStack>\n <Button\n variant=\"danger\"\n onClick={() => {\n if (\n confirm(\n \"Are you sure you want to reset all settings to defaults?\",\n )\n ) {\n onReset();\n }\n }}\n leftIcon={<RotateCcw className=\"h-4 w-4\" />}\n >\n Reset All\n </Button>\n </HStack>\n </>\n )}\n </VStack>\n </Container>\n );\n\n const renderFull = () => (\n <Container size=\"lg\" padding=\"lg\" className={className}>\n <VStack gap=\"xl\">\n <HStack justify=\"between\" align=\"start\">\n <VStack gap=\"xs\">\n <Typography variant=\"h2\">{title}</Typography>\n <Typography variant=\"body\" color=\"muted\">\n Manage your application preferences and configuration\n </Typography>\n </VStack>\n <HStack gap=\"sm\">\n {hasChanges && onRevert && (\n <Button\n variant=\"secondary\"\n onClick={onRevert}\n leftIcon={<Undo2 className=\"h-4 w-4\" />}\n >\n Discard Changes\n </Button>\n )}\n <Button\n onClick={handleSave}\n isLoading={isSaving}\n disabled={!hasChanges}\n leftIcon={<Save className=\"h-4 w-4\" />}\n >\n Save Changes\n </Button>\n </HStack>\n </HStack>\n\n {error && (\n <Alert variant=\"error\" title=\"Save Failed\">\n {typeof error === \"string\"\n ? error\n : error?.message || \"Failed to save settings. Please try again.\"}\n </Alert>\n )}\n\n {successMessage && (\n <Alert variant=\"success\" dismissible onDismiss={onDismissSuccess}>\n {successMessage}\n </Alert>\n )}\n\n {hasChanges && (\n <Alert variant=\"warning\" title=\"Unsaved Changes\">\n You have unsaved changes. Don't forget to save before leaving.\n </Alert>\n )}\n\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {sections.map(renderSection)}\n </div>\n\n {showResetToDefaults && onReset && (\n <Card className=\"border-[var(--color-error)]/30 bg-[var(--color-error)]/10\">\n <CardContent className=\"p-6\">\n <HStack justify=\"between\" align=\"center\">\n <VStack gap=\"xs\">\n <Typography\n variant=\"h5\"\n className=\"text-[var(--color-error)]\"\n >\n Danger Zone\n </Typography>\n <Typography\n variant=\"small\"\n className=\"text-[var(--color-error)]/80\"\n >\n Reset all settings to their factory defaults. This action\n cannot be undone.\n </Typography>\n </VStack>\n <Button\n variant=\"danger\"\n onClick={() => {\n if (\n confirm(\n \"Are you sure you want to reset ALL settings? This cannot be undone.\",\n )\n ) {\n onReset();\n }\n }}\n leftIcon={<RotateCcw className=\"h-4 w-4\" />}\n >\n Reset Everything\n </Button>\n </HStack>\n </CardContent>\n </Card>\n )}\n </VStack>\n </Container>\n );\n\n switch (variant) {\n case \"minimal\":\n return renderMinimal();\n case \"full\":\n return renderFull();\n default:\n return renderStandard();\n }\n};\n\nSettingsTemplate.displayName = \"SettingsTemplate\";\n\nexport default SettingsTemplate;\n","/**\n * GameTemplate\n *\n * A presentational template for game applications.\n * Includes a main game canvas/area, HUD overlay, and an optional debug sidebar.\n * **Atomic Design**: Composed using Box, Typography, and Layout molecules/atoms.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\nimport { LucideIcon, Play, Pause, RotateCcw } from \"lucide-react\";\n\nexport interface GameTemplateProps {\n /** Title of the game */\n title?: string;\n /** The main game canvas or content */\n children: React.ReactNode;\n /** HUD overlay content (scores, health, etc.) */\n hud?: React.ReactNode;\n /** Debug panel content */\n debugPanel?: React.ReactNode;\n /** Whether the debug panel is visible */\n showDebugPanel?: boolean;\n /** Game controls */\n controls?: {\n onPlay?: () => void;\n onPause?: () => void;\n onReset?: () => void;\n isPlaying?: boolean;\n };\n /** Additional class name */\n className?: string;\n}\n\nexport const GameTemplate: React.FC<GameTemplateProps> = ({\n title = \"Game\",\n children,\n hud,\n debugPanel,\n showDebugPanel = false,\n controls,\n className,\n}) => {\n return (\n <Box\n display=\"flex\"\n fullHeight\n className={cn(\"flex-col lg:flex-row\", className)}\n >\n {/* Main Game Area */}\n <Box display=\"flex\" className=\"flex-1 flex-col\">\n {/* Header with title and controls */}\n <Box\n padding=\"md\"\n border\n className=\"border-b-2 border-x-0 border-t-0 border-[var(--color-border)] flex items-center justify-between\"\n >\n <Typography variant=\"h4\">{title}</Typography>\n\n {controls && (\n <div className=\"flex items-center gap-2\">\n {controls.isPlaying ? (\n <Button\n variant=\"secondary\"\n size=\"sm\"\n leftIcon={<Pause className=\"h-4 w-4\" />}\n onClick={controls.onPause}\n >\n Pause\n </Button>\n ) : (\n <Button\n variant=\"primary\"\n size=\"sm\"\n leftIcon={<Play className=\"h-4 w-4\" />}\n onClick={controls.onPlay}\n >\n Play\n </Button>\n )}\n <Button\n variant=\"ghost\"\n size=\"sm\"\n leftIcon={<RotateCcw className=\"h-4 w-4\" />}\n onClick={controls.onReset}\n >\n Reset\n </Button>\n </div>\n )}\n </Box>\n\n {/* Game Canvas Area */}\n <Box\n position=\"relative\"\n fullWidth\n className=\"flex-1 bg-[var(--color-muted)]\"\n >\n {/* Main game content */}\n {children}\n\n {/* HUD Overlay */}\n {hud && (\n <Box\n position=\"absolute\"\n className=\"top-0 left-0 right-0 pointer-events-none\"\n >\n <Box padding=\"md\" className=\"pointer-events-auto w-fit\">\n {hud}\n </Box>\n </Box>\n )}\n </Box>\n </Box>\n\n {/* Debug Sidebar */}\n {showDebugPanel && debugPanel && (\n <Box\n bg=\"surface\"\n border\n shadow=\"sm\"\n overflow=\"auto\"\n className=\"w-full lg:w-80 lg:border-l-2 lg:border-t-0 border-t-2 border-[var(--color-border)]\"\n >\n <Box\n padding=\"md\"\n border\n className=\"border-b-2 border-x-0 border-t-0 border-[var(--color-border)]\"\n >\n <Typography variant=\"h6\">Debug Panel</Typography>\n </Box>\n <Box padding=\"md\">{debugPanel}</Box>\n </Box>\n )}\n </Box>\n );\n};\n\nGameTemplate.displayName = \"GameTemplate\";\n","/**\n * GenericAppTemplate\n *\n * A simple, generic template for any application.\n * Includes a header with title and actions, and a main content area.\n * **Atomic Design**: Composed using Box, Typography, and Button atoms.\n */\n\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Box } from \"../atoms/Box\";\nimport { Typography } from \"../atoms/Typography\";\nimport { Button } from \"../atoms/Button\";\n\nexport interface GenericAppTemplateProps {\n /** Page title */\n title: string;\n /** Subtitle or description */\n subtitle?: string;\n /** Main content */\n children: React.ReactNode;\n /** Header actions (buttons, links) */\n headerActions?: React.ReactNode;\n /** Footer content */\n footer?: React.ReactNode;\n /** Additional class name */\n className?: string;\n}\n\nexport const GenericAppTemplate: React.FC<GenericAppTemplateProps> = ({\n title,\n subtitle,\n children,\n headerActions,\n footer,\n className,\n}) => {\n return (\n <Box display=\"flex\" fullHeight className={cn(\"flex-col\", className)}>\n {/* Header */}\n <Box\n padding=\"md\"\n border\n className=\"border-b-2 border-x-0 border-t-0 border-[var(--color-border)] flex items-center justify-between flex-shrink-0\"\n >\n <div>\n <Typography variant=\"h3\">{title}</Typography>\n {subtitle && (\n <Typography variant=\"body2\" color=\"secondary\" className=\"mt-1\">\n {subtitle}\n </Typography>\n )}\n </div>\n {headerActions && (\n <div className=\"flex items-center gap-2\">{headerActions}</div>\n )}\n </Box>\n\n {/* Main Content */}\n <Box fullWidth overflow=\"auto\" className=\"flex-1\">\n <Box padding=\"lg\">{children}</Box>\n </Box>\n\n {/* Footer */}\n {footer && (\n <Box\n padding=\"md\"\n border\n bg=\"muted\"\n className=\"border-t-2 border-x-0 border-b-0 border-[var(--color-border)] flex-shrink-0\"\n >\n {footer}\n </Box>\n )}\n </Box>\n );\n};\n\nGenericAppTemplate.displayName = \"GenericAppTemplate\";\n"]}