@hyddenlabs/hydn-ui 0.0.1 → 0.3.0-alpha.2

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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/forms/button/button.tsx","../src/components/forms/input/input.tsx","../src/components/forms/checkbox/checkbox.tsx","../src/components/forms/radio-group/radio-group.tsx","../src/components/forms/radio/radio.tsx","../src/components/forms/select/select.tsx","../src/components/forms/select/select-item.tsx","../src/components/forms/multi-select/multi-select.tsx","../src/components/forms/textarea/textarea.tsx","../src/components/forms/switch/switch.tsx","../src/components/forms/slider/slider.tsx","../src/components/forms/button-group/button-group.tsx","../src/components/typography/text/text.tsx","../src/components/layout/stack/stack.tsx","../src/components/forms/form-field/form-field.tsx","../src/components/forms/input-group/input-group.tsx","../src/components/forms/calendar/calendar.tsx","../src/components/forms/date-picker/date-picker.tsx","../src/components/navigation/nav/nav.tsx","../src/components/layout/container/container.tsx","../src/components/navigation/navbar/navbar.tsx","../src/components/navigation/navbar/navbar-brand.tsx","../src/components/navigation/navbar/navbar-link.tsx","../src/components/navigation/tabs/tabs.tsx","../src/components/navigation/dropdown/dropdown.tsx","../src/components/navigation/breadcrumbs/breadcrumbs.tsx","../src/components/navigation/pagination/pagination.tsx","../src/components/navigation/sidebar/sidebar.tsx","../src/components/navigation/stepper/stepper.tsx","../src/components/feedback/toast/toast.tsx","../src/components/feedback/tooltip/tooltip.tsx","../src/components/feedback/overlay/useOverlay.ts","../src/components/feedback/modal/modal.tsx","../src/components/feedback/dialog/dialog.tsx","../src/components/feedback/dialog/delete-dialog.tsx","../src/components/feedback/popover/popover.tsx","../src/components/feedback/alert/alert.tsx","../src/components/feedback/spinner/spinner.tsx","../src/components/feedback/progress-bar/progress-bar.tsx","../src/components/feedback/skeleton/skeleton.tsx","../src/components/data-display/badge/badge.tsx","../src/components/data-display/badge/status-label.tsx","../src/components/data-display/avatar/avatar.tsx","../src/components/data-display/empty-state/empty-state.tsx","../src/components/data-display/list/list.tsx","../src/components/data-display/table/table.tsx","../src/components/data-display/data-table/use-table.ts","../src/components/data-display/data-table/data-table.tsx","../src/components/data-display/chip/chip.tsx","../src/components/data-display/timeline/timeline.tsx","../src/components/layout/grid/grid.tsx","../src/components/typography/heading/heading.tsx","../src/components/data-display/pricing/pricing-table.tsx","../src/components/layout/card/card.tsx","../src/components/layout/card/card-header.tsx","../src/components/layout/card/card-footer.tsx","../src/components/data-display/pricing/pricing-tier.tsx","../src/components/data-display/code-block/code-block.tsx","../src/components/layout/divider/divider.tsx","../src/components/layout/drawer/drawer.tsx","../src/components/layout/page/page.tsx","../src/components/layout/accordion/accordion.tsx","../src/components/layout/hero/hero.tsx","../src/components/layout/feature-section/feature-section.tsx","../src/components/typography/link/link.tsx","../src/components/layout/footer/footer.tsx","../src/hooks/useScrollReset.ts","../src/components/layout/left-nav-layout/left-nav-layout.tsx","../src/components/layout/left-nav-layout/left-nav-item.tsx","../src/components/layout/left-nav-layout/left-nav-section.tsx","../src/components/typography/code/code.tsx","../src/components/system/theme-provider/theme-provider.tsx","../src/components/system/color-mode-toggle/color-mode-toggle.tsx"],"names":["jsx","jsxs","useState","useRef","useEffect","IconX","createContext","itemEls","React","IconCheck","useCallback","Fragment","IconChevronDown","Link","RouterLink","navElement","NavLink","useMemo","useContext"],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\n\nexport type ButtonProps = {\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n ariaLabel?: string;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n className?: string;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n // Color variants\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\n // Style modifiers\n style?: 'solid' | 'outline' | 'ghost' | 'link' | 'soft';\n // Sizes\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n rounded?: 'default' | 'pill' | 'square' | 'circle';\n loading?: boolean;\n fullWidth?: boolean;\n wide?: boolean;\n active?: boolean;\n};\n\n/**\n * Accessible Button component\n * - Color variants: neutral, primary, secondary, accent, info, success, warning, error\n * - Style modifiers: solid (default), outline, ghost, link, soft\n * - Sizes: xs, sm, md (default), lg, xl\n * - Supports icons with flexible positioning (left/right)\n * - Icon-only buttons require `ariaLabel` for accessibility\n */\nfunction Button({\n children,\n onClick,\n ariaLabel,\n disabled = false,\n type = 'button',\n className = '',\n icon,\n iconPosition = 'left',\n variant = 'neutral',\n style = 'solid',\n size = 'md',\n rounded = 'default',\n loading = false,\n fullWidth = false,\n wide = false,\n active = false\n}: Readonly<ButtonProps>) {\n const isIconOnly = icon && !children;\n\n // Icon-only buttons MUST have an aria-label for accessibility\n if (isIconOnly && !ariaLabel) {\n // eslint-disable-next-line no-console\n console.warn('Button: Icon-only buttons require an ariaLabel for accessibility');\n }\n\n // Color variants with background and text colors for solid style\n const solidVariantClasses = {\n neutral: 'bg-neutral text-neutral-foreground hover:bg-neutral/90 active:bg-neutral/80',\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary/80',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90 active:bg-secondary/80',\n accent: 'bg-accent text-accent-foreground hover:bg-accent/90 active:bg-accent/80',\n info: 'bg-info text-info-foreground hover:bg-info/90 active:bg-info/80',\n success: 'bg-success text-success-foreground hover:bg-success/90 active:bg-success/80',\n warning: 'bg-warning text-warning-foreground hover:bg-warning/90 active:bg-warning/80',\n error: 'bg-destructive text-destructive-foreground hover:bg-destructive/90 active:bg-destructive/80'\n };\n\n const outlineVariantClasses = {\n neutral: 'border-2 border-neutral text-neutral bg-transparent hover:bg-neutral hover:text-neutral-foreground',\n primary: 'border-2 border-primary text-primary bg-transparent hover:bg-primary hover:text-primary-foreground',\n secondary:\n 'border-2 border-secondary text-secondary bg-transparent hover:bg-secondary hover:text-secondary-foreground',\n accent: 'border-2 border-accent text-accent bg-transparent hover:bg-accent hover:text-accent-foreground',\n info: 'border-2 border-info text-info bg-transparent hover:bg-info hover:text-info-foreground',\n success: 'border-2 border-success text-success bg-transparent hover:bg-success hover:text-success-foreground',\n warning: 'border-2 border-warning text-warning bg-transparent hover:bg-warning hover:text-warning-foreground',\n error:\n 'border-2 border-destructive text-destructive bg-transparent hover:bg-destructive hover:text-destructive-foreground'\n };\n\n const ghostVariantClasses = {\n neutral: 'bg-transparent text-foreground hover:bg-neutral/10 active:bg-neutral/20',\n primary: 'bg-transparent text-primary hover:bg-primary/10 active:bg-primary/20',\n secondary: 'bg-transparent text-secondary hover:bg-secondary/10 active:bg-secondary/20',\n accent: 'bg-transparent text-accent hover:bg-accent/10 active:bg-accent/20',\n info: 'bg-transparent text-info hover:bg-info/10 active:bg-info/20',\n success: 'bg-transparent text-success hover:bg-success/10 active:bg-success/20',\n warning: 'bg-transparent text-warning hover:bg-warning/10 active:bg-warning/20',\n error: 'bg-transparent text-destructive hover:bg-destructive/10 active:bg-destructive/20'\n };\n\n const softVariantClasses = {\n neutral: 'bg-neutral/20 text-foreground hover:bg-neutral/30 active:bg-neutral/40',\n primary: 'bg-primary/20 text-primary hover:bg-primary/30 active:bg-primary/40',\n secondary: 'bg-secondary/20 text-secondary hover:bg-secondary/30 active:bg-secondary/40',\n accent: 'bg-accent/20 text-accent hover:bg-accent/30 active:bg-accent/40',\n info: 'bg-info/20 text-info hover:bg-info/30 active:bg-info/40',\n success: 'bg-success/20 text-success hover:bg-success/30 active:bg-success/40',\n warning: 'bg-warning/20 text-warning hover:bg-warning/30 active:bg-warning/40',\n error: 'bg-destructive/20 text-destructive hover:bg-destructive/30 active:bg-destructive/40'\n };\n\n const linkVariantClasses = {\n neutral: 'bg-transparent text-foreground underline-offset-4 hover:underline',\n primary: 'bg-transparent text-primary underline-offset-4 hover:underline',\n secondary: 'bg-transparent text-secondary underline-offset-4 hover:underline',\n accent: 'bg-transparent text-accent underline-offset-4 hover:underline',\n info: 'bg-transparent text-info underline-offset-4 hover:underline',\n success: 'bg-transparent text-success underline-offset-4 hover:underline',\n warning: 'bg-transparent text-warning underline-offset-4 hover:underline',\n error: 'bg-transparent text-destructive underline-offset-4 hover:underline'\n };\n\n // Style modifiers\n const getStyleClasses = () => {\n const variantKey = variant as keyof typeof solidVariantClasses;\n\n switch (style) {\n case 'outline':\n return `${outlineVariantClasses[variantKey]} active:scale-95`;\n case 'ghost':\n return ghostVariantClasses[variantKey];\n case 'link':\n return linkVariantClasses[variantKey];\n case 'soft':\n return softVariantClasses[variantKey];\n case 'solid':\n default:\n return `${solidVariantClasses[variantKey]} shadow-sm hover:shadow-md`;\n }\n };\n\n // Sizes\n const sizeClasses = {\n xs: 'h-6 px-2 text-xs min-h-6',\n sm: 'h-8 px-3 text-sm min-h-8',\n md: 'h-10 px-4 text-base min-h-10',\n lg: 'h-12 px-6 text-lg min-h-12',\n xl: 'h-14 px-8 text-xl min-h-14'\n };\n\n const roundedClasses = {\n default: 'rounded-md',\n pill: 'rounded-full',\n square: 'rounded-none aspect-square',\n circle: 'rounded-full aspect-square'\n };\n\n // Show loading spinner or icon\n const displayIcon = loading ? (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n ) : (\n icon\n );\n\n const styleClasses = getStyleClasses();\n const widthClasses = fullWidth ? 'w-full' : wide ? 'px-8' : '';\n const activeClasses = active ? 'active:scale-95' : '';\n\n return (\n <button\n type={type}\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled || loading}\n className={`inline-flex items-center justify-center ${roundedClasses[rounded]} font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 ${styleClasses} ${sizeClasses[size]} ${\n isIconOnly ? 'p-0' : ''\n } ${widthClasses} ${activeClasses} ${className}`}\n >\n {displayIcon && iconPosition === 'left' && (\n <span className={`inline-flex ${children ? 'mr-2' : ''}`}>{displayIcon}</span>\n )}\n {children}\n {displayIcon && iconPosition === 'right' && (\n <span className={`inline-flex ${children ? 'ml-2' : ''}`}>{displayIcon}</span>\n )}\n </button>\n );\n}\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type InputProps = {\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n placeholder?: string;\n disabled?: boolean;\n type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n required?: boolean;\n size?: 'sm' | 'md' | 'lg';\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Input component with validation state support\n */\nfunction Input({\n value,\n onChange,\n placeholder,\n disabled = false,\n type = 'text',\n className = '',\n ariaLabel,\n id,\n name,\n required = false,\n size = 'md',\n validationState = 'default'\n}: Readonly<InputProps>) {\n const sizeClasses = {\n sm: 'h-8 px-3 py-1.5 text-sm',\n md: 'h-10 px-3 py-2 text-sm',\n lg: 'h-12 px-4 py-3 text-base'\n };\n\n const validationClasses = {\n default: 'border-input focus:border-ring',\n error: 'border-destructive focus:border-destructive',\n success: 'border-success focus:border-success',\n warning: 'border-warning focus:border-warning'\n };\n\n return (\n <input\n type={type}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n required={required}\n aria-invalid={validationState === 'error'}\n className={`flex w-full rounded-lg border bg-background shadow-sm transition-all duration-200 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring/20 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 ${sizeClasses[size]} ${validationClasses[validationState]} ${className}`}\n />\n );\n}\n\nInput.displayName = 'Input';\n\nexport default Input;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type CheckboxProps = {\n checked?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Checkbox component\n */\nfunction Checkbox({\n checked,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n validationState = 'default'\n}: Readonly<CheckboxProps>) {\n const validationClasses = {\n default: 'border-input focus:ring-ring',\n error: 'border-destructive focus:ring-destructive',\n success: 'border-success focus:ring-success',\n warning: 'border-warning focus:ring-warning'\n };\n\n return (\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-invalid={validationState === 'error'}\n id={id}\n name={name}\n className={`h-4 w-4 rounded border-2 bg-background text-primary-foreground transition-all duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 checked:bg-primary checked:border-primary checked:hover:bg-primary/90 hover:border-primary/50 hover:shadow-sm cursor-pointer accent-primary ${validationClasses[validationState]} ${className}`}\n />\n );\n}\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import { ReactNode, createContext, useContext } from 'react';\n\nexport type RadioGroupProps = {\n children: ReactNode;\n name: string;\n label?: string;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\ntype RadioGroupContextValue = {\n name: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport const useRadioGroup = () => {\n const context = useContext(RadioGroupContext);\n return context;\n};\n\n/**\n * RadioGroup - Wrapper for radio inputs with consistent spacing and shared name\n */\nfunction RadioGroup({\n children,\n name,\n label,\n orientation = 'vertical',\n className = '',\n value,\n onChange\n}: Readonly<RadioGroupProps>) {\n const orientationClasses = orientation === 'horizontal' ? 'flex flex-row gap-4' : 'flex flex-col gap-2';\n\n return (\n <RadioGroupContext.Provider value={{ name, value, onChange }}>\n <fieldset className={className}>\n {label && <legend className=\"text-sm font-medium text-foreground mb-2\">{label}</legend>}\n <div className={orientationClasses} role=\"radiogroup\">\n {children}\n </div>\n </fieldset>\n </RadioGroupContext.Provider>\n );\n}\n\nRadioGroup.displayName = 'RadioGroup';\n\nexport default RadioGroup;\n","import React from 'react';\nimport { useRadioGroup } from '../radio-group/radio-group';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type RadioProps = {\n checked?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n value?: string;\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Radio component\n */\nfunction Radio({\n checked,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name: nameProp,\n value,\n validationState = 'default'\n}: Readonly<RadioProps>) {\n const radioGroup = useRadioGroup();\n \n // Use name from RadioGroup context if available, otherwise use prop\n const name = radioGroup?.name || nameProp;\n \n // Use checked state from RadioGroup if available\n const isChecked = radioGroup?.value !== undefined \n ? radioGroup.value === value \n : checked;\n \n // Handle change with RadioGroup callback if available\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (radioGroup?.onChange && value) {\n radioGroup.onChange(value);\n }\n onChange?.(e);\n };\n\n const validationClasses = {\n default: 'border-input focus:ring-ring',\n error: 'border-destructive focus:ring-destructive',\n success: 'border-success focus:ring-success',\n warning: 'border-warning focus:ring-warning'\n };\n\n const inputId = id || `radio-${value || Math.random().toString(36).slice(2)}`;\n\n return (\n <div className={`inline-flex items-center justify-center relative ${disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'}`}>\n <input\n type=\"radio\"\n checked={isChecked}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-invalid={validationState === 'error'}\n id={inputId}\n name={name}\n value={value}\n className=\"peer sr-only\"\n />\n <span\n aria-hidden=\"true\"\n onClick={() => !disabled && document.getElementById(inputId)?.click()}\n className={`w-5 h-5 rounded-full border-2 flex items-center justify-center transition-all duration-200 ease-out bg-background shadow-sm\n before:content-[''] before:w-2.5 before:h-2.5 before:rounded-full before:scale-0 before:transition-transform before:duration-200 before:ease-out before:bg-primary\n peer-checked:before:scale-100 peer-checked:border-primary\n peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-ring\n peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\n peer-hover:border-primary/60 peer-active:scale-95\n ${validationClasses[validationState]} ${className}`}\n />\n </div>\n );\n}\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type SelectProps = {\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n children: React.ReactNode;\n required?: boolean;\n size?: 'sm' | 'md' | 'lg';\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Select component with validation state support\n */\nfunction Select({\n value,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n children,\n required = false,\n size = 'md',\n validationState = 'default'\n}: Readonly<SelectProps>) {\n const sizeClasses = {\n sm: 'h-8 px-3 py-1.5 text-sm',\n md: 'h-10 px-3 py-2 text-sm pr-10',\n lg: 'h-12 px-4 py-3 text-base pr-10'\n };\n\n const validationClasses = {\n default: 'border-input focus:border-ring',\n error: 'border-destructive focus:border-destructive',\n success: 'border-success focus:border-success',\n warning: 'border-warning focus:border-warning'\n };\n\n return (\n <select\n value={value}\n onChange={onChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n required={required}\n aria-invalid={validationState === 'error'}\n className={`flex w-full rounded-lg border bg-background shadow-sm transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring/20 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20stroke%3D%22%236b7280%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.5%22%20d%3D%22M6%208l4%204%204-4%22%2F%3E%3C%2Fsvg%3E')] bg-[length:1.5em] bg-[right_0.5rem_center] bg-no-repeat ${sizeClasses[size]} ${validationClasses[validationState]} ${className}`}\n >\n {children}\n </select>\n );\n}\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import React from 'react';\n\nexport type SelectItemProps = {\n value?: string;\n disabled?: boolean;\n children: React.ReactNode;\n};\n\n/**\n * SelectItem - Option element for Select component\n * Replaces native <option> element with semantic component\n */\nfunction SelectItem({ value, disabled = false, children }: Readonly<SelectItemProps>) {\n return (\n <option value={value} disabled={disabled}>\n {children}\n </option>\n );\n}\n\nSelectItem.displayName = 'SelectItem';\n\nexport default SelectItem;\n","import { useState, useRef, useEffect } from 'react';\nimport { IconX, IconChevronDown, IconCheck } from '@tabler/icons-react';\n\nexport type MultiSelectOption = {\n value: string;\n label: string;\n};\n\nexport type MultiSelectProps = {\n /**\n * Available options to select from\n */\n options: MultiSelectOption[];\n /**\n * Currently selected values\n */\n value?: string[];\n /**\n * Callback when selection changes\n */\n onChange?: (values: string[]) => void;\n /**\n * Placeholder text when no selection\n */\n placeholder?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n /**\n * Maximum number of selections allowed\n */\n maxSelections?: number;\n /**\n * Size variant\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Additional CSS classes\n */\n className?: string;\n};\n\n/**\n * MultiSelect - Select multiple options from a dropdown list\n * \n * Features:\n * - Multiple selections with chips\n * - Searchable dropdown\n * - Keyboard navigation\n * - Max selections limit\n * - Clearable\n * - Accessible\n * \n * @example\n * ```tsx\n * const [selected, setSelected] = useState<string[]>([]);\n * \n * <MultiSelect\n * options={[\n * { value: '1', label: 'Option 1' },\n * { value: '2', label: 'Option 2' }\n * ]}\n * value={selected}\n * onChange={setSelected}\n * placeholder=\"Select options...\"\n * />\n * ```\n */\nfunction MultiSelect({\n options,\n value = [],\n onChange,\n placeholder = 'Select options...',\n disabled = false,\n maxSelections,\n size = 'md',\n className = ''\n}: Readonly<MultiSelectProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const containerRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const selectedValues = value || [];\n\n // Close on click outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchQuery('');\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n return undefined;\n }, [isOpen]);\n\n // Focus search input when opened\n useEffect(() => {\n if (isOpen && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [isOpen]);\n\n const filteredOptions = options.filter((option) =>\n option.label.toLowerCase().includes(searchQuery.toLowerCase())\n );\n\n const handleToggleOption = (optionValue: string) => {\n const isSelected = selectedValues.includes(optionValue);\n let newValues: string[];\n\n if (isSelected) {\n newValues = selectedValues.filter((v) => v !== optionValue);\n } else {\n if (maxSelections && selectedValues.length >= maxSelections) {\n return; // Don't add if max reached\n }\n newValues = [...selectedValues, optionValue];\n }\n\n onChange?.(newValues);\n };\n\n const handleRemoveValue = (valueToRemove: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const newValues = selectedValues.filter((v) => v !== valueToRemove);\n onChange?.(newValues);\n };\n\n const handleClearAll = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.([]);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'Enter':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else if (focusedIndex >= 0 && focusedIndex < filteredOptions.length) {\n handleToggleOption(filteredOptions[focusedIndex].value);\n }\n break;\n case 'Escape':\n e.preventDefault();\n setIsOpen(false);\n setSearchQuery('');\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else {\n setFocusedIndex((prev) => (prev < filteredOptions.length - 1 ? prev + 1 : prev));\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n setFocusedIndex((prev) => (prev > 0 ? prev - 1 : 0));\n break;\n }\n };\n\n const sizeClasses = {\n sm: { container: 'min-h-8 py-1 px-2', text: 'text-sm', chip: 'text-xs px-1.5 py-0.5', icon: 14 },\n md: { container: 'min-h-10 py-2 px-3', text: 'text-base', chip: 'text-sm px-2 py-1', icon: 16 },\n lg: { container: 'min-h-12 py-2 px-4', text: 'text-lg', chip: 'text-base px-2.5 py-1', icon: 18 }\n };\n\n const currentSize = sizeClasses[size];\n\n const getSelectedLabels = () => {\n return selectedValues\n .map((v) => options.find((opt) => opt.value === v)?.label)\n .filter(Boolean);\n };\n\n return (\n <div ref={containerRef} className={`relative w-full ${className}`}>\n {/* Trigger */}\n <div\n className={`\n w-full flex flex-wrap items-center gap-1.5\n border border-input rounded-md\n bg-background text-foreground\n cursor-pointer\n transition-all duration-200\n ${currentSize.container}\n ${currentSize.text}\n ${isOpen ? 'ring-2 ring-ring ring-offset-2' : 'hover:border-ring'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n `.trim()}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-label=\"Multi-select\"\n >\n {/* Selected items as chips */}\n {selectedValues.length > 0 ? (\n <>\n {getSelectedLabels().map((label, index) => (\n <span\n key={selectedValues[index]}\n className={`inline-flex items-center gap-1 bg-primary/10 text-primary rounded-md font-medium ${currentSize.chip}`}\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveValue(selectedValues[index], e)}\n className=\"hover:bg-primary/20 rounded-sm transition-colors\"\n aria-label={`Remove ${label}`}\n tabIndex={-1}\n >\n <IconX size={currentSize.icon - 4} />\n </button>\n </span>\n ))}\n </>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n )}\n\n {/* Right side icons */}\n <div className=\"flex items-center gap-1 ml-auto flex-shrink-0\">\n {selectedValues.length > 0 && !disabled && (\n <button\n type=\"button\"\n onClick={handleClearAll}\n className=\"p-1 hover:bg-muted rounded transition-colors\"\n aria-label=\"Clear all\"\n tabIndex={-1}\n >\n <IconX size={currentSize.icon} />\n </button>\n )}\n <IconChevronDown\n size={currentSize.icon}\n className={`text-muted-foreground transition-transform ${isOpen ? 'rotate-180' : ''}`}\n />\n </div>\n </div>\n\n {/* Dropdown */}\n {isOpen && !disabled && (\n <div className=\"absolute top-full left-0 right-0 mt-2 z-50 bg-card border border-border rounded-md shadow-lg max-h-64 overflow-hidden flex flex-col animate-scaleIn origin-top\">\n {/* Search input */}\n <div className=\"p-2 border-b border-border\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => {\n setSearchQuery(e.target.value);\n setFocusedIndex(-1);\n }}\n placeholder=\"Search...\"\n className={`w-full px-3 py-1.5 ${currentSize.text} border border-input rounded-md bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring`}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n\n {/* Options list */}\n <div className=\"overflow-y-auto\" role=\"listbox\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isFocused = index === focusedIndex;\n const isDisabled = Boolean(maxSelections && !isSelected && selectedValues.length >= maxSelections);\n\n return (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => !isDisabled && handleToggleOption(option.value)}\n className={`\n w-full px-3 py-2 flex items-center justify-between gap-2\n transition-colors text-left ${currentSize.text}\n ${isFocused ? 'bg-muted' : ''}\n ${isSelected ? 'bg-primary/10 text-primary font-medium' : 'hover:bg-muted'}\n ${isDisabled ? 'opacity-50 cursor-not-allowed' : ''}\n `.trim()}\n role=\"option\"\n aria-selected={isSelected}\n disabled={isDisabled}\n >\n <span className=\"flex-1 truncate\">{option.label}</span>\n {isSelected && <IconCheck size={currentSize.icon} className=\"flex-shrink-0\" />}\n </button>\n );\n })\n ) : (\n <div className=\"px-3 py-6 text-center text-muted-foreground\">No options found</div>\n )}\n </div>\n\n {/* Footer info */}\n {maxSelections && (\n <div className=\"px-3 py-2 border-t border-border bg-muted/30 text-xs text-muted-foreground\">\n {selectedValues.length} / {maxSelections} selected\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nMultiSelect.displayName = 'MultiSelect';\n\nexport default MultiSelect;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type TextareaProps = {\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n rows?: number;\n required?: boolean;\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Textarea component with validation state support\n */\nfunction Textarea({\n value,\n onChange,\n placeholder,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n rows = 3,\n required = false,\n validationState = 'default'\n}: Readonly<TextareaProps>) {\n const validationClasses = {\n default: 'border-input focus:border-ring',\n error: 'border-destructive focus:border-destructive',\n success: 'border-success focus:border-success',\n warning: 'border-warning focus:border-warning'\n };\n\n return (\n <textarea\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n rows={rows}\n required={required}\n aria-invalid={validationState === 'error'}\n className={`flex min-h-[80px] w-full rounded-lg border bg-background px-3 py-2 text-sm shadow-sm transition-all duration-200 placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring/20 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 resize-y ${validationClasses[validationState]} ${className}`}\n />\n );\n}\n\nTextarea.displayName = 'Textarea';\n\nexport default Textarea;\n","import React from 'react';\n\nexport type SwitchProps = {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n variant?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error' | 'neutral';\n};\n\n/**\n * Accessible Switch/Toggle component - DaisyUI inspired\n * Uses pure Tailwind classes for styling\n */\nfunction Switch({\n checked = false,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n size = 'md',\n variant\n}: Readonly<SwitchProps>) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.checked);\n };\n\n // Size configurations\n const sizeStyles = {\n xs: {\n container: 'h-4 w-8',\n handle: 'h-3 w-3',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-4' : 'translate-x-0'\n },\n sm: {\n container: 'h-5 w-10',\n handle: 'h-4 w-4',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-5' : 'translate-x-0'\n },\n md: {\n container: 'h-6 w-12',\n handle: 'h-5 w-5',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-6' : 'translate-x-0'\n },\n lg: {\n container: 'h-7 w-14',\n handle: 'h-6 w-6',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-7' : 'translate-x-0'\n },\n xl: {\n container: 'h-8 w-16',\n handle: 'h-7 w-7',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-8' : 'translate-x-0'\n }\n };\n\n // Color variants\n const getVariantColors = () => {\n if (!checked) {\n return 'bg-input border-input';\n }\n\n switch (variant) {\n case 'secondary':\n return 'bg-secondary border-secondary';\n case 'accent':\n return 'bg-accent border-accent';\n case 'success':\n return 'bg-success border-success';\n case 'warning':\n return 'bg-warning border-warning';\n case 'info':\n return 'bg-info border-info';\n case 'error':\n return 'bg-destructive border-destructive';\n case 'neutral':\n return 'bg-neutral border-neutral';\n case 'primary':\n default:\n return 'bg-primary border-primary';\n }\n };\n\n const styles = sizeStyles[size];\n\n return (\n <label\n className={`relative inline-flex ${styles.container} ${styles.padding} items-center rounded-full border transition-all duration-200 cursor-pointer ${\n disabled ? 'opacity-30 cursor-not-allowed' : ''\n } ${getVariantColors()} ${className}`}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n className=\"sr-only\"\n />\n <span\n className={`inline-block ${styles.handle} rounded-full bg-background shadow-sm transition-transform duration-200 ${styles.translate}`}\n />\n </label>\n );\n}\n\nSwitch.displayName = 'Switch';\n\nexport default Switch;\n","import React from 'react';\n\nexport type SliderProps = {\n value?: number;\n onChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n};\n\n/**\n * Accessible Slider component\n */\nfunction Slider({\n value = 50,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name\n}: Readonly<SliderProps>) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(Number(e.target.value));\n };\n\n return (\n <input\n type=\"range\"\n value={value}\n onChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n className={`w-full h-2 bg-muted/30 rounded-lg appearance-none cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed hover:bg-muted/40 ${className}`}\n style={{\n background: `linear-gradient(to right, hsl(var(--primary)) 0%, hsl(var(--primary)) ${((value - min) / (max - min)) * 100}%, hsl(var(--muted) / 0.3) ${((value - min) / (max - min)) * 100}%, hsl(var(--muted) / 0.3) 100%)`\n }}\n />\n );\n}\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n","import { ReactNode } from 'react';\n\nexport type ButtonGroupProps = {\n children: ReactNode;\n className?: string;\n variant?: 'default' | 'separated';\n orientation?: 'horizontal' | 'vertical';\n};\n\n/**\n * ButtonGroup - Groups related buttons together\n */\nfunction ButtonGroup({\n children,\n className = '',\n variant = 'default',\n orientation = 'horizontal'\n}: Readonly<ButtonGroupProps>) {\n const baseClasses = 'inline-flex';\n const orientationClasses = orientation === 'horizontal' ? 'flex-row' : 'flex-col';\n\n let variantClasses = '';\n if (variant === 'separated') {\n variantClasses = 'gap-2';\n } else if (orientation === 'horizontal') {\n variantClasses =\n '[&>button]:rounded-none [&>button:first-child]:rounded-l-md [&>button:last-child]:rounded-r-md [&>button:not(:last-child)]:border-r-0';\n } else {\n variantClasses =\n '[&>button]:rounded-none [&>button:first-child]:rounded-t-md [&>button:last-child]:rounded-b-md [&>button:not(:last-child)]:border-b-0';\n }\n\n return <div className={`${baseClasses} ${orientationClasses} ${variantClasses} ${className}`}>{children}</div>;\n}\n\nButtonGroup.displayName = 'ButtonGroup';\n\nexport default ButtonGroup;\n","import { ReactNode } from 'react';\n\nexport type TextProps = {\n children: ReactNode;\n variant?: 'body' | 'muted' | 'small';\n size?: 'xs' | 'sm' | 'base' | 'lg' | 'xl';\n weight?: 'normal' | 'medium' | 'semibold' | 'bold';\n className?: string;\n noMargin?: boolean;\n};\n\n/**\n * Text - Body and secondary text styling\n * Includes default bottom margin for paragraph spacing\n */\nfunction Text({\n children,\n variant = 'body',\n size,\n weight = 'semibold', // elevated default weight\n className = '',\n noMargin = false\n}: Readonly<TextProps>) {\n const variantClasses = {\n body: 'text-foreground',\n muted: 'text-muted-foreground',\n small: 'text-muted-foreground'\n };\n\n const sizeClasses = {\n xs: 'text-xs',\n sm: 'text-sm',\n base: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n };\n\n const weightClasses = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold'\n };\n\n // If size is specified, use it. Otherwise fall back to variant-based sizing\n const defaultSizes = {\n body: 'lg', // bigger default body text\n muted: 'base', // muted still readable\n small: 'sm' // small bumped up slightly\n } as const;\n\n const finalSize = size || defaultSizes[variant];\n const margin = noMargin ? '' : 'mb-4';\n\n return (\n <p\n className={`${variantClasses[variant]} ${sizeClasses[finalSize]} ${weightClasses[weight]} ${margin} ${className}`}\n >\n {children}\n </p>\n );\n}\n\nText.displayName = 'Text';\n\nexport default Text;\n","import React from 'react';\n\nexport type StackProps = {\n children: React.ReactNode;\n className?: string;\n direction?: 'horizontal' | 'vertical';\n spacing?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n};\n\n/**\n * Stack layout component (flex-based)\n * Arranges children in a horizontal or vertical line with consistent spacing\n */\nfunction Stack({\n children,\n className = '',\n direction = 'vertical',\n spacing = 'md',\n align = 'stretch',\n justify\n}: Readonly<StackProps>) {\n const spacingClasses = {\n none: 'gap-0',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8'\n };\n\n const alignClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch'\n };\n\n const justifyClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around'\n };\n\n const directionClass = direction === 'horizontal' ? 'flex-row' : 'flex-col';\n const justifyClass = justify ? justifyClasses[justify] : '';\n\n return (\n <div\n data-component=\"Stack\"\n className={`flex ${directionClass} ${spacingClasses[spacing]} ${alignClasses[align]} ${justifyClass} ${className}`}\n >\n {children}\n </div>\n );\n}\n\nStack.displayName = 'Stack';\n\nexport default Stack;\n","import { ReactNode, ReactElement, cloneElement, isValidElement } from 'react';\n\nimport Text from '../../typography/text/text';\nimport Stack from '../../layout/stack/stack';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type FormFieldProps = {\n children: ReactNode;\n label?: string;\n htmlFor?: string;\n error?: string;\n helperText?: string;\n required?: boolean;\n className?: string;\n validationState?: ValidationState;\n};\n\n/**\n * FormField - Wrapper component for form inputs with label, error, and helper text\n * Provides consistent spacing and typography for form fields\n * Supports validation states that are passed down to child input components\n */\nfunction FormField({\n children,\n label,\n htmlFor,\n error,\n helperText,\n required = false,\n className = '',\n validationState = 'default'\n}: Readonly<FormFieldProps>) {\n // Automatically set validation state to 'error' if error message is present\n const effectiveValidationState = error ? 'error' : validationState;\n\n // Clone the child element and pass validation state to it\n const childWithValidation = isValidElement(children)\n ? cloneElement(children as ReactElement<{ validationState?: ValidationState }>, {\n validationState: effectiveValidationState\n })\n : children;\n return (\n <Stack direction=\"vertical\" spacing=\"sm\" className={className}>\n {label && (\n <label htmlFor={htmlFor}>\n <Text variant=\"body\" size=\"sm\" noMargin className=\"font-medium\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Text>\n </label>\n )}\n {childWithValidation}\n {error && (\n <Text variant=\"body\" size=\"sm\" noMargin className=\"text-destructive\">\n {error}\n </Text>\n )}\n {!error && helperText && (\n <Text variant=\"muted\" size=\"sm\" noMargin>\n {helperText}\n </Text>\n )}\n </Stack>\n );\n}\n\nFormField.displayName = 'FormField';\n\nexport default FormField;\n","import { ReactNode } from 'react';\n\nexport type InputGroupProps = {\n children: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n className?: string;\n};\n\n/**\n * InputGroup - Combines inputs and buttons (e.g., search bar with button)\n */\nfunction InputGroup({ children, prefix, suffix, className = '' }: Readonly<InputGroupProps>) {\n return (\n <div className={`flex items-stretch ${className}`}>\n {prefix && (\n <div className=\"flex items-center px-3 bg-muted border border-r-0 border-input rounded-l-md\">{prefix}</div>\n )}\n {children}\n {suffix && (\n <div className=\"flex items-center px-3 bg-muted border border-l-0 border-input rounded-r-md\">{suffix}</div>\n )}\n </div>\n );\n}\n\nInputGroup.displayName = 'InputGroup';\n\nexport default InputGroup;\n","import { useState } from 'react';\n\nexport type CalendarProps = {\n /**\n * The currently selected date\n */\n value?: Date;\n /**\n * Callback when a date is selected\n */\n onChange?: (date: Date) => void;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Disabled state\n */\n disabled?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n};\n\n/**\n * Calendar - A simple date picker component\n *\n * Displays a month view calendar for date selection with keyboard navigation support.\n */\nfunction Calendar({ value, onChange, minDate, maxDate, disabled = false, className = '' }: Readonly<CalendarProps>) {\n const [currentMonth, setCurrentMonth] = useState(value || new Date());\n const [selectedDate, setSelectedDate] = useState<Date | undefined>(value);\n\n const getDaysInMonth = (date: Date) => {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n };\n\n const getFirstDayOfMonth = (date: Date) => {\n return new Date(date.getFullYear(), date.getMonth(), 1).getDay();\n };\n\n const handleDateClick = (day: number) => {\n if (disabled) return;\n\n const newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), day);\n\n // Check min/max date constraints\n if (minDate && newDate < minDate) return;\n if (maxDate && newDate > maxDate) return;\n\n setSelectedDate(newDate);\n onChange?.(newDate);\n };\n\n const handlePreviousMonth = () => {\n setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1));\n };\n\n const daysInMonth = getDaysInMonth(currentMonth);\n const firstDayOfMonth = getFirstDayOfMonth(currentMonth);\n const monthName = currentMonth.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n\n const weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n const isDateSelected = (day: number) => {\n if (!selectedDate) return false;\n return (\n selectedDate.getDate() === day &&\n selectedDate.getMonth() === currentMonth.getMonth() &&\n selectedDate.getFullYear() === currentMonth.getFullYear()\n );\n };\n\n const isDateDisabled = (day: number) => {\n const date = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), day);\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return false;\n };\n\n return (\n <div\n className={`inline-block border border-border rounded-lg bg-card text-card-foreground shadow-sm p-4 ${\n disabled ? 'opacity-50 pointer-events-none' : ''\n } ${className}`.trim()}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePreviousMonth}\n className=\"p-2 hover:bg-muted rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Previous month\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span className=\"font-semibold text-sm\">{monthName}</span>\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className=\"p-2 hover:bg-muted rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Next month\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n\n {/* Week days */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {weekDays.map((day) => (\n <div key={day} className=\"w-9 h-9 flex items-center justify-center text-xs font-medium text-muted-foreground\">\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar days */}\n <div className=\"grid grid-cols-7 gap-1\">\n {/* Empty cells for days before the first day of the month */}\n {Array.from({ length: firstDayOfMonth }).map((_, index) => (\n <div key={`empty-${index}`} className=\"w-9 h-9\" />\n ))}\n\n {/* Actual days of the month */}\n {Array.from({ length: daysInMonth }).map((_, index) => {\n const day = index + 1;\n const selected = isDateSelected(day);\n const dateDisabled = isDateDisabled(day);\n\n return (\n <button\n key={day}\n type=\"button\"\n onClick={() => handleDateClick(day)}\n disabled={dateDisabled}\n className={`\n w-9 h-9 flex items-center justify-center text-sm rounded-md transition-colors\n focus:outline-none focus:ring-2 focus:ring-ring\n ${selected ? 'bg-primary text-primary-foreground font-semibold' : 'hover:bg-muted'}\n ${dateDisabled ? 'text-muted-foreground cursor-not-allowed opacity-50' : ''}\n `.trim()}\n aria-label={`Select ${day} ${monthName}`}\n aria-pressed={selected}\n >\n {day}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n","import { useState, useRef, useEffect } from 'react';\nimport Calendar from '../calendar/calendar';\nimport { IconCalendar } from '@tabler/icons-react';\n\nexport type DatePickerProps = {\n /**\n * The currently selected date\n */\n value?: Date;\n /**\n * Callback when a date is selected\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Placeholder text when no date is selected\n */\n placeholder?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n /**\n * Date format string (default: 'MM/DD/YYYY')\n */\n dateFormat?: string;\n /**\n * Show clear button\n */\n clearable?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n /**\n * Input size\n */\n size?: 'sm' | 'md' | 'lg';\n};\n\n/**\n * DatePicker - Input field with calendar popup for date selection\n * \n * Features:\n * - Calendar popup on click\n * - Keyboard navigation (Arrow keys, Enter, Escape)\n * - Date formatting\n * - Min/max date constraints\n * - Clearable option\n * - Accessible with proper ARIA labels\n * \n * @example\n * ```tsx\n * const [date, setDate] = useState<Date>();\n * \n * <DatePicker\n * value={date}\n * onChange={setDate}\n * placeholder=\"Select a date\"\n * clearable\n * />\n * ```\n */\nfunction DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder = 'Select date',\n disabled = false,\n dateFormat = 'MM/DD/YYYY',\n clearable = true,\n className = '',\n size = 'md'\n}: Readonly<DatePickerProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedDate, setSelectedDate] = useState<Date | undefined>(value);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Update internal state when value prop changes\n useEffect(() => {\n setSelectedDate(value);\n }, [value]);\n\n // Close calendar on click outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n return undefined;\n }, [isOpen]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n setIsOpen(false);\n inputRef.current?.focus();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }\n return undefined;\n }, [isOpen]);\n\n const formatDate = (date: Date | undefined): string => {\n if (!date) return '';\n \n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const year = date.getFullYear();\n\n // Simple format replacement\n return dateFormat\n .replace('MM', month)\n .replace('DD', day)\n .replace('YYYY', String(year))\n .replace('YY', String(year).slice(-2));\n };\n\n const handleDateSelect = (date: Date) => {\n setSelectedDate(date);\n onChange?.(date);\n setIsOpen(false);\n inputRef.current?.focus();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n setSelectedDate(undefined);\n onChange?.(undefined);\n inputRef.current?.focus();\n };\n\n const handleInputClick = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(!isOpen);\n }\n };\n\n const sizeClasses = {\n sm: { container: 'h-8 px-3', text: 'text-sm', icon: 16 },\n md: { container: 'h-10 px-4', text: 'text-base', icon: 18 },\n lg: { container: 'h-12 px-5', text: 'text-lg', icon: 20 }\n };\n\n const currentSize = sizeClasses[size];\n\n return (\n <div ref={containerRef} className={`relative w-full ${className}`}>\n {/* Input field */}\n <div\n className={`\n w-full flex items-center justify-between gap-2\n border border-input rounded-md\n bg-background text-foreground\n cursor-pointer\n transition-all duration-200\n ${currentSize.container}\n ${currentSize.text}\n ${isOpen ? 'ring-2 ring-ring ring-offset-2' : 'hover:border-ring'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n `.trim()}\n onClick={handleInputClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-label=\"Date picker\"\n >\n <input\n ref={inputRef}\n type=\"text\"\n value={formatDate(selectedDate)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n className={`flex-1 min-w-0 bg-transparent outline-none cursor-pointer placeholder:text-muted-foreground ${currentSize.text}`}\n aria-label=\"Selected date\"\n />\n \n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {clearable && selectedDate && !disabled ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"p-1 hover:bg-muted rounded transition-colors flex-shrink-0\"\n aria-label=\"Clear date\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={currentSize.icon - 2}\n height={currentSize.icon - 2}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n ) : clearable ? (\n <div className=\"w-6 h-6 flex-shrink-0\" />\n ) : null}\n <IconCalendar size={currentSize.icon} className=\"text-muted-foreground flex-shrink-0\" />\n </div>\n </div>\n\n {/* Calendar popup */}\n {isOpen && !disabled && (\n <div \n className=\"absolute left-0 top-full mt-2 z-50 animate-scaleIn origin-top\"\n role=\"dialog\"\n aria-label=\"Calendar\"\n >\n <Calendar\n value={selectedDate}\n onChange={handleDateSelect}\n minDate={minDate}\n maxDate={maxDate}\n />\n </div>\n )}\n </div>\n );\n}\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import React from 'react';\n\nexport type NavProps = {\n children: React.ReactNode;\n className?: string;\n ariaLabel?: string;\n};\n\n/**\n * Accessible navigation component\n */\nfunction Nav({ children, className = '', ariaLabel = 'Main navigation' }: Readonly<NavProps>) {\n return (\n <nav aria-label={ariaLabel} className={`flex items-center ${className}`}>\n {children}\n </nav>\n );\n}\n\nNav.displayName = 'Nav';\n\nexport default Nav;\n","import React from 'react';\n\nexport type ContainerProps = {\n children: React.ReactNode;\n className?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n align?: 'start' | 'center' | 'end';\n};\n\n/**\n * Container layout component with responsive max-width and padding\n * Use align prop to control horizontal alignment (default: center)\n */\nfunction Container({\n children,\n className = '',\n size = 'lg',\n padding = 'lg',\n align = 'center'\n}: Readonly<ContainerProps>) {\n const sizeClasses = {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n full: 'max-w-full'\n };\n\n const paddingClasses = {\n none: '',\n sm: 'py-6',\n md: 'py-8',\n lg: 'py-12',\n xl: 'py-16'\n };\n\n const alignClasses = {\n start: 'mr-auto',\n center: 'mx-auto',\n end: 'ml-auto'\n };\n\n return (\n <div className={`px-4 ${sizeClasses[size]} ${paddingClasses[padding]} ${alignClasses[align]} ${className}`}>\n {children}\n </div>\n );\n}\n\nContainer.displayName = 'Container';\n\nexport default Container;\n","import { ReactNode, useState } from 'react';\nimport { IconMenu2, IconX } from '@tabler/icons-react';\n\nimport Container from '../../layout/container/container';\nimport Button from '../../forms/button/button';\n\nexport type NavbarProps = {\n brand?: ReactNode;\n children: ReactNode;\n sticky?: boolean;\n className?: string;\n actions?: ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n appearance?: 'solid' | 'blur' | 'transparent';\n border?: 'none' | 'bottom' | 'top' | 'both';\n /** Disable mobile hamburger menu (useful when used with left nav) */\n disableMobileMenu?: boolean;\n};\n\n/**\n * Navbar Component - Responsive navigation\n * - Mobile hamburger menu\n * - Sticky positioning option\n * - Brand logo section\n * - Action buttons area\n * - Fully responsive\n * - Configurable container size\n * - Appearance modes: solid, blur (frosted glass), transparent\n * - Configurable borders: none, bottom, top, or both\n */\nfunction Navbar({\n brand,\n children,\n sticky = true,\n className = '',\n actions,\n size = 'xl',\n appearance = 'solid',\n border = 'none',\n disableMobileMenu = false\n}: Readonly<NavbarProps>) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n\n // Appearance styles\n const appearanceClasses = {\n solid: 'bg-background shadow-sm',\n blur: 'bg-background/70 backdrop-blur-md supports-[backdrop-filter]:bg-background/60 border border-border/60',\n transparent: 'bg-transparent'\n } as const;\n\n const borderClasses = {\n none: '',\n bottom: 'border-b border-border',\n top: 'border-t border-border',\n both: 'border-y border-border'\n };\n\n return (\n <nav\n data-appearance={appearance}\n className={`${sticky ? 'sticky top-0 z-50' : ''} ${appearanceClasses[appearance]} ${borderClasses[border]} ${className}`}\n >\n <Container padding=\"none\" size={size}>\n <div className=\"flex items-center justify-between h-16\">\n {/* Brand */}\n {brand && <div className=\"flex-shrink-0\">{brand}</div>}\n\n {/* Desktop Navigation */}\n <div className=\"hidden md:flex md:items-center md:space-x-6 md:flex-1 md:ml-10\">{children}</div>\n\n {/* Actions */}\n {actions && (\n <div className={`${disableMobileMenu ? 'flex' : 'hidden md:flex'} items-center space-x-4`}>{actions}</div>\n )}\n\n {/* Mobile Toggle */}\n {!disableMobileMenu && (\n <div className=\"md:hidden\">\n <Button\n variant=\"neutral\"\n style=\"ghost\"\n size=\"sm\"\n icon={mobileMenuOpen ? <IconX size={24} /> : <IconMenu2 size={24} />}\n ariaLabel=\"Toggle menu\"\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n />\n </div>\n )}\n </div>\n\n {/* Mobile Menu */}\n {!disableMobileMenu && mobileMenuOpen && (\n <div className=\"md:hidden py-4 space-y-3 border-t border-border\">\n {children}\n {actions && <div className=\"pt-4 border-t border-border space-y-2\">{actions}</div>}\n </div>\n )}\n </Container>\n </nav>\n );\n}\n\nNavbar.displayName = 'Navbar';\n\nexport default Navbar;\n","import { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\n\nexport type NavbarBrandProps = {\n children: ReactNode;\n href?: string;\n external?: boolean;\n onClick?: () => void;\n className?: string;\n};\n\n/**\n * NavbarBrand Component - Brand/logo section for Navbar\n * Uses React Router Link for internal navigation\n */\nfunction NavbarBrand({ children, href, external = false, onClick, className = '' }: Readonly<NavbarBrandProps>) {\n const content = <span className={`text-lg md:text-xl font-bold ${className}`}>{children}</span>;\n\n const linkClassName = 'no-underline text-foreground hover:text-primary transition-colors';\n\n if (href) {\n // External links use regular anchor tag\n if (external) {\n return (\n <a href={href} className={linkClassName} target=\"_blank\" rel=\"noopener noreferrer\">\n {content}\n </a>\n );\n }\n\n // Internal links use React Router Link\n return (\n <Link to={href} className={linkClassName}>\n {content}\n </Link>\n );\n }\n\n if (onClick) {\n return (\n <button onClick={onClick} className={linkClassName}>\n {content}\n </button>\n );\n }\n\n return content;\n}\n\nNavbarBrand.displayName = 'NavbarBrand';\n\nexport default NavbarBrand;\n","import { ReactNode } from 'react';\nimport { NavLink } from 'react-router-dom';\n\nexport type NavbarLinkProps = {\n href: string;\n children: ReactNode;\n external?: boolean;\n className?: string;\n end?: boolean;\n};\n\n/**\n * NavbarLink Component - Navigation link for Navbar\n * Uses React Router's NavLink for automatic active state management\n */\nfunction NavbarLink({ href, children, external = false, className = '', end = false }: Readonly<NavbarLinkProps>) {\n const baseClassName = `block md:inline-block py-2 md:py-0 font-medium transition-colors no-underline ${className}`;\n\n // External links use regular anchor tag\n if (external) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${baseClassName} text-foreground hover:text-primary`}\n >\n {children}\n </a>\n );\n }\n\n // Hash anchors should be plain anchors (in-page navigation), not NavLink\n if (href.startsWith('#')) {\n return (\n <a href={href} className={`${baseClassName} text-foreground hover:text-primary`}>\n {children}\n </a>\n );\n }\n\n // Internal links use React Router NavLink with automatic active state\n return (\n <NavLink\n to={href}\n end={end}\n className={({ isActive }) =>\n `${baseClassName} ${\n isActive ? 'text-primary font-semibold border-b-2 border-primary' : 'text-foreground hover:text-primary'\n }`\n }\n >\n {children}\n </NavLink>\n );\n}\n\nNavbarLink.displayName = 'NavbarLink';\n\nexport default NavbarLink;\n","import React, { useState } from 'react';\n\nexport type Tab = {\n id: string;\n label: string;\n content: React.ReactNode;\n};\n\nexport type TabsProps = {\n tabs: Tab[];\n defaultTab?: string;\n className?: string;\n ariaLabel?: string;\n};\n\n/**\n * Accessible Tabs component with animated tab switching\n */\nfunction Tabs({ tabs, defaultTab, className = '', ariaLabel = 'Tabs' }: Readonly<TabsProps>) {\n const [activeTab, setActiveTab] = useState(defaultTab || tabs[0]?.id);\n const [isAnimating, setIsAnimating] = useState(false);\n\n const handleTabChange = (tabId: string) => {\n if (tabId !== activeTab) {\n setIsAnimating(true);\n // Small delay to ensure exit animation plays\n setTimeout(() => {\n setActiveTab(tabId);\n setIsAnimating(false);\n }, 150);\n }\n };\n\n return (\n <div className={className}>\n <div role=\"tablist\" aria-label={ariaLabel} className=\"flex border-b-2 border-border/50\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={activeTab === tab.id}\n aria-controls={`panel-${tab.id}`}\n id={`tab-${tab.id}`}\n onClick={() => handleTabChange(tab.id)}\n className={`px-4 py-3 font-medium cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 relative ${\n activeTab === tab.id\n ? 'text-primary after:absolute after:bottom-0 after:left-0 after:right-0 after:h-0.5 after:bg-primary after:rounded-t after:transition-all after:duration-200'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50'\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {tabs.map((tab) => (\n <div\n key={tab.id}\n role=\"tabpanel\"\n id={`panel-${tab.id}`}\n aria-labelledby={`tab-${tab.id}`}\n hidden={activeTab !== tab.id}\n className={`pt-6 transition-all duration-200 ${\n activeTab === tab.id && !isAnimating\n ? 'animate-fadeIn opacity-100'\n : 'opacity-0'\n }`}\n >\n {tab.content}\n </div>\n ))}\n </div>\n );\n}\n\nTabs.displayName = 'Tabs';\n\nexport default Tabs;\n","import React, { useState, useRef, useEffect, useCallback, createContext, useContext } from 'react';\n\nexport type DropdownProps = {\n trigger: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n align?: 'start' | 'center' | 'end';\n autoClose?: boolean; // close on item select\n /** Size of the dropdown panel and items */\n size?: 'sm' | 'md';\n};\n\ntype DropdownContextValue = {\n requestClose: () => void;\n autoClose: boolean;\n};\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) throw new Error('useDropdown must be used within <Dropdown>');\n return ctx;\n}\n\n/**\n * Dropdown component with click-outside handling\n */\nfunction Dropdown({ trigger, children, className = '', align = 'start', autoClose = true, size = 'md' }: Readonly<DropdownProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const itemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n\n const close = useCallback(() => setIsOpen(false), []);\n const open = useCallback(() => setIsOpen(true), []);\n\n // Handle keyboard navigation\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (!menuRef.current) return;\n const itemEls = itemsRef.current.filter(Boolean);\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n if (itemEls.length === 0) return;\n let nextIndex = activeIndex;\n if (e.key === 'ArrowDown') nextIndex = (activeIndex + 1) % itemEls.length;\n if (e.key === 'ArrowUp') nextIndex = (activeIndex - 1 + itemEls.length) % itemEls.length;\n if (e.key === 'Home') nextIndex = 0;\n if (e.key === 'End') nextIndex = itemEls.length - 1;\n setActiveIndex(nextIndex);\n itemEls[nextIndex]?.focus();\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n close();\n (dropdownRef.current?.querySelector('button[data-trigger=\"true\"]') as HTMLButtonElement | null)?.focus();\n }\n if (e.key === 'Tab') {\n // trap focus\n e.preventDefault();\n const itemEls = itemsRef.current.filter(Boolean);\n if (itemEls.length === 0) return;\n const dir = e.shiftKey ? -1 : 1;\n const nextIndex = (activeIndex + dir + itemEls.length) % itemEls.length;\n setActiveIndex(nextIndex);\n itemEls[nextIndex]?.focus();\n }\n };\n document.addEventListener('keydown', handleKey);\n return () => document.removeEventListener('keydown', handleKey);\n }, [isOpen, activeIndex, close]);\n\n // Outside click close\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n close();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, close]);\n\n // Auto-focus first item on open\n useEffect(() => {\n if (isOpen) {\n const itemEls = itemsRef.current.filter(Boolean);\n if (itemEls.length) {\n setActiveIndex(0);\n itemEls[0]?.focus();\n }\n } else {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n const registerItem = (el: HTMLButtonElement | null, index: number) => {\n itemsRef.current[index] = el;\n };\n\n return (\n <div ref={dropdownRef} className={`relative ${className}`}>\n <button\n data-trigger=\"true\"\n onClick={() => (isOpen ? close() : open())}\n className=\"bg-transparent border-0 p-0 cursor-pointer outline-none\"\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n aria-controls={isOpen ? 'dropdown-menu' : undefined}\n >\n {trigger}\n </button>\n {isOpen && (\n <DropdownContext.Provider value={{ requestClose: close, autoClose }}>\n <div\n id=\"dropdown-menu\"\n ref={menuRef}\n className={`absolute mt-2 bg-popover text-popover-foreground border border-border rounded-md shadow-lg z-50 ${size === 'sm' ? 'min-w-[140px] text-xs py-1' : 'min-w-[180px]'} max-h-[320px] overflow-y-auto origin-top animate-scaleIn focus:outline-none ${align === 'start' ? 'left-0' : align === 'end' ? 'right-0' : 'left-1/2 -translate-x-1/2'} ${className}`}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n >\n {React.Children.map(children, (child, i) => {\n if (!React.isValidElement(child)) return child;\n return React.cloneElement(child as any, { __dropdownIndex: i, __registerItem: registerItem, size });\n })}\n </div>\n </DropdownContext.Provider>\n )}\n </div>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\nexport default Dropdown;\n\n// DropdownItem component (simple abstraction)\nexport type DropdownItemProps = {\n children: React.ReactNode;\n onSelect?: () => void;\n /** Semantic color variant */\n variant?: 'default' | 'destructive' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n disabled?: boolean;\n className?: string;\n /** Optional muted description below main label */\n description?: string;\n /** Inherit size from dropdown or override */\n size?: 'sm' | 'md';\n __dropdownIndex?: number; // injected\n __registerItem?: (el: HTMLButtonElement | null, index: number) => void; // injected\n};\n\nexport function DropdownItem({\n children,\n onSelect,\n variant = 'default',\n disabled = false,\n className = '',\n description,\n size = 'md',\n __dropdownIndex,\n __registerItem\n}: Readonly<DropdownItemProps>) {\n const ctx = useContext(DropdownContext);\n const base = `${size === 'sm' ? 'text-[11px] leading-tight px-2.5 py-1.5 rounded-md' : 'px-3.5 py-2 rounded-md'} w-full text-left select-none transition-colors outline-none disabled:opacity-40 disabled:pointer-events-none`;\n const focus = 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-popover';\n const palette: Record<string, string> = {\n default: 'text-foreground/90 hover:bg-muted active:bg-muted/80',\n primary: 'text-primary hover:bg-primary/15 active:bg-primary/25 focus-visible:ring-primary',\n secondary: 'text-secondary hover:bg-secondary/15 active:bg-secondary/25 focus-visible:ring-secondary',\n accent: 'text-accent hover:bg-accent/15 active:bg-accent/25 focus-visible:ring-accent',\n info: 'text-info hover:bg-info/15 active:bg-info/25 focus-visible:ring-info',\n success: 'text-success hover:bg-success/15 active:bg-success/25 focus-visible:ring-success',\n warning: 'text-warning hover:bg-warning/18 active:bg-warning/28 focus-visible:ring-warning',\n error: 'text-error hover:bg-error/15 active:bg-error/25 focus-visible:ring-error',\n destructive: 'text-destructive hover:bg-destructive/15 active:bg-destructive/25 focus-visible:ring-destructive'\n };\n const variantClasses = palette[variant] || palette.default;\n return (\n <button\n ref={(el) => __registerItem?.(el, __dropdownIndex ?? -1)}\n role=\"menuitem\"\n type=\"button\"\n disabled={disabled}\n onClick={() => {\n if (disabled) return;\n onSelect?.();\n if (ctx?.autoClose) ctx.requestClose();\n }}\n className={`${base} ${focus} ${variantClasses} flex flex-col ${className}`}\n >\n <span className={`${size === 'sm' ? 'font-medium' : 'font-medium'} leading-snug`}>{children}</span>\n {description && (\n <span className={`${size === 'sm' ? 'text-[10px]' : 'text-xs'} text-foreground/60 mt-0.5 line-clamp-2`}>{description}</span>\n )}\n </button>\n );\n}\n","import { ReactNode } from 'react';\n\nexport type BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\nexport type BreadcrumbsProps = {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n};\n\n/**\n * Breadcrumbs - Hierarchical path display\n */\nfunction Breadcrumbs({ items, separator = '/', className = '' }: Readonly<BreadcrumbsProps>) {\n return (\n <nav aria-label=\"Breadcrumb\" className={className}>\n <ol className=\"flex items-center space-x-2 text-sm\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const key = item.href || item.label;\n\n return (\n <li key={key} className=\"flex items-center\">\n {item.href && !isLast ? (\n <a\n href={item.href}\n className=\"text-primary hover:text-primary/80 hover:underline cursor-pointer transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-ring rounded px-1 -mx-1\"\n >\n {item.label}\n </a>\n ) : (\n <span className={isLast ? 'text-foreground font-medium' : 'text-muted-foreground'}>{item.label}</span>\n )}\n {!isLast && (\n <span className=\"mx-2 text-muted-foreground select-none\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n\nexport default Breadcrumbs;\n","export type PaginationProps = {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n className?: string;\n};\n\n/**\n * Pagination - Page controls with active state\n */\nfunction Pagination({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n className = ''\n}: Readonly<PaginationProps>) {\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const leftSibling = Math.max(currentPage - siblingCount, 1);\n const rightSibling = Math.min(currentPage + siblingCount, totalPages);\n\n if (leftSibling > 2) {\n pages.push(1, '...');\n } else {\n for (let i = 1; i < leftSibling; i++) {\n pages.push(i);\n }\n }\n\n for (let i = leftSibling; i <= rightSibling; i++) {\n pages.push(i);\n }\n\n if (rightSibling < totalPages - 1) {\n pages.push('...', totalPages);\n } else {\n for (let i = rightSibling + 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n };\n\n return (\n <nav aria-label=\"Pagination\" className={className}>\n <ul className=\"flex items-center space-x-1\">\n <li>\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n className=\"px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Previous page\"\n >\n ←\n </button>\n </li>\n {getPageNumbers().map((page, index) => {\n const key = typeof page === 'number' ? `page-${page}` : `ellipsis-${index}`;\n return (\n <li key={key}>\n {typeof page === 'number' ? (\n <button\n onClick={() => onPageChange(page)}\n className={`px-3 py-2 rounded-lg border cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring ${\n page === currentPage\n ? 'bg-primary text-primary-foreground border-primary shadow-sm'\n : 'border-border hover:bg-accent hover:text-accent-foreground hover:border-accent'\n }`}\n aria-label={`Page ${page}`}\n aria-current={page === currentPage ? 'page' : undefined}\n >\n {page}\n </button>\n ) : (\n <span className=\"px-3 py-2 text-muted-foreground\">...</span>\n )}\n </li>\n );\n })}\n <li>\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n className=\"px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Next page\"\n >\n →\n </button>\n </li>\n </ul>\n </nav>\n );\n}\n\nPagination.displayName = 'Pagination';\n\nexport default Pagination;\n","import { ReactNode } from 'react';\n\nexport type SidebarProps = {\n children: ReactNode;\n className?: string;\n width?: string;\n};\n\n/**\n * Sidebar - Vertical navigation with sections\n */\nfunction Sidebar({ children, className = '', width = '16rem' }: Readonly<SidebarProps>) {\n const widthClass = width === '16rem' ? 'w-64' : width === '4rem' ? 'w-16' : '';\n\n return (\n <nav\n className={`\n ${widthClass || ''}\n bg-card border-r border-border\n flex flex-col\n overflow-hidden\n ${className}\n `.replace(/\\s+/g,' ')}\n style={!widthClass ? ({ width } as React.CSSProperties) : undefined}\n aria-label=\"Sidebar navigation\"\n >\n <div className=\"flex-1 px-4 py-3 space-y-2\">{children}</div>\n </nav>\n );\n}\n\nSidebar.displayName = 'Sidebar';\n\nexport default Sidebar;\n","import { ReactNode } from 'react';\nimport { IconCheck } from '@tabler/icons-react';\n\nexport type StepProps = {\n title: string;\n description?: string;\n icon?: ReactNode;\n status?: 'pending' | 'current' | 'completed' | 'error';\n optional?: boolean;\n};\n\nexport type StepperProps = {\n steps: StepProps[];\n currentStep: number;\n className?: string;\n orientation?: 'horizontal' | 'vertical';\n onStepClick?: (step: number) => void;\n clickable?: boolean;\n};\n\n/**\n * Stepper - Multi-step progress indicator\n *\n * Features:\n * - Horizontal and vertical orientations\n * - Current, completed, and pending states\n * - Optional steps\n * - Custom icons\n * - Clickable steps (for navigation)\n * - Error states\n *\n * Common uses:\n * - Multi-step forms\n * - Checkout processes\n * - Onboarding flows\n * - Wizards\n */\nfunction Stepper({\n steps,\n currentStep,\n className = '',\n orientation = 'horizontal',\n onStepClick,\n clickable = false\n}: Readonly<StepperProps>) {\n const getStepStatus = (index: number): StepProps['status'] => {\n const step = steps[index];\n if (step.status) return step.status;\n if (index < currentStep) return 'completed';\n if (index === currentStep) return 'current';\n return 'pending';\n };\n\n const renderStep = (step: StepProps, index: number) => {\n const status = getStepStatus(index) || 'pending';\n const isClickable = clickable; // allow clicking any step when clickable enabled\n\n // Status-based styles\n const statusStyles: Record<\n NonNullable<StepProps['status']>,\n {\n circle: string;\n title: string;\n description: string;\n }\n > = {\n pending: {\n circle: 'bg-muted text-muted-foreground border-2 border-muted',\n title: 'text-muted-foreground',\n description: 'text-muted-foreground'\n },\n current: {\n circle: 'bg-primary text-primary-foreground border-2 border-primary',\n title: 'text-foreground font-semibold',\n description: 'text-muted-foreground'\n },\n completed: {\n circle: 'bg-success text-success-foreground border-2 border-success',\n title: 'text-foreground',\n description: 'text-muted-foreground'\n },\n error: {\n circle: 'bg-destructive text-destructive-foreground border-2 border-destructive',\n title: 'text-destructive',\n description: 'text-destructive'\n }\n };\n\n const styles = statusStyles[status];\n\n const handleClick = () => {\n if (isClickable && onStepClick) {\n onStepClick(index);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isClickable && onStepClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onStepClick(index);\n }\n };\n\n if (orientation === 'horizontal') {\n return (\n <div\n key={index}\n className={`flex-1 flex flex-col items-center ${isClickable ? 'cursor-pointer' : ''}`}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role={isClickable ? 'button' : undefined}\n tabIndex={isClickable ? 0 : undefined}\n aria-label={`Step ${index + 1}: ${step.title}`}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {/* Step Number/Icon */}\n <div className=\"relative flex items-center w-full\">\n {/* Connector Line (Left) */}\n {index > 0 && (\n <div\n className={`h-0.5 flex-1 ${status === 'completed' || status === 'current' ? 'bg-success' : 'bg-muted'}`}\n />\n )}\n\n {/* Circle */}\n <div\n className={`\n relative z-10 flex items-center justify-center\n w-10 h-10 rounded-full\n transition-colors transition-[background-color,border-color] duration-300 ease-in-out\n ${styles.circle}\n `}\n >\n {status === 'completed' ? (\n <IconCheck className=\"w-5 h-5\" />\n ) : step.icon ? (\n step.icon\n ) : (\n <span className=\"text-sm font-semibold\">{index + 1}</span>\n )}\n </div>\n\n {/* Connector Line (Right) */}\n {index < steps.length - 1 && (\n <div\n className={`h-0.5 flex-1 transition-colors duration-300 ease-in-out ${status === 'completed' ? 'bg-success' : 'bg-muted'}`}\n />\n )}\n </div>\n\n {/* Label */}\n <div className={`mt-3 text-center text-sm transition-colors duration-300 ease-in-out ${styles.title}`}>\n {step.title}\n {step.optional && <span className=\"ml-1 text-xs text-muted-foreground\">(Optional)</span>}\n {step.description && (\n <p className={`text-xs mt-1 transition-colors duration-300 ease-in-out ${styles.description}`}>\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n // Vertical orientation\n return (\n <div\n key={index}\n className={`flex gap-4 ${index < steps.length - 1 ? 'pb-8' : ''} ${isClickable ? 'cursor-pointer' : ''}`}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role={isClickable ? 'button' : undefined}\n tabIndex={isClickable ? 0 : undefined}\n aria-label={`Step ${index + 1}: ${step.title}`}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {/* Icon Column */}\n <div className=\"flex flex-col items-center\">\n {/* Circle */}\n <div\n className={`\n flex items-center justify-center\n w-10 h-10 rounded-full flex-shrink-0\n transition-colors transition-[background-color,border-color] duration-300 ease-in-out\n ${styles.circle}\n `}\n >\n {status === 'completed' ? (\n <IconCheck className=\"w-5 h-5\" />\n ) : step.icon ? (\n step.icon\n ) : (\n <span className=\"text-sm font-semibold\">{index + 1}</span>\n )}\n </div>\n\n {/* Connector Line */}\n {index < steps.length - 1 && (\n <div\n className={`w-0.5 flex-1 mt-2 transition-colors duration-300 ease-in-out ${status === 'completed' ? 'bg-success' : 'bg-muted'}`}\n />\n )}\n </div>\n\n {/* Content Column */}\n <div className={`flex-1 pt-2 text-base transition-colors duration-300 ease-in-out ${styles.title}`}>\n {step.title}\n {step.optional && <span className=\"ml-2 text-xs text-muted-foreground\">(Optional)</span>}\n {step.description && (\n <p className={`text-sm mt-1 transition-colors duration-300 ease-in-out ${styles.description}`}>\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n };\n\n return (\n <div\n className={`\n ${orientation === 'horizontal' ? 'flex items-start' : 'flex flex-col'}\n ${className}\n `}\n >\n {steps.map((step, index) => renderStep(step, index))}\n </div>\n );\n}\n\nStepper.displayName = 'Stepper';\n\nexport default Stepper;\n","import { useEffect, useState } from 'react';\n\nexport type ToastProps = {\n message?: string;\n children?: React.ReactNode;\n type?: 'info' | 'success' | 'warning' | 'error';\n onClose?: () => void;\n className?: string;\n /** Auto-dismiss duration in milliseconds (0 to disable) */\n duration?: number;\n};\n\n/**\n * Toast - Notification popup with slide-in/out animations and auto-dismiss\n */\nfunction Toast({ message, children, type = 'info', onClose, className = '', duration = 5000 }: Readonly<ToastProps>) {\n const [isClosing, setIsClosing] = useState(false);\n\n const typeClasses = {\n info: 'bg-info text-info-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n error: 'bg-destructive text-destructive-foreground'\n };\n\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n handleClose();\n }, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [duration]);\n\n const handleClose = () => {\n setIsClosing(true);\n // Wait for animation to complete before calling onClose\n setTimeout(() => {\n onClose?.();\n }, 300); // Match animation duration\n };\n\n return (\n <div\n role=\"alert\"\n aria-live=\"polite\"\n className={`fixed bottom-4 right-4 px-4 py-3 rounded-md shadow-lg ${typeClasses[type]} transition-all duration-300 ease-out ${\n isClosing \n ? 'opacity-0 translate-x-full' \n : 'opacity-100 translate-x-0 animate-slideInRight'\n } ${className}`}\n >\n <span>{children || message}</span>\n {onClose && (\n <button onClick={handleClose} className=\"ml-4 font-bold hover:opacity-70 transition-opacity\" aria-label=\"Close\">\n ×\n </button>\n )}\n </div>\n );\n}\n\nToast.displayName = 'Toast';\n\nexport default Toast;\n","import { ReactNode, useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type TooltipProps = {\n /** The element that triggers the tooltip */\n children: ReactNode;\n /** Tooltip text content */\n content: string | ReactNode;\n /** Position of the tooltip relative to the trigger element */\n position?: 'top' | 'bottom' | 'left' | 'right';\n /** Color variant of the tooltip */\n variant?: 'default' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral';\n /** Force the tooltip to always be visible */\n open?: boolean;\n /** Use portal rendering (escapes overflow constraints) */\n usePortal?: boolean;\n /** Additional CSS classes */\n className?: string;\n};\n\n/**\n * Tooltip - Hover tooltip component inspired by DaisyUI\n *\n * Displays a tooltip message when hovering over an element.\n * Uses CSS-only approach for better performance, with optional Portal rendering.\n *\n * @example\n * ```tsx\n * // Basic tooltip\n * <Tooltip content=\"Hello\">\n * <Button>Hover me</Button>\n * </Tooltip>\n *\n * // Positioned tooltip with color\n * <Tooltip content=\"Success!\" position=\"right\" variant=\"success\">\n * <Button>Submit</Button>\n * </Tooltip>\n *\n * // With portal (escapes overflow)\n * <Tooltip content=\"Tooltip\" position=\"right\" usePortal>\n * <Button>Hover</Button>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n children,\n content,\n position = 'top',\n variant = 'default',\n open = false,\n usePortal = false,\n className = ''\n}: Readonly<TooltipProps>) {\n const [showTooltip, setShowTooltip] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLSpanElement>(null);\n\n const isVisible = open || showTooltip;\n\n // Update tooltip position for portal mode\n useEffect(() => {\n if (usePortal && isVisible && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const positions = {\n top: {\n top: rect.top - 8,\n left: rect.left + rect.width / 2\n },\n bottom: {\n top: rect.bottom + 8,\n left: rect.left + rect.width / 2\n },\n left: {\n top: rect.top + rect.height / 2,\n left: rect.left - 8\n },\n right: {\n top: rect.top + rect.height / 2,\n left: rect.right + 8\n }\n };\n setTooltipPosition(positions[position]);\n }\n }, [usePortal, isVisible, position]);\n\n const variantClasses = {\n default: 'bg-popover text-popover-foreground',\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n accent: 'bg-accent text-accent-foreground',\n info: 'bg-blue-500 text-white',\n success: 'bg-green-500 text-white',\n warning: 'bg-yellow-500 text-foreground',\n error: 'bg-red-500 text-white',\n neutral: 'bg-muted text-muted-foreground'\n };\n\n const arrowColorClasses = {\n default: 'before:border-popover',\n primary: 'before:border-primary',\n secondary: 'before:border-secondary',\n accent: 'before:border-accent',\n info: 'before:border-blue-500',\n success: 'before:border-green-500',\n warning: 'before:border-yellow-500',\n error: 'before:border-red-500',\n neutral: 'before:border-muted'\n };\n\n // Portal positioning classes\n const portalPositionClasses = {\n top: '-translate-x-1/2 -translate-y-full before:left-1/2 before:-translate-x-1/2 before:top-full before:border-l-transparent before:border-r-transparent before:border-b-transparent',\n bottom:\n '-translate-x-1/2 before:left-1/2 before:-translate-x-1/2 before:bottom-full before:border-l-transparent before:border-r-transparent before:border-t-transparent',\n left: '-translate-x-full -translate-y-1/2 before:left-full before:top-1/2 before:-translate-y-1/2 before:border-t-transparent before:border-b-transparent before:border-r-transparent',\n right:\n '-translate-y-1/2 before:left-full before:top-1/2 before:-translate-y-1/2 before:border-t-transparent before:border-b-transparent before:border-r-transparent'\n };\n\n // Absolute positioning classes (non-portal)\n const absolutePositionClasses = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2 before:left-1/2 before:-translate-x-1/2 before:top-full before:border-l-transparent before:border-r-transparent before:border-b-transparent',\n bottom:\n 'top-full left-1/2 -translate-x-1/2 mt-2 before:left-1/2 before:-translate-x-1/2 before:bottom-full before:border-l-transparent before:border-r-transparent before:border-t-transparent',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2 before:top-1/2 before:-translate-y-1/2 before:left-full before:border-t-transparent before:border-b-transparent before:border-r-transparent',\n right:\n 'left-full top-1/2 -translate-y-1/2 ml-2 before:top-1/2 before:-translate-y-1/2 before:left-full before:border-t-transparent before:border-b-transparent before:border-r-transparent'\n };\n\n const positionClasses = usePortal ? portalPositionClasses : absolutePositionClasses;\n\n const tooltipContent = (\n <span\n className={`\n ${usePortal ? 'fixed' : 'absolute'}\n z-[9999]\n px-3 py-2\n text-sm font-medium\n rounded-lg\n shadow-lg\n whitespace-nowrap\n pointer-events-none\n transition-opacity duration-200\n ${variantClasses[variant]}\n ${positionClasses[position]}\n ${arrowColorClasses[variant]}\n ${isVisible ? 'opacity-100 visible' : 'opacity-0 invisible'}\n before:content-['']\n before:absolute\n before:border-4\n before:border-solid\n `}\n style={\n usePortal\n ? {\n top: `${tooltipPosition.top}px`,\n left: `${tooltipPosition.left}px`\n }\n : undefined\n }\n role=\"tooltip\"\n aria-hidden={!isVisible}\n >\n {content}\n </span>\n );\n\n return (\n <span\n ref={triggerRef}\n className={`group relative inline-flex ${usePortal ? '' : 'w-full'} ${className}`}\n data-position={position}\n onMouseEnter={() => !open && setShowTooltip(true)}\n onMouseLeave={() => !open && setShowTooltip(false)}\n onFocus={() => !open && setShowTooltip(true)}\n onBlur={() => !open && setShowTooltip(false)}\n >\n {children}\n {usePortal && isVisible ? createPortal(tooltipContent, document.body) : !usePortal && tooltipContent}\n </span>\n );\n}\n\nTooltip.displayName = 'Tooltip';\n\nexport default Tooltip;\n","import { useCallback, useLayoutEffect, useEffect, useRef, useState } from 'react';\n\nexport type OverlayPhase = 'mount' | 'animating-in' | 'visible' | 'animating-out';\n\nexport interface UseOverlayOptions {\n isOpen: boolean;\n onClose?: () => void; // reserved for future outside-click/escape wiring\n focusTrap?: boolean;\n lockScroll?: boolean;\n animationFrames?: number; // number of rAF hops before visible (default 2)\n restoreFocus?: boolean;\n exitDuration?: number; // ms matching CSS transition duration for animating-out\n unmountOnExit?: boolean; // default true\n}\n\nexport interface UseOverlayResult<T extends HTMLElement> {\n phase: OverlayPhase;\n shouldRender: boolean;\n ref: React.RefObject<T>;\n getPhaseClass: (openClass: string, closedClass: string) => string;\n}\n\n/**\n * useOverlay - shared lifecycle for animated overlays (Modal, Drawer, Popover, etc.)\n * Handles phased mounting, focus trap, scroll locking, and focus restoration.\n */\nexport function useOverlay<T extends HTMLElement>(options: UseOverlayOptions): UseOverlayResult<T> {\n const {\n isOpen,\n focusTrap = true,\n lockScroll = true,\n animationFrames = 2,\n restoreFocus = true,\n exitDuration = 300,\n unmountOnExit = true\n } = options;\n const previouslyFocusedRef = useRef<HTMLElement | null>(null);\n // Cast so consumer sees RefObject<T>; internal null checks still done.\n const containerRef = useRef<T>(null as unknown as T);\n const [shouldRender, setShouldRender] = useState(isOpen);\n const [phase, setPhase] = useState<OverlayPhase>('mount');\n\n // Mount / animation phases\n useLayoutEffect(() => {\n if (isOpen) {\n setShouldRender(true);\n setPhase('animating-in');\n let frame = 0;\n const step = () => {\n frame += 1;\n if (frame >= animationFrames) {\n setPhase('visible');\n } else {\n requestAnimationFrame(step);\n }\n };\n requestAnimationFrame(step);\n } else if (!isOpen && shouldRender) {\n setPhase('animating-out');\n }\n }, [isOpen, shouldRender, animationFrames]);\n\n // Handle exit unmount timing aligned with CSS duration\n useEffect(() => {\n if (phase === 'animating-out' && unmountOnExit) {\n const timeout = setTimeout(() => {\n setShouldRender(false);\n setPhase('mount');\n }, exitDuration);\n return () => clearTimeout(timeout);\n }\n return undefined;\n }, [phase, exitDuration, unmountOnExit]);\n\n // Scroll lock & focus capture\n useEffect(() => {\n if (isOpen) {\n if (typeof document !== 'undefined') {\n if (restoreFocus) previouslyFocusedRef.current = document.activeElement as HTMLElement;\n if (lockScroll) document.body.style.overflow = 'hidden';\n }\n }\n return () => {\n if (typeof document !== 'undefined') {\n if (lockScroll) document.body.style.overflow = '';\n if (!isOpen && restoreFocus && previouslyFocusedRef.current) {\n previouslyFocusedRef.current.focus();\n }\n }\n };\n }, [isOpen, lockScroll, restoreFocus]);\n\n // Focus dialog/panel when visible\n useEffect(() => {\n if (phase === 'visible' && containerRef.current) {\n (containerRef.current as unknown as HTMLElement).focus?.();\n }\n }, [phase]);\n\n // Focus trap\n const handleKeyDown = useCallback((e: KeyboardEvent) => {\n if (!focusTrap || phase !== 'visible' || e.key !== 'Tab' || !containerRef.current) return;\n const node = containerRef.current as unknown as HTMLElement;\n const focusable = node.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (!focusable.length) return;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === node) {\n e.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n }, [focusTrap, phase]);\n\n useEffect(() => {\n if (focusTrap && phase === 'visible') {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }\n return undefined;\n }, [phase, focusTrap, handleKeyDown]);\n\n const getPhaseClass = useCallback((openClass: string, closedClass: string) => (phase === 'visible' ? openClass : closedClass), [phase]);\n\n return { phase, shouldRender, ref: containerRef, getPhaseClass };\n}\n\nexport default useOverlay;","import React from 'react';\nimport useOverlay from '../overlay/useOverlay';\n\nexport type ModalProps = {\n isOpen: boolean;\n onClose: () => void;\n /** Raw children (ignored if structured props provided) */\n children?: React.ReactNode;\n /** Structured title (string or React) */\n title?: React.ReactNode;\n /** Optional description text */\n description?: React.ReactNode;\n /** Main body content */\n content?: React.ReactNode;\n /** Footer actions (buttons) */\n actions?: React.ReactNode;\n className?: string;\n ariaLabel?: string;\n /** Center vs top alignment */\n align?: 'center' | 'top';\n};\n\n/**\n * Modal - Overlay dialog component using pure Tailwind CSS\n * Achieves DaisyUI modal styling with Tailwind utilities\n */\nfunction Modal({ isOpen, onClose, children, title, description, content, actions, className = '', ariaLabel, align = 'center' }: Readonly<ModalProps>) {\n const { phase, shouldRender, ref: dialogRef, getPhaseClass } = useOverlay<HTMLDivElement>({\n isOpen,\n focusTrap: true,\n lockScroll: true,\n animationFrames: 2,\n restoreFocus: true\n });\n\n // ESC key handling separate from useOverlay to allow optional close logic\n React.useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n }\n };\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, onClose]);\n\n // Manage mounting phases\n\n // Focus dialog\n if (!shouldRender) return null;\n\n const enteringClasses = 'scale-100 translate-y-0 opacity-100';\n const exitingClasses = 'scale-[0.97] -translate-y-1 opacity-0';\n const scaleClass = getPhaseClass(enteringClasses, exitingClasses);\n // Stagger backdrop fade slightly after panel starts exiting to reduce perceived flicker\n const backdropOpacity = phase === 'visible' || phase === 'animating-in' ? 'opacity-100' : 'opacity-0 transition-opacity delay-50';\n\n const hasStructured = title || description || content || actions;\n const alignmentClasses = align === 'center' ? 'grid place-items-center' : 'flex items-start justify-center pt-20';\n\n return (\n <div\n data-phase={phase}\n className={`fixed inset-0 z-[999] ${alignmentClasses} bg-black/40 backdrop-blur-sm p-4 overflow-y-auto overscroll-contain transition-opacity duration-300 will-change-opacity ${backdropOpacity}`}\n onMouseDown={(e) => {\n // close only if clicking backdrop not dialog\n if (e.target === e.currentTarget) onClose();\n }}\n aria-label={ariaLabel || 'Close modal'}\n role=\"presentation\"\n >\n <div\n ref={dialogRef}\n data-phase={phase}\n className={`relative w-11/12 max-w-2xl max-h-[calc(100vh-5em)] bg-card text-card-foreground rounded-2xl border border-border shadow-2xl p-6 focus:outline-none transform transition-[transform,opacity] duration-250 ease-[cubic-bezier(.33,.66,.33,1)] will-change-transform will-change-opacity select-none [backface-visibility:hidden] [transform-style:preserve-3d] ${scaleClass} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onTransitionEnd={(e) => {\n if (e.target !== dialogRef.current) return;\n if (phase === 'animating-out') {\n // handled by useOverlay via shouldRender state change upstream; keep minimal here\n }\n }}\n >\n {hasStructured ? (\n <>\n {title && (\n <>\n {typeof title === 'string' ? (\n <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2>\n ) : (\n title\n )}\n {description && (\n <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>\n )}\n </>\n )}\n {content && <section className=\"text-sm leading-relaxed space-y-3 mt-4\">{content}</section>}\n {actions && (\n <footer className=\"flex justify-end gap-2 pt-2 mt-4 border-t border-border/60\">\n {actions}\n </footer>\n )}\n </>\n ) : (\n children\n )}\n </div>\n </div>\n );\n}\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n","import React from 'react';\n\nimport Modal from '../modal/modal';\n\nexport type DialogProps = {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n};\n\n/**\n * Dialog component (built on Modal)\n */\nfunction Dialog({ isOpen, onClose, title, children, actions, className = '' }: Readonly<DialogProps>) {\n return (\n <Modal isOpen={isOpen} onClose={onClose} ariaLabel={title} className={className}>\n <div className=\"flex flex-col p-6 gap-4\">\n <h2 className=\"text-2xl font-bold text-foreground\">{title}</h2>\n <div className=\"text-foreground\">{children}</div>\n {actions && <div className=\"flex justify-end gap-3 pt-2\">{actions}</div>}\n </div>\n </Modal>\n );\n}\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n","import { IconTrash, IconX } from '@tabler/icons-react';\n\nimport Dialog from './dialog';\nimport Button from '../../forms/button/button';\n\nexport type DeleteDialogProps = {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n title?: string;\n description?: string;\n itemName?: string;\n isLoading?: boolean;\n confirmText?: string;\n cancelText?: string;\n className?: string;\n};\n\n/**\n * DeleteDialog - Pre-configured dialog for delete confirmations\n *\n * @example\n * ```tsx\n * <DeleteDialog\n * isOpen={showDelete}\n * onClose={() => setShowDelete(false)}\n * onConfirm={handleDelete}\n * itemName=\"user account\"\n * />\n * ```\n */\nfunction DeleteDialog({\n isOpen,\n onClose,\n onConfirm,\n title = 'Confirm Deletion',\n description,\n itemName,\n isLoading = false,\n confirmText = 'Delete',\n cancelText = 'Cancel',\n className = ''\n}: Readonly<DeleteDialogProps>) {\n const defaultDescription = itemName\n ? `Are you sure you want to delete \"${itemName}\"? This action cannot be undone.`\n : 'Are you sure you want to delete this item? This action cannot be undone.';\n\n const finalDescription = description || defaultDescription;\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n title={title}\n className={className}\n actions={\n <>\n <Button\n onClick={onClose}\n disabled={isLoading}\n className=\"bg-muted hover:bg-muted/80 text-muted-foreground\"\n icon={<IconX size={16} />}\n >\n {cancelText}\n </Button>\n <Button\n onClick={onConfirm}\n disabled={isLoading}\n className=\"bg-destructive hover:bg-destructive/90 text-destructive-foreground\"\n icon={<IconTrash size={16} />}\n >\n {isLoading ? 'Deleting...' : confirmText}\n </Button>\n </>\n }\n >\n <p className=\"text-foreground\">{finalDescription}</p>\n </Dialog>\n );\n}\n\nDeleteDialog.displayName = 'DeleteDialog';\n\nexport default DeleteDialog;\n","import React, { useState, useRef, useEffect } from 'react';\n\nexport type PopoverProps = {\n trigger?: React.ReactNode;\n children?: React.ReactNode;\n content: React.ReactNode;\n position?: 'top' | 'bottom' | 'left' | 'right';\n className?: string;\n};\n\n/**\n * Popover component\n */\nfunction Popover({ trigger, children, content, position = 'bottom', className = '' }: Readonly<PopoverProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerContent = children || trigger;\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (popoverRef.current && !popoverRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }\n return undefined;\n }, [isOpen]);\n\n const positionClasses = {\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 return (\n <div className={`relative inline-block ${className}`} ref={popoverRef}>\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"bg-transparent border-0 p-0 cursor-pointer\"\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n {triggerContent}\n </button>\n {isOpen && (\n <div\n className={`absolute min-w-[200px] bg-popover text-popover-foreground border border-border rounded-lg shadow-xl p-4 z-50 animate-scaleIn ${positionClasses[position]}`}\n role=\"tooltip\"\n >\n {content}\n </div>\n )}\n </div>\n );\n}\n\nPopover.displayName = 'Popover';\n\nexport default Popover;\n","import { ReactNode } from 'react';\n\nexport type AlertProps = {\n children: ReactNode;\n type?: 'info' | 'success' | 'warning' | 'error';\n dismissible?: boolean;\n onClose?: () => void;\n className?: string;\n};\n\n/**\n * Alert - Dismissible notice for info/success/warning/error messages\n */\nfunction Alert({ children, type = 'info', dismissible = false, onClose, className = '' }: Readonly<AlertProps>) {\n const typeClasses = {\n info: 'bg-info/10 text-foreground border-info/30',\n success: 'bg-success/10 text-foreground border-success/30',\n warning: 'bg-warning/10 text-foreground border-warning/30',\n error: 'bg-destructive/10 text-foreground border-destructive/30'\n };\n\n const iconClasses = {\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-destructive'\n };\n\n const icons = {\n info: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n success: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n warning: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n error: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )\n };\n\n return (\n <div role=\"alert\" className={`p-4 border rounded-lg flex items-start gap-3 ${typeClasses[type]} ${className}`}>\n <span className={iconClasses[type]}>{icons[type]}</span>\n <span className=\"flex-1 text-sm\">{children}</span>\n {dismissible && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 text-current opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus:ring-2 focus:ring-ring rounded p-0.5\"\n aria-label=\"Close alert\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n\nAlert.displayName = 'Alert';\n\nexport default Alert;\n","export type SpinnerProps = {\n size?: 'sm' | 'md' | 'lg';\n /** Color variant */\n variant?: 'primary' | 'accent' | 'secondary' | 'neutral';\n className?: string;\n /** Override animation duration (e.g. '0.6s') */\n speed?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Spinner - Loading indicator\n */\nfunction Spinner({ size = 'md', variant = 'primary', className = '', speed, ...props }: Readonly<SpinnerProps>) {\n const sizeClasses = {\n sm: 'w-4 h-4 border-2',\n md: 'w-8 h-8 border-2',\n lg: 'w-12 h-12 border-4'\n };\n\n const variantTopBorder = {\n primary: 'border-t-primary',\n accent: 'border-t-accent',\n secondary: 'border-t-secondary',\n neutral: 'border-t-neutral'\n }[variant];\n\n const duration = speed ? `[animation-duration:${speed}]` : '';\n\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n data-variant={variant}\n className={`inline-block border-muted ${variantTopBorder} rounded-full animate-spin ${duration} ${sizeClasses[size]} ${className}`}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n}\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","export type ProgressBarProps = {\n value: number;\n max?: number;\n showLabel?: boolean;\n variant?: 'default' | 'success' | 'warning' | 'error';\n className?: string;\n};\n\n/**\n * ProgressBar - Visual representation of completion\n */\nfunction ProgressBar({\n value,\n max = 100,\n showLabel = false,\n variant = 'default',\n className = ''\n}: Readonly<ProgressBarProps>) {\n const percentage = Math.min((value / max) * 100, 100);\n\n const variantClasses = {\n default: 'bg-primary',\n success: 'bg-success',\n warning: 'bg-warning',\n error: 'bg-destructive'\n };\n\n return (\n <div className={className}>\n <div className=\"w-full bg-muted/30 rounded-full h-2.5 overflow-hidden shadow-inner\">\n <div\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={`h-full transition-all duration-500 ease-out rounded-full ${variantClasses[variant]}`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n {showLabel && (\n <div className=\"text-sm text-muted-foreground mt-2 text-right font-medium\">{Math.round(percentage)}%</div>\n )}\n </div>\n );\n}\n\nProgressBar.displayName = 'ProgressBar';\n\nexport default ProgressBar;\n","export type SkeletonProps = {\n variant?: 'text' | 'circular' | 'rectangular';\n width?: string;\n height?: string;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Skeleton - Placeholder for loading state\n */\nfunction Skeleton({ variant = 'text', width, height, className = '', ...props }: Readonly<SkeletonProps>) {\n const variantClasses = {\n text: 'rounded h-4',\n circular: 'rounded-full',\n rectangular: 'rounded-md'\n };\n\n const style = {\n width: width || (variant === 'circular' ? '40px' : '100%'),\n height: height || (variant === 'circular' ? '40px' : undefined)\n };\n\n return (\n <div\n className={`bg-muted animate-pulse ${variantClasses[variant]} ${className}`}\n style={style}\n aria-busy=\"true\"\n aria-live=\"polite\"\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n}\n\nSkeleton.displayName = 'Skeleton';\n\nexport default Skeleton;\n","import { ReactNode } from 'react';\n\nexport type BadgeProps = {\n children: ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Badge - Small color label for status or categorization\n */\nfunction Badge({ children, variant = 'default', size = 'md', className = '', ...props }: Readonly<BadgeProps>) {\n const variantClasses = {\n default: 'bg-muted text-muted-foreground border border-border',\n primary: 'bg-primary/10 text-primary border border-primary/20',\n success: 'bg-success/10 text-success border border-success/20',\n warning: 'bg-warning/10 text-warning border border-warning/20',\n error: 'bg-destructive/10 text-destructive border border-destructive/20'\n };\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs font-semibold',\n lg: 'px-3 py-1 text-sm font-semibold'\n };\n\n return (\n <span\n className={`inline-flex items-center font-medium rounded-full transition-colors ${variantClasses[variant]} ${sizeClasses[size]} ${className}`}\n {...props}\n >\n {children}\n </span>\n );\n}\n\nBadge.displayName = 'Badge';\n\nexport default Badge;\n","import { ReactNode } from 'react';\n\nexport type StatusLabelProps = {\n children: ReactNode;\n status?: 'active' | 'inactive' | 'pending' | 'success' | 'error' | 'warning' | 'info';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'filled' | 'outlined';\n className?: string;\n};\n\n/**\n * StatusLabel - Badge with a status indicator dot\n *\n * @example\n * ```tsx\n * <StatusLabel status=\"active\">Active</StatusLabel>\n * <StatusLabel status=\"pending\" size=\"sm\">Pending</StatusLabel>\n * <StatusLabel status=\"error\" variant=\"outlined\">Error</StatusLabel>\n * ```\n */\nfunction StatusLabel({\n children,\n status = 'info',\n size = 'md',\n variant = 'filled',\n className = ''\n}: Readonly<StatusLabelProps>) {\n const statusConfig = {\n active: {\n filled: 'bg-success/10 text-success border-success/20',\n outlined: 'bg-transparent text-success border-success',\n dot: 'bg-success'\n },\n inactive: {\n filled: 'bg-muted text-muted-foreground border-border',\n outlined: 'bg-transparent text-muted-foreground border-muted-foreground',\n dot: 'bg-muted-foreground'\n },\n pending: {\n filled: 'bg-warning/10 text-warning border-warning/20',\n outlined: 'bg-transparent text-warning border-warning',\n dot: 'bg-warning'\n },\n success: {\n filled: 'bg-success/10 text-success border-success/20',\n outlined: 'bg-transparent text-success border-success',\n dot: 'bg-success'\n },\n error: {\n filled: 'bg-destructive/10 text-destructive border-destructive/20',\n outlined: 'bg-transparent text-destructive border-destructive',\n dot: 'bg-destructive'\n },\n warning: {\n filled: 'bg-warning/10 text-warning border-warning/20',\n outlined: 'bg-transparent text-warning border-warning',\n dot: 'bg-warning'\n },\n info: {\n filled: 'bg-primary/10 text-primary border-primary/20',\n outlined: 'bg-transparent text-primary border-primary',\n dot: 'bg-primary'\n }\n };\n\n const sizeClasses = {\n sm: {\n container: 'px-2 py-0.5 text-xs gap-1.5',\n dot: 'w-1.5 h-1.5'\n },\n md: {\n container: 'px-2.5 py-0.5 text-sm gap-2',\n dot: 'w-2 h-2'\n },\n lg: {\n container: 'px-3 py-1 text-base gap-2',\n dot: 'w-2.5 h-2.5'\n }\n };\n\n return (\n <span\n className={`inline-flex items-center font-medium rounded-full border ${statusConfig[status][variant]} ${sizeClasses[size].container} ${className}`}\n >\n <span className={`rounded-full ${statusConfig[status].dot} ${sizeClasses[size].dot}`} />\n {children}\n </span>\n );\n}\n\nStatusLabel.displayName = 'StatusLabel';\n\nexport default StatusLabel;\n","import { ReactNode } from 'react';\n\nexport type AvatarProps = {\n src?: string;\n alt?: string;\n fallback?: ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n};\n\n/**\n * Avatar - User or profile image display\n */\nfunction Avatar({ src, alt = '', fallback, size = 'md', className = '' }: Readonly<AvatarProps>) {\n const sizeClasses = {\n sm: 'w-8 h-8 text-xs',\n md: 'w-10 h-10 text-sm',\n lg: 'w-12 h-12 text-base',\n xl: 'w-16 h-16 text-lg'\n };\n\n let content;\n if (src) {\n content = <img src={src} alt={alt} className=\"w-full h-full object-cover\" />;\n } else if (fallback) {\n content = fallback;\n } else {\n content = <span>{alt.charAt(0).toUpperCase()}</span>;\n }\n\n return (\n <div\n className={`inline-flex items-center justify-center rounded-full bg-muted text-muted-foreground font-medium overflow-hidden ${sizeClasses[size]} ${className}`}\n >\n {content}\n </div>\n );\n}\n\nAvatar.displayName = 'Avatar';\n\nexport default Avatar;\n","import { ReactNode } from 'react';\n\nexport type EmptyStateProps = {\n title: string;\n description?: string;\n icon?: ReactNode;\n action?: ReactNode;\n className?: string;\n};\n\n/**\n * EmptyState - Placeholder for no-data scenarios\n */\nfunction EmptyState({ title, description, icon, action, className = '' }: Readonly<EmptyStateProps>) {\n return (\n <div className={`flex flex-col items-center justify-center text-center py-12 ${className}`}>\n {icon && <div className=\"text-muted-foreground mb-4\">{icon}</div>}\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">{title}</h3>\n {description && <p className=\"text-muted-foreground mb-6 max-w-sm\">{description}</p>}\n {action}\n </div>\n );\n}\n\nEmptyState.displayName = 'EmptyState';\n\nexport default EmptyState;\n","import { ReactNode } from 'react';\n\nexport type ListProps = {\n children: ReactNode;\n className?: string;\n ordered?: boolean;\n};\n\nexport type ListItemProps = {\n children: ReactNode;\n className?: string;\n};\n\n/**\n * List - Vertical grouping of items\n */\nexport function List({ children, className = '', ordered = false }: Readonly<ListProps>) {\n const Component = ordered ? 'ol' : 'ul';\n\n return <Component className={`divide-y divide-border ${className}`}>{children}</Component>;\n}\n\nList.displayName = 'List';\n\n/**\n * ListItem - Individual list item\n */\nexport function ListItem({ children, className = '' }: Readonly<ListItemProps>) {\n return <li className={`py-3 ${className}`}>{children}</li>;\n}\n\nListItem.displayName = 'ListItem';\n\nexport default List;\n","import { ReactNode, HTMLAttributes } from 'react';\n\nexport type TableProps = {\n children: ReactNode;\n className?: string;\n striped?: boolean;\n bordered?: boolean;\n hoverable?: boolean;\n compact?: boolean;\n caption?: string;\n} & HTMLAttributes<HTMLTableElement>;\n\nexport type TableHeaderProps = {\n children: ReactNode;\n className?: string;\n} & HTMLAttributes<HTMLTableSectionElement>;\n\nexport type TableBodyProps = {\n children: ReactNode;\n className?: string;\n} & HTMLAttributes<HTMLTableSectionElement>;\n\nexport type TableFooterProps = {\n children: ReactNode;\n className?: string;\n} & HTMLAttributes<HTMLTableSectionElement>;\n\nexport type TableRowProps = {\n children: ReactNode;\n className?: string;\n selected?: boolean;\n} & HTMLAttributes<HTMLTableRowElement>;\n\nexport type TableHeadCellProps = {\n children: ReactNode;\n className?: string;\n align?: 'left' | 'center' | 'right';\n scope?: 'col' | 'row';\n} & HTMLAttributes<HTMLTableCellElement>;\n\nexport type TableCellProps = {\n children: ReactNode;\n className?: string;\n align?: 'left' | 'center' | 'right';\n} & HTMLAttributes<HTMLTableCellElement>;\n\n/**\n * Table - Semantic HTML table with consistent styling\n * - Responsive with horizontal scroll\n * - Optional striped rows, borders, and hover effects\n * - Compact mode for dense data\n * - Proper semantic structure with thead, tbody, tfoot\n */\nexport function Table({\n children,\n className = '',\n striped = false,\n bordered = false,\n hoverable = false,\n compact = false,\n caption,\n ...props\n}: Readonly<TableProps>) {\n const baseClasses = 'w-full text-sm text-left';\n const stripedClasses = striped ? 'striped' : '';\n const borderedClasses = bordered ? 'border border-border' : '';\n const compactClasses = compact ? 'table-compact' : '';\n\n return (\n <div className=\"overflow-x-auto rounded-lg\">\n <table\n className={`${baseClasses} ${stripedClasses} ${borderedClasses} ${compactClasses} ${className}`}\n {...props}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n {children}\n </table>\n <style>{`\n .striped tbody tr:nth-child(even) {\n background-color: hsl(var(--muted) / 0.3);\n }\n ${\n hoverable\n ? `\n table tbody tr:hover {\n background-color: hsl(var(--muted) / 0.5);\n }\n `\n : ''\n }\n .table-compact td,\n .table-compact th {\n padding: 0.5rem;\n }\n `}</style>\n </div>\n );\n}\n\n/**\n * TableHeader - Table header section (thead)\n */\nexport function TableHeader({ children, className = '', ...props }: Readonly<TableHeaderProps>) {\n return (\n <thead className={`text-xs text-muted-foreground uppercase bg-muted/50 ${className}`} {...props}>\n {children}\n </thead>\n );\n}\n\n/**\n * TableBody - Table body section (tbody)\n */\nexport function TableBody({ children, className = '', ...props }: Readonly<TableBodyProps>) {\n return (\n <tbody className={`divide-y divide-border ${className}`} {...props}>\n {children}\n </tbody>\n );\n}\n\n/**\n * TableFooter - Table footer section (tfoot)\n */\nexport function TableFooter({ children, className = '', ...props }: Readonly<TableFooterProps>) {\n return (\n <tfoot className={`text-xs font-semibold text-foreground bg-muted/30 ${className}`} {...props}>\n {children}\n </tfoot>\n );\n}\n\n/**\n * TableRow - Table row (tr)\n */\nexport function TableRow({ children, className = '', selected = false, ...props }: Readonly<TableRowProps>) {\n const selectedClasses = selected ? 'bg-primary/10' : '';\n\n return (\n <tr className={`${selectedClasses} ${className}`} {...props}>\n {children}\n </tr>\n );\n}\n\n/**\n * TableHeadCell - Table header cell (th)\n * - Includes proper scope attribute for accessibility\n * - Default scope is 'col' for column headers\n */\nexport function TableHeadCell({\n children,\n className = '',\n align = 'left',\n scope = 'col',\n ...props\n}: Readonly<TableHeadCellProps>) {\n const alignClasses = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n };\n\n return (\n <th scope={scope} className={`px-6 py-3 font-medium ${alignClasses[align]} ${className}`} {...props}>\n {children}\n </th>\n );\n}\n\n/**\n * TableCell - Table data cell (td)\n */\nexport function TableCell({ children, className = '', align = 'left', ...props }: Readonly<TableCellProps>) {\n const alignClasses = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n };\n\n return (\n <td className={`px-6 py-4 whitespace-nowrap ${alignClasses[align]} ${className}`} {...props}>\n {children}\n </td>\n );\n}\n\nexport default Table;\n","import { useMemo, useState } from 'react';\n\nexport type SortDirection = 'asc' | 'desc' | null;\n\nexport type SortConfig<T> = {\n key: keyof T;\n direction: SortDirection;\n} | null;\n\nexport type UseTableOptions<T> = {\n data: T[];\n initialSort?: { key: keyof T; direction: 'asc' | 'desc' };\n pageSize?: number;\n};\n\nexport type UseTableReturn<T> = {\n // Data\n currentData: T[];\n sortedData: T[];\n\n // Sorting\n sortConfig: SortConfig<T>;\n handleSort: (key: keyof T) => void;\n\n // Pagination\n currentPage: number;\n totalPages: number;\n setCurrentPage: (page: number) => void;\n nextPage: () => void;\n prevPage: () => void;\n canNextPage: boolean;\n canPrevPage: boolean;\n\n // Selection\n selectedRows: Set<number>;\n toggleRow: (index: number) => void;\n toggleAll: () => void;\n isRowSelected: (index: number) => boolean;\n isAllSelected: boolean;\n clearSelection: () => void;\n};\n\n/**\n * useTable Hook - Client-side table state management\n * Handles sorting, pagination, and selection\n */\nexport function useTable<T>({ data, initialSort, pageSize = 10 }: UseTableOptions<T>): UseTableReturn<T> {\n const [sortConfig, setSortConfig] = useState<SortConfig<T>>(\n initialSort ? { key: initialSort.key, direction: initialSort.direction } : null\n );\n const [currentPage, setCurrentPage] = useState(1);\n const [selectedRows, setSelectedRows] = useState<Set<number>>(new Set());\n\n // Sorting logic\n const sortedData = useMemo(() => {\n if (!sortConfig) return data;\n\n const sorted = [...data].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n if (aValue === bValue) return 0;\n\n // Handle null/undefined\n if (aValue == null) return 1;\n if (bValue == null) return -1;\n\n // Compare values\n if (aValue < bValue) {\n return sortConfig.direction === 'asc' ? -1 : 1;\n }\n return sortConfig.direction === 'asc' ? 1 : -1;\n });\n\n return sorted;\n }, [data, sortConfig]);\n\n // Pagination logic\n const totalPages = Math.ceil(sortedData.length / pageSize);\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n const currentData = sortedData.slice(startIndex, endIndex);\n\n // Sorting handler\n const handleSort = (key: keyof T) => {\n let direction: SortDirection = 'asc';\n\n if (sortConfig?.key === key) {\n if (sortConfig.direction === 'asc') {\n direction = 'desc';\n } else if (sortConfig.direction === 'desc') {\n direction = null;\n }\n }\n\n setSortConfig(direction ? { key, direction } : null);\n setCurrentPage(1); // Reset to first page on sort\n };\n\n // Pagination handlers\n const nextPage = () => {\n setCurrentPage((prev) => Math.min(prev + 1, totalPages));\n };\n\n const prevPage = () => {\n setCurrentPage((prev) => Math.max(prev - 1, 1));\n };\n\n const canNextPage = currentPage < totalPages;\n const canPrevPage = currentPage > 1;\n\n // Selection handlers\n const toggleRow = (index: number) => {\n setSelectedRows((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(index)) {\n newSet.delete(index);\n } else {\n newSet.add(index);\n }\n return newSet;\n });\n };\n\n const toggleAll = () => {\n if (selectedRows.size === currentData.length) {\n setSelectedRows(new Set());\n } else {\n const allIndices = currentData.map((_, idx) => startIndex + idx);\n setSelectedRows(new Set(allIndices));\n }\n };\n\n const isRowSelected = (index: number) => selectedRows.has(index);\n\n const isAllSelected = currentData.length > 0 && currentData.every((_, idx) => selectedRows.has(startIndex + idx));\n\n const clearSelection = () => setSelectedRows(new Set());\n\n return {\n currentData,\n sortedData,\n sortConfig,\n handleSort,\n currentPage,\n totalPages,\n setCurrentPage,\n nextPage,\n prevPage,\n canNextPage,\n canPrevPage,\n selectedRows,\n toggleRow,\n toggleAll,\n isRowSelected,\n isAllSelected,\n clearSelection\n };\n}\n","import { ReactNode } from 'react';\nimport { IconChevronUp, IconChevronDown, IconSelector } from '@tabler/icons-react';\n\nimport { Table, TableHeader, TableBody, TableRow, TableHeadCell, TableCell } from '../table/table';\nimport Checkbox from '../../forms/checkbox/checkbox';\nimport EmptyState from '../empty-state/empty-state';\nimport Button from '../../forms/button/button';\nimport Stack from '../../layout/stack/stack';\nimport { useTable, UseTableOptions } from './use-table';\n\nexport type DataTableAction<T> = {\n icon: ReactNode;\n label: string;\n onClick: (row: T, index: number) => void;\n variant?: 'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\n};\n\nexport type DataTableActionItem<T> = DataTableAction<T> | ReactNode;\n\nexport type ColumnDef<T> = {\n key: keyof T;\n label: string;\n sortable?: boolean;\n width?: string;\n align?: 'left' | 'center' | 'right';\n render?: (value: T[keyof T], row: T, index: number) => ReactNode;\n};\n\nexport type DataTableProps<T> = {\n data: T[];\n columns: ColumnDef<T>[];\n className?: string;\n\n // Styling options\n striped?: boolean;\n bordered?: boolean;\n hoverable?: boolean;\n compact?: boolean;\n stickyHeader?: boolean;\n\n // Features\n sortable?: boolean;\n paginated?: boolean;\n pageSize?: number;\n selectable?: boolean;\n\n // Actions - either array of action configs/components OR custom render function\n actions?: DataTableActionItem<T>[] | ((row: T, index: number) => ReactNode);\n actionsLabel?: string;\n actionsWidth?: string;\n\n // Callbacks\n onRowClick?: (row: T, index: number) => void;\n onSelectionChange?: (selectedIndices: number[]) => void;\n\n // Empty state\n emptyMessage?: string;\n emptyIcon?: ReactNode;\n\n // Initial state\n initialSort?: { key: keyof T; direction: 'asc' | 'desc' };\n};\n\n/**\n * DataTable - High-level data-driven table component\n *\n * Features:\n * - Generic typed data and columns\n * - Client-side sorting\n * - Client-side pagination\n * - Row selection with checkboxes\n * - Custom cell rendering\n * - Flexible actions: simple array config OR custom render function\n * - Empty state handling\n * - Sticky headers\n * - Click handlers\n *\n * Built on top of low-level Table primitives.\n *\n * @example\n * ```tsx\n * // Simple: Pass array of action configs (recommended)\n * <DataTable\n * data={users}\n * columns={columns}\n * actions={[\n * {\n * icon: <IconEdit />,\n * label: 'Edit user',\n * onClick: (row, index) => handleEdit(row, index),\n * variant: 'neutral'\n * },\n * {\n * icon: <IconTrash />,\n * label: 'Delete user',\n * onClick: (row, index) => handleDelete(row, index),\n * variant: 'error'\n * }\n * ]}\n * />\n * \n * // Advanced: Custom render function for full control\n * <DataTable\n * data={users}\n * columns={columns}\n * actions={(row, index) => (\n * <DataTableActions\n * row={row}\n * index={index}\n * onEdit={handleEdit}\n * onDelete={handleDelete}\n * />\n * )}\n * />\n * ```\n */\nfunction DataTable<T>({\n data,\n columns,\n className = '',\n striped = true,\n bordered = false,\n hoverable = true,\n compact = false,\n stickyHeader = false,\n sortable = true,\n paginated = false,\n pageSize = 10,\n selectable = false,\n actions,\n actionsLabel = 'Actions',\n actionsWidth = 'w-32',\n onRowClick,\n onSelectionChange,\n emptyMessage = 'No data available',\n emptyIcon,\n initialSort\n}: DataTableProps<T>) {\n // Use table hook for state management\n const tableOptions: UseTableOptions<T> = {\n data,\n initialSort,\n pageSize\n };\n\n const {\n currentData,\n sortedData,\n sortConfig,\n handleSort,\n currentPage,\n totalPages,\n nextPage,\n prevPage,\n canNextPage,\n canPrevPage,\n selectedRows,\n toggleRow,\n toggleAll,\n isRowSelected,\n isAllSelected\n } = useTable(tableOptions);\n\n // Display data (paginated uses currentData, non-paginated uses sortedData)\n const displayData = paginated ? currentData : sortedData;\n\n // Notify parent of selection changes\n const handleToggleRow = (index: number) => {\n toggleRow(index);\n if (onSelectionChange) {\n const newSelection = new Set(selectedRows);\n if (newSelection.has(index)) {\n newSelection.delete(index);\n } else {\n newSelection.add(index);\n }\n onSelectionChange(Array.from(newSelection));\n }\n };\n\n const handleToggleAll = () => {\n toggleAll();\n if (onSelectionChange) {\n if (isAllSelected) {\n onSelectionChange([]);\n } else {\n const startIndex = (currentPage - 1) * pageSize;\n const allIndices = displayData.map((_, idx) => startIndex + idx);\n onSelectionChange(allIndices);\n }\n }\n };\n\n // Render sort icon\n const renderSortIcon = (columnKey: keyof T) => {\n if (!sortable) return null;\n\n const isSorted = sortConfig?.key === columnKey;\n\n if (!isSorted) {\n return <IconSelector className=\"w-4 h-4 ml-1 text-muted-foreground\" />;\n }\n\n if (sortConfig?.direction === 'asc') {\n return <IconChevronUp className=\"w-4 h-4 ml-1 text-primary\" />;\n }\n\n return <IconChevronDown className=\"w-4 h-4 ml-1 text-primary\" />;\n };\n\n // Empty state\n if (data.length === 0) {\n return (\n <div className=\"border border-border rounded-lg\">\n <EmptyState title={emptyMessage} icon={emptyIcon} className=\"py-12\" />\n </div>\n );\n }\n\n return (\n <div className={className}>\n <div className={stickyHeader ? 'overflow-auto max-h-[600px]' : ''}>\n <Table striped={striped} bordered={bordered} hoverable={hoverable} compact={compact}>\n <TableHeader className={stickyHeader ? 'sticky top-0 z-10 bg-background shadow-sm' : ''}>\n <TableRow>\n {/* Selection column */}\n {selectable && (\n <TableHeadCell className=\"w-12\">\n <Checkbox checked={isAllSelected} onChange={handleToggleAll} ariaLabel=\"Select all rows\" />\n </TableHeadCell>\n )}\n\n {/* Data columns */}\n {columns.map((column) => (\n <TableHeadCell\n key={String(column.key)}\n align={column.align}\n className={column.width ? `w-[${column.width}]` : ''}\n >\n {column.sortable !== false && sortable ? (\n <button\n onClick={() => handleSort(column.key)}\n className=\"flex items-center gap-1 hover:text-foreground transition-colors font-medium\"\n type=\"button\"\n >\n {column.label}\n {renderSortIcon(column.key)}\n </button>\n ) : (\n column.label\n )}\n </TableHeadCell>\n ))}\n\n {/* Actions column */}\n {actions && (\n <TableHeadCell align=\"center\" className={actionsWidth}>\n {actionsLabel}\n </TableHeadCell>\n )}\n </TableRow>\n </TableHeader>\n\n <TableBody>\n {displayData.map((row, rowIndex) => {\n const actualIndex = paginated ? (currentPage - 1) * pageSize + rowIndex : rowIndex;\n const isSelected = isRowSelected(actualIndex);\n\n return (\n <TableRow\n key={actualIndex}\n selected={isSelected}\n onClick={onRowClick ? () => onRowClick(row, actualIndex) : undefined}\n className={onRowClick ? 'cursor-pointer' : ''}\n >\n {/* Selection cell */}\n {selectable && (\n <TableCell onClick={(e) => e.stopPropagation()}>\n <Checkbox\n checked={isSelected}\n onChange={() => handleToggleRow(actualIndex)}\n ariaLabel={`Select row ${actualIndex + 1}`}\n />\n </TableCell>\n )}\n\n {/* Data cells */}\n {columns.map((column) => {\n const value = row[column.key];\n const content = column.render ? column.render(value, row, actualIndex) : String(value ?? '');\n\n return (\n <TableCell key={String(column.key)} align={column.align}>\n {content}\n </TableCell>\n );\n })}\n\n {/* Actions cell */}\n {actions && (\n <TableCell align=\"center\" onClick={(e) => e.stopPropagation()}>\n {Array.isArray(actions) ? (\n <Stack direction=\"horizontal\" spacing=\"sm\" justify=\"center\">\n {actions.map((action, actionIndex) => {\n // Check if it's a config object or a component\n if (action && typeof action === 'object' && 'onClick' in action) {\n // It's a DataTableAction config\n const actionConfig = action as DataTableAction<T>;\n return (\n <Button\n key={actionIndex}\n size=\"sm\"\n variant={actionConfig.variant || 'neutral'}\n style=\"ghost\"\n icon={actionConfig.icon}\n ariaLabel={actionConfig.label}\n onClick={() => actionConfig.onClick(row, actualIndex)}\n />\n );\n } else {\n // It's a React component\n return <div key={actionIndex}>{action as ReactNode}</div>;\n }\n })}\n </Stack>\n ) : (\n actions(row, actualIndex)\n )}\n </TableCell>\n )}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination controls */}\n {paginated && totalPages > 1 && (\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-border\">\n <div className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages} ({data.length} total rows)\n </div>\n <div className=\"flex gap-2\">\n <Button size=\"sm\" style=\"outline\" onClick={prevPage} disabled={!canPrevPage}>\n Previous\n </Button>\n <Button size=\"sm\" style=\"outline\" onClick={nextPage} disabled={!canNextPage}>\n Next\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nDataTable.displayName = 'DataTable';\n\nexport default DataTable;\n","import { ReactNode, MouseEvent } from 'react';\nimport { IconX } from '@tabler/icons-react';\n\nexport type ChipProps = {\n children: ReactNode;\n className?: string;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error';\n size?: 'sm' | 'md' | 'lg';\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n icon?: ReactNode;\n disabled?: boolean;\n clickable?: boolean;\n onClick?: (e: MouseEvent<HTMLDivElement>) => void;\n};\n\n/**\n * Chip - Compact element for tags, filters, and selections\n *\n * Features:\n * - Color variants (default, primary, success, warning, error)\n * - Sizes (sm, md, lg)\n * - Optional remove button\n * - Optional icon\n * - Clickable state\n * - Disabled state\n *\n * Similar to Badge but with interaction (remove, click)\n */\nfunction Chip({\n children,\n className = '',\n variant = 'default',\n size = 'md',\n onRemove,\n icon,\n disabled = false,\n clickable = false,\n onClick\n}: Readonly<ChipProps>) {\n // Size classes\n const sizeClasses = {\n sm: 'text-xs px-2 py-1 gap-1',\n md: 'text-sm px-3 py-1.5 gap-1.5',\n lg: 'text-base px-4 py-2 gap-2'\n };\n\n // Variant classes\n const variantClasses = {\n default: 'bg-muted text-muted-foreground',\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/10 text-warning',\n error: 'bg-destructive/10 text-destructive'\n };\n\n // Hover/active classes\n const interactiveClasses =\n clickable && !disabled ? 'cursor-pointer hover:opacity-80 active:opacity-60 transition-opacity' : '';\n\n const disabledClasses = disabled ? 'opacity-50 cursor-not-allowed' : '';\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n if (!disabled && clickable && onClick) {\n onClick(e);\n }\n };\n\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation(); // Don't trigger chip onClick\n if (!disabled && onRemove) {\n onRemove(e);\n }\n };\n\n return (\n <div\n className={`\n inline-flex items-center justify-center\n rounded-full font-medium\n ${sizeClasses[size]}\n ${variantClasses[variant]}\n ${interactiveClasses}\n ${disabledClasses}\n ${className}\n `}\n onClick={handleClick}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable && !disabled ? 0 : undefined}\n onKeyDown={\n clickable && !disabled\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick?.(e as unknown as MouseEvent<HTMLDivElement>);\n }\n }\n : undefined\n }\n >\n {/* Icon */}\n {icon && <span className=\"flex-shrink-0 flex items-center\">{icon}</span>}\n\n {/* Content */}\n <span className=\"truncate\">{children}</span>\n\n {/* Remove button */}\n {onRemove && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n flex-shrink-0 flex items-center justify-center\n rounded-full hover:bg-black/10 dark:hover:bg-white/10\n transition-colors\n ${size === 'sm' ? 'w-3 h-3' : size === 'md' ? 'w-4 h-4' : 'w-5 h-5'}\n ${disabled ? 'cursor-not-allowed' : 'cursor-pointer'}\n `}\n aria-label=\"Remove\"\n >\n <IconX className={size === 'sm' ? 'w-2.5 h-2.5' : size === 'md' ? 'w-3 h-3' : 'w-3.5 h-3.5'} />\n </button>\n )}\n </div>\n );\n}\n\nChip.displayName = 'Chip';\n\nexport default Chip;\n","import { ReactNode } from 'react';\n\nexport type TimelineItemProps = {\n children: ReactNode;\n className?: string;\n icon?: ReactNode;\n iconColor?: 'default' | 'primary' | 'success' | 'warning' | 'error';\n title?: string;\n subtitle?: string;\n timestamp?: string;\n isLast?: boolean;\n};\n\nexport type TimelineProps = {\n children: ReactNode;\n className?: string;\n position?: 'left' | 'center' | 'right';\n};\n\n/**\n * TimelineItem - Individual event in timeline\n */\nexport function TimelineItem({\n children,\n className = '',\n icon,\n iconColor = 'default',\n title,\n subtitle,\n timestamp,\n isLast = false\n}: Readonly<TimelineItemProps>) {\n const iconColorClasses = {\n default: 'bg-muted text-muted-foreground',\n primary: 'bg-primary text-primary-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n error: 'bg-destructive text-destructive-foreground'\n };\n\n return (\n <div className={`flex gap-4 ${className}`}>\n {/* Icon/Dot Column */}\n <div className=\"flex flex-col items-center\">\n {/* Icon or Dot */}\n <div\n className={`\n flex items-center justify-center\n w-8 h-8 rounded-full\n flex-shrink-0\n ${iconColorClasses[iconColor]}\n `}\n >\n {icon || <div className=\"w-2 h-2 rounded-full bg-current\" />}\n </div>\n\n {/* Connector Line */}\n {!isLast && <div className=\"w-0.5 flex-1 bg-border mt-2\" />}\n </div>\n\n {/* Content Column */}\n <div className={`flex-1 ${!isLast ? 'pb-8' : ''}`}>\n {/* Header */}\n {(title || timestamp) && (\n <div className=\"flex items-start justify-between gap-4 mb-1\">\n {title && <h4 className=\"font-semibold text-foreground\">{title}</h4>}\n {timestamp && <time className=\"text-sm text-muted-foreground whitespace-nowrap\">{timestamp}</time>}\n </div>\n )}\n\n {/* Subtitle */}\n {subtitle && <p className=\"text-sm text-muted-foreground mb-2\">{subtitle}</p>}\n\n {/* Content */}\n {children && <div className=\"text-sm text-foreground\">{children}</div>}\n </div>\n </div>\n );\n}\n\n/**\n * Timeline - Vertical timeline for events, activities, history\n *\n * Features:\n * - Vertical layout with connector lines\n * - Custom icons or default dots\n * - Color-coded events\n * - Titles, subtitles, timestamps\n * - Flexible content\n *\n * Common uses:\n * - Activity feeds\n * - Order tracking\n * - Version history\n * - Process steps\n */\nfunction Timeline({ children, className = '', position = 'left' }: Readonly<TimelineProps>) {\n const positionClasses = {\n left: '',\n center: 'mx-auto max-w-2xl',\n right: 'ml-auto max-w-2xl'\n };\n\n return <div className={`${positionClasses[position]} ${className}`}>{children}</div>;\n}\n\nTimeline.displayName = 'Timeline';\n\nexport default Timeline;\n","import React from 'react';\n\nexport type GridProps = {\n children: React.ReactNode;\n className?: string;\n /** Size of grid items (controls minimum width before wrapping) */\n itemSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Maximum number of columns (optional constraint) */\n maxCols?: number;\n /** Gap between grid items */\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Responsive column configuration for different breakpoints */\n responsive?: {\n sm?: number; // min-width: 640px\n md?: number; // min-width: 768px\n lg?: number; // min-width: 1024px\n xl?: number; // min-width: 1280px\n };\n /** Align items vertically */\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\n /** Justify items horizontally */\n justifyItems?: 'start' | 'center' | 'end' | 'stretch';\n};\n\n/**\n * Grid - Responsive grid layout component\n *\n * Features:\n * - Auto-responsive grid using CSS Grid auto-fit/auto-fill\n * - Configurable minimum item width (items wrap when too narrow)\n * - Optional responsive column overrides for specific breakpoints\n * - Flexible gap spacing\n * - Alignment controls\n *\n * @example\n * ```tsx\n * // Auto-responsive grid with md (250px) item size\n * <Grid itemSize=\"md\" gap=\"md\">\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * <Card>Item 3</Card>\n * </Grid>\n *\n * // Responsive grid with breakpoint overrides\n * <Grid\n * itemSize=\"sm\"\n * responsive={{ sm: 1, md: 2, lg: 3, xl: 4 }}\n * gap=\"lg\"\n * >\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * </Grid>\n *\n * // Fixed max columns with auto-fit\n * <Grid itemSize=\"xs\" maxCols={4} gap=\"md\">\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * </Grid>\n * ```\n */\nfunction Grid({\n children,\n className = '',\n itemSize = 'md',\n maxCols,\n gap = 'md',\n responsive,\n alignItems = 'stretch',\n justifyItems = 'stretch'\n}: Readonly<GridProps>) {\n const itemSizeValues = {\n xs: '150px',\n sm: '200px',\n md: '250px',\n lg: '300px',\n xl: '350px',\n '2xl': '400px'\n };\n\n const gapClasses = {\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 const alignItemsClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch'\n };\n\n const justifyItemsClasses = {\n start: 'justify-items-start',\n center: 'justify-items-center',\n end: 'justify-items-end',\n stretch: 'justify-items-stretch'\n };\n\n // Build responsive column classes if provided\n const responsiveClasses = responsive\n ? Object.entries(responsive)\n .map(([breakpoint, cols]) => {\n const breakpointPrefix =\n breakpoint === 'sm' ? 'sm:' : breakpoint === 'md' ? 'md:' : breakpoint === 'lg' ? 'lg:' : 'xl:';\n return `${breakpointPrefix}grid-cols-${cols}`;\n })\n .join(' ')\n : '';\n\n // Get minimum width value from variant\n const minWidth = itemSizeValues[itemSize];\n\n // Build grid template columns style\n // If responsive classes are provided, use them via Tailwind\n // Otherwise, use CSS custom property for auto-fit/auto-fill\n const gridStyle = !responsive\n ? {\n gridTemplateColumns: maxCols\n ? `repeat(auto-fit, minmax(min(${minWidth}, 100%), 1fr))`\n : `repeat(auto-fill, minmax(min(${minWidth}, 100%), 1fr))`\n }\n : undefined;\n\n return (\n <div\n className={`\n grid\n ${!responsive ? '' : responsiveClasses}\n ${gapClasses[gap]}\n ${alignItemsClasses[alignItems]}\n ${justifyItemsClasses[justifyItems]}\n ${className}\n `.trim()}\n style={gridStyle}\n >\n {children}\n </div>\n );\n}\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import { ReactNode, createElement } from 'react';\n\nexport type HeadingProps = {\n children: ReactNode;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n noMargin?: boolean;\n};\n\n/**\n * Heading - Consistent typography scale (H1-H6)\n * Includes sensible default margins for spacing\n */\nfunction Heading({ children, level = 1, className = '', noMargin = false }: Readonly<HeadingProps>) {\n const levelClasses = {\n 1: 'text-4xl font-bold',\n 2: 'text-3xl font-bold',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-medium',\n 6: 'text-base font-medium'\n };\n\n const marginClasses = {\n 1: 'mb-4',\n 2: 'mb-3',\n 3: 'mb-3',\n 4: 'mb-2',\n 5: 'mb-2',\n 6: 'mb-2'\n };\n\n const margin = noMargin ? '' : marginClasses[level];\n\n return createElement(\n `h${level}`,\n {\n className: `text-foreground ${levelClasses[level]} ${margin} ${className}`\n },\n children\n );\n}\n\nHeading.displayName = 'Heading';\n\nexport default Heading;\n","import { ReactNode } from 'react';\n\nimport Container from '../../layout/container/container';\nimport Grid from '../../layout/grid/grid';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\n\nexport type PricingTableProps = {\n title?: string;\n description?: string;\n children: ReactNode;\n columns?: 2 | 3 | 4;\n className?: string;\n};\n\n/**\n * PricingTable Component - Pricing section\n * - Responsive grid layout\n * - Optional title and description\n * - Flexible column count\n * - Container for PricingTier components\n */\nfunction PricingTable({ title, description, children, columns = 3, className = '' }: Readonly<PricingTableProps>) {\n return (\n <section className={`py-16 md:py-20 ${className}`}>\n <Container size=\"xl\">\n {(title || description) && (\n <div className=\"text-center mb-12 md:mb-16 max-w-3xl mx-auto\">\n {title && (\n <Heading level={2} className=\"text-3xl md:text-4xl font-bold mb-4\">\n {title}\n </Heading>\n )}\n {description && <Text className=\"text-lg md:text-xl text-muted\">{description}</Text>}\n </div>\n )}\n\n <Grid itemSize=\"lg\" maxCols={columns} gap=\"lg\" className=\"items-stretch\">\n {children}\n </Grid>\n </Container>\n </section>\n );\n}\n\nPricingTable.displayName = 'PricingTable';\n\nexport default PricingTable;\n","import React from 'react';\n\nexport type CardProps = {\n children: React.ReactNode;\n className?: string;\n /** Visual style variant */\n variant?: 'default' | 'bordered' | 'ghost' | 'filled';\n /** Size of the card (controls width) */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Makes the card hoverable with transition effects */\n hoverable?: boolean;\n /** Card image position (when using figure element) */\n imagePosition?: 'top' | 'bottom' | 'side' | 'overlay';\n /** Centers the card content */\n centered?: boolean;\n /** Compact mode with reduced padding */\n compact?: boolean;\n /** Legacy prop alias for hoverable */\n interactive?: boolean;\n /** Legacy highlighted style (maps to filled variant) */\n highlighted?: boolean;\n /** Legacy maxWidth prop mapped to size if matches */\n maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Legacy padding prop (\"none\" disables default spacing) */\n padding?: 'none';\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Card - Modern card component with flexible layouts\n *\n * Features:\n * - Multiple visual variants (default, bordered, ghost, filled)\n * - Flexible image positioning (top, bottom, side, overlay)\n * - Size variants from xs to xl\n * - Hover effects and transitions\n * - Centered content option\n * - Works with CardTitle, CardBody, CardActions, and CardFigure sub-components\n *\n * @example\n * ```tsx\n * // Basic card\n * <Card>\n * <CardBody>\n * <CardTitle>Title</CardTitle>\n * <p>Content goes here</p>\n * <CardActions>\n * <Button>Action</Button>\n * </CardActions>\n * </CardBody>\n * </Card>\n *\n * // Card with image\n * <Card hoverable>\n * <CardFigure>\n * <img src=\"...\" alt=\"...\" />\n * </CardFigure>\n * <CardBody>\n * <CardTitle>Product Name</CardTitle>\n * <p>Description</p>\n * <CardActions>\n * <Button>Buy Now</Button>\n * </CardActions>\n * </CardBody>\n * </Card>\n *\n * // Side image card\n * <Card imagePosition=\"side\">\n * <CardFigure>\n * <img src=\"...\" alt=\"...\" />\n * </CardFigure>\n * <CardBody>\n * <CardTitle>Title</CardTitle>\n * <p>Content</p>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction Card({\n children,\n className = '',\n variant = 'default',\n size = 'md',\n hoverable = false,\n imagePosition = 'top',\n centered = false,\n compact = false,\n interactive,\n highlighted,\n maxWidth,\n padding,\n ...props\n}: Readonly<CardProps>) {\n // Map legacy props\n if (interactive && !hoverable) hoverable = true;\n if (highlighted) variant = 'filled';\n if (maxWidth) {\n // If size not explicitly set differently, attempt to map\n if (!size || size === 'md') {\n // Map 2xl to xl since original sizes did not include 2xl width mapping\n size = (maxWidth === '2xl' ? 'xl' : (maxWidth as any));\n }\n }\n const variantClasses = {\n default: 'bg-card text-card-foreground border border-border shadow-md',\n bordered: 'bg-card text-card-foreground border-2 border-border',\n ghost: 'bg-transparent',\n filled: 'bg-muted text-foreground'\n };\n\n const sizeClasses = {\n xs: 'w-36',\n sm: 'w-64',\n md: 'w-96',\n lg: 'w-[28rem]',\n xl: 'w-[32rem]'\n };\n\n const hoverClasses = hoverable\n ? 'transition-all duration-300 hover:shadow-xl hover:-translate-y-1 cursor-pointer'\n : 'transition-shadow duration-200';\n\n const imagePositionClasses = {\n top: 'flex-col',\n bottom: 'flex-col-reverse',\n side: 'flex-row',\n overlay: 'relative'\n };\n\n const centerClasses = centered ? 'text-center items-center' : '';\n\n return (\n <div\n className={`\n rounded-2xl\n overflow-hidden\n ${variantClasses[variant]}\n ${size !== 'md' ? sizeClasses[size] : 'max-w-full'}\n ${hoverClasses}\n ${imagePositionClasses[imagePosition]}\n ${centerClasses}\n ${compact ? 'p-4' : ''}\n ${padding === 'none' ? '' : ''}\n ${imagePosition === 'side' ? 'flex' : 'flex'}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nCard.displayName = 'Card';\n\nexport default Card;\n","import { ReactNode } from 'react';\n\nexport type CardHeaderProps = {\n children: ReactNode;\n className?: string;\n /**\n * Add border to bottom of header\n * @default true\n */\n bordered?: boolean;\n /**\n * Padding size\n * @default 'md'\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n};\n\n/**\n * CardHeader - Header section for Card\n *\n * Displays a header section at the top of a card, typically used for titles or metadata.\n * Can be used with or without CardBody.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardHeader>\n * <h3>Card Header</h3>\n * </CardHeader>\n * <CardBody>\n * <p>Content</p>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction CardHeader({ children, className = '', bordered = true, padding = 'md' }: Readonly<CardHeaderProps>) {\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8'\n };\n\n return (\n <div\n className={`\n card-header\n flex items-center justify-between gap-3\n ${paddingClasses[padding]}\n ${bordered ? 'border-b border-border' : ''}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </div>\n );\n}\n\nCardHeader.displayName = 'CardHeader';\n\nexport default CardHeader;\n","import { ReactNode } from 'react';\n\nexport type CardFooterProps = {\n children: ReactNode;\n className?: string;\n /**\n * Add border to top of footer\n * @default true\n */\n bordered?: boolean;\n /**\n * Padding size\n * @default 'md'\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n /**\n * Alignment of footer content\n * @default 'start'\n */\n align?: 'start' | 'center' | 'end';\n};\n\n/**\n * CardFooter - Footer section for Card\n *\n * Displays a footer section at the bottom of a card, typically used for actions or metadata.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardBody>\n * <CardTitle>Title</CardTitle>\n * <p>Content</p>\n * </CardBody>\n * <CardFooter align=\"end\">\n * <Button>Action</Button>\n * </CardFooter>\n * </Card>\n * ```\n */\nfunction CardFooter({\n children,\n className = '',\n bordered = true,\n padding = 'md',\n align = 'start'\n}: Readonly<CardFooterProps>) {\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8'\n };\n\n const alignClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end'\n };\n\n return (\n <div\n className={`\n card-footer\n flex items-center gap-1\n ${paddingClasses[padding]}\n ${bordered ? 'border-t border-border' : ''}\n ${alignClasses[align]}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </div>\n );\n}\n\nCardFooter.displayName = 'CardFooter';\n\nexport default CardFooter;\n","import { IconCheck } from '@tabler/icons-react';\n\nimport Card from '../../layout/card/card';\nimport CardHeader from '../../layout/card/card-header';\nimport CardFooter from '../../layout/card/card-footer';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\nimport Button from '../../forms/button/button';\nimport Badge from '../badge/badge';\n\nexport type PricingFeature = {\n label: string;\n included: boolean;\n};\n\nexport type PricingTierProps = {\n name: string;\n price: string;\n period?: string;\n description?: string;\n features: PricingFeature[];\n ctaLabel: string;\n ctaOnClick: () => void;\n featured?: boolean;\n badge?: string;\n className?: string;\n};\n\n/**\n * PricingTier Component - Individual pricing card\n * - Price display with period\n * - Feature list with checkmarks\n * - CTA button\n * - Featured highlighting\n * - Optional badge\n */\nfunction PricingTier({\n name,\n price,\n period = '/month',\n description,\n features,\n ctaLabel,\n ctaOnClick,\n featured = false,\n badge,\n className = ''\n}: Readonly<PricingTierProps>) {\n return (\n <Card\n className={`relative flex flex-col h-full ${\n featured ? 'border-2 border-primary shadow-xl' : 'border border-border'\n } ${className}`}\n >\n <CardHeader className={`relative text-center border-none bg-transparent px-6 pt-12 pb-0`}>\n {badge && (\n <div className=\"absolute top-2 left-1/2 -translate-x-1/2\">\n <Badge variant=\"primary\" className=\"px-4 py-1 shadow-md\">\n {badge}\n </Badge>\n </div>\n )}\n <Heading level={3} className=\"text-2xl font-bold mb-3 text-foreground\">\n {name}\n </Heading>\n {description && (\n <Text variant=\"muted\" className=\"text-sm mb-1\">\n {description}\n </Text>\n )}\n </CardHeader>\n\n <div className=\"pt-3 pb-8 text-center px-6\">\n <div className=\"flex items-baseline justify-center gap-1\">\n <span className=\"text-5xl font-bold text-foreground\">{price}</span>\n {period && <span className=\"text-muted-foreground text-lg\">{period}</span>}\n </div>\n </div>\n\n <div className=\"flex-1 space-y-4 py-6 px-6 border-t border-border/50\">\n {features.map((feature, index) => (\n <div key={index} className=\"flex items-start gap-3\">\n <IconCheck\n size={20}\n className={`flex-shrink-0 mt-0.5 ${feature.included ? 'text-success' : 'text-muted-foreground opacity-30'}`}\n />\n <Text className={`text-sm ${feature.included ? 'text-foreground' : 'text-muted-foreground line-through'}`}>\n {feature.label}\n </Text>\n </div>\n ))}\n </div>\n\n <CardFooter className=\"border-none bg-transparent px-6 pb-6 pt-4\">\n <Button\n variant={featured ? 'primary' : 'neutral'}\n style={featured ? 'solid' : 'outline'}\n className=\"w-full\"\n size=\"lg\"\n onClick={ctaOnClick}\n >\n {ctaLabel}\n </Button>\n </CardFooter>\n </Card>\n );\n}\n\nPricingTier.displayName = 'PricingTier';\n\nexport default PricingTier;\n","import { useState } from 'react';\n\nimport Button from '../../forms/button/button';\n\nexport type CodeBlockProps = {\n code: string;\n className?: string;\n showCopy?: boolean;\n};\n\n/**\n * CodeBlock - Displays formatted code with syntax highlighting and copy functionality\n */\nfunction CodeBlock({ code, className = '', showCopy = true }: Readonly<CodeBlockProps>) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy code:', err);\n }\n };\n\n return (\n <div className={`relative group ${className}`}>\n {showCopy && (\n <div className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Button\n variant=\"neutral\"\n style=\"ghost\"\n size=\"sm\"\n onClick={handleCopy}\n className=\"text-xs bg-background/80 hover:bg-background\"\n >\n {copied ? '✓ Copied' : 'Copy'}\n </Button>\n </div>\n )}\n <pre className={`bg-muted/50 border rounded-lg p-4 overflow-x-auto text-sm ${showCopy ? 'pr-24' : ''}`}>\n <code className=\"font-mono text-foreground\">{code}</code>\n </pre>\n </div>\n );\n}\n\nCodeBlock.displayName = 'CodeBlock';\n\nexport default CodeBlock;\n","export type DividerProps = {\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n} & React.HTMLAttributes<HTMLHRElement>;\n\n/**\n * Divider - Visual section break\n */\nfunction Divider({ orientation = 'horizontal', className = '', ...props }: Readonly<DividerProps>) {\n const orientationClasses = orientation === 'horizontal' ? 'w-full h-px' : 'h-full w-px';\n\n return (\n <hr className={`border-0 bg-border ${orientationClasses} ${className}`} aria-orientation={orientation} {...props} />\n );\n}\n\nDivider.displayName = 'Divider';\n\nexport default Divider;\n","import { ReactNode, useEffect } from 'react';\nimport useOverlay from '../../feedback/overlay/useOverlay';\n\nexport type DrawerProps = {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n position?: 'left' | 'right' | 'top' | 'bottom';\n className?: string;\n /** Horizontally align drawer content (navigation items etc.) */\n contentAlign?: 'start' | 'center' | 'end';\n /** Vertically center content within available space (if content height < drawer height) */\n centerVertical?: boolean;\n};\n\n/**\n * Drawer - Slide-in panel for navigation or tools\n */\nfunction Drawer({ isOpen, onClose, children, position = 'right', className = '', contentAlign = 'start', centerVertical = false }: Readonly<DrawerProps>) {\n const { phase, shouldRender, ref: panelRef, getPhaseClass } = useOverlay<HTMLDivElement>({\n isOpen,\n focusTrap: true,\n lockScroll: true,\n restoreFocus: true,\n animationFrames: 2\n });\n\n // Body scroll lock & ESC key\n useEffect(() => {\n if (!isOpen) 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, onClose]);\n\n // Manage mount & animation phases\n // Outside click (backdrop) handled below; focus trap now via useOverlay\n\n // Focus the panel when fully opened\n // focus handled by useOverlay\n\n if (!shouldRender) return null;\n\n const positionClasses = {\n left: 'left-0 top-0 h-full w-80',\n right: 'right-0 top-0 h-full w-80',\n top: 'top-0 left-0 w-full h-80',\n bottom: 'bottom-0 left-0 w-full h-80'\n } as const;\n\n const offscreenTransform = {\n left: '-translate-x-full',\n right: 'translate-x-full',\n top: '-translate-y-full',\n bottom: 'translate-y-full'\n }[position];\n\n const transformClass = getPhaseClass('translate-x-0 translate-y-0', offscreenTransform);\n const overlayOpacity = getPhaseClass('opacity-100', 'opacity-0');\n const panelOpacity = getPhaseClass('opacity-100', 'opacity-0');\n\n return (\n <>\n <div\n className={`fixed inset-0 bg-black/50 backdrop-blur-sm z-40 transition-opacity duration-300 ease-out will-change-opacity ${overlayOpacity}`}\n onClick={onClose}\n aria-hidden=\"true\"\n data-phase={phase}\n />\n <div\n ref={panelRef}\n className={`fixed bg-card text-card-foreground border border-border shadow-2xl z-50 flex flex-col ${positionClasses[position]} transform ${transformClass} ${panelOpacity} will-change-transform will-change-opacity transition-[transform,opacity] duration-300 ease-[cubic-bezier(.25,.8,.25,1)] focus:outline-none ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n data-position={position}\n data-phase={phase}\n tabIndex={-1}\n onTransitionEnd={() => {\n // handled by useOverlay via shouldRender; keep for future hooks\n }}\n >\n <header className=\"flex items-center justify-end p-3 border-b border-border\">\n <button\n onClick={onClose}\n aria-label=\"Close drawer\"\n className=\"w-8 h-8 inline-flex items-center justify-center rounded hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring\"\n type=\"button\"\n >\n <span className=\"text-sm\">✕</span>\n </button>\n </header>\n <section\n className={`flex-1 overflow-y-auto px-3 py-3 transition-opacity duration-200 ${panelOpacity} flex flex-col ${\n contentAlign === 'center' ? 'items-center' : contentAlign === 'end' ? 'items-end' : 'items-start'\n } space-y-4 ${centerVertical ? 'justify-center' : ''}`}\n >\n {children}\n </section>\n </div>\n </>\n );\n}\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n","import React from 'react';\n\nexport type PageProps = {\n /** Page content */\n children: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n};\n\n/**\n * Page - Semantic wrapper for page-level content\n * Provides consistent structure with main element and background styling\n */\nfunction Page({ children, className = '' }: Readonly<PageProps>) {\n return <main className={`min-h-screen bg-background ${className}`}>{children}</main>;\n}\n\nPage.displayName = 'Page';\n\nexport default Page;\n","import { ReactNode, useState } from 'react';\n\nexport type AccordionItemProps = {\n title: string;\n children: ReactNode;\n defaultOpen?: boolean;\n};\n\nexport type AccordionProps = {\n children: ReactNode;\n className?: string;\n allowMultiple?: boolean;\n};\n\n/**\n * AccordionItem - Single expandable section\n */\nexport function AccordionItem({ title, children, defaultOpen = false }: Readonly<AccordionItemProps>) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n return (\n <article className=\"border-b border-border\">\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"w-full flex items-center justify-between py-4 px-2 text-left text-foreground hover:bg-muted/50 active:bg-muted transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-sm\"\n aria-expanded={isOpen}\n >\n <span className=\"font-medium\">{title}</span>\n <svg\n className={`w-5 h-5 transition-transform ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n {isOpen && <section className=\"px-2 pb-4 text-muted-foreground\">{children}</section>}\n </article>\n );\n}\n\n/**\n * Accordion - Expandable sections for FAQs, filters, etc.\n */\nfunction Accordion({ children, className = '' }: Readonly<AccordionProps>) {\n return <div className={`divide-y divide-border ${className}`}>{children}</div>;\n}\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n","import { ReactNode } from 'react';\n\nimport Container from '../container/container';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\nimport Stack from '../stack/stack';\nimport Button from '../../forms/button/button';\n\nexport type HeroAction = {\n label: string;\n onClick: () => void;\n // Only color variants here; style modifiers should be separate if used\n variant?: 'primary' | 'secondary' | 'neutral' | 'error';\n style?: 'solid' | 'outline' | 'ghost' | 'link' | 'soft';\n loading?: boolean;\n};\n\nexport type HeroProps = {\n title: string;\n description?: string;\n primaryAction?: HeroAction;\n secondaryAction?: HeroAction;\n children?: ReactNode;\n className?: string;\n backgroundGradient?: boolean;\n centered?: boolean;\n size?: 'sm' | 'md' | 'lg';\n};\n\n/**\n * Hero Component - Eye-catching hero section\n * - Large, eye-catching section for top of pages\n * - Supports primary and secondary CTAs\n * - Optional background gradient\n * - Responsive sizing\n * - Flexible content via children prop\n */\nfunction Hero({\n title,\n description,\n primaryAction,\n secondaryAction,\n children,\n className = '',\n backgroundGradient = true,\n centered = true,\n size = 'lg'\n}: Readonly<HeroProps>) {\n const sizeClasses = {\n sm: 'py-12',\n md: 'py-16',\n lg: 'py-20 md:py-24'\n };\n\n const titleSizes = {\n sm: 'text-3xl md:text-4xl',\n md: 'text-4xl md:text-5xl',\n lg: 'text-4xl md:text-5xl lg:text-6xl'\n };\n\n const descriptionSizes = {\n sm: 'text-base md:text-lg',\n md: 'text-lg md:text-xl',\n lg: 'text-xl md:text-2xl'\n };\n\n return (\n <section\n className={`${sizeClasses[size]} ${\n backgroundGradient ? 'bg-gradient-to-b from-primary/10 via-primary/5 to-background' : 'bg-background'\n } ${className}`}\n >\n <Container size=\"lg\">\n <div className={centered ? 'text-center' : ''}>\n <Heading level={1} className={`${titleSizes[size]} font-bold mb-4 md:mb-6`}>\n {title}\n </Heading>\n\n {description && (\n <Text className={`${descriptionSizes[size]} mb-6 md:mb-8 ${centered ? 'max-w-3xl mx-auto' : 'max-w-3xl'}`}>\n {description}\n </Text>\n )}\n\n {(primaryAction || secondaryAction) && (\n <Stack direction=\"horizontal\" spacing=\"md\" className={`flex-wrap ${centered ? 'justify-center' : ''}`}>\n {primaryAction && (\n <Button\n size=\"lg\"\n variant={primaryAction.variant || 'primary'}\n style={primaryAction.style}\n onClick={primaryAction.onClick}\n loading={primaryAction.loading}\n >\n {primaryAction.label}\n </Button>\n )}\n {secondaryAction && (\n <Button\n size=\"lg\"\n variant={secondaryAction.variant || 'neutral'}\n style={secondaryAction.style || 'outline'}\n onClick={secondaryAction.onClick}\n loading={secondaryAction.loading}\n >\n {secondaryAction.label}\n </Button>\n )}\n </Stack>\n )}\n\n {children && <div className=\"mt-8\">{children}</div>}\n </div>\n </Container>\n </section>\n );\n}\n\nHero.displayName = 'Hero';\n\nexport default Hero;\n","import { ReactNode } from 'react';\n\nimport Container from '../container/container';\nimport Grid from '../grid/grid';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\n\nexport type Feature = {\n icon: ReactNode;\n title: string;\n description: string;\n};\n\nexport type FeatureSectionProps = {\n title?: string;\n description?: string;\n features: Feature[];\n columns?: 2 | 3 | 4;\n centered?: boolean;\n className?: string;\n};\n\n/**\n * FeatureSection Component - Features grid\n * - Display features with icons in a responsive grid\n * - Configurable column count\n * - Optional section title and description\n * - Icon-first design pattern\n */\nfunction FeatureSection({\n title,\n description,\n features,\n columns = 3,\n centered = true,\n className = ''\n}: Readonly<FeatureSectionProps>) {\n return (\n <section className={`py-16 md:py-20 ${className}`}>\n <Container size=\"xl\">\n {(title || description) && (\n <div\n className={`mb-12 md:mb-16 ${centered ? 'text-center' : ''} ${\n centered ? 'max-w-3xl mx-auto' : 'max-w-3xl'\n }`}\n >\n {title && (\n <Heading level={2} className=\"text-3xl md:text-4xl font-bold mb-4\">\n {title}\n </Heading>\n )}\n {description && <Text className=\"text-lg md:text-xl\">{description}</Text>}\n </div>\n )}\n\n <Grid itemSize=\"md\" maxCols={columns} gap=\"lg\">\n {features.map((feature, index) => (\n <article key={index} className={centered ? 'text-center' : ''}>\n <span\n className={`inline-flex items-center justify-center w-12 h-12 md:w-16 md:h-16 rounded-lg md:rounded-xl bg-primary/10 text-primary mb-4 md:mb-6 ${\n centered ? '' : 'mr-auto'\n }`}\n >\n {feature.icon}\n </span>\n <Heading level={3} className=\"text-xl font-semibold mb-2 md:mb-3\">\n {feature.title}\n </Heading>\n <Text variant=\"muted\" className=\"text-sm md:text-base\">\n {feature.description}\n </Text>\n </article>\n ))}\n </Grid>\n </Container>\n </section>\n );\n}\n\nFeatureSection.displayName = 'FeatureSection';\n\nexport default FeatureSection;\n","import { ReactNode } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\n\nexport type LinkProps = {\n children: ReactNode;\n href: string;\n\n /**\n * Whether this is an external link (opens in new tab with icon)\n * @default false\n */\n external?: boolean;\n\n /**\n * Visual variant\n * @default 'default'\n */\n variant?: 'default' | 'muted' | 'secondary' | 'inherit';\n\n /**\n * When to show underline\n * @default 'hover'\n */\n underline?: 'hover' | 'always' | 'none';\n\n /**\n * Text size\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Display behavior\n * @default 'inline'\n */\n display?: 'inline' | 'block';\n\n /**\n * Additional CSS classes (use as last resort)\n */\n className?: string;\n};\n\n/**\n * Link - Themed anchor with hover state\n * Automatically uses React Router for internal links\n */\nfunction Link({\n children,\n href,\n external = false,\n variant = 'default',\n underline = 'hover',\n size = 'md',\n display = 'inline',\n className = ''\n}: Readonly<LinkProps>) {\n // Build variant classes\n const variantClasses = {\n default: 'text-primary hover:text-primary/80',\n muted: 'text-muted-foreground hover:text-foreground',\n secondary: 'text-secondary hover:text-secondary/80',\n inherit: 'text-inherit hover:opacity-80'\n };\n\n // Build underline classes\n const underlineClasses = {\n hover: 'hover:underline',\n always: 'underline',\n none: 'no-underline'\n };\n\n // Build size classes\n const sizeClasses = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n };\n\n // Build display classes\n const displayClasses = {\n inline: 'inline',\n block: 'block'\n };\n\n const linkClassName = [\n variantClasses[variant],\n underlineClasses[underline],\n sizeClasses[size],\n displayClasses[display],\n 'cursor-pointer transition-colors',\n className\n ]\n .filter(Boolean)\n .join(' ');\n\n // External links use regular anchor tag\n if (external) {\n return (\n <a href={href} className={linkClassName} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n <svg\n className=\"inline-block w-4 h-4 ml-1\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n );\n }\n\n // Internal links use React Router Link\n return (\n <RouterLink to={href} className={linkClassName}>\n {children}\n </RouterLink>\n );\n}\n\nLink.displayName = 'Link';\n\nexport default Link;\n","import { ReactNode } from 'react';\n\nimport Container from '../container/container';\nimport Grid from '../grid/grid';\nimport Text from '../../typography/text/text';\nimport Link from '../../typography/link/link';\n\nexport type FooterSection = {\n title: string;\n links: Array<{ label: string; href: string; external?: boolean }>;\n};\n\nexport type FooterProps = {\n sections?: FooterSection[];\n copyright?: string;\n social?: ReactNode;\n className?: string;\n};\n\n/**\n * Footer Component - Site footer\n * - Multi-column link sections\n * - Copyright text\n * - Social media icons\n * - Responsive layout\n */\nfunction Footer({ sections, copyright, social, className = '' }: Readonly<FooterProps>) {\n return (\n <footer className={`border-t border-border bg-muted/20 ${className}`}>\n <Container>\n {sections && sections.length > 0 && (\n <div className=\"py-12 md:py-16\">\n <Grid itemSize=\"xs\" maxCols={4} gap=\"lg\">\n {sections.map((section, index) => (\n <div key={index}>\n <h3 className=\"font-semibold text-foreground mb-4\">{section.title}</h3>\n <ul className=\"space-y-3\">\n {section.links.map((link, linkIndex) => (\n <li key={linkIndex}>\n <Link\n href={link.href}\n external={link.external}\n className=\"text-sm text-muted hover:text-foreground transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </Grid>\n </div>\n )}\n\n <div\n className={`${sections && sections.length > 0 ? 'border-t border-border' : ''} py-6 flex flex-col md:flex-row items-center justify-between gap-4`}\n >\n {copyright && (\n <Text variant=\"muted\" className=\"text-sm text-center md:text-left\">\n {copyright}\n </Text>\n )}\n {social && <div className=\"flex items-center space-x-4\">{social}</div>}\n </div>\n </Container>\n </footer>\n );\n}\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n","import { useEffect } from 'react';\n\n/**\n * Robust scroll reset on key changes (e.g., route changes).\n * Attempts multiple strategies to ensure scroll position returns to top.\n */\nexport function useScrollReset(deps: unknown[], container?: HTMLElement | null) {\n useEffect(() => {\n let cancelled = false;\n const maxRaf = 6;\n let rafCount = 0;\n\n const setAllScrollTop = () => {\n if (cancelled) return;\n window.scrollTo(0, 0);\n if (container) container.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n document.body.scrollTop = 0;\n };\n\n // Immediate\n setAllScrollTop();\n\n // Microtask flush\n Promise.resolve().then(() => setAllScrollTop());\n\n // Timeout after potential layout shift\n const timeoutId = setTimeout(() => setAllScrollTop(), 0);\n\n // A few RAF retries to combat async mounts\n const loop = () => {\n if (cancelled) return;\n setAllScrollTop();\n rafCount += 1;\n if (rafCount < maxRaf) requestAnimationFrame(loop);\n };\n requestAnimationFrame(loop);\n\n return () => {\n cancelled = true;\n clearTimeout(timeoutId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\nexport default useScrollReset;","import { ReactNode, useState, useRef, useEffect } from 'react';\nimport useScrollReset from '@/hooks/useScrollReset';\nimport { IconChevronRight, IconChevronLeft } from '@tabler/icons-react';\n\nexport type LeftNavLayoutProps = {\n /** Navigation sidebar content */\n nav: ReactNode;\n /** Main content area */\n children: ReactNode;\n /** Whether sidebar is collapsed (icon-only mode) */\n collapsed?: boolean;\n /** Callback when collapse state changes */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Whether to show collapse toggle button */\n showToggle?: boolean;\n /** Custom className for the layout container */\n className?: string;\n /** Custom className for the nav sidebar */\n navClassName?: string;\n /** Custom className for the content area */\n contentClassName?: string;\n /** Width of the sidebar when expanded */\n navWidth?: string;\n /** Width of the sidebar when collapsed */\n navWidthCollapsed?: string;\n /** Whether sidebar is collapsible on mobile (becomes overlay) */\n mobileCollapsible?: boolean;\n /** Mobile menu open state (controlled) */\n mobileMenuOpen?: boolean;\n /** Callback when mobile menu state changes */\n onMobileMenuOpenChange?: (open: boolean) => void;\n /** Embedded demo mode (no fixed positioning, constrained height) */\n embedded?: boolean;\n /** Ref for the main content scrollable element */\n mainContentRef?: React.RefObject<HTMLDivElement>;\n};\n\n/**\n * LeftNavLayout - Full-featured responsive left navigation layout\n *\n * Provides a robust sidebar navigation with:\n * - Full and collapsed (icon-only) states\n * - Smooth transitions without janky spacing\n * - Proper scroll handling\n * - Responsive mobile behavior\n * - Accessible keyboard navigation\n *\n * @example\n * ```tsx\n * <LeftNavLayout\n * collapsed={isCollapsed}\n * onCollapsedChange={setIsCollapsed}\n * nav={\n * <>\n * <LeftNavSection>\n * <LeftNavItem icon={<HomeIcon />} href=\"/\" active>Home</LeftNavItem>\n * <LeftNavItem icon={<DashboardIcon />} href=\"/dashboard\">Dashboard</LeftNavItem>\n * </LeftNavSection>\n * </>\n * }\n * >\n * <main>Your content here</main>\n * </LeftNavLayout>\n * ```\n */\nfunction LeftNavLayout({\n nav,\n children,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n showToggle = true,\n className = '',\n navClassName = '',\n contentClassName = '',\n navWidth = '16rem',\n navWidthCollapsed = '4.5rem',\n mobileCollapsible = true,\n mobileMenuOpen: controlledMobileMenuOpen,\n onMobileMenuOpenChange,\n embedded = false,\n mainContentRef\n}: Readonly<LeftNavLayoutProps>) {\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const [internalMobileMenuOpen, setInternalMobileMenuOpen] = useState(false);\n const navRef = useRef<HTMLDivElement | null>(null);\n const scrollPosRef = useRef<number>(0);\n const internalContentRef = useRef<HTMLElement | null>(null);\n const contentRef = mainContentRef || internalContentRef;\n\n // Use controlled or uncontrolled collapsed state\n const collapsed = controlledCollapsed ?? internalCollapsed;\n const setCollapsed = (value: boolean) => {\n if (onCollapsedChange) {\n onCollapsedChange(value);\n } else {\n setInternalCollapsed(value);\n }\n };\n\n // Use controlled or uncontrolled mobile menu state\n const mobileMenuOpen = controlledMobileMenuOpen ?? internalMobileMenuOpen;\n const setMobileMenuOpen = (value: boolean) => {\n if (onMobileMenuOpenChange) {\n onMobileMenuOpenChange(value);\n } else {\n setInternalMobileMenuOpen(value);\n }\n };\n\n const toggleCollapsed = () => setCollapsed(!collapsed);\n const toggleMobileMenu = () => setMobileMenuOpen(!mobileMenuOpen);\n\n // Restore nav scroll position after children change (route switch) & reset scroll\n useEffect(() => {\n if (navRef.current) {\n navRef.current.scrollTop = scrollPosRef.current;\n }\n }, [children]);\n\n // Robust scroll reset for main content area on children change\n useScrollReset([children], contentRef.current as HTMLElement | null);\n\n const containerClasses = embedded\n ? 'flex bg-background border border-border rounded-lg overflow-hidden'\n : 'flex h-[calc(100vh-4rem)] bg-background';\n \n return (\n <div className={`${containerClasses} ${className}`}>\n {/* Mobile Overlay */}\n {mobileCollapsible && mobileMenuOpen && (\n <div className=\"fixed inset-0 z-40 lg:hidden bg-background/80 backdrop-blur-sm\" onClick={toggleMobileMenu} aria-hidden=\"true\" />\n )}\n\n {/* Sidebar Navigation */}\n <aside\n className={`\n ${embedded ? 'relative flex flex-col h-full' : 'fixed lg:relative top-0 left-0 z-40 lg:z-10 h-screen lg:h-full'}\n flex flex-col flex-shrink-0\n bg-background border-r border-border\n transition-all duration-300 ease-in-out\n ${!embedded && mobileCollapsible && !mobileMenuOpen ? '-translate-x-full lg:translate-x-0' : 'translate-x-0'}\n ${collapsed ? 'w-[4.5rem]' : 'w-64'}\n ${navClassName}\n `}\n style={\n (!collapsed && navWidth !== '16rem') || (collapsed && navWidthCollapsed !== '4.5rem')\n ? ({\n width: collapsed ? navWidthCollapsed : navWidth\n } as React.CSSProperties)\n : undefined\n }\n aria-label=\"Main navigation\"\n >\n {/* Nav Header with Toggle */}\n {showToggle && (\n <div\n className={`\n flex items-center h-12 flex-shrink-0\n px-4 border-b border-border\n ${collapsed ? 'justify-center' : 'justify-between'}\n `}\n >\n {!collapsed && <span className=\"text-sm font-semibold text-foreground\">Navigation</span>}\n <button\n onClick={toggleCollapsed}\n className=\"\n hidden lg:flex items-center justify-center\n w-8 h-8 rounded-md\n text-muted-foreground hover:text-foreground\n hover:bg-muted\n transition-colors\n focus:outline-none focus:ring-2 focus:ring-ring\n \"\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n type=\"button\"\n >\n {collapsed ? <IconChevronRight size={20} /> : <IconChevronLeft size={20} />}\n </button>\n </div>\n )}\n\n {/* Nav Content - Scrollable */}\n <nav\n ref={navRef}\n className=\"flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin\"\n data-collapsed={collapsed}\n onScroll={(e) => {\n scrollPosRef.current = (e.currentTarget as HTMLDivElement).scrollTop;\n }}\n >\n {nav}\n </nav>\n </aside>\n\n {/* Main Content Area */}\n <main \n ref={contentRef as React.RefObject<HTMLDivElement>} \n className={`flex-1 overflow-auto ${embedded ? 'h-60' : ''} ${contentClassName}`}\n >\n {children}\n </main>\n </div>\n );\n}\n\nLeftNavLayout.displayName = 'LeftNavLayout';\n\nexport default LeftNavLayout;\n","import { ReactNode, MouseEvent, useRef, useState, useEffect } from 'react';\nimport { NavLink } from 'react-router-dom';\n\nimport Tooltip from '../../feedback/tooltip/tooltip';\n\nexport type LeftNavItemProps = {\n /** Icon to display (SVG or React component) */\n icon?: ReactNode;\n /** Link label text */\n children: ReactNode;\n /** Whether this item is currently active */\n active?: boolean;\n /** Custom className */\n className?: string;\n /** Badge or count to display on the right */\n badge?: ReactNode;\n /** Destination href */\n href?: string;\n /** Accessible label override */\n title?: string;\n /** Prevent actual navigation (demo mode) */\n preventNavigation?: boolean;\n};\n\n/**\n * LeftNavItem - Navigation link item for LeftNavLayout\n *\n * Features:\n * - Icon support with proper alignment\n * - Active state styling\n * - Tooltip on hover in collapsed mode (using Tooltip component with Portal)\n * - Badge/count support\n * - Accessible keyboard navigation\n *\n * @example\n * ```tsx\n * <LeftNavItem\n * icon={<HomeIcon />}\n * href=\"/\"\n * active\n * title=\"Home\"\n * >\n * Home\n * </LeftNavItem>\n * ```\n */\nfunction LeftNavItem({\n icon,\n children,\n active = false,\n className = '',\n badge,\n href = '#',\n title,\n preventNavigation = false\n}: Readonly<LeftNavItemProps>) {\n const navRef = useRef<HTMLAnchorElement>(null);\n const [isCollapsed, setIsCollapsed] = useState(() => {\n // Try to get initial collapsed state from nav element if it exists\n if (typeof window !== 'undefined') {\n const navElement = document.querySelector('nav[data-collapsed]');\n return navElement?.getAttribute('data-collapsed') === 'true';\n }\n return false;\n });\n\n // Check if nav is collapsed by looking at parent nav element\n useEffect(() => {\n const checkCollapsed = () => {\n const navElement = navRef.current?.closest('nav');\n if (navElement) {\n setIsCollapsed(navElement.getAttribute('data-collapsed') === 'true');\n }\n };\n\n checkCollapsed();\n\n // Create observer to watch for attribute changes\n const navElement = navRef.current?.closest('nav');\n if (navElement) {\n const observer = new MutationObserver(checkCollapsed);\n observer.observe(navElement, {\n attributes: true,\n attributeFilter: ['data-collapsed']\n });\n return () => observer.disconnect();\n }\n\n return undefined;\n }, []);\n\n // Use children as fallback title for accessibility\n const itemTitle = title || (typeof children === 'string' ? children : undefined);\n\n const navLink = (\n <NavLink\n ref={navRef}\n to={href}\n onClick={(e: MouseEvent) => {\n if (preventNavigation) {\n e.preventDefault();\n }\n }}\n className={({ isActive }) => `\n group relative flex items-center gap-3\n px-3 py-2.5 rounded-lg\n mx-2\n [nav[data-collapsed='true']_&]:mx-2\n [nav[data-collapsed='true']_&]:px-0\n [nav[data-collapsed='true']_&]:w-12\n [nav[data-collapsed='true']_&]:justify-center\n text-sm font-medium\n transition-colors duration-200\n focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-card\n ${\n isActive || active\n ? 'bg-primary text-primary-foreground shadow-sm'\n : 'text-foreground hover:bg-muted hover:text-foreground'\n }\n ${className}\n `}\n aria-current={active ? 'page' : undefined}\n aria-label={itemTitle}\n end\n >\n {/* Icon */}\n {icon && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n {/* Label - Hidden in collapsed mode via parent's data-collapsed selector */}\n <span\n className=\"\n flex-1 truncate\n [nav[data-collapsed='true']_&]:hidden\n \"\n >\n {children}\n </span>\n\n {/* Badge - Hidden in collapsed mode */}\n {badge && (\n <span\n className=\"\n flex-shrink-0\n [nav[data-collapsed='true']_&]:hidden\n \"\n >\n {badge}\n </span>\n )}\n </NavLink>\n );\n\n // Only show tooltip when collapsed\n if (!isCollapsed) {\n return navLink;\n }\n\n // Get tooltip content\n const tooltipContent = typeof children === 'string' ? children : itemTitle || 'Menu Item';\n\n return (\n <Tooltip content={tooltipContent} position=\"right\" variant=\"default\" usePortal className=\"w-full block\">\n {navLink}\n </Tooltip>\n );\n}\n\nLeftNavItem.displayName = 'LeftNavItem';\n\nexport default LeftNavItem;\n","import { ReactNode } from 'react';\n\nexport type LeftNavSectionProps = {\n /** Section content (typically LeftNavItem components) */\n children: ReactNode;\n /** Optional section header label */\n label?: string;\n /** Custom className */\n className?: string;\n};\n\n/**\n * LeftNavSection - Section grouping for LeftNavLayout navigation items\n *\n * Groups related navigation items together with an optional label.\n * In collapsed mode, the label is hidden but the grouping is preserved.\n *\n * @example\n * ```tsx\n * <LeftNavSection label=\"Main\">\n * <LeftNavItem icon={<HomeIcon />} href=\"/\">Home</LeftNavItem>\n * <LeftNavItem icon={<DashboardIcon />} href=\"/dashboard\">Dashboard</LeftNavItem>\n * </LeftNavSection>\n *\n * <LeftNavSection label=\"Settings\">\n * <LeftNavItem icon={<SettingsIcon />} href=\"/settings\">Settings</LeftNavItem>\n * </LeftNavSection>\n * ```\n */\nfunction LeftNavSection({ children, label, className = '' }: Readonly<LeftNavSectionProps>) {\n return (\n <div className={`py-2 ${className}`}>\n {/* Section Label - Hidden in collapsed mode */}\n {label && (\n <h3\n className=\"\n px-5 mb-2 mt-2\n text-xs font-semibold uppercase tracking-wider\n text-muted-foreground\n [nav[data-collapsed='true']_&]:hidden\n \"\n >\n {label}\n </h3>\n )}\n\n {/* Section Items */}\n <div className=\"space-y-1\">{children}</div>\n\n {/* Divider - Subtle separator between sections */}\n <div className=\"h-px bg-border mx-3 mt-2\" aria-hidden=\"true\" />\n </div>\n );\n}\n\nLeftNavSection.displayName = 'LeftNavSection';\n\nexport default LeftNavSection;\n","import { ReactNode } from 'react';\n\nexport type CodeProps = {\n children: ReactNode;\n block?: boolean;\n variant?: 'default' | 'primary' | 'muted';\n className?: string;\n};\n\n/**\n * Code - Styled code snippets (inline or block)\n */\nfunction Code({ children, block = false, variant = 'default', className = '' }: Readonly<CodeProps>) {\n const variantClasses = {\n default: 'bg-muted text-foreground',\n primary: 'text-primary',\n muted: 'text-muted-foreground'\n };\n\n const baseClasses = `font-mono ${variantClasses[variant]}`;\n\n if (block) {\n return (\n <pre className={`${baseClasses} p-4 rounded-lg overflow-x-auto border border-border ${className}`}>\n <code>{children}</code>\n </pre>\n );\n }\n\n return <code className={`${baseClasses} px-1.5 py-0.5 rounded text-sm ${className}`}>{children}</code>;\n}\n\nCode.displayName = 'Code';\n\nexport default Code;\n","import { createContext, useContext, useEffect, useState, useMemo, ReactNode, useCallback } from 'react';\n\n/**\n * hydn UI Theme System\n * - Supports light and dark themes\n * - Themes are applied via className on the <html> element\n * - Define new themes in globals.css following the CSS variable pattern\n */\n\nexport type Theme = 'light' | 'dark';\n\nexport type ThemeContextType = {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n availableThemes: Theme[];\n};\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n /**\n * List of available theme names.\n * Defaults to ['light', 'dark']\n */\n themes?: Theme[];\n};\n\n/**\n * ThemeProvider - Context for managing light/dark themes\n */\nexport function ThemeProvider({\n children,\n defaultTheme = 'light',\n storageKey = 'hydn-theme',\n themes = ['light', 'dark']\n}: Readonly<ThemeProviderProps>) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window !== 'undefined') {\n const stored = localStorage.getItem(storageKey) as Theme;\n return stored && themes.includes(stored) ? stored : defaultTheme;\n }\n return defaultTheme;\n });\n\n useEffect(() => {\n const root = window.document.documentElement;\n\n // Remove all possible theme classes\n root.classList.remove(...themes);\n\n // Apply the theme class to <html>\n root.classList.add(theme);\n }, [theme, themes]);\n\n const setTheme = useCallback(\n (newTheme: Theme) => {\n if (themes.includes(newTheme)) {\n localStorage.setItem(storageKey, newTheme);\n setThemeState(newTheme);\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(`Theme \"${newTheme}\" is not in availableThemes. Add it to the themes prop.`);\n }\n },\n [themes, storageKey]\n );\n\n const value = useMemo(\n () => ({\n theme,\n setTheme,\n availableThemes: themes\n }),\n [theme, themes, setTheme]\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * useTheme - Hook to access theme context\n */\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\nexport default ThemeProvider;\n","import { useTheme } from '../theme-provider';\n\nexport type ColorModeToggleProps = {\n className?: string;\n};\n\n/**\n * ColorModeToggle - Simple light/dark theme switcher\n */\nfunction ColorModeToggle({ className = '' }: Readonly<ColorModeToggleProps>) {\n const { theme, setTheme } = useTheme();\n\n const toggleTheme = () => {\n setTheme(theme === 'light' ? 'dark' : 'light');\n };\n\n const getIcon = () => {\n if (theme === 'dark') {\n return (\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n );\n }\n return (\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\n />\n </svg>\n );\n };\n\n const getLabel = () => {\n return `Switch to ${theme === 'light' ? 'dark' : 'light'} theme`;\n };\n\n return (\n <button\n onClick={toggleTheme}\n className={`p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors cursor-pointer ${className}`}\n aria-label={getLabel()}\n title={getLabel()}\n >\n {getIcon()}\n </button>\n );\n}\n\nColorModeToggle.displayName = 'ColorModeToggle';\n\nexport default ColorModeToggle;\n"]}
1
+ {"version":3,"sources":["../src/components/forms/button/button.tsx","../src/components/forms/input/input.tsx","../src/components/forms/checkbox/checkbox.tsx","../src/components/forms/radio-group/radio-group.tsx","../src/components/forms/radio/radio.tsx","../src/components/forms/select/select.tsx","../src/components/forms/select/select-item.tsx","../src/components/forms/multi-select/multi-select.tsx","../src/components/forms/textarea/textarea.tsx","../src/components/forms/switch/switch.tsx","../src/components/forms/slider/slider.tsx","../src/components/forms/button-group/button-group.tsx","../src/components/typography/text/text.tsx","../src/components/layout/stack/stack.tsx","../src/components/forms/form-field/form-field.tsx","../src/components/forms/input-group/input-group.tsx","../src/components/forms/calendar/calendar.tsx","../src/components/forms/date-picker/date-picker.tsx","../src/components/navigation/nav/nav.tsx","../src/components/layout/container/container.tsx","../src/components/navigation/navbar/navbar.tsx","../src/components/navigation/navbar/navbar-brand.tsx","../src/components/navigation/navbar/navbar-link.tsx","../src/components/layout/page-transition/page-transition.tsx","../src/components/navigation/tabs/tabs.tsx","../src/components/navigation/dropdown/dropdown.tsx","../src/components/navigation/breadcrumbs/breadcrumbs.tsx","../src/components/navigation/pagination/pagination.tsx","../src/components/navigation/sidebar/sidebar.tsx","../src/components/navigation/stepper/stepper.tsx","../src/components/feedback/toast/toast.tsx","../src/components/feedback/tooltip/tooltip.tsx","../src/components/feedback/overlay/useOverlay.ts","../src/components/feedback/modal/modal.tsx","../src/components/feedback/dialog/dialog.tsx","../src/components/feedback/dialog/delete-dialog.tsx","../src/components/feedback/popover/popover.tsx","../src/components/feedback/alert/alert.tsx","../src/components/feedback/spinner/spinner.tsx","../src/components/feedback/progress-bar/progress-bar.tsx","../src/components/feedback/skeleton/skeleton.tsx","../src/components/data-display/badge/badge.tsx","../src/components/data-display/badge/status-label.tsx","../src/components/data-display/avatar/avatar.tsx","../src/components/data-display/empty-state/empty-state.tsx","../src/components/data-display/list/list.tsx","../src/components/data-display/table/table.tsx","../src/components/data-display/data-table/use-table.ts","../src/components/data-display/data-table/data-table.tsx","../src/components/data-display/chip/chip.tsx","../src/components/data-display/timeline/timeline.tsx","../src/components/layout/grid/grid.tsx","../src/components/typography/heading/heading.tsx","../src/components/data-display/pricing/pricing-table.tsx","../src/components/layout/card/card.tsx","../src/components/layout/card/card-header.tsx","../src/components/layout/card/card-footer.tsx","../src/components/data-display/pricing/pricing-tier.tsx","../src/components/data-display/code-block/code-block.tsx","../src/components/layout/card/card-body.tsx","../src/components/layout/card/card-title.tsx","../src/components/layout/card/card-actions.tsx","../src/components/layout/card/card-figure.tsx","../src/components/layout/divider/divider.tsx","../src/components/layout/drawer/drawer.tsx","../src/components/layout/page/page.tsx","../src/components/layout/accordion/accordion.tsx","../src/components/layout/hero/hero.tsx","../src/components/layout/feature-section/feature-section.tsx","../src/components/typography/link/link.tsx","../src/components/layout/footer/footer.tsx","../src/hooks/useScrollReset.ts","../src/components/layout/left-nav-layout/left-nav-layout.tsx","../src/components/layout/left-nav-layout/left-nav-item.tsx","../src/components/layout/left-nav-layout/left-nav-section.tsx","../src/components/typography/code/code.tsx","../src/components/system/theme-provider/theme-provider.tsx","../src/components/system/color-mode-toggle/color-mode-toggle.tsx"],"names":["jsx","jsxs","useState","useRef","useEffect","IconX","React","createContext","itemEls","IconCheck","useCallback","Fragment","IconChevronDown","createPortal","Link","RouterLink","navElement","NavLink","useMemo","useContext"],"mappings":"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","file":"index.js","sourcesContent":["import React from 'react';\n\nexport type ButtonProps = {\n children?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void;\n ariaLabel?: string;\n disabled?: boolean;\n type?: 'button' | 'submit' | 'reset';\n className?: string;\n icon?: React.ReactNode;\n iconPosition?: 'left' | 'right';\n // Color variants\n variant?: 'neutral' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n\n // Style modifiers\n style?: 'solid' | 'outline' | 'ghost' | 'link' | 'soft';\n // Sizes\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n rounded?: 'default' | 'pill' | 'square' | 'circle';\n loading?: boolean;\n fullWidth?: boolean;\n wide?: boolean;\n active?: boolean;\n};\n\n/**\n * Accessible Button component\n * - Color variants: neutral, primary, secondary, accent, info, success, warning, error\n * - Style modifiers: solid (default), outline, ghost, link, soft\n * - Sizes: xs, sm, md (default), lg, xl\n * - Supports icons with flexible positioning (left/right)\n * - Icon-only buttons require `ariaLabel` for accessibility\n */\nfunction Button({\n children,\n onClick,\n ariaLabel,\n disabled = false,\n type = 'button',\n className = '',\n icon,\n iconPosition = 'left',\n variant = 'neutral',\n style = 'solid',\n size = 'md',\n rounded = 'default',\n loading = false,\n fullWidth = false,\n wide = false,\n active = false\n}: Readonly<ButtonProps>) {\n const isIconOnly = icon && !children;\n\n // Icon-only buttons MUST have an aria-label for accessibility\n if (isIconOnly && !ariaLabel) {\n // eslint-disable-next-line no-console\n console.warn('Button: Icon-only buttons require an ariaLabel for accessibility');\n }\n\n // Color variants with background and text colors for solid style\n const solidVariantClasses = {\n neutral: 'bg-neutral text-neutral-foreground hover:bg-neutral/90 active:bg-neutral/80',\n primary: 'bg-primary text-primary-foreground hover:bg-primary/90 active:bg-primary/80',\n secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/90 active:bg-secondary/80',\n accent: 'bg-accent text-accent-foreground hover:bg-accent/90 active:bg-accent/80',\n info: 'bg-info text-info-foreground hover:bg-info/90 active:bg-info/80',\n success: 'bg-success text-success-foreground hover:bg-success/90 active:bg-success/80',\n warning: 'bg-warning text-warning-foreground hover:bg-warning/90 active:bg-warning/80',\n error: 'bg-destructive text-destructive-foreground hover:bg-destructive/90 active:bg-destructive/80'\n };\n\n const outlineVariantClasses = {\n neutral: 'border-2 border-neutral text-neutral bg-transparent hover:bg-neutral hover:text-neutral-foreground',\n primary: 'border-2 border-primary text-primary bg-transparent hover:bg-primary hover:text-primary-foreground',\n secondary:\n 'border-2 border-secondary text-secondary bg-transparent hover:bg-secondary hover:text-secondary-foreground',\n accent: 'border-2 border-accent text-accent bg-transparent hover:bg-accent hover:text-accent-foreground',\n info: 'border-2 border-info text-info bg-transparent hover:bg-info hover:text-info-foreground',\n success: 'border-2 border-success text-success bg-transparent hover:bg-success hover:text-success-foreground',\n warning: 'border-2 border-warning text-warning bg-transparent hover:bg-warning hover:text-warning-foreground',\n error:\n 'border-2 border-destructive text-destructive bg-transparent hover:bg-destructive hover:text-destructive-foreground'\n };\n\n const ghostVariantClasses = {\n neutral: 'bg-transparent text-foreground hover:bg-neutral/10 active:bg-neutral/20',\n primary: 'bg-transparent text-primary hover:bg-primary/10 active:bg-primary/20',\n secondary: 'bg-transparent text-secondary hover:bg-secondary/10 active:bg-secondary/20',\n accent: 'bg-transparent text-accent hover:bg-accent/10 active:bg-accent/20',\n info: 'bg-transparent text-info hover:bg-info/10 active:bg-info/20',\n success: 'bg-transparent text-success hover:bg-success/10 active:bg-success/20',\n warning: 'bg-transparent text-warning hover:bg-warning/10 active:bg-warning/20',\n error: 'bg-transparent text-destructive hover:bg-destructive/10 active:bg-destructive/20'\n };\n\n const softVariantClasses = {\n neutral: 'bg-neutral/20 text-foreground hover:bg-neutral/30 active:bg-neutral/40',\n primary: 'bg-primary/20 text-primary hover:bg-primary/30 active:bg-primary/40',\n secondary: 'bg-secondary/20 text-secondary hover:bg-secondary/30 active:bg-secondary/40',\n accent: 'bg-accent/20 text-accent hover:bg-accent/30 active:bg-accent/40',\n info: 'bg-info/20 text-info hover:bg-info/30 active:bg-info/40',\n success: 'bg-success/20 text-success hover:bg-success/30 active:bg-success/40',\n warning: 'bg-warning/20 text-warning hover:bg-warning/30 active:bg-warning/40',\n error: 'bg-destructive/20 text-destructive hover:bg-destructive/30 active:bg-destructive/40'\n };\n\n const linkVariantClasses = {\n neutral: 'bg-transparent text-foreground underline-offset-4 hover:underline',\n primary: 'bg-transparent text-primary underline-offset-4 hover:underline',\n secondary: 'bg-transparent text-secondary underline-offset-4 hover:underline',\n accent: 'bg-transparent text-accent underline-offset-4 hover:underline',\n info: 'bg-transparent text-info underline-offset-4 hover:underline',\n success: 'bg-transparent text-success underline-offset-4 hover:underline',\n warning: 'bg-transparent text-warning underline-offset-4 hover:underline',\n error: 'bg-transparent text-destructive underline-offset-4 hover:underline'\n };\n\n // Style modifiers\n const getStyleClasses = () => {\n const variantKey = variant as keyof typeof solidVariantClasses;\n\n switch (style) {\n case 'outline':\n return `${outlineVariantClasses[variantKey]} active:scale-95`;\n case 'ghost':\n return ghostVariantClasses[variantKey];\n case 'link':\n return linkVariantClasses[variantKey];\n case 'soft':\n return softVariantClasses[variantKey];\n case 'solid':\n default:\n return `${solidVariantClasses[variantKey]} shadow-sm hover:shadow-md`;\n }\n };\n\n // Sizes\n const sizeClasses = {\n xs: 'h-6 px-2 text-xs min-h-6',\n sm: 'h-8 px-3 text-sm min-h-8',\n md: 'h-10 px-4 text-base min-h-10',\n lg: 'h-12 px-6 text-lg min-h-12',\n xl: 'h-14 px-8 text-xl min-h-14'\n };\n\n const roundedClasses = {\n default: 'rounded-md',\n pill: 'rounded-full',\n square: 'rounded-none aspect-square',\n circle: 'rounded-full aspect-square'\n };\n\n // Show loading spinner or icon\n const displayIcon = loading ? (\n <svg className=\"animate-spin h-4 w-4\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\">\n <circle className=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" strokeWidth=\"4\"></circle>\n <path\n className=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n ></path>\n </svg>\n ) : (\n icon\n );\n\n const styleClasses = getStyleClasses();\n const widthClasses = fullWidth ? 'w-full' : wide ? 'px-8' : '';\n const activeClasses = active ? 'active:scale-95' : '';\n\n return (\n <button\n type={type}\n onClick={onClick}\n aria-label={ariaLabel}\n disabled={disabled || loading}\n className={`inline-flex items-center justify-center ${roundedClasses[rounded]} font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 cursor-pointer disabled:cursor-not-allowed disabled:opacity-50 ${styleClasses} ${sizeClasses[size]} ${\n isIconOnly ? 'p-0' : ''\n } ${widthClasses} ${activeClasses} ${className}`}\n >\n {displayIcon && iconPosition === 'left' && (\n <span className={`inline-flex ${children ? 'mr-2' : ''}`}>{displayIcon}</span>\n )}\n {children}\n {displayIcon && iconPosition === 'right' && (\n <span className={`inline-flex ${children ? 'ml-2' : ''}`}>{displayIcon}</span>\n )}\n </button>\n );\n}\n\nButton.displayName = 'Button';\n\nexport default Button;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type InputProps = {\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n placeholder?: string;\n disabled?: boolean;\n type?: 'text' | 'email' | 'password' | 'number' | 'tel' | 'url';\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n required?: boolean;\n size?: 'sm' | 'md' | 'lg';\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Input component with validation state support\n */\nfunction Input({\n value,\n onChange,\n placeholder,\n disabled = false,\n type = 'text',\n className = '',\n ariaLabel,\n id,\n name,\n required = false,\n size = 'md',\n validationState = 'default'\n}: Readonly<InputProps>) {\n const sizeClasses = {\n sm: 'h-8 px-3 py-1.5 text-sm',\n md: 'h-10 px-3 py-2 text-sm',\n lg: 'h-12 px-4 py-3 text-base'\n };\n\n const validationClasses = {\n default: 'border-input focus:border-ring',\n error: 'border-destructive focus:border-destructive',\n success: 'border-success focus:border-success',\n warning: 'border-warning focus:border-warning'\n };\n\n return (\n <input\n type={type}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n required={required}\n aria-invalid={validationState === 'error'}\n className={`flex w-full rounded-lg border bg-background shadow-sm transition-all duration-200 file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring/20 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 ${sizeClasses[size]} ${validationClasses[validationState]} ${className}`}\n />\n );\n}\n\nInput.displayName = 'Input';\n\nexport default Input;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type CheckboxProps = {\n checked?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Checkbox component\n */\nfunction Checkbox({\n checked,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n validationState = 'default'\n}: Readonly<CheckboxProps>) {\n const validationClasses = {\n default: 'border-input focus:ring-ring',\n error: 'border-destructive focus:ring-destructive',\n success: 'border-success focus:ring-success',\n warning: 'border-warning focus:ring-warning'\n };\n\n return (\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-invalid={validationState === 'error'}\n id={id}\n name={name}\n className={`h-4 w-4 rounded border-2 bg-background text-primary-foreground transition-all duration-200 ease-in-out focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 checked:bg-primary checked:border-primary checked:hover:bg-primary/90 hover:border-primary/50 hover:shadow-sm cursor-pointer accent-primary ${validationClasses[validationState]} ${className}`}\n />\n );\n}\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import { ReactNode, createContext, useContext } from 'react';\n\nexport type RadioGroupProps = {\n children: ReactNode;\n name: string;\n label?: string;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\ntype RadioGroupContextValue = {\n name: string;\n value?: string;\n onChange?: (value: string) => void;\n};\n\nconst RadioGroupContext = createContext<RadioGroupContextValue | null>(null);\n\nexport const useRadioGroup = () => {\n const context = useContext(RadioGroupContext);\n return context;\n};\n\n/**\n * RadioGroup - Wrapper for radio inputs with consistent spacing and shared name\n */\nfunction RadioGroup({\n children,\n name,\n label,\n orientation = 'vertical',\n className = '',\n value,\n onChange\n}: Readonly<RadioGroupProps>) {\n const orientationClasses = orientation === 'horizontal' ? 'flex flex-row gap-4' : 'flex flex-col gap-2';\n\n return (\n <RadioGroupContext.Provider value={{ name, value, onChange }}>\n <fieldset className={className}>\n {label && <legend className=\"text-sm font-medium text-foreground mb-2\">{label}</legend>}\n <div className={orientationClasses} role=\"radiogroup\">\n {children}\n </div>\n </fieldset>\n </RadioGroupContext.Provider>\n );\n}\n\nRadioGroup.displayName = 'RadioGroup';\n\nexport default RadioGroup;\n","import React from 'react';\nimport { useRadioGroup } from '../radio-group/radio-group';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type RadioProps = {\n checked?: boolean;\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n value?: string;\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Radio component\n */\nfunction Radio({\n checked,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name: nameProp,\n value,\n validationState = 'default'\n}: Readonly<RadioProps>) {\n const radioGroup = useRadioGroup();\n\n // Use name from RadioGroup context if available, otherwise use prop\n const name = radioGroup?.name || nameProp;\n\n // Use checked state from RadioGroup if available\n const isChecked = radioGroup?.value !== undefined ? radioGroup.value === value : checked;\n\n // Handle change with RadioGroup callback if available\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (radioGroup?.onChange && value) {\n radioGroup.onChange(value);\n }\n onChange?.(e);\n };\n\n const validationClasses = {\n default: 'border-input focus:ring-ring',\n error: 'border-destructive focus:ring-destructive',\n success: 'border-success focus:ring-success',\n warning: 'border-warning focus:ring-warning'\n };\n\n const inputId = id || `radio-${value || Math.random().toString(36).slice(2)}`;\n\n return (\n <div\n className={`inline-flex items-center justify-center relative ${disabled ? 'opacity-60 cursor-not-allowed' : 'cursor-pointer'}`}\n >\n <input\n type=\"radio\"\n checked={isChecked}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel}\n aria-invalid={validationState === 'error'}\n id={inputId}\n name={name}\n value={value}\n className=\"peer sr-only\"\n />\n <span\n aria-hidden=\"true\"\n onClick={() => !disabled && document.getElementById(inputId)?.click()}\n className={`w-5 h-5 rounded-full border-2 flex items-center justify-center transition-all duration-200 ease-out bg-background shadow-sm\n before:content-[''] before:w-2.5 before:h-2.5 before:rounded-full before:scale-0 before:transition-transform before:duration-200 before:ease-out before:bg-primary\n peer-checked:before:scale-100 peer-checked:border-primary\n peer-focus-visible:ring-2 peer-focus-visible:ring-offset-2 peer-focus-visible:ring-ring\n peer-disabled:opacity-50 peer-disabled:cursor-not-allowed\n peer-hover:border-primary/60 peer-active:scale-95\n ${validationClasses[validationState]} ${className}`}\n />\n </div>\n );\n}\n\nRadio.displayName = 'Radio';\n\nexport default Radio;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type SelectProps = {\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLSelectElement>) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n children: React.ReactNode;\n required?: boolean;\n size?: 'sm' | 'md' | 'lg';\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Select component with validation state support\n */\nfunction Select({\n value,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n children,\n required = false,\n size = 'md',\n validationState = 'default'\n}: Readonly<SelectProps>) {\n const sizeClasses = {\n sm: 'h-8 px-3 py-1.5 text-sm',\n md: 'h-10 px-3 py-2 text-sm pr-10',\n lg: 'h-12 px-4 py-3 text-base pr-10'\n };\n\n const validationClasses = {\n default: 'border-input focus:border-ring',\n error: 'border-destructive focus:border-destructive',\n success: 'border-success focus:border-success',\n warning: 'border-warning focus:border-warning'\n };\n\n return (\n <select\n value={value}\n onChange={onChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n required={required}\n aria-invalid={validationState === 'error'}\n className={`flex w-full rounded-lg border bg-background shadow-sm transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring/20 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 appearance-none bg-[url('data:image/svg+xml;charset=utf-8,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20fill%3D%22none%22%20viewBox%3D%220%200%2020%2020%22%3E%3Cpath%20stroke%3D%22%236b7280%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.5%22%20d%3D%22M6%208l4%204%204-4%22%2F%3E%3C%2Fsvg%3E')] bg-[length:1.5em] bg-[right_0.5rem_center] bg-no-repeat ${sizeClasses[size]} ${validationClasses[validationState]} ${className}`}\n >\n {children}\n </select>\n );\n}\n\nSelect.displayName = 'Select';\n\nexport default Select;\n","import React from 'react';\n\nexport type SelectItemProps = {\n value?: string;\n disabled?: boolean;\n children: React.ReactNode;\n};\n\n/**\n * SelectItem - Option element for Select component\n * Replaces native <option> element with semantic component\n */\nfunction SelectItem({ value, disabled = false, children }: Readonly<SelectItemProps>) {\n return (\n <option value={value} disabled={disabled}>\n {children}\n </option>\n );\n}\n\nSelectItem.displayName = 'SelectItem';\n\nexport default SelectItem;\n","import { useState, useRef, useEffect } from 'react';\nimport { IconX, IconChevronDown, IconCheck } from '@tabler/icons-react';\n\nexport type MultiSelectOption = {\n value: string;\n label: string;\n};\n\nexport type MultiSelectProps = {\n /**\n * Available options to select from\n */\n options: MultiSelectOption[];\n /**\n * Currently selected values\n */\n value?: string[];\n /**\n * Callback when selection changes\n */\n onChange?: (values: string[]) => void;\n /**\n * Placeholder text when no selection\n */\n placeholder?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n /**\n * Maximum number of selections allowed\n */\n maxSelections?: number;\n /**\n * Size variant\n */\n size?: 'sm' | 'md' | 'lg';\n /**\n * Additional CSS classes\n */\n className?: string;\n};\n\n/**\n * MultiSelect - Select multiple options from a dropdown list\n *\n * Features:\n * - Multiple selections with chips\n * - Searchable dropdown\n * - Keyboard navigation\n * - Max selections limit\n * - Clearable\n * - Accessible\n *\n * @example\n * ```tsx\n * const [selected, setSelected] = useState<string[]>([]);\n *\n * <MultiSelect\n * options={[\n * { value: '1', label: 'Option 1' },\n * { value: '2', label: 'Option 2' }\n * ]}\n * value={selected}\n * onChange={setSelected}\n * placeholder=\"Select options...\"\n * />\n * ```\n */\nfunction MultiSelect({\n options,\n value = [],\n onChange,\n placeholder = 'Select options...',\n disabled = false,\n maxSelections,\n size = 'md',\n className = ''\n}: Readonly<MultiSelectProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const [searchQuery, setSearchQuery] = useState('');\n const [focusedIndex, setFocusedIndex] = useState(-1);\n const containerRef = useRef<HTMLDivElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n\n const selectedValues = value || [];\n\n // Close on click outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n setSearchQuery('');\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n return undefined;\n }, [isOpen]);\n\n // Focus search input when opened\n useEffect(() => {\n if (isOpen && searchInputRef.current) {\n searchInputRef.current.focus();\n }\n }, [isOpen]);\n\n const filteredOptions = options.filter((option) => option.label.toLowerCase().includes(searchQuery.toLowerCase()));\n\n const handleToggleOption = (optionValue: string) => {\n const isSelected = selectedValues.includes(optionValue);\n let newValues: string[];\n\n if (isSelected) {\n newValues = selectedValues.filter((v) => v !== optionValue);\n } else {\n if (maxSelections && selectedValues.length >= maxSelections) {\n return; // Don't add if max reached\n }\n newValues = [...selectedValues, optionValue];\n }\n\n onChange?.(newValues);\n };\n\n const handleRemoveValue = (valueToRemove: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const newValues = selectedValues.filter((v) => v !== valueToRemove);\n onChange?.(newValues);\n };\n\n const handleClearAll = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.([]);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'Enter':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else if (focusedIndex >= 0 && focusedIndex < filteredOptions.length) {\n handleToggleOption(filteredOptions[focusedIndex].value);\n }\n break;\n case 'Escape':\n e.preventDefault();\n setIsOpen(false);\n setSearchQuery('');\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else {\n setFocusedIndex((prev) => (prev < filteredOptions.length - 1 ? prev + 1 : prev));\n }\n break;\n case 'ArrowUp':\n e.preventDefault();\n setFocusedIndex((prev) => (prev > 0 ? prev - 1 : 0));\n break;\n }\n };\n\n const sizeClasses = {\n sm: { container: 'min-h-8 py-1 px-2', text: 'text-sm', chip: 'text-xs px-1.5 py-0.5', icon: 14 },\n md: { container: 'min-h-10 py-2 px-3', text: 'text-base', chip: 'text-sm px-2 py-1', icon: 16 },\n lg: { container: 'min-h-12 py-2 px-4', text: 'text-lg', chip: 'text-base px-2.5 py-1', icon: 18 }\n };\n\n const currentSize = sizeClasses[size];\n\n const getSelectedLabels = () => {\n return selectedValues.map((v) => options.find((opt) => opt.value === v)?.label).filter(Boolean);\n };\n\n return (\n <div ref={containerRef} className={`relative w-full ${className}`}>\n {/* Trigger */}\n <div\n className={`\n w-full flex flex-wrap items-center gap-1.5\n border border-input rounded-md\n bg-background text-foreground\n cursor-pointer\n transition-all duration-200\n ${currentSize.container}\n ${currentSize.text}\n ${isOpen ? 'ring-2 ring-ring ring-offset-2' : 'hover:border-ring'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n `.trim()}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n onKeyDown={handleKeyDown}\n tabIndex={disabled ? -1 : 0}\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-label=\"Multi-select\"\n >\n {/* Selected items as chips */}\n {selectedValues.length > 0 ? (\n <>\n {getSelectedLabels().map((label, index) => (\n <span\n key={selectedValues[index]}\n className={`inline-flex items-center gap-1 bg-primary/10 text-primary rounded-md font-medium ${currentSize.chip}`}\n >\n {label}\n <button\n type=\"button\"\n onClick={(e) => handleRemoveValue(selectedValues[index], e)}\n className=\"hover:bg-primary/20 rounded-sm transition-colors\"\n aria-label={`Remove ${label}`}\n tabIndex={-1}\n >\n <IconX size={currentSize.icon - 4} />\n </button>\n </span>\n ))}\n </>\n ) : (\n <span className=\"text-muted-foreground\">{placeholder}</span>\n )}\n\n {/* Right side icons */}\n <div className=\"flex items-center gap-1 ml-auto flex-shrink-0\">\n {selectedValues.length > 0 && !disabled && (\n <button\n type=\"button\"\n onClick={handleClearAll}\n className=\"p-1 hover:bg-muted rounded transition-colors\"\n aria-label=\"Clear all\"\n tabIndex={-1}\n >\n <IconX size={currentSize.icon} />\n </button>\n )}\n <IconChevronDown\n size={currentSize.icon}\n className={`text-muted-foreground transition-transform ${isOpen ? 'rotate-180' : ''}`}\n />\n </div>\n </div>\n\n {/* Dropdown */}\n {isOpen && !disabled && (\n <div className=\"absolute top-full left-0 right-0 mt-2 z-50 bg-card border border-border rounded-md shadow-lg max-h-64 overflow-hidden flex flex-col animate-scaleIn origin-top\">\n {/* Search input */}\n <div className=\"p-2 border-b border-border\">\n <input\n ref={searchInputRef}\n type=\"text\"\n value={searchQuery}\n onChange={(e) => {\n setSearchQuery(e.target.value);\n setFocusedIndex(-1);\n }}\n placeholder=\"Search...\"\n className={`w-full px-3 py-1.5 ${currentSize.text} border border-input rounded-md bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring`}\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n\n {/* Options list */}\n <div className=\"overflow-y-auto\" role=\"listbox\">\n {filteredOptions.length > 0 ? (\n filteredOptions.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isFocused = index === focusedIndex;\n const isDisabled = Boolean(maxSelections && !isSelected && selectedValues.length >= maxSelections);\n\n return (\n <button\n key={option.value}\n type=\"button\"\n onClick={() => !isDisabled && handleToggleOption(option.value)}\n className={`\n w-full px-3 py-2 flex items-center justify-between gap-2\n transition-colors text-left ${currentSize.text}\n ${isFocused ? 'bg-muted' : ''}\n ${isSelected ? 'bg-primary/10 text-primary font-medium' : 'hover:bg-muted'}\n ${isDisabled ? 'opacity-50 cursor-not-allowed' : ''}\n `.trim()}\n role=\"option\"\n aria-selected={isSelected}\n disabled={isDisabled}\n >\n <span className=\"flex-1 truncate\">{option.label}</span>\n {isSelected && <IconCheck size={currentSize.icon} className=\"flex-shrink-0\" />}\n </button>\n );\n })\n ) : (\n <div className=\"px-3 py-6 text-center text-muted-foreground\">No options found</div>\n )}\n </div>\n\n {/* Footer info */}\n {maxSelections && (\n <div className=\"px-3 py-2 border-t border-border bg-muted/30 text-xs text-muted-foreground\">\n {selectedValues.length} / {maxSelections} selected\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n\nMultiSelect.displayName = 'MultiSelect';\n\nexport default MultiSelect;\n","import React from 'react';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type TextareaProps = {\n value?: string;\n onChange?: (e: React.ChangeEvent<HTMLTextAreaElement>) => void;\n placeholder?: string;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n rows?: number;\n required?: boolean;\n validationState?: ValidationState;\n};\n\n/**\n * Accessible Textarea component with validation state support\n */\nfunction Textarea({\n value,\n onChange,\n placeholder,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n rows = 3,\n required = false,\n validationState = 'default'\n}: Readonly<TextareaProps>) {\n const validationClasses = {\n default: 'border-input focus:border-ring',\n error: 'border-destructive focus:border-destructive',\n success: 'border-success focus:border-success',\n warning: 'border-warning focus:border-warning'\n };\n\n return (\n <textarea\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n rows={rows}\n required={required}\n aria-invalid={validationState === 'error'}\n className={`flex min-h-[80px] w-full rounded-lg border bg-background px-3 py-2 text-sm shadow-sm transition-all duration-200 placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring/20 focus:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 resize-y ${validationClasses[validationState]} ${className}`}\n />\n );\n}\n\nTextarea.displayName = 'Textarea';\n\nexport default Textarea;\n","import React from 'react';\n\nexport type SwitchProps = {\n checked?: boolean;\n onChange?: (checked: boolean) => void;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n variant?: 'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'info' | 'error' | 'neutral';\n};\n\n/**\n * Accessible Switch/Toggle component - DaisyUI inspired\n * Uses pure Tailwind classes for styling\n */\nfunction Switch({\n checked = false,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n size = 'md',\n variant\n}: Readonly<SwitchProps>) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(e.target.checked);\n };\n\n // Size configurations\n const sizeStyles = {\n xs: {\n container: 'h-4 w-8',\n handle: 'h-3 w-3',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-4' : 'translate-x-0'\n },\n sm: {\n container: 'h-5 w-10',\n handle: 'h-4 w-4',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-5' : 'translate-x-0'\n },\n md: {\n container: 'h-6 w-12',\n handle: 'h-5 w-5',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-6' : 'translate-x-0'\n },\n lg: {\n container: 'h-7 w-14',\n handle: 'h-6 w-6',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-7' : 'translate-x-0'\n },\n xl: {\n container: 'h-8 w-16',\n handle: 'h-7 w-7',\n padding: 'p-0.5',\n translate: checked ? 'translate-x-8' : 'translate-x-0'\n }\n };\n\n // Color variants\n const getVariantColors = () => {\n if (!checked) {\n return 'bg-input border-input';\n }\n\n switch (variant) {\n case 'secondary':\n return 'bg-secondary border-secondary';\n case 'accent':\n return 'bg-accent border-accent';\n case 'success':\n return 'bg-success border-success';\n case 'warning':\n return 'bg-warning border-warning';\n case 'info':\n return 'bg-info border-info';\n case 'error':\n return 'bg-destructive border-destructive';\n case 'neutral':\n return 'bg-neutral border-neutral';\n case 'primary':\n default:\n return 'bg-primary border-primary';\n }\n };\n\n const styles = sizeStyles[size];\n\n return (\n <label\n className={`relative inline-flex ${styles.container} ${styles.padding} items-center rounded-full border transition-all duration-200 cursor-pointer ${\n disabled ? 'opacity-30 cursor-not-allowed' : ''\n } ${getVariantColors()} ${className}`}\n >\n <input\n type=\"checkbox\"\n role=\"switch\"\n checked={checked}\n onChange={handleChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n className=\"sr-only\"\n />\n <span\n className={`inline-block ${styles.handle} rounded-full bg-background shadow-sm transition-transform duration-200 ${styles.translate}`}\n />\n </label>\n );\n}\n\nSwitch.displayName = 'Switch';\n\nexport default Switch;\n","import React from 'react';\n\nexport type SliderProps = {\n value?: number;\n onChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n className?: string;\n ariaLabel?: string;\n id?: string;\n name?: string;\n};\n\n/**\n * Accessible Slider component\n */\nfunction Slider({\n value = 50,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name\n}: Readonly<SliderProps>) {\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n onChange?.(Number(e.target.value));\n };\n\n return (\n <input\n type=\"range\"\n value={value}\n onChange={handleChange}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n className={`w-full h-2 bg-muted/30 rounded-lg appearance-none cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed hover:bg-muted/40 ${className}`}\n style={{\n background: `linear-gradient(to right, hsl(var(--primary)) 0%, hsl(var(--primary)) ${((value - min) / (max - min)) * 100}%, hsl(var(--muted) / 0.3) ${((value - min) / (max - min)) * 100}%, hsl(var(--muted) / 0.3) 100%)`\n }}\n />\n );\n}\n\nSlider.displayName = 'Slider';\n\nexport default Slider;\n","import { ReactNode } from 'react';\n\nexport type ButtonGroupProps = {\n children: ReactNode;\n className?: string;\n variant?: 'default' | 'separated';\n orientation?: 'horizontal' | 'vertical';\n};\n\n/**\n * ButtonGroup - Groups related buttons together\n */\nfunction ButtonGroup({\n children,\n className = '',\n variant = 'default',\n orientation = 'horizontal'\n}: Readonly<ButtonGroupProps>) {\n const baseClasses = 'inline-flex';\n const orientationClasses = orientation === 'horizontal' ? 'flex-row' : 'flex-col';\n\n let variantClasses = '';\n if (variant === 'separated') {\n variantClasses = 'gap-2';\n } else if (orientation === 'horizontal') {\n variantClasses =\n '[&>button]:rounded-none [&>button:first-child]:rounded-l-md [&>button:last-child]:rounded-r-md [&>button:not(:last-child)]:border-r-0';\n } else {\n variantClasses =\n '[&>button]:rounded-none [&>button:first-child]:rounded-t-md [&>button:last-child]:rounded-b-md [&>button:not(:last-child)]:border-b-0';\n }\n\n return <div className={`${baseClasses} ${orientationClasses} ${variantClasses} ${className}`}>{children}</div>;\n}\n\nButtonGroup.displayName = 'ButtonGroup';\n\nexport default ButtonGroup;\n","import { ReactNode } from 'react';\n\nexport type TextProps = {\n children: ReactNode;\n variant?: 'body' | 'muted' | 'small';\n size?: 'xs' | 'sm' | 'base' | 'lg' | 'xl';\n weight?: 'normal' | 'medium' | 'semibold' | 'bold';\n className?: string;\n noMargin?: boolean;\n};\n\n/**\n * Text - Body and secondary text styling\n * Includes default bottom margin for paragraph spacing\n */\nfunction Text({\n children,\n variant = 'body',\n size,\n weight = 'semibold', // elevated default weight\n className = '',\n noMargin = false\n}: Readonly<TextProps>) {\n const variantClasses = {\n body: 'text-foreground',\n muted: 'text-muted-foreground',\n small: 'text-muted-foreground'\n };\n\n const sizeClasses = {\n xs: 'text-xs',\n sm: 'text-sm',\n base: 'text-base',\n lg: 'text-lg',\n xl: 'text-xl'\n };\n\n const weightClasses = {\n normal: 'font-normal',\n medium: 'font-medium',\n semibold: 'font-semibold',\n bold: 'font-bold'\n };\n\n // If size is specified, use it. Otherwise fall back to variant-based sizing\n const defaultSizes = {\n body: 'lg', // bigger default body text\n muted: 'base', // muted still readable\n small: 'sm' // small bumped up slightly\n } as const;\n\n const finalSize = size || defaultSizes[variant];\n const margin = noMargin ? '' : 'mb-4';\n\n return (\n <p\n className={`${variantClasses[variant]} ${sizeClasses[finalSize]} ${weightClasses[weight]} ${margin} ${className}`}\n >\n {children}\n </p>\n );\n}\n\nText.displayName = 'Text';\n\nexport default Text;\n","import React from 'react';\n\nexport type StackProps = {\n children: React.ReactNode;\n className?: string;\n direction?: 'horizontal' | 'vertical';\n spacing?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n align?: 'start' | 'center' | 'end' | 'stretch';\n justify?: 'start' | 'center' | 'end' | 'between' | 'around';\n};\n\n/**\n * Stack layout component (flex-based)\n * Arranges children in a horizontal or vertical line with consistent spacing\n */\nfunction Stack({\n children,\n className = '',\n direction = 'vertical',\n spacing = 'md',\n align = 'stretch',\n justify\n}: Readonly<StackProps>) {\n const spacingClasses = {\n none: 'gap-0',\n sm: 'gap-2',\n md: 'gap-4',\n lg: 'gap-6',\n xl: 'gap-8'\n };\n\n const alignClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch'\n };\n\n const justifyClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n between: 'justify-between',\n around: 'justify-around'\n };\n\n const directionClass = direction === 'horizontal' ? 'flex-row' : 'flex-col';\n const justifyClass = justify ? justifyClasses[justify] : '';\n\n return (\n <div\n data-component=\"Stack\"\n className={`flex ${directionClass} ${spacingClasses[spacing]} ${alignClasses[align]} ${justifyClass} ${className}`}\n >\n {children}\n </div>\n );\n}\n\nStack.displayName = 'Stack';\n\nexport default Stack;\n","import { ReactNode, ReactElement, cloneElement, isValidElement } from 'react';\n\nimport Text from '../../typography/text/text';\nimport Stack from '../../layout/stack/stack';\n\nexport type ValidationState = 'default' | 'error' | 'success' | 'warning';\n\nexport type FormFieldProps = {\n children: ReactNode;\n label?: string;\n htmlFor?: string;\n error?: string;\n helperText?: string;\n required?: boolean;\n className?: string;\n validationState?: ValidationState;\n};\n\n/**\n * FormField - Wrapper component for form inputs with label, error, and helper text\n * Provides consistent spacing and typography for form fields\n * Supports validation states that are passed down to child input components\n */\nfunction FormField({\n children,\n label,\n htmlFor,\n error,\n helperText,\n required = false,\n className = '',\n validationState = 'default'\n}: Readonly<FormFieldProps>) {\n // Automatically set validation state to 'error' if error message is present\n const effectiveValidationState = error ? 'error' : validationState;\n\n // Clone the child element and pass validation state to it\n const childWithValidation = isValidElement(children)\n ? cloneElement(children as ReactElement<{ validationState?: ValidationState }>, {\n validationState: effectiveValidationState\n })\n : children;\n return (\n <Stack direction=\"vertical\" spacing=\"sm\" className={className}>\n {label && (\n <label htmlFor={htmlFor}>\n <Text variant=\"body\" size=\"sm\" noMargin className=\"font-medium\">\n {label}\n {required && <span className=\"text-destructive ml-1\">*</span>}\n </Text>\n </label>\n )}\n {childWithValidation}\n {error && (\n <Text variant=\"body\" size=\"sm\" noMargin className=\"text-destructive\">\n {error}\n </Text>\n )}\n {!error && helperText && (\n <Text variant=\"muted\" size=\"sm\" noMargin>\n {helperText}\n </Text>\n )}\n </Stack>\n );\n}\n\nFormField.displayName = 'FormField';\n\nexport default FormField;\n","import { ReactNode } from 'react';\n\nexport type InputGroupProps = {\n children: ReactNode;\n prefix?: ReactNode;\n suffix?: ReactNode;\n className?: string;\n};\n\n/**\n * InputGroup - Combines inputs and buttons (e.g., search bar with button)\n */\nfunction InputGroup({ children, prefix, suffix, className = '' }: Readonly<InputGroupProps>) {\n return (\n <div className={`flex items-stretch ${className}`}>\n {prefix && (\n <div className=\"flex items-center px-3 bg-muted border border-r-0 border-input rounded-l-md\">{prefix}</div>\n )}\n {children}\n {suffix && (\n <div className=\"flex items-center px-3 bg-muted border border-l-0 border-input rounded-r-md\">{suffix}</div>\n )}\n </div>\n );\n}\n\nInputGroup.displayName = 'InputGroup';\n\nexport default InputGroup;\n","import { useState } from 'react';\n\nexport type CalendarProps = {\n /**\n * The currently selected date\n */\n value?: Date;\n /**\n * Callback when a date is selected\n */\n onChange?: (date: Date) => void;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Disabled state\n */\n disabled?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n};\n\n/**\n * Calendar - A simple date picker component\n *\n * Displays a month view calendar for date selection with keyboard navigation support.\n */\nfunction Calendar({ value, onChange, minDate, maxDate, disabled = false, className = '' }: Readonly<CalendarProps>) {\n const [currentMonth, setCurrentMonth] = useState(value || new Date());\n const [selectedDate, setSelectedDate] = useState<Date | undefined>(value);\n\n const getDaysInMonth = (date: Date) => {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n };\n\n const getFirstDayOfMonth = (date: Date) => {\n return new Date(date.getFullYear(), date.getMonth(), 1).getDay();\n };\n\n const handleDateClick = (day: number) => {\n if (disabled) return;\n\n const newDate = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), day);\n\n // Check min/max date constraints\n if (minDate && newDate < minDate) return;\n if (maxDate && newDate > maxDate) return;\n\n setSelectedDate(newDate);\n onChange?.(newDate);\n };\n\n const handlePreviousMonth = () => {\n setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() - 1));\n };\n\n const handleNextMonth = () => {\n setCurrentMonth(new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1));\n };\n\n const daysInMonth = getDaysInMonth(currentMonth);\n const firstDayOfMonth = getFirstDayOfMonth(currentMonth);\n const monthName = currentMonth.toLocaleDateString('en-US', { month: 'long', year: 'numeric' });\n\n const weekDays = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\n const isDateSelected = (day: number) => {\n if (!selectedDate) return false;\n return (\n selectedDate.getDate() === day &&\n selectedDate.getMonth() === currentMonth.getMonth() &&\n selectedDate.getFullYear() === currentMonth.getFullYear()\n );\n };\n\n const isDateDisabled = (day: number) => {\n const date = new Date(currentMonth.getFullYear(), currentMonth.getMonth(), day);\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return false;\n };\n\n return (\n <div\n className={`inline-block border border-border rounded-lg bg-card text-card-foreground shadow-sm p-4 ${\n disabled ? 'opacity-50 pointer-events-none' : ''\n } ${className}`.trim()}\n >\n {/* Header */}\n <div className=\"flex items-center justify-between mb-4\">\n <button\n type=\"button\"\n onClick={handlePreviousMonth}\n className=\"p-2 hover:bg-muted rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Previous month\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span className=\"font-semibold text-sm\">{monthName}</span>\n <button\n type=\"button\"\n onClick={handleNextMonth}\n className=\"p-2 hover:bg-muted rounded-md transition-colors focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Next month\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n\n {/* Week days */}\n <div className=\"grid grid-cols-7 gap-1 mb-2\">\n {weekDays.map((day) => (\n <div key={day} className=\"w-9 h-9 flex items-center justify-center text-xs font-medium text-muted-foreground\">\n {day}\n </div>\n ))}\n </div>\n\n {/* Calendar days */}\n <div className=\"grid grid-cols-7 gap-1\">\n {/* Empty cells for days before the first day of the month */}\n {Array.from({ length: firstDayOfMonth }).map((_, index) => (\n <div key={`empty-${index}`} className=\"w-9 h-9\" />\n ))}\n\n {/* Actual days of the month */}\n {Array.from({ length: daysInMonth }).map((_, index) => {\n const day = index + 1;\n const selected = isDateSelected(day);\n const dateDisabled = isDateDisabled(day);\n\n return (\n <button\n key={day}\n type=\"button\"\n onClick={() => handleDateClick(day)}\n disabled={dateDisabled}\n className={`\n w-9 h-9 flex items-center justify-center text-sm rounded-md transition-colors\n focus:outline-none focus:ring-2 focus:ring-ring\n ${selected ? 'bg-primary text-primary-foreground font-semibold' : 'hover:bg-muted'}\n ${dateDisabled ? 'text-muted-foreground cursor-not-allowed opacity-50' : ''}\n `.trim()}\n aria-label={`Select ${day} ${monthName}`}\n aria-pressed={selected}\n >\n {day}\n </button>\n );\n })}\n </div>\n </div>\n );\n}\n\nCalendar.displayName = 'Calendar';\n\nexport default Calendar;\n","import { useState, useRef, useEffect } from 'react';\nimport Calendar from '../calendar/calendar';\nimport { IconCalendar } from '@tabler/icons-react';\n\nexport type DatePickerProps = {\n /**\n * The currently selected date\n */\n value?: Date;\n /**\n * Callback when a date is selected\n */\n onChange?: (date: Date | undefined) => void;\n /**\n * Minimum selectable date\n */\n minDate?: Date;\n /**\n * Maximum selectable date\n */\n maxDate?: Date;\n /**\n * Placeholder text when no date is selected\n */\n placeholder?: string;\n /**\n * Disabled state\n */\n disabled?: boolean;\n /**\n * Date format string (default: 'MM/DD/YYYY')\n */\n dateFormat?: string;\n /**\n * Show clear button\n */\n clearable?: boolean;\n /**\n * Additional CSS classes\n */\n className?: string;\n /**\n * Input size\n */\n size?: 'sm' | 'md' | 'lg';\n};\n\n/**\n * DatePicker - Input field with calendar popup for date selection\n *\n * Features:\n * - Calendar popup on click\n * - Keyboard navigation (Arrow keys, Enter, Escape)\n * - Date formatting\n * - Min/max date constraints\n * - Clearable option\n * - Accessible with proper ARIA labels\n *\n * @example\n * ```tsx\n * const [date, setDate] = useState<Date>();\n *\n * <DatePicker\n * value={date}\n * onChange={setDate}\n * placeholder=\"Select a date\"\n * clearable\n * />\n * ```\n */\nfunction DatePicker({\n value,\n onChange,\n minDate,\n maxDate,\n placeholder = 'Select date',\n disabled = false,\n dateFormat = 'MM/DD/YYYY',\n clearable = true,\n className = '',\n size = 'md'\n}: Readonly<DatePickerProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const [selectedDate, setSelectedDate] = useState<Date | undefined>(value);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Update internal state when value prop changes\n useEffect(() => {\n setSelectedDate(value);\n }, [value]);\n\n // Close calendar on click outside\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }\n return undefined;\n }, [isOpen]);\n\n // Close on Escape key\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape' && isOpen) {\n setIsOpen(false);\n inputRef.current?.focus();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }\n return undefined;\n }, [isOpen]);\n\n const formatDate = (date: Date | undefined): string => {\n if (!date) return '';\n\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const year = date.getFullYear();\n\n // Simple format replacement\n return dateFormat\n .replace('MM', month)\n .replace('DD', day)\n .replace('YYYY', String(year))\n .replace('YY', String(year).slice(-2));\n };\n\n const handleDateSelect = (date: Date) => {\n setSelectedDate(date);\n onChange?.(date);\n setIsOpen(false);\n inputRef.current?.focus();\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n setSelectedDate(undefined);\n onChange?.(undefined);\n inputRef.current?.focus();\n };\n\n const handleInputClick = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n setIsOpen(!isOpen);\n }\n };\n\n const sizeClasses = {\n sm: { container: 'h-8 px-3', text: 'text-sm', icon: 16 },\n md: { container: 'h-10 px-4', text: 'text-base', icon: 18 },\n lg: { container: 'h-12 px-5', text: 'text-lg', icon: 20 }\n };\n\n const currentSize = sizeClasses[size];\n\n return (\n <div ref={containerRef} className={`relative w-full ${className}`}>\n {/* Input field */}\n <div\n className={`\n w-full flex items-center justify-between gap-2\n border border-input rounded-md\n bg-background text-foreground\n cursor-pointer\n transition-all duration-200\n ${currentSize.container}\n ${currentSize.text}\n ${isOpen ? 'ring-2 ring-ring ring-offset-2' : 'hover:border-ring'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : ''}\n `.trim()}\n onClick={handleInputClick}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n onKeyDown={handleKeyDown}\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-label=\"Date picker\"\n >\n <input\n ref={inputRef}\n type=\"text\"\n value={formatDate(selectedDate)}\n placeholder={placeholder}\n readOnly\n disabled={disabled}\n className={`flex-1 min-w-0 bg-transparent outline-none cursor-pointer placeholder:text-muted-foreground ${currentSize.text}`}\n aria-label=\"Selected date\"\n />\n\n <div className=\"flex items-center gap-1 flex-shrink-0\">\n {clearable && selectedDate && !disabled ? (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"p-1 hover:bg-muted rounded transition-colors flex-shrink-0\"\n aria-label=\"Clear date\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={currentSize.icon - 2}\n height={currentSize.icon - 2}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n ) : clearable ? (\n <div className=\"w-6 h-6 flex-shrink-0\" />\n ) : null}\n <IconCalendar size={currentSize.icon} className=\"text-muted-foreground flex-shrink-0\" />\n </div>\n </div>\n\n {/* Calendar popup */}\n {isOpen && !disabled && (\n <div\n className=\"absolute left-0 top-full mt-2 z-50 animate-scaleIn origin-top\"\n role=\"dialog\"\n aria-label=\"Calendar\"\n >\n <Calendar value={selectedDate} onChange={handleDateSelect} minDate={minDate} maxDate={maxDate} />\n </div>\n )}\n </div>\n );\n}\n\nDatePicker.displayName = 'DatePicker';\n\nexport default DatePicker;\n","import React from 'react';\n\nexport type NavProps = {\n children: React.ReactNode;\n className?: string;\n ariaLabel?: string;\n};\n\n/**\n * Accessible navigation component\n */\nfunction Nav({ children, className = '', ariaLabel = 'Main navigation' }: Readonly<NavProps>) {\n return (\n <nav aria-label={ariaLabel} className={`flex items-center ${className}`}>\n {children}\n </nav>\n );\n}\n\nNav.displayName = 'Nav';\n\nexport default Nav;\n","import React from 'react';\n\nexport type ContainerProps = {\n children: React.ReactNode;\n className?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n align?: 'start' | 'center' | 'end';\n};\n\n/**\n * Container layout component with responsive max-width and padding\n * Use align prop to control horizontal alignment (default: center)\n */\nfunction Container({\n children,\n className = '',\n size = 'lg',\n padding = 'lg',\n align = 'center'\n}: Readonly<ContainerProps>) {\n const sizeClasses = {\n sm: 'max-w-screen-sm',\n md: 'max-w-screen-md',\n lg: 'max-w-screen-lg',\n xl: 'max-w-screen-xl',\n full: 'max-w-full'\n };\n\n const paddingClasses = {\n none: '',\n sm: 'py-6',\n md: 'py-8',\n lg: 'py-12',\n xl: 'py-16'\n };\n\n const alignClasses = {\n start: 'mr-auto',\n center: 'mx-auto',\n end: 'ml-auto'\n };\n\n return (\n <div className={`px-4 ${sizeClasses[size]} ${paddingClasses[padding]} ${alignClasses[align]} ${className}`}>\n {children}\n </div>\n );\n}\n\nContainer.displayName = 'Container';\n\nexport default Container;\n","import { ReactNode, useState } from 'react';\nimport { IconMenu2, IconX } from '@tabler/icons-react';\n\nimport Container from '../../layout/container/container';\nimport Button from '../../forms/button/button';\n\nexport type NavbarProps = {\n brand?: ReactNode;\n children: ReactNode;\n sticky?: boolean;\n className?: string;\n actions?: ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n appearance?: 'solid' | 'blur' | 'transparent';\n border?: 'none' | 'bottom' | 'top' | 'both';\n /** Disable mobile hamburger menu (useful when used with left nav) */\n disableMobileMenu?: boolean;\n};\n\n/**\n * Navbar Component - Responsive navigation\n * - Mobile hamburger menu\n * - Sticky positioning option\n * - Brand logo section\n * - Action buttons area\n * - Fully responsive\n * - Configurable container size\n * - Appearance modes: solid, blur (frosted glass), transparent\n * - Configurable borders: none, bottom, top, or both\n */\nfunction Navbar({\n brand,\n children,\n sticky = true,\n className = '',\n actions,\n size = 'xl',\n appearance = 'solid',\n border = 'none',\n disableMobileMenu = false\n}: Readonly<NavbarProps>) {\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\n\n // Appearance styles\n const appearanceClasses = {\n solid: 'bg-background shadow-sm',\n blur: 'bg-background/70 backdrop-blur-md supports-[backdrop-filter]:bg-background/60 border border-border/60',\n transparent: 'bg-transparent'\n } as const;\n\n const borderClasses = {\n none: '',\n bottom: 'border-b border-border',\n top: 'border-t border-border',\n both: 'border-y border-border'\n };\n\n return (\n <nav\n data-appearance={appearance}\n className={`${sticky ? 'sticky top-0 z-50' : ''} ${appearanceClasses[appearance]} ${borderClasses[border]} ${className}`}\n >\n <Container padding=\"none\" size={size}>\n <div className=\"flex items-center justify-between h-16\">\n {/* Brand */}\n {brand && <div className=\"flex-shrink-0\">{brand}</div>}\n\n {/* Desktop Navigation */}\n <div className=\"hidden md:flex md:items-center md:space-x-6 md:flex-1 md:ml-10\">{children}</div>\n\n {/* Actions */}\n {actions && (\n <div className={`${disableMobileMenu ? 'flex' : 'hidden md:flex'} items-center space-x-4`}>{actions}</div>\n )}\n\n {/* Mobile Toggle */}\n {!disableMobileMenu && (\n <div className=\"md:hidden\">\n <Button\n variant=\"neutral\"\n style=\"ghost\"\n size=\"sm\"\n icon={mobileMenuOpen ? <IconX size={24} /> : <IconMenu2 size={24} />}\n ariaLabel=\"Toggle menu\"\n onClick={() => setMobileMenuOpen(!mobileMenuOpen)}\n />\n </div>\n )}\n </div>\n\n {/* Mobile Menu */}\n {!disableMobileMenu && mobileMenuOpen && (\n <div className=\"md:hidden py-4 space-y-3 border-t border-border\">\n {children}\n {actions && <div className=\"pt-4 border-t border-border space-y-2\">{actions}</div>}\n </div>\n )}\n </Container>\n </nav>\n );\n}\n\nNavbar.displayName = 'Navbar';\n\nexport default Navbar;\n","import { ReactNode } from 'react';\nimport { Link } from 'react-router-dom';\n\nexport type NavbarBrandProps = {\n children: ReactNode;\n href?: string;\n external?: boolean;\n onClick?: () => void;\n className?: string;\n};\n\n/**\n * NavbarBrand Component - Brand/logo section for Navbar\n * Uses React Router Link for internal navigation\n */\nfunction NavbarBrand({ children, href, external = false, onClick, className = '' }: Readonly<NavbarBrandProps>) {\n const content = <span className={`text-lg md:text-xl font-bold ${className}`}>{children}</span>;\n\n const linkClassName = 'no-underline text-foreground hover:text-primary transition-colors';\n\n if (href) {\n // External links use regular anchor tag\n if (external) {\n return (\n <a href={href} className={linkClassName} target=\"_blank\" rel=\"noopener noreferrer\">\n {content}\n </a>\n );\n }\n\n // Internal links use React Router Link\n return (\n <Link to={href} className={linkClassName}>\n {content}\n </Link>\n );\n }\n\n if (onClick) {\n return (\n <button onClick={onClick} className={linkClassName}>\n {content}\n </button>\n );\n }\n\n return content;\n}\n\nNavbarBrand.displayName = 'NavbarBrand';\n\nexport default NavbarBrand;\n","import { ReactNode } from 'react';\nimport { NavLink } from 'react-router-dom';\n\nexport type NavbarLinkProps = {\n href: string;\n children: ReactNode;\n external?: boolean;\n className?: string;\n end?: boolean;\n};\n\n/**\n * NavbarLink Component - Navigation link for Navbar\n * Uses React Router's NavLink for automatic active state management\n */\nfunction NavbarLink({ href, children, external = false, className = '', end = false }: Readonly<NavbarLinkProps>) {\n const baseClassName = `block md:inline-block py-2 md:py-0 font-medium transition-colors no-underline ${className}`;\n\n // External links use regular anchor tag\n if (external) {\n return (\n <a\n href={href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className={`${baseClassName} text-foreground hover:text-primary`}\n >\n {children}\n </a>\n );\n }\n\n // Hash anchors should be plain anchors (in-page navigation), not NavLink\n if (href.startsWith('#')) {\n return (\n <a href={href} className={`${baseClassName} text-foreground hover:text-primary`}>\n {children}\n </a>\n );\n }\n\n // Internal links use React Router NavLink with automatic active state\n return (\n <NavLink\n to={href}\n end={end}\n className={({ isActive }) =>\n `${baseClassName} ${\n isActive ? 'text-primary font-semibold border-b-2 border-primary' : 'text-foreground hover:text-primary'\n }`\n }\n >\n {children}\n </NavLink>\n );\n}\n\nNavbarLink.displayName = 'NavbarLink';\n\nexport default NavbarLink;\n","/**\n * PageTransition Component\n *\n * ARCHITECTURE NOTE:\n * This is the centralized transition component for Hydn UI.\n * It replaces custom CSS transitions and ensures consistency across the library.\n *\n * Components using PageTransition:\n * - Tabs component (for tab content switching)\n * - App layouts (for page route transitions)\n *\n * ❌ DON'T: Create new custom transition CSS classes\n * ✅ DO: Use this component for any transition needs\n */\n\nimport React from 'react';\n\nexport interface PageTransitionProps {\n /** Page content */\n children: React.ReactNode;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Animation type */\n type?: 'fade' | 'slide' | 'scale' | 'none';\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * PageTransition - Centralized transition component for smooth animations\n *\n * The standard way to add animated transitions in Hydn UI.\n * Use this component instead of custom CSS animations for consistency.\n *\n * Features:\n * - Multiple animation types (fade, slide, scale)\n * - Customizable duration\n * - Lightweight CSS animations using Tailwind's animate-in utilities\n * - Accessible (respects prefers-reduced-motion)\n * - Already used internally by Tabs component\n *\n * @example\n * ```tsx\n * // Basic fade transition\n * <PageTransition>\n * <YourPageContent />\n * </PageTransition>\n *\n * // Slide animation\n * <PageTransition type=\"slide\">\n * <YourPageContent />\n * </PageTransition>\n *\n * // Custom duration\n * <PageTransition type=\"fade\" duration={500}>\n * <YourPageContent />\n * </PageTransition>\n *\n * // With React Router\n * <Route path=\"/about\" element={\n * <PageTransition>\n * <AboutPage />\n * </PageTransition>\n * } />\n * ```\n */\nexport const PageTransition: React.FC<PageTransitionProps> = ({\n children,\n duration = 300,\n type = 'fade',\n className = ''\n}) => {\n const [isVisible, setIsVisible] = React.useState(false);\n\n // Trigger animation on mount with slight delay for smoother effect\n React.useEffect(() => {\n // Double RAF for better reliability and smoother start\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n });\n }, []);\n\n // Animation class mapping - using standard CSS transitions for reliability\n const getAnimationStyles = () => {\n if (type === 'none') return '';\n\n // Use ease-out for smoother, more natural animation\n const baseClasses = 'transition-all ease-out';\n const durationClass = `duration-[${duration}ms]`;\n\n if (!isVisible) {\n // Initial state (hidden)\n switch (type) {\n case 'fade':\n return `${baseClasses} ${durationClass} opacity-0 translate-y-1`;\n case 'slide':\n return `${baseClasses} ${durationClass} opacity-0 translate-y-3`;\n case 'scale':\n return `${baseClasses} ${durationClass} opacity-0 scale-[0.99]`;\n default:\n return `${baseClasses} ${durationClass} opacity-0 translate-y-1`;\n }\n } else {\n // Animated state (visible)\n return `${baseClasses} ${durationClass} opacity-100 translate-y-0 scale-100`;\n }\n };\n\n return <div className={`${getAnimationStyles()} ${className}`.trim()}>{children}</div>;\n};\n\nPageTransition.displayName = 'PageTransition';\n\nexport default PageTransition;\n","import React, { useState } from 'react';\nimport PageTransition from '../../layout/page-transition/page-transition';\n\nexport type Tab = {\n id: string;\n label: string;\n content: React.ReactNode;\n};\n\nexport type TabsProps = {\n tabs: Tab[];\n defaultTab?: string;\n className?: string;\n ariaLabel?: string;\n};\n\n/**\n * Accessible Tabs component with animated tab switching using PageTransition\n */\nfunction Tabs({ tabs, defaultTab, className = '', ariaLabel = 'Tabs' }: Readonly<TabsProps>) {\n const [activeTab, setActiveTab] = useState(defaultTab || tabs[0]?.id);\n\n return (\n <div className={className}>\n <div role=\"tablist\" aria-label={ariaLabel} className=\"flex border-b-2 border-border/50\">\n {tabs.map((tab) => (\n <button\n key={tab.id}\n role=\"tab\"\n aria-selected={activeTab === tab.id}\n aria-controls={`panel-${tab.id}`}\n id={`tab-${tab.id}`}\n onClick={() => setActiveTab(tab.id)}\n className={`px-4 py-3 font-medium cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 relative ${\n activeTab === tab.id\n ? 'text-primary after:absolute after:bottom-0 after:left-0 after:right-0 after:h-0.5 after:bg-primary after:rounded-t after:transition-all after:duration-200'\n : 'text-muted-foreground hover:text-foreground hover:bg-muted/50'\n }`}\n >\n {tab.label}\n </button>\n ))}\n </div>\n {tabs.map((tab) => (\n <div\n key={tab.id}\n role=\"tabpanel\"\n id={`panel-${tab.id}`}\n aria-labelledby={`tab-${tab.id}`}\n hidden={activeTab !== tab.id}\n >\n {activeTab === tab.id && (\n <PageTransition type=\"fade\" duration={150}>\n <div className=\"pt-6\">{tab.content}</div>\n </PageTransition>\n )}\n </div>\n ))}\n </div>\n );\n}\n\nTabs.displayName = 'Tabs';\n\nexport default Tabs;\n","import React, { useState, useRef, useEffect, useCallback, createContext, useContext } from 'react';\n\nexport type DropdownProps = {\n trigger: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n align?: 'start' | 'center' | 'end';\n autoClose?: boolean; // close on item select\n /** Size of the dropdown panel and items */\n size?: 'sm' | 'md';\n};\n\ntype DropdownContextValue = {\n requestClose: () => void;\n autoClose: boolean;\n};\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n\nexport function useDropdown() {\n const ctx = useContext(DropdownContext);\n if (!ctx) throw new Error('useDropdown must be used within <Dropdown>');\n return ctx;\n}\n\n/**\n * Dropdown component with click-outside handling\n */\nfunction Dropdown({\n trigger,\n children,\n className = '',\n align = 'start',\n autoClose = true,\n size = 'md'\n}: Readonly<DropdownProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const itemsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [activeIndex, setActiveIndex] = useState<number>(-1);\n\n const close = useCallback(() => setIsOpen(false), []);\n const open = useCallback(() => setIsOpen(true), []);\n\n // Handle keyboard navigation\n useEffect(() => {\n if (!isOpen) return;\n const handleKey = (e: KeyboardEvent) => {\n if (!menuRef.current) return;\n const itemEls = itemsRef.current.filter(Boolean);\n if (['ArrowDown', 'ArrowUp', 'Home', 'End'].includes(e.key)) {\n e.preventDefault();\n if (itemEls.length === 0) return;\n let nextIndex = activeIndex;\n if (e.key === 'ArrowDown') nextIndex = (activeIndex + 1) % itemEls.length;\n if (e.key === 'ArrowUp') nextIndex = (activeIndex - 1 + itemEls.length) % itemEls.length;\n if (e.key === 'Home') nextIndex = 0;\n if (e.key === 'End') nextIndex = itemEls.length - 1;\n setActiveIndex(nextIndex);\n itemEls[nextIndex]?.focus();\n return;\n }\n if (e.key === 'Escape') {\n e.preventDefault();\n close();\n (dropdownRef.current?.querySelector('button[data-trigger=\"true\"]') as HTMLButtonElement | null)?.focus();\n }\n if (e.key === 'Tab') {\n // trap focus\n e.preventDefault();\n const itemEls = itemsRef.current.filter(Boolean);\n if (itemEls.length === 0) return;\n const dir = e.shiftKey ? -1 : 1;\n const nextIndex = (activeIndex + dir + itemEls.length) % itemEls.length;\n setActiveIndex(nextIndex);\n itemEls[nextIndex]?.focus();\n }\n };\n document.addEventListener('keydown', handleKey);\n return () => document.removeEventListener('keydown', handleKey);\n }, [isOpen, activeIndex, close]);\n\n // Outside click close\n useEffect(() => {\n if (!isOpen) return;\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n close();\n }\n };\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen, close]);\n\n // Auto-focus first item on open\n useEffect(() => {\n if (isOpen) {\n const itemEls = itemsRef.current.filter(Boolean);\n if (itemEls.length) {\n setActiveIndex(0);\n itemEls[0]?.focus();\n }\n } else {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n const registerItem = (el: HTMLButtonElement | null, index: number) => {\n itemsRef.current[index] = el;\n };\n\n return (\n <div ref={dropdownRef} className={`relative ${className}`}>\n <button\n data-trigger=\"true\"\n onClick={() => (isOpen ? close() : open())}\n className=\"bg-transparent border-0 p-0 cursor-pointer outline-none\"\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n aria-controls={isOpen ? 'dropdown-menu' : undefined}\n >\n {trigger}\n </button>\n {isOpen && (\n <DropdownContext.Provider value={{ requestClose: close, autoClose }}>\n <div\n id=\"dropdown-menu\"\n ref={menuRef}\n className={`absolute mt-2 bg-popover text-popover-foreground border border-border rounded-md shadow-lg z-50 ${size === 'sm' ? 'min-w-[140px] text-xs py-1' : 'min-w-[180px]'} max-h-[320px] overflow-y-auto origin-top animate-scaleIn focus:outline-none ${align === 'start' ? 'left-0' : align === 'end' ? 'right-0' : 'left-1/2 -translate-x-1/2'} ${className}`}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n >\n {React.Children.map(children, (child, i) => {\n if (!React.isValidElement(child)) return child;\n return React.cloneElement(child as any, { __dropdownIndex: i, __registerItem: registerItem, size });\n })}\n </div>\n </DropdownContext.Provider>\n )}\n </div>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\nexport default Dropdown;\n\n// DropdownItem component (simple abstraction)\nexport type DropdownItemProps = {\n children: React.ReactNode;\n onSelect?: () => void;\n /** Semantic color variant */\n variant?: 'default' | 'destructive' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error';\n disabled?: boolean;\n className?: string;\n /** Optional muted description below main label */\n description?: string;\n /** Inherit size from dropdown or override */\n size?: 'sm' | 'md';\n __dropdownIndex?: number; // injected\n __registerItem?: (el: HTMLButtonElement | null, index: number) => void; // injected\n};\n\nexport function DropdownItem({\n children,\n onSelect,\n variant = 'default',\n disabled = false,\n className = '',\n description,\n size = 'md',\n __dropdownIndex,\n __registerItem\n}: Readonly<DropdownItemProps>) {\n const ctx = useContext(DropdownContext);\n const base = `${size === 'sm' ? 'text-[11px] leading-tight px-2.5 py-1.5 rounded-md' : 'px-3.5 py-2 rounded-md'} w-full text-left select-none transition-colors outline-none disabled:opacity-40 disabled:pointer-events-none`;\n const focus =\n 'focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-popover';\n const palette: Record<string, string> = {\n default: 'text-foreground/90 hover:bg-muted active:bg-muted/80',\n primary: 'text-primary hover:bg-primary/15 active:bg-primary/25 focus-visible:ring-primary',\n secondary: 'text-secondary hover:bg-secondary/15 active:bg-secondary/25 focus-visible:ring-secondary',\n accent: 'text-accent hover:bg-accent/15 active:bg-accent/25 focus-visible:ring-accent',\n info: 'text-info hover:bg-info/15 active:bg-info/25 focus-visible:ring-info',\n success: 'text-success hover:bg-success/15 active:bg-success/25 focus-visible:ring-success',\n warning: 'text-warning hover:bg-warning/18 active:bg-warning/28 focus-visible:ring-warning',\n error: 'text-error hover:bg-error/15 active:bg-error/25 focus-visible:ring-error',\n destructive: 'text-destructive hover:bg-destructive/15 active:bg-destructive/25 focus-visible:ring-destructive'\n };\n const variantClasses = palette[variant] || palette.default;\n return (\n <button\n ref={(el) => __registerItem?.(el, __dropdownIndex ?? -1)}\n role=\"menuitem\"\n type=\"button\"\n disabled={disabled}\n onClick={() => {\n if (disabled) return;\n onSelect?.();\n if (ctx?.autoClose) ctx.requestClose();\n }}\n className={`${base} ${focus} ${variantClasses} flex flex-col ${className}`}\n >\n <span className={`${size === 'sm' ? 'font-medium' : 'font-medium'} leading-snug`}>{children}</span>\n {description && (\n <span className={`${size === 'sm' ? 'text-[10px]' : 'text-xs'} text-foreground/60 mt-0.5 line-clamp-2`}>\n {description}\n </span>\n )}\n </button>\n );\n}\n","import { ReactNode } from 'react';\n\nexport type BreadcrumbItem = {\n label: string;\n href?: string;\n};\n\nexport type BreadcrumbsProps = {\n items: BreadcrumbItem[];\n separator?: ReactNode;\n className?: string;\n};\n\n/**\n * Breadcrumbs - Hierarchical path display\n */\nfunction Breadcrumbs({ items, separator = '/', className = '' }: Readonly<BreadcrumbsProps>) {\n return (\n <nav aria-label=\"Breadcrumb\" className={className}>\n <ol className=\"flex items-center space-x-2 text-sm\">\n {items.map((item, index) => {\n const isLast = index === items.length - 1;\n const key = item.href || item.label;\n\n return (\n <li key={key} className=\"flex items-center\">\n {item.href && !isLast ? (\n <a\n href={item.href}\n className=\"text-primary hover:text-primary/80 hover:underline cursor-pointer transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-ring rounded px-1 -mx-1\"\n >\n {item.label}\n </a>\n ) : (\n <span className={isLast ? 'text-foreground font-medium' : 'text-muted-foreground'}>{item.label}</span>\n )}\n {!isLast && (\n <span className=\"mx-2 text-muted-foreground select-none\" aria-hidden=\"true\">\n {separator}\n </span>\n )}\n </li>\n );\n })}\n </ol>\n </nav>\n );\n}\n\nBreadcrumbs.displayName = 'Breadcrumbs';\n\nexport default Breadcrumbs;\n","export type PaginationProps = {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n siblingCount?: number;\n className?: string;\n};\n\n/**\n * Pagination - Page controls with active state\n */\nfunction Pagination({\n currentPage,\n totalPages,\n onPageChange,\n siblingCount = 1,\n className = ''\n}: Readonly<PaginationProps>) {\n const getPageNumbers = () => {\n const pages: (number | string)[] = [];\n const leftSibling = Math.max(currentPage - siblingCount, 1);\n const rightSibling = Math.min(currentPage + siblingCount, totalPages);\n\n if (leftSibling > 2) {\n pages.push(1, '...');\n } else {\n for (let i = 1; i < leftSibling; i++) {\n pages.push(i);\n }\n }\n\n for (let i = leftSibling; i <= rightSibling; i++) {\n pages.push(i);\n }\n\n if (rightSibling < totalPages - 1) {\n pages.push('...', totalPages);\n } else {\n for (let i = rightSibling + 1; i <= totalPages; i++) {\n pages.push(i);\n }\n }\n\n return pages;\n };\n\n return (\n <nav aria-label=\"Pagination\" className={className}>\n <ul className=\"flex items-center space-x-1\">\n <li>\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n className=\"px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Previous page\"\n >\n ←\n </button>\n </li>\n {getPageNumbers().map((page, index) => {\n const key = typeof page === 'number' ? `page-${page}` : `ellipsis-${index}`;\n return (\n <li key={key}>\n {typeof page === 'number' ? (\n <button\n onClick={() => onPageChange(page)}\n className={`px-3 py-2 rounded-lg border cursor-pointer transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring ${\n page === currentPage\n ? 'bg-primary text-primary-foreground border-primary shadow-sm'\n : 'border-border hover:bg-accent hover:text-accent-foreground hover:border-accent'\n }`}\n aria-label={`Page ${page}`}\n aria-current={page === currentPage ? 'page' : undefined}\n >\n {page}\n </button>\n ) : (\n <span className=\"px-3 py-2 text-muted-foreground\">...</span>\n )}\n </li>\n );\n })}\n <li>\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n className=\"px-3 py-2 rounded-lg border border-border hover:bg-accent hover:text-accent-foreground transition-colors duration-200 cursor-pointer disabled:opacity-50 disabled:cursor-not-allowed focus:outline-none focus:ring-2 focus:ring-ring\"\n aria-label=\"Next page\"\n >\n →\n </button>\n </li>\n </ul>\n </nav>\n );\n}\n\nPagination.displayName = 'Pagination';\n\nexport default Pagination;\n","import { ReactNode } from 'react';\n\nexport type SidebarProps = {\n children: ReactNode;\n className?: string;\n width?: string;\n};\n\n/**\n * Sidebar - Vertical navigation with sections\n */\nfunction Sidebar({ children, className = '', width = '16rem' }: Readonly<SidebarProps>) {\n const widthClass = width === '16rem' ? 'w-64' : width === '4rem' ? 'w-16' : '';\n\n return (\n <nav\n className={`\n ${widthClass || ''}\n bg-card border-r border-border\n flex flex-col\n overflow-hidden\n ${className}\n `.replace(/\\s+/g, ' ')}\n style={!widthClass ? ({ width } as React.CSSProperties) : undefined}\n aria-label=\"Sidebar navigation\"\n >\n <div className=\"flex-1 px-4 py-3 space-y-2\">{children}</div>\n </nav>\n );\n}\n\nSidebar.displayName = 'Sidebar';\n\nexport default Sidebar;\n","import { ReactNode } from 'react';\nimport { IconCheck } from '@tabler/icons-react';\n\nexport type StepProps = {\n title: string;\n description?: string;\n icon?: ReactNode;\n status?: 'pending' | 'current' | 'completed' | 'error';\n optional?: boolean;\n};\n\nexport type StepperProps = {\n steps: StepProps[];\n currentStep: number;\n className?: string;\n orientation?: 'horizontal' | 'vertical';\n onStepClick?: (step: number) => void;\n clickable?: boolean;\n};\n\n/**\n * Stepper - Multi-step progress indicator\n *\n * Features:\n * - Horizontal and vertical orientations\n * - Current, completed, and pending states\n * - Optional steps\n * - Custom icons\n * - Clickable steps (for navigation)\n * - Error states\n *\n * Common uses:\n * - Multi-step forms\n * - Checkout processes\n * - Onboarding flows\n * - Wizards\n */\nfunction Stepper({\n steps,\n currentStep,\n className = '',\n orientation = 'horizontal',\n onStepClick,\n clickable = false\n}: Readonly<StepperProps>) {\n const getStepStatus = (index: number): StepProps['status'] => {\n const step = steps[index];\n if (step.status) return step.status;\n if (index < currentStep) return 'completed';\n if (index === currentStep) return 'current';\n return 'pending';\n };\n\n const renderStep = (step: StepProps, index: number) => {\n const status = getStepStatus(index) || 'pending';\n const isClickable = clickable; // allow clicking any step when clickable enabled\n\n // Status-based styles\n const statusStyles: Record<\n NonNullable<StepProps['status']>,\n {\n circle: string;\n title: string;\n description: string;\n }\n > = {\n pending: {\n circle: 'bg-muted text-muted-foreground border-2 border-muted',\n title: 'text-muted-foreground',\n description: 'text-muted-foreground'\n },\n current: {\n circle: 'bg-primary text-primary-foreground border-2 border-primary',\n title: 'text-foreground font-semibold',\n description: 'text-muted-foreground'\n },\n completed: {\n circle: 'bg-success text-success-foreground border-2 border-success',\n title: 'text-foreground',\n description: 'text-muted-foreground'\n },\n error: {\n circle: 'bg-destructive text-destructive-foreground border-2 border-destructive',\n title: 'text-destructive',\n description: 'text-destructive'\n }\n };\n\n const styles = statusStyles[status];\n\n const handleClick = () => {\n if (isClickable && onStepClick) {\n onStepClick(index);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (isClickable && onStepClick && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onStepClick(index);\n }\n };\n\n if (orientation === 'horizontal') {\n return (\n <div\n key={index}\n className={`flex-1 flex flex-col items-center ${isClickable ? 'cursor-pointer' : ''}`}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role={isClickable ? 'button' : undefined}\n tabIndex={isClickable ? 0 : undefined}\n aria-label={`Step ${index + 1}: ${step.title}`}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {/* Step Number/Icon */}\n <div className=\"relative flex items-center w-full\">\n {/* Connector Line (Left) */}\n {index > 0 && (\n <div\n className={`h-0.5 flex-1 ${status === 'completed' || status === 'current' ? 'bg-success' : 'bg-muted'}`}\n />\n )}\n\n {/* Circle */}\n <div\n className={`\n relative z-10 flex items-center justify-center\n w-10 h-10 rounded-full\n transition-colors transition-[background-color,border-color] duration-300 ease-in-out\n ${styles.circle}\n `}\n >\n {status === 'completed' ? (\n <IconCheck className=\"w-5 h-5\" />\n ) : step.icon ? (\n step.icon\n ) : (\n <span className=\"text-sm font-semibold\">{index + 1}</span>\n )}\n </div>\n\n {/* Connector Line (Right) */}\n {index < steps.length - 1 && (\n <div\n className={`h-0.5 flex-1 transition-colors duration-300 ease-in-out ${status === 'completed' ? 'bg-success' : 'bg-muted'}`}\n />\n )}\n </div>\n\n {/* Label */}\n <div className={`mt-3 text-center text-sm transition-colors duration-300 ease-in-out ${styles.title}`}>\n {step.title}\n {step.optional && <span className=\"ml-1 text-xs text-muted-foreground\">(Optional)</span>}\n {step.description && (\n <p className={`text-xs mt-1 transition-colors duration-300 ease-in-out ${styles.description}`}>\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n }\n\n // Vertical orientation\n return (\n <div\n key={index}\n className={`flex gap-4 ${index < steps.length - 1 ? 'pb-8' : ''} ${isClickable ? 'cursor-pointer' : ''}`}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n role={isClickable ? 'button' : undefined}\n tabIndex={isClickable ? 0 : undefined}\n aria-label={`Step ${index + 1}: ${step.title}`}\n aria-current={status === 'current' ? 'step' : undefined}\n >\n {/* Icon Column */}\n <div className=\"flex flex-col items-center\">\n {/* Circle */}\n <div\n className={`\n flex items-center justify-center\n w-10 h-10 rounded-full flex-shrink-0\n transition-colors transition-[background-color,border-color] duration-300 ease-in-out\n ${styles.circle}\n `}\n >\n {status === 'completed' ? (\n <IconCheck className=\"w-5 h-5\" />\n ) : step.icon ? (\n step.icon\n ) : (\n <span className=\"text-sm font-semibold\">{index + 1}</span>\n )}\n </div>\n\n {/* Connector Line */}\n {index < steps.length - 1 && (\n <div\n className={`w-0.5 flex-1 mt-2 transition-colors duration-300 ease-in-out ${status === 'completed' ? 'bg-success' : 'bg-muted'}`}\n />\n )}\n </div>\n\n {/* Content Column */}\n <div className={`flex-1 pt-2 text-base transition-colors duration-300 ease-in-out ${styles.title}`}>\n {step.title}\n {step.optional && <span className=\"ml-2 text-xs text-muted-foreground\">(Optional)</span>}\n {step.description && (\n <p className={`text-sm mt-1 transition-colors duration-300 ease-in-out ${styles.description}`}>\n {step.description}\n </p>\n )}\n </div>\n </div>\n );\n };\n\n return (\n <div\n className={`\n ${orientation === 'horizontal' ? 'flex items-start' : 'flex flex-col'}\n ${className}\n `}\n >\n {steps.map((step, index) => renderStep(step, index))}\n </div>\n );\n}\n\nStepper.displayName = 'Stepper';\n\nexport default Stepper;\n","import { useEffect, useState } from 'react';\n\nexport type ToastProps = {\n message?: string;\n children?: React.ReactNode;\n type?: 'info' | 'success' | 'warning' | 'error';\n onClose?: () => void;\n className?: string;\n /** Auto-dismiss duration in milliseconds (0 to disable) */\n duration?: number;\n};\n\n/**\n * Toast - Notification popup with slide-in/out animations and auto-dismiss\n */\nfunction Toast({ message, children, type = 'info', onClose, className = '', duration = 5000 }: Readonly<ToastProps>) {\n const [isClosing, setIsClosing] = useState(false);\n\n const typeClasses = {\n info: 'bg-info text-info-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n error: 'bg-destructive text-destructive-foreground'\n };\n\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n handleClose();\n }, duration);\n return () => clearTimeout(timer);\n }\n return undefined;\n }, [duration]);\n\n const handleClose = () => {\n setIsClosing(true);\n // Wait for animation to complete before calling onClose\n setTimeout(() => {\n onClose?.();\n }, 300); // Match animation duration\n };\n\n return (\n <div\n role=\"alert\"\n aria-live=\"polite\"\n className={`fixed bottom-4 right-4 px-4 py-3 rounded-md shadow-lg ${typeClasses[type]} transition-all duration-300 ease-out ${\n isClosing ? 'opacity-0 translate-x-full' : 'opacity-100 translate-x-0 animate-slideInRight'\n } ${className}`}\n >\n <span>{children || message}</span>\n {onClose && (\n <button onClick={handleClose} className=\"ml-4 font-bold hover:opacity-70 transition-opacity\" aria-label=\"Close\">\n ×\n </button>\n )}\n </div>\n );\n}\n\nToast.displayName = 'Toast';\n\nexport default Toast;\n","import { ReactNode, useState, useRef, useEffect } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type TooltipProps = {\n /** The element that triggers the tooltip */\n children: ReactNode;\n /** Tooltip text content */\n content: string | ReactNode;\n /** Position of the tooltip relative to the trigger element */\n position?: 'top' | 'bottom' | 'left' | 'right';\n /** Color variant of the tooltip */\n variant?: 'default' | 'primary' | 'secondary' | 'accent' | 'info' | 'success' | 'warning' | 'error' | 'neutral';\n /** Force the tooltip to always be visible */\n open?: boolean;\n /** Use portal rendering (escapes overflow constraints) */\n usePortal?: boolean;\n /** Additional CSS classes */\n className?: string;\n};\n\n/**\n * Tooltip - Hover tooltip component inspired by DaisyUI\n *\n * Displays a tooltip message when hovering over an element.\n * Uses CSS-only approach for better performance, with optional Portal rendering.\n *\n * @example\n * ```tsx\n * // Basic tooltip\n * <Tooltip content=\"Hello\">\n * <Button>Hover me</Button>\n * </Tooltip>\n *\n * // Positioned tooltip with color\n * <Tooltip content=\"Success!\" position=\"right\" variant=\"success\">\n * <Button>Submit</Button>\n * </Tooltip>\n *\n * // With portal (escapes overflow)\n * <Tooltip content=\"Tooltip\" position=\"right\" usePortal>\n * <Button>Hover</Button>\n * </Tooltip>\n * ```\n */\nfunction Tooltip({\n children,\n content,\n position = 'top',\n variant = 'default',\n open = false,\n usePortal = false,\n className = ''\n}: Readonly<TooltipProps>) {\n const [showTooltip, setShowTooltip] = useState(false);\n const [tooltipPosition, setTooltipPosition] = useState({ top: 0, left: 0 });\n const triggerRef = useRef<HTMLSpanElement>(null);\n\n const isVisible = open || showTooltip;\n\n // Update tooltip position for portal mode\n useEffect(() => {\n if (usePortal && isVisible && triggerRef.current) {\n const rect = triggerRef.current.getBoundingClientRect();\n const positions = {\n top: {\n top: rect.top - 8,\n left: rect.left + rect.width / 2\n },\n bottom: {\n top: rect.bottom + 8,\n left: rect.left + rect.width / 2\n },\n left: {\n top: rect.top + rect.height / 2,\n left: rect.left - 8\n },\n right: {\n top: rect.top + rect.height / 2,\n left: rect.right + 8\n }\n };\n setTooltipPosition(positions[position]);\n }\n }, [usePortal, isVisible, position]);\n\n const variantClasses = {\n default: 'bg-popover text-popover-foreground',\n primary: 'bg-primary text-primary-foreground',\n secondary: 'bg-secondary text-secondary-foreground',\n accent: 'bg-accent text-accent-foreground',\n info: 'bg-blue-500 text-white',\n success: 'bg-green-500 text-white',\n warning: 'bg-yellow-500 text-foreground',\n error: 'bg-red-500 text-white',\n neutral: 'bg-muted text-muted-foreground'\n };\n\n const arrowColorClasses = {\n default: 'before:border-popover',\n primary: 'before:border-primary',\n secondary: 'before:border-secondary',\n accent: 'before:border-accent',\n info: 'before:border-blue-500',\n success: 'before:border-green-500',\n warning: 'before:border-yellow-500',\n error: 'before:border-red-500',\n neutral: 'before:border-muted'\n };\n\n // Portal positioning classes\n const portalPositionClasses = {\n top: '-translate-x-1/2 -translate-y-full before:left-1/2 before:-translate-x-1/2 before:top-full before:border-l-transparent before:border-r-transparent before:border-b-transparent',\n bottom:\n '-translate-x-1/2 before:left-1/2 before:-translate-x-1/2 before:bottom-full before:border-l-transparent before:border-r-transparent before:border-t-transparent',\n left: '-translate-x-full -translate-y-1/2 before:left-full before:top-1/2 before:-translate-y-1/2 before:border-t-transparent before:border-b-transparent before:border-r-transparent',\n right:\n '-translate-y-1/2 before:left-full before:top-1/2 before:-translate-y-1/2 before:border-t-transparent before:border-b-transparent before:border-r-transparent'\n };\n\n // Absolute positioning classes (non-portal)\n const absolutePositionClasses = {\n top: 'bottom-full left-1/2 -translate-x-1/2 mb-2 before:left-1/2 before:-translate-x-1/2 before:top-full before:border-l-transparent before:border-r-transparent before:border-b-transparent',\n bottom:\n 'top-full left-1/2 -translate-x-1/2 mt-2 before:left-1/2 before:-translate-x-1/2 before:bottom-full before:border-l-transparent before:border-r-transparent before:border-t-transparent',\n left: 'right-full top-1/2 -translate-y-1/2 mr-2 before:top-1/2 before:-translate-y-1/2 before:left-full before:border-t-transparent before:border-b-transparent before:border-r-transparent',\n right:\n 'left-full top-1/2 -translate-y-1/2 ml-2 before:top-1/2 before:-translate-y-1/2 before:left-full before:border-t-transparent before:border-b-transparent before:border-r-transparent'\n };\n\n const positionClasses = usePortal ? portalPositionClasses : absolutePositionClasses;\n\n const tooltipContent = (\n <span\n className={`\n ${usePortal ? 'fixed' : 'absolute'}\n z-[9999]\n px-3 py-2\n text-sm font-medium\n rounded-lg\n shadow-lg\n whitespace-nowrap\n pointer-events-none\n transition-opacity duration-200\n ${variantClasses[variant]}\n ${positionClasses[position]}\n ${arrowColorClasses[variant]}\n ${isVisible ? 'opacity-100 visible' : 'opacity-0 invisible'}\n before:content-['']\n before:absolute\n before:border-4\n before:border-solid\n `}\n style={\n usePortal\n ? {\n top: `${tooltipPosition.top}px`,\n left: `${tooltipPosition.left}px`\n }\n : undefined\n }\n role=\"tooltip\"\n aria-hidden={!isVisible}\n >\n {content}\n </span>\n );\n\n return (\n <span\n ref={triggerRef}\n className={`group relative inline-flex ${usePortal ? '' : 'w-full'} ${className}`}\n data-position={position}\n onMouseEnter={() => !open && setShowTooltip(true)}\n onMouseLeave={() => !open && setShowTooltip(false)}\n onFocus={() => !open && setShowTooltip(true)}\n onBlur={() => !open && setShowTooltip(false)}\n >\n {children}\n {usePortal && isVisible ? createPortal(tooltipContent, document.body) : !usePortal && tooltipContent}\n </span>\n );\n}\n\nTooltip.displayName = 'Tooltip';\n\nexport default Tooltip;\n","import { useCallback, useLayoutEffect, useEffect, useRef, useState } from 'react';\n\nexport type OverlayPhase = 'mount' | 'animating-in' | 'visible' | 'animating-out';\n\nexport interface UseOverlayOptions {\n isOpen: boolean;\n onClose?: () => void; // reserved for future outside-click/escape wiring\n focusTrap?: boolean;\n lockScroll?: boolean;\n animationFrames?: number; // number of rAF hops before visible (default 2)\n restoreFocus?: boolean;\n exitDuration?: number; // ms matching CSS transition duration for animating-out\n unmountOnExit?: boolean; // default true\n}\n\nexport interface UseOverlayResult<T extends HTMLElement> {\n phase: OverlayPhase;\n shouldRender: boolean;\n ref: React.RefObject<T>;\n getPhaseClass: (openClass: string, closedClass: string) => string;\n}\n\n/**\n * useOverlay - shared lifecycle for animated overlays (Modal, Drawer, Popover, etc.)\n * Handles phased mounting, focus trap, scroll locking, and focus restoration.\n */\nexport function useOverlay<T extends HTMLElement>(options: UseOverlayOptions): UseOverlayResult<T> {\n const {\n isOpen,\n focusTrap = true,\n lockScroll = true,\n animationFrames = 2,\n restoreFocus = true,\n exitDuration = 300,\n unmountOnExit = true\n } = options;\n const previouslyFocusedRef = useRef<HTMLElement | null>(null);\n // Cast so consumer sees RefObject<T>; internal null checks still done.\n const containerRef = useRef<T>(null as unknown as T);\n const [shouldRender, setShouldRender] = useState(isOpen);\n const [phase, setPhase] = useState<OverlayPhase>('mount');\n\n // Mount / animation phases\n useLayoutEffect(() => {\n if (isOpen) {\n setShouldRender(true);\n setPhase('mount');\n // Wait one frame for browser to paint initial (closed) state\n requestAnimationFrame(() => {\n setPhase('animating-in');\n let frame = 0;\n const step = () => {\n frame += 1;\n if (frame >= animationFrames) {\n setPhase('visible');\n } else {\n requestAnimationFrame(step);\n }\n };\n requestAnimationFrame(step);\n });\n } else if (!isOpen && shouldRender) {\n setPhase('animating-out');\n }\n }, [isOpen, shouldRender, animationFrames]);\n\n // Handle exit unmount timing aligned with CSS duration\n useEffect(() => {\n if (phase === 'animating-out' && unmountOnExit) {\n const timeout = setTimeout(() => {\n setShouldRender(false);\n setPhase('mount');\n }, exitDuration);\n return () => clearTimeout(timeout);\n }\n return undefined;\n }, [phase, exitDuration, unmountOnExit]);\n\n // Scroll lock & focus capture\n useEffect(() => {\n if (isOpen) {\n if (typeof document !== 'undefined') {\n if (restoreFocus) previouslyFocusedRef.current = document.activeElement as HTMLElement;\n if (lockScroll) document.body.style.overflow = 'hidden';\n }\n }\n return () => {\n if (typeof document !== 'undefined') {\n if (lockScroll) document.body.style.overflow = '';\n if (!isOpen && restoreFocus && previouslyFocusedRef.current) {\n previouslyFocusedRef.current.focus();\n }\n }\n };\n }, [isOpen, lockScroll, restoreFocus]);\n\n // Focus dialog/panel when visible without scrolling document\n useEffect(() => {\n if (phase === 'visible' && containerRef.current) {\n const el = containerRef.current as unknown as HTMLElement;\n try {\n // preventScroll supported in modern browsers; fallback to normal focus\n el.focus?.({ preventScroll: true } as FocusOptions);\n } catch {\n el.focus?.();\n }\n }\n }, [phase]);\n\n // Focus trap\n const handleKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (!focusTrap || phase !== 'visible' || e.key !== 'Tab' || !containerRef.current) return;\n const node = containerRef.current as unknown as HTMLElement;\n const focusable = node.querySelectorAll<HTMLElement>(\n 'a[href], button:not([disabled]), textarea, input, select, [tabindex]:not([tabindex=\"-1\"])'\n );\n if (!focusable.length) return;\n const first = focusable[0];\n const last = focusable[focusable.length - 1];\n if (e.shiftKey) {\n if (document.activeElement === first || document.activeElement === node) {\n e.preventDefault();\n last.focus();\n }\n } else if (document.activeElement === last) {\n e.preventDefault();\n first.focus();\n }\n },\n [focusTrap, phase]\n );\n\n useEffect(() => {\n if (focusTrap && phase === 'visible') {\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }\n return undefined;\n }, [phase, focusTrap, handleKeyDown]);\n\n const getPhaseClass = useCallback(\n (openClass: string, closedClass: string) => {\n // mount: closed (initial state before animation)\n // animating-in: open (CSS transition from closed to open)\n // visible: open (fully open)\n // animating-out: closed (CSS transition from open to closed)\n return phase === 'animating-in' || phase === 'visible' ? openClass : closedClass;\n },\n [phase]\n );\n\n return { phase, shouldRender, ref: containerRef, getPhaseClass };\n}\n\nexport default useOverlay;\n","import React from 'react';\nimport useOverlay from '../overlay/useOverlay';\n\nexport type ModalProps = {\n isOpen: boolean;\n onClose: () => void;\n /** Raw children (ignored if structured props provided) */\n children?: React.ReactNode;\n /** Structured title (string or React) */\n title?: React.ReactNode;\n /** Optional description text */\n description?: React.ReactNode;\n /** Main body content */\n content?: React.ReactNode;\n /** Footer actions (buttons) */\n actions?: React.ReactNode;\n className?: string;\n ariaLabel?: string;\n /** Center vs top alignment */\n align?: 'center' | 'top';\n};\n\n/**\n * Modal - Overlay dialog component using pure Tailwind CSS\n * Achieves DaisyUI modal styling with Tailwind utilities\n */\nfunction Modal({\n isOpen,\n onClose,\n children,\n title,\n description,\n content,\n actions,\n className = '',\n ariaLabel,\n align = 'center'\n}: Readonly<ModalProps>) {\n const {\n phase,\n shouldRender,\n ref: dialogRef,\n getPhaseClass\n } = useOverlay<HTMLDivElement>({\n isOpen,\n focusTrap: true,\n lockScroll: true,\n animationFrames: 2,\n restoreFocus: true\n });\n\n // ESC key handling separate from useOverlay to allow optional close logic\n React.useEffect(() => {\n if (!isOpen) return;\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n }\n };\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, onClose]);\n\n // Manage mounting phases\n\n // Focus dialog\n if (!shouldRender) return null;\n\n const enteringClasses = 'scale-100 translate-y-0 opacity-100';\n const exitingClasses = 'scale-[0.97] -translate-y-1 opacity-0';\n const scaleClass = getPhaseClass(enteringClasses, exitingClasses);\n // Stagger backdrop fade slightly after panel starts exiting to reduce perceived flicker\n const backdropOpacity =\n phase === 'visible' || phase === 'animating-in' ? 'opacity-100' : 'opacity-0 transition-opacity delay-50';\n\n const hasStructured = title || description || content || actions;\n const alignmentClasses = align === 'center' ? 'grid place-items-center' : 'flex items-start justify-center pt-20';\n\n return (\n <div\n data-phase={phase}\n className={`fixed inset-0 z-[999] ${alignmentClasses} bg-black/40 backdrop-blur-sm p-4 overflow-y-auto overscroll-contain transition-opacity duration-300 will-change-opacity ${backdropOpacity}`}\n onMouseDown={(e) => {\n // close only if clicking backdrop not dialog\n if (e.target === e.currentTarget) onClose();\n }}\n aria-label={ariaLabel || 'Close modal'}\n role=\"presentation\"\n >\n <div\n ref={dialogRef}\n data-phase={phase}\n className={`relative w-11/12 max-w-2xl max-h-[calc(100vh-5em)] bg-card text-card-foreground rounded-2xl border border-border shadow-2xl p-6 focus:outline-none transform transition-[transform,opacity] duration-250 ease-[cubic-bezier(.33,.66,.33,1)] will-change-transform will-change-opacity select-none [backface-visibility:hidden] [transform-style:preserve-3d] ${scaleClass} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n onTransitionEnd={(e) => {\n if (e.target !== dialogRef.current) return;\n if (phase === 'animating-out') {\n // handled by useOverlay via shouldRender state change upstream; keep minimal here\n }\n }}\n >\n {hasStructured ? (\n <>\n {title && (\n <>\n {typeof title === 'string' ? <h2 className=\"text-xl font-semibold tracking-tight\">{title}</h2> : title}\n {description && <p className=\"mt-1 text-sm text-muted-foreground\">{description}</p>}\n </>\n )}\n {content && <section className=\"text-sm leading-relaxed space-y-3 mt-4\">{content}</section>}\n {actions && (\n <footer className=\"flex justify-end gap-2 pt-2 mt-4 border-t border-border/60\">{actions}</footer>\n )}\n </>\n ) : (\n children\n )}\n </div>\n </div>\n );\n}\n\nModal.displayName = 'Modal';\n\nexport default Modal;\n","import React from 'react';\n\nimport Modal from '../modal/modal';\n\nexport type DialogProps = {\n isOpen: boolean;\n onClose: () => void;\n title: string;\n children: React.ReactNode;\n actions?: React.ReactNode;\n className?: string;\n};\n\n/**\n * Dialog component (built on Modal)\n */\nfunction Dialog({ isOpen, onClose, title, children, actions, className = '' }: Readonly<DialogProps>) {\n return (\n <Modal isOpen={isOpen} onClose={onClose} ariaLabel={title} className={className}>\n <div className=\"flex flex-col p-6 gap-4\">\n <h2 className=\"text-2xl font-bold text-foreground\">{title}</h2>\n <div className=\"text-foreground\">{children}</div>\n {actions && <div className=\"flex justify-end gap-3 pt-2\">{actions}</div>}\n </div>\n </Modal>\n );\n}\n\nDialog.displayName = 'Dialog';\n\nexport default Dialog;\n","import { IconTrash, IconX } from '@tabler/icons-react';\n\nimport Dialog from './dialog';\nimport Button from '../../forms/button/button';\n\nexport type DeleteDialogProps = {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => void;\n title?: string;\n description?: string;\n itemName?: string;\n isLoading?: boolean;\n confirmText?: string;\n cancelText?: string;\n className?: string;\n};\n\n/**\n * DeleteDialog - Pre-configured dialog for delete confirmations\n *\n * @example\n * ```tsx\n * <DeleteDialog\n * isOpen={showDelete}\n * onClose={() => setShowDelete(false)}\n * onConfirm={handleDelete}\n * itemName=\"user account\"\n * />\n * ```\n */\nfunction DeleteDialog({\n isOpen,\n onClose,\n onConfirm,\n title = 'Confirm Deletion',\n description,\n itemName,\n isLoading = false,\n confirmText = 'Delete',\n cancelText = 'Cancel',\n className = ''\n}: Readonly<DeleteDialogProps>) {\n const defaultDescription = itemName\n ? `Are you sure you want to delete \"${itemName}\"? This action cannot be undone.`\n : 'Are you sure you want to delete this item? This action cannot be undone.';\n\n const finalDescription = description || defaultDescription;\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n title={title}\n className={className}\n actions={\n <>\n <Button\n onClick={onClose}\n disabled={isLoading}\n className=\"bg-muted hover:bg-muted/80 text-muted-foreground\"\n icon={<IconX size={16} />}\n >\n {cancelText}\n </Button>\n <Button\n onClick={onConfirm}\n disabled={isLoading}\n className=\"bg-destructive hover:bg-destructive/90 text-destructive-foreground\"\n icon={<IconTrash size={16} />}\n >\n {isLoading ? 'Deleting...' : confirmText}\n </Button>\n </>\n }\n >\n <p className=\"text-foreground\">{finalDescription}</p>\n </Dialog>\n );\n}\n\nDeleteDialog.displayName = 'DeleteDialog';\n\nexport default DeleteDialog;\n","import React, { useState, useRef, useEffect } from 'react';\n\nexport type PopoverProps = {\n trigger?: React.ReactNode;\n children?: React.ReactNode;\n content: React.ReactNode;\n position?: 'top' | 'bottom' | 'left' | 'right';\n className?: string;\n};\n\n/**\n * Popover component\n */\nfunction Popover({ trigger, children, content, position = 'bottom', className = '' }: Readonly<PopoverProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const popoverRef = useRef<HTMLDivElement>(null);\n const triggerContent = children || trigger;\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (popoverRef.current && !popoverRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n document.addEventListener('keydown', handleEscape);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n document.removeEventListener('keydown', handleEscape);\n };\n }\n return undefined;\n }, [isOpen]);\n\n const positionClasses = {\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 return (\n <div className={`relative inline-block ${className}`} ref={popoverRef}>\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"bg-transparent border-0 p-0 cursor-pointer\"\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n {triggerContent}\n </button>\n {isOpen && (\n <div\n className={`absolute min-w-[200px] bg-popover text-popover-foreground border border-border rounded-lg shadow-xl p-4 z-50 animate-scaleIn ${positionClasses[position]}`}\n role=\"tooltip\"\n >\n {content}\n </div>\n )}\n </div>\n );\n}\n\nPopover.displayName = 'Popover';\n\nexport default Popover;\n","import { ReactNode } from 'react';\n\nexport type AlertProps = {\n children: ReactNode;\n type?: 'info' | 'success' | 'warning' | 'error';\n dismissible?: boolean;\n onClose?: () => void;\n className?: string;\n};\n\n/**\n * Alert - Dismissible notice for info/success/warning/error messages\n */\nfunction Alert({ children, type = 'info', dismissible = false, onClose, className = '' }: Readonly<AlertProps>) {\n const typeClasses = {\n info: 'bg-info/10 text-foreground border-info/30',\n success: 'bg-success/10 text-foreground border-success/30',\n warning: 'bg-warning/10 text-foreground border-warning/30',\n error: 'bg-destructive/10 text-foreground border-destructive/30'\n };\n\n const iconClasses = {\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n error: 'text-destructive'\n };\n\n const icons = {\n info: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n success: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n warning: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M8.257 3.099c.765-1.36 2.722-1.36 3.486 0l5.58 9.92c.75 1.334-.213 2.98-1.742 2.98H4.42c-1.53 0-2.493-1.646-1.743-2.98l5.58-9.92zM11 13a1 1 0 11-2 0 1 1 0 012 0zm-1-8a1 1 0 00-1 1v3a1 1 0 002 0V6a1 1 0 00-1-1z\"\n clipRule=\"evenodd\"\n />\n </svg>\n ),\n error: (\n <svg className=\"w-5 h-5 flex-shrink-0\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.707 7.293a1 1 0 00-1.414 1.414L8.586 10l-1.293 1.293a1 1 0 101.414 1.414L10 11.414l1.293 1.293a1 1 0 001.414-1.414L11.414 10l1.293-1.293a1 1 0 00-1.414-1.414L10 8.586 8.707 7.293z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )\n };\n\n return (\n <div role=\"alert\" className={`p-4 border rounded-lg flex items-start gap-3 ${typeClasses[type]} ${className}`}>\n <span className={iconClasses[type]}>{icons[type]}</span>\n <span className=\"flex-1 text-sm\">{children}</span>\n {dismissible && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 text-current opacity-70 hover:opacity-100 transition-opacity focus:outline-none focus:ring-2 focus:ring-ring rounded p-0.5\"\n aria-label=\"Close alert\"\n >\n <svg className=\"w-5 h-5\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n}\n\nAlert.displayName = 'Alert';\n\nexport default Alert;\n","export type SpinnerProps = {\n size?: 'sm' | 'md' | 'lg';\n /** Color variant */\n variant?: 'primary' | 'accent' | 'secondary' | 'neutral';\n className?: string;\n /** Override animation duration (e.g. '0.6s') */\n speed?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Spinner - Loading indicator\n */\nfunction Spinner({ size = 'md', variant = 'primary', className = '', speed, ...props }: Readonly<SpinnerProps>) {\n const sizeClasses = {\n sm: 'w-4 h-4 border-2',\n md: 'w-8 h-8 border-2',\n lg: 'w-12 h-12 border-4'\n };\n\n const variantTopBorder = {\n primary: 'border-t-primary',\n accent: 'border-t-accent',\n secondary: 'border-t-secondary',\n neutral: 'border-t-neutral'\n }[variant];\n\n const duration = speed ? `[animation-duration:${speed}]` : '';\n\n return (\n <div\n role=\"status\"\n aria-label=\"Loading\"\n data-variant={variant}\n className={`inline-block border-muted ${variantTopBorder} rounded-full animate-spin ${duration} ${sizeClasses[size]} ${className}`}\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n}\n\nSpinner.displayName = 'Spinner';\n\nexport default Spinner;\n","export type ProgressBarProps = {\n value: number;\n max?: number;\n showLabel?: boolean;\n variant?: 'default' | 'success' | 'warning' | 'error';\n className?: string;\n};\n\n/**\n * ProgressBar - Visual representation of completion\n */\nfunction ProgressBar({\n value,\n max = 100,\n showLabel = false,\n variant = 'default',\n className = ''\n}: Readonly<ProgressBarProps>) {\n const percentage = Math.min((value / max) * 100, 100);\n\n const variantClasses = {\n default: 'bg-primary',\n success: 'bg-success',\n warning: 'bg-warning',\n error: 'bg-destructive'\n };\n\n return (\n <div className={className}>\n <div className=\"w-full bg-muted/30 rounded-full h-2.5 overflow-hidden shadow-inner\">\n <div\n role=\"progressbar\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={max}\n className={`h-full transition-all duration-500 ease-out rounded-full ${variantClasses[variant]}`}\n style={{ width: `${percentage}%` }}\n />\n </div>\n {showLabel && (\n <div className=\"text-sm text-muted-foreground mt-2 text-right font-medium\">{Math.round(percentage)}%</div>\n )}\n </div>\n );\n}\n\nProgressBar.displayName = 'ProgressBar';\n\nexport default ProgressBar;\n","export type SkeletonProps = {\n variant?: 'text' | 'circular' | 'rectangular';\n width?: string;\n height?: string;\n className?: string;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Skeleton - Placeholder for loading state\n */\nfunction Skeleton({ variant = 'text', width, height, className = '', ...props }: Readonly<SkeletonProps>) {\n const variantClasses = {\n text: 'rounded h-4',\n circular: 'rounded-full',\n rectangular: 'rounded-md'\n };\n\n const style = {\n width: width || (variant === 'circular' ? '40px' : '100%'),\n height: height || (variant === 'circular' ? '40px' : undefined)\n };\n\n return (\n <div\n className={`bg-muted animate-pulse ${variantClasses[variant]} ${className}`}\n style={style}\n aria-busy=\"true\"\n aria-live=\"polite\"\n {...props}\n >\n <span className=\"sr-only\">Loading...</span>\n </div>\n );\n}\n\nSkeleton.displayName = 'Skeleton';\n\nexport default Skeleton;\n","import { ReactNode } from 'react';\n\nexport type BadgeProps = {\n children: ReactNode;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error';\n size?: 'sm' | 'md' | 'lg';\n className?: string;\n} & React.HTMLAttributes<HTMLSpanElement>;\n\n/**\n * Badge - Small color label for status or categorization\n */\nfunction Badge({ children, variant = 'default', size = 'md', className = '', ...props }: Readonly<BadgeProps>) {\n const variantClasses = {\n default: 'bg-muted text-muted-foreground border border-border',\n primary: 'bg-primary/10 text-primary border border-primary/20',\n success: 'bg-success/10 text-success border border-success/20',\n warning: 'bg-warning/10 text-warning border border-warning/20',\n error: 'bg-destructive/10 text-destructive border border-destructive/20'\n };\n\n const sizeClasses = {\n sm: 'px-2 py-0.5 text-xs',\n md: 'px-2.5 py-0.5 text-xs font-semibold',\n lg: 'px-3 py-1 text-sm font-semibold'\n };\n\n return (\n <span\n className={`inline-flex items-center font-medium rounded-full transition-colors ${variantClasses[variant]} ${sizeClasses[size]} ${className}`}\n {...props}\n >\n {children}\n </span>\n );\n}\n\nBadge.displayName = 'Badge';\n\nexport default Badge;\n","import { ReactNode } from 'react';\n\nexport type StatusLabelProps = {\n children: ReactNode;\n status?: 'active' | 'inactive' | 'pending' | 'success' | 'error' | 'warning' | 'info';\n size?: 'sm' | 'md' | 'lg';\n variant?: 'filled' | 'outlined';\n className?: string;\n};\n\n/**\n * StatusLabel - Badge with a status indicator dot\n *\n * @example\n * ```tsx\n * <StatusLabel status=\"active\">Active</StatusLabel>\n * <StatusLabel status=\"pending\" size=\"sm\">Pending</StatusLabel>\n * <StatusLabel status=\"error\" variant=\"outlined\">Error</StatusLabel>\n * ```\n */\nfunction StatusLabel({\n children,\n status = 'info',\n size = 'md',\n variant = 'filled',\n className = ''\n}: Readonly<StatusLabelProps>) {\n const statusConfig = {\n active: {\n filled: 'bg-success/10 text-success border-success/20',\n outlined: 'bg-transparent text-success border-success',\n dot: 'bg-success'\n },\n inactive: {\n filled: 'bg-muted text-muted-foreground border-border',\n outlined: 'bg-transparent text-muted-foreground border-muted-foreground',\n dot: 'bg-muted-foreground'\n },\n pending: {\n filled: 'bg-warning/10 text-warning border-warning/20',\n outlined: 'bg-transparent text-warning border-warning',\n dot: 'bg-warning'\n },\n success: {\n filled: 'bg-success/10 text-success border-success/20',\n outlined: 'bg-transparent text-success border-success',\n dot: 'bg-success'\n },\n error: {\n filled: 'bg-destructive/10 text-destructive border-destructive/20',\n outlined: 'bg-transparent text-destructive border-destructive',\n dot: 'bg-destructive'\n },\n warning: {\n filled: 'bg-warning/10 text-warning border-warning/20',\n outlined: 'bg-transparent text-warning border-warning',\n dot: 'bg-warning'\n },\n info: {\n filled: 'bg-primary/10 text-primary border-primary/20',\n outlined: 'bg-transparent text-primary border-primary',\n dot: 'bg-primary'\n }\n };\n\n const sizeClasses = {\n sm: {\n container: 'px-2 py-0.5 text-xs gap-1.5',\n dot: 'w-1.5 h-1.5'\n },\n md: {\n container: 'px-2.5 py-0.5 text-sm gap-2',\n dot: 'w-2 h-2'\n },\n lg: {\n container: 'px-3 py-1 text-base gap-2',\n dot: 'w-2.5 h-2.5'\n }\n };\n\n return (\n <span\n className={`inline-flex items-center font-medium rounded-full border ${statusConfig[status][variant]} ${sizeClasses[size].container} ${className}`}\n >\n <span className={`rounded-full ${statusConfig[status].dot} ${sizeClasses[size].dot}`} />\n {children}\n </span>\n );\n}\n\nStatusLabel.displayName = 'StatusLabel';\n\nexport default StatusLabel;\n","import { ReactNode } from 'react';\n\nexport type AvatarProps = {\n src?: string;\n alt?: string;\n fallback?: ReactNode;\n size?: 'sm' | 'md' | 'lg' | 'xl';\n className?: string;\n};\n\n/**\n * Avatar - User or profile image display\n */\nfunction Avatar({ src, alt = '', fallback, size = 'md', className = '' }: Readonly<AvatarProps>) {\n const sizeClasses = {\n sm: 'w-8 h-8 text-xs',\n md: 'w-10 h-10 text-sm',\n lg: 'w-12 h-12 text-base',\n xl: 'w-16 h-16 text-lg'\n };\n\n let content;\n if (src) {\n content = <img src={src} alt={alt} className=\"w-full h-full object-cover\" />;\n } else if (fallback) {\n content = fallback;\n } else {\n content = <span>{alt.charAt(0).toUpperCase()}</span>;\n }\n\n return (\n <div\n className={`inline-flex items-center justify-center rounded-full bg-muted text-muted-foreground font-medium overflow-hidden ${sizeClasses[size]} ${className}`}\n >\n {content}\n </div>\n );\n}\n\nAvatar.displayName = 'Avatar';\n\nexport default Avatar;\n","import { ReactNode } from 'react';\n\nexport type EmptyStateProps = {\n title: string;\n description?: string;\n icon?: ReactNode;\n action?: ReactNode;\n className?: string;\n};\n\n/**\n * EmptyState - Placeholder for no-data scenarios\n */\nfunction EmptyState({ title, description, icon, action, className = '' }: Readonly<EmptyStateProps>) {\n return (\n <div className={`flex flex-col items-center justify-center text-center py-12 ${className}`}>\n {icon && <div className=\"text-muted-foreground mb-4\">{icon}</div>}\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">{title}</h3>\n {description && <p className=\"text-muted-foreground mb-6 max-w-sm\">{description}</p>}\n {action}\n </div>\n );\n}\n\nEmptyState.displayName = 'EmptyState';\n\nexport default EmptyState;\n","import { ReactNode } from 'react';\n\nexport type ListProps = {\n children: ReactNode;\n className?: string;\n ordered?: boolean;\n};\n\nexport type ListItemProps = {\n children: ReactNode;\n className?: string;\n};\n\n/**\n * List - Vertical grouping of items\n */\nexport function List({ children, className = '', ordered = false }: Readonly<ListProps>) {\n const Component = ordered ? 'ol' : 'ul';\n\n return <Component className={`divide-y divide-border ${className}`}>{children}</Component>;\n}\n\nList.displayName = 'List';\n\n/**\n * ListItem - Individual list item\n */\nexport function ListItem({ children, className = '' }: Readonly<ListItemProps>) {\n return <li className={`py-3 ${className}`}>{children}</li>;\n}\n\nListItem.displayName = 'ListItem';\n\nexport default List;\n","import { ReactNode, HTMLAttributes } from 'react';\n\nexport type TableProps = {\n children: ReactNode;\n className?: string;\n striped?: boolean;\n bordered?: boolean;\n hoverable?: boolean;\n compact?: boolean;\n caption?: string;\n} & HTMLAttributes<HTMLTableElement>;\n\nexport type TableHeaderProps = {\n children: ReactNode;\n className?: string;\n} & HTMLAttributes<HTMLTableSectionElement>;\n\nexport type TableBodyProps = {\n children: ReactNode;\n className?: string;\n} & HTMLAttributes<HTMLTableSectionElement>;\n\nexport type TableFooterProps = {\n children: ReactNode;\n className?: string;\n} & HTMLAttributes<HTMLTableSectionElement>;\n\nexport type TableRowProps = {\n children: ReactNode;\n className?: string;\n selected?: boolean;\n} & HTMLAttributes<HTMLTableRowElement>;\n\nexport type TableHeadCellProps = {\n children: ReactNode;\n className?: string;\n align?: 'left' | 'center' | 'right';\n scope?: 'col' | 'row';\n} & HTMLAttributes<HTMLTableCellElement>;\n\nexport type TableCellProps = {\n children: ReactNode;\n className?: string;\n align?: 'left' | 'center' | 'right';\n} & HTMLAttributes<HTMLTableCellElement>;\n\n/**\n * Table - Semantic HTML table with consistent styling\n * - Responsive with horizontal scroll\n * - Optional striped rows, borders, and hover effects\n * - Compact mode for dense data\n * - Proper semantic structure with thead, tbody, tfoot\n */\nexport function Table({\n children,\n className = '',\n striped = false,\n bordered = false,\n hoverable = false,\n compact = false,\n caption,\n ...props\n}: Readonly<TableProps>) {\n const baseClasses = 'w-full text-sm text-left';\n const stripedClasses = striped ? 'striped' : '';\n const borderedClasses = bordered ? 'border border-border' : '';\n const compactClasses = compact ? 'table-compact' : '';\n\n return (\n <div className=\"overflow-x-auto rounded-lg\">\n <table\n className={`${baseClasses} ${stripedClasses} ${borderedClasses} ${compactClasses} ${className}`}\n {...props}\n >\n {caption && <caption className=\"sr-only\">{caption}</caption>}\n {children}\n </table>\n <style>{`\n .striped tbody tr:nth-child(even) {\n background-color: hsl(var(--muted) / 0.3);\n }\n ${\n hoverable\n ? `\n table tbody tr:hover {\n background-color: hsl(var(--muted) / 0.5);\n }\n `\n : ''\n }\n .table-compact td,\n .table-compact th {\n padding: 0.5rem;\n }\n `}</style>\n </div>\n );\n}\n\n/**\n * TableHeader - Table header section (thead)\n */\nexport function TableHeader({ children, className = '', ...props }: Readonly<TableHeaderProps>) {\n return (\n <thead className={`text-xs text-muted-foreground uppercase bg-muted/50 ${className}`} {...props}>\n {children}\n </thead>\n );\n}\n\n/**\n * TableBody - Table body section (tbody)\n */\nexport function TableBody({ children, className = '', ...props }: Readonly<TableBodyProps>) {\n return (\n <tbody className={`divide-y divide-border ${className}`} {...props}>\n {children}\n </tbody>\n );\n}\n\n/**\n * TableFooter - Table footer section (tfoot)\n */\nexport function TableFooter({ children, className = '', ...props }: Readonly<TableFooterProps>) {\n return (\n <tfoot className={`text-xs font-semibold text-foreground bg-muted/30 ${className}`} {...props}>\n {children}\n </tfoot>\n );\n}\n\n/**\n * TableRow - Table row (tr)\n */\nexport function TableRow({ children, className = '', selected = false, ...props }: Readonly<TableRowProps>) {\n const selectedClasses = selected ? 'bg-primary/10' : '';\n\n return (\n <tr className={`${selectedClasses} ${className}`} {...props}>\n {children}\n </tr>\n );\n}\n\n/**\n * TableHeadCell - Table header cell (th)\n * - Includes proper scope attribute for accessibility\n * - Default scope is 'col' for column headers\n */\nexport function TableHeadCell({\n children,\n className = '',\n align = 'left',\n scope = 'col',\n ...props\n}: Readonly<TableHeadCellProps>) {\n const alignClasses = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n };\n\n return (\n <th scope={scope} className={`px-6 py-3 font-medium ${alignClasses[align]} ${className}`} {...props}>\n {children}\n </th>\n );\n}\n\n/**\n * TableCell - Table data cell (td)\n */\nexport function TableCell({ children, className = '', align = 'left', ...props }: Readonly<TableCellProps>) {\n const alignClasses = {\n left: 'text-left',\n center: 'text-center',\n right: 'text-right'\n };\n\n return (\n <td className={`px-6 py-4 whitespace-nowrap ${alignClasses[align]} ${className}`} {...props}>\n {children}\n </td>\n );\n}\n\nexport default Table;\n","import { useMemo, useState } from 'react';\n\nexport type SortDirection = 'asc' | 'desc' | null;\n\nexport type SortConfig<T> = {\n key: keyof T;\n direction: SortDirection;\n} | null;\n\nexport type UseTableOptions<T> = {\n data: T[];\n initialSort?: { key: keyof T; direction: 'asc' | 'desc' };\n pageSize?: number;\n};\n\nexport type UseTableReturn<T> = {\n // Data\n currentData: T[];\n sortedData: T[];\n\n // Sorting\n sortConfig: SortConfig<T>;\n handleSort: (key: keyof T) => void;\n\n // Pagination\n currentPage: number;\n totalPages: number;\n setCurrentPage: (page: number) => void;\n nextPage: () => void;\n prevPage: () => void;\n canNextPage: boolean;\n canPrevPage: boolean;\n\n // Selection\n selectedRows: Set<number>;\n toggleRow: (index: number) => void;\n toggleAll: () => void;\n isRowSelected: (index: number) => boolean;\n isAllSelected: boolean;\n clearSelection: () => void;\n};\n\n/**\n * useTable Hook - Client-side table state management\n * Handles sorting, pagination, and selection\n */\nexport function useTable<T>({ data, initialSort, pageSize = 10 }: UseTableOptions<T>): UseTableReturn<T> {\n const [sortConfig, setSortConfig] = useState<SortConfig<T>>(\n initialSort ? { key: initialSort.key, direction: initialSort.direction } : null\n );\n const [currentPage, setCurrentPage] = useState(1);\n const [selectedRows, setSelectedRows] = useState<Set<number>>(new Set());\n\n // Sorting logic\n const sortedData = useMemo(() => {\n if (!sortConfig) return data;\n\n const sorted = [...data].sort((a, b) => {\n const aValue = a[sortConfig.key];\n const bValue = b[sortConfig.key];\n\n if (aValue === bValue) return 0;\n\n // Handle null/undefined\n if (aValue == null) return 1;\n if (bValue == null) return -1;\n\n // Compare values\n if (aValue < bValue) {\n return sortConfig.direction === 'asc' ? -1 : 1;\n }\n return sortConfig.direction === 'asc' ? 1 : -1;\n });\n\n return sorted;\n }, [data, sortConfig]);\n\n // Pagination logic\n const totalPages = Math.ceil(sortedData.length / pageSize);\n const startIndex = (currentPage - 1) * pageSize;\n const endIndex = startIndex + pageSize;\n const currentData = sortedData.slice(startIndex, endIndex);\n\n // Sorting handler\n const handleSort = (key: keyof T) => {\n let direction: SortDirection = 'asc';\n\n if (sortConfig?.key === key) {\n if (sortConfig.direction === 'asc') {\n direction = 'desc';\n } else if (sortConfig.direction === 'desc') {\n direction = null;\n }\n }\n\n setSortConfig(direction ? { key, direction } : null);\n setCurrentPage(1); // Reset to first page on sort\n };\n\n // Pagination handlers\n const nextPage = () => {\n setCurrentPage((prev) => Math.min(prev + 1, totalPages));\n };\n\n const prevPage = () => {\n setCurrentPage((prev) => Math.max(prev - 1, 1));\n };\n\n const canNextPage = currentPage < totalPages;\n const canPrevPage = currentPage > 1;\n\n // Selection handlers\n const toggleRow = (index: number) => {\n setSelectedRows((prev) => {\n const newSet = new Set(prev);\n if (newSet.has(index)) {\n newSet.delete(index);\n } else {\n newSet.add(index);\n }\n return newSet;\n });\n };\n\n const toggleAll = () => {\n if (selectedRows.size === currentData.length) {\n setSelectedRows(new Set());\n } else {\n const allIndices = currentData.map((_, idx) => startIndex + idx);\n setSelectedRows(new Set(allIndices));\n }\n };\n\n const isRowSelected = (index: number) => selectedRows.has(index);\n\n const isAllSelected = currentData.length > 0 && currentData.every((_, idx) => selectedRows.has(startIndex + idx));\n\n const clearSelection = () => setSelectedRows(new Set());\n\n return {\n currentData,\n sortedData,\n sortConfig,\n handleSort,\n currentPage,\n totalPages,\n setCurrentPage,\n nextPage,\n prevPage,\n canNextPage,\n canPrevPage,\n selectedRows,\n toggleRow,\n toggleAll,\n isRowSelected,\n isAllSelected,\n clearSelection\n };\n}\n","import { ReactNode } from 'react';\nimport { IconChevronUp, IconChevronDown, IconSelector } from '@tabler/icons-react';\n\nimport { Table, TableHeader, TableBody, TableRow, TableHeadCell, TableCell } from '../table/table';\nimport Checkbox from '../../forms/checkbox/checkbox';\nimport EmptyState from '../empty-state/empty-state';\nimport Button from '../../forms/button/button';\nimport Stack from '../../layout/stack/stack';\nimport { useTable, UseTableOptions } from './use-table';\n\nexport type DataTableAction<T> = {\n icon: ReactNode;\n label: string;\n onClick: (row: T, index: number) => void;\n variant?: 'primary' | 'secondary' | 'accent' | 'neutral' | 'success' | 'warning' | 'error' | 'info';\n};\n\nexport type DataTableActionItem<T> = DataTableAction<T> | ReactNode;\n\nexport type ColumnDef<T> = {\n key: keyof T;\n label: string;\n sortable?: boolean;\n width?: string;\n align?: 'left' | 'center' | 'right';\n render?: (value: T[keyof T], row: T, index: number) => ReactNode;\n};\n\nexport type DataTableProps<T> = {\n data: T[];\n columns: ColumnDef<T>[];\n className?: string;\n\n // Styling options\n striped?: boolean;\n bordered?: boolean;\n hoverable?: boolean;\n compact?: boolean;\n stickyHeader?: boolean;\n\n // Features\n sortable?: boolean;\n paginated?: boolean;\n pageSize?: number;\n selectable?: boolean;\n\n // Actions - either array of action configs/components OR custom render function\n actions?: DataTableActionItem<T>[] | ((row: T, index: number) => ReactNode);\n actionsLabel?: string;\n actionsWidth?: string;\n\n // Callbacks\n onRowClick?: (row: T, index: number) => void;\n onSelectionChange?: (selectedIndices: number[]) => void;\n\n // Empty state\n emptyMessage?: string;\n emptyIcon?: ReactNode;\n\n // Initial state\n initialSort?: { key: keyof T; direction: 'asc' | 'desc' };\n};\n\n/**\n * DataTable - High-level data-driven table component\n *\n * Features:\n * - Generic typed data and columns\n * - Client-side sorting\n * - Client-side pagination\n * - Row selection with checkboxes\n * - Custom cell rendering\n * - Flexible actions: simple array config OR custom render function\n * - Empty state handling\n * - Sticky headers\n * - Click handlers\n *\n * Built on top of low-level Table primitives.\n *\n * @example\n * ```tsx\n * // Simple: Pass array of action configs (recommended)\n * <DataTable\n * data={users}\n * columns={columns}\n * actions={[\n * {\n * icon: <IconEdit />,\n * label: 'Edit user',\n * onClick: (row, index) => handleEdit(row, index),\n * variant: 'neutral'\n * },\n * {\n * icon: <IconTrash />,\n * label: 'Delete user',\n * onClick: (row, index) => handleDelete(row, index),\n * variant: 'error'\n * }\n * ]}\n * />\n *\n * // Advanced: Custom render function for full control\n * <DataTable\n * data={users}\n * columns={columns}\n * actions={(row, index) => (\n * <DataTableActions\n * row={row}\n * index={index}\n * onEdit={handleEdit}\n * onDelete={handleDelete}\n * />\n * )}\n * />\n * ```\n */\nfunction DataTable<T>({\n data,\n columns,\n className = '',\n striped = true,\n bordered = false,\n hoverable = true,\n compact = false,\n stickyHeader = false,\n sortable = true,\n paginated = false,\n pageSize = 10,\n selectable = false,\n actions,\n actionsLabel = 'Actions',\n actionsWidth = 'w-32',\n onRowClick,\n onSelectionChange,\n emptyMessage = 'No data available',\n emptyIcon,\n initialSort\n}: DataTableProps<T>) {\n // Use table hook for state management\n const tableOptions: UseTableOptions<T> = {\n data,\n initialSort,\n pageSize\n };\n\n const {\n currentData,\n sortedData,\n sortConfig,\n handleSort,\n currentPage,\n totalPages,\n nextPage,\n prevPage,\n canNextPage,\n canPrevPage,\n selectedRows,\n toggleRow,\n toggleAll,\n isRowSelected,\n isAllSelected\n } = useTable(tableOptions);\n\n // Display data (paginated uses currentData, non-paginated uses sortedData)\n const displayData = paginated ? currentData : sortedData;\n\n // Notify parent of selection changes\n const handleToggleRow = (index: number) => {\n toggleRow(index);\n if (onSelectionChange) {\n const newSelection = new Set(selectedRows);\n if (newSelection.has(index)) {\n newSelection.delete(index);\n } else {\n newSelection.add(index);\n }\n onSelectionChange(Array.from(newSelection));\n }\n };\n\n const handleToggleAll = () => {\n toggleAll();\n if (onSelectionChange) {\n if (isAllSelected) {\n onSelectionChange([]);\n } else {\n const startIndex = (currentPage - 1) * pageSize;\n const allIndices = displayData.map((_, idx) => startIndex + idx);\n onSelectionChange(allIndices);\n }\n }\n };\n\n // Render sort icon\n const renderSortIcon = (columnKey: keyof T) => {\n if (!sortable) return null;\n\n const isSorted = sortConfig?.key === columnKey;\n\n if (!isSorted) {\n return <IconSelector className=\"w-4 h-4 ml-1 text-muted-foreground\" />;\n }\n\n if (sortConfig?.direction === 'asc') {\n return <IconChevronUp className=\"w-4 h-4 ml-1 text-primary\" />;\n }\n\n return <IconChevronDown className=\"w-4 h-4 ml-1 text-primary\" />;\n };\n\n // Empty state\n if (data.length === 0) {\n return (\n <div className=\"border border-border rounded-lg\">\n <EmptyState title={emptyMessage} icon={emptyIcon} className=\"py-12\" />\n </div>\n );\n }\n\n return (\n <div className={className}>\n <div className={stickyHeader ? 'overflow-auto max-h-[600px]' : ''}>\n <Table striped={striped} bordered={bordered} hoverable={hoverable} compact={compact}>\n <TableHeader className={stickyHeader ? 'sticky top-0 z-10 bg-background shadow-sm' : ''}>\n <TableRow>\n {/* Selection column */}\n {selectable && (\n <TableHeadCell className=\"w-12\">\n <Checkbox checked={isAllSelected} onChange={handleToggleAll} ariaLabel=\"Select all rows\" />\n </TableHeadCell>\n )}\n\n {/* Data columns */}\n {columns.map((column) => (\n <TableHeadCell\n key={String(column.key)}\n align={column.align}\n className={column.width ? `w-[${column.width}]` : ''}\n >\n {column.sortable !== false && sortable ? (\n <button\n onClick={() => handleSort(column.key)}\n className=\"flex items-center gap-1 hover:text-foreground transition-colors font-medium\"\n type=\"button\"\n >\n {column.label}\n {renderSortIcon(column.key)}\n </button>\n ) : (\n column.label\n )}\n </TableHeadCell>\n ))}\n\n {/* Actions column */}\n {actions && (\n <TableHeadCell align=\"center\" className={actionsWidth}>\n {actionsLabel}\n </TableHeadCell>\n )}\n </TableRow>\n </TableHeader>\n\n <TableBody>\n {displayData.map((row, rowIndex) => {\n const actualIndex = paginated ? (currentPage - 1) * pageSize + rowIndex : rowIndex;\n const isSelected = isRowSelected(actualIndex);\n\n return (\n <TableRow\n key={actualIndex}\n selected={isSelected}\n onClick={onRowClick ? () => onRowClick(row, actualIndex) : undefined}\n className={onRowClick ? 'cursor-pointer' : ''}\n >\n {/* Selection cell */}\n {selectable && (\n <TableCell onClick={(e) => e.stopPropagation()}>\n <Checkbox\n checked={isSelected}\n onChange={() => handleToggleRow(actualIndex)}\n ariaLabel={`Select row ${actualIndex + 1}`}\n />\n </TableCell>\n )}\n\n {/* Data cells */}\n {columns.map((column) => {\n const value = row[column.key];\n const content = column.render ? column.render(value, row, actualIndex) : String(value ?? '');\n\n return (\n <TableCell key={String(column.key)} align={column.align}>\n {content}\n </TableCell>\n );\n })}\n\n {/* Actions cell */}\n {actions && (\n <TableCell align=\"center\" onClick={(e) => e.stopPropagation()}>\n {Array.isArray(actions) ? (\n <Stack direction=\"horizontal\" spacing=\"sm\" justify=\"center\">\n {actions.map((action, actionIndex) => {\n // Check if it's a config object or a component\n if (action && typeof action === 'object' && 'onClick' in action) {\n // It's a DataTableAction config\n const actionConfig = action as DataTableAction<T>;\n return (\n <Button\n key={actionIndex}\n size=\"sm\"\n variant={actionConfig.variant || 'neutral'}\n style=\"ghost\"\n icon={actionConfig.icon}\n ariaLabel={actionConfig.label}\n onClick={() => actionConfig.onClick(row, actualIndex)}\n />\n );\n } else {\n // It's a React component\n return <div key={actionIndex}>{action as ReactNode}</div>;\n }\n })}\n </Stack>\n ) : (\n actions(row, actualIndex)\n )}\n </TableCell>\n )}\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n\n {/* Pagination controls */}\n {paginated && totalPages > 1 && (\n <div className=\"flex items-center justify-between px-4 py-3 border-t border-border\">\n <div className=\"text-sm text-muted-foreground\">\n Page {currentPage} of {totalPages} ({data.length} total rows)\n </div>\n <div className=\"flex gap-2\">\n <Button size=\"sm\" style=\"outline\" onClick={prevPage} disabled={!canPrevPage}>\n Previous\n </Button>\n <Button size=\"sm\" style=\"outline\" onClick={nextPage} disabled={!canNextPage}>\n Next\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n\nDataTable.displayName = 'DataTable';\n\nexport default DataTable;\n","import { ReactNode, MouseEvent } from 'react';\nimport { IconX } from '@tabler/icons-react';\n\nexport type ChipProps = {\n children: ReactNode;\n className?: string;\n variant?: 'default' | 'primary' | 'success' | 'warning' | 'error';\n size?: 'sm' | 'md' | 'lg';\n onRemove?: (e: MouseEvent<HTMLButtonElement>) => void;\n icon?: ReactNode;\n disabled?: boolean;\n clickable?: boolean;\n onClick?: (e: MouseEvent<HTMLDivElement>) => void;\n};\n\n/**\n * Chip - Compact element for tags, filters, and selections\n *\n * Features:\n * - Color variants (default, primary, success, warning, error)\n * - Sizes (sm, md, lg)\n * - Optional remove button\n * - Optional icon\n * - Clickable state\n * - Disabled state\n *\n * Similar to Badge but with interaction (remove, click)\n */\nfunction Chip({\n children,\n className = '',\n variant = 'default',\n size = 'md',\n onRemove,\n icon,\n disabled = false,\n clickable = false,\n onClick\n}: Readonly<ChipProps>) {\n // Size classes\n const sizeClasses = {\n sm: 'text-xs px-2 py-1 gap-1',\n md: 'text-sm px-3 py-1.5 gap-1.5',\n lg: 'text-base px-4 py-2 gap-2'\n };\n\n // Variant classes\n const variantClasses = {\n default: 'bg-muted text-muted-foreground',\n primary: 'bg-primary/10 text-primary',\n success: 'bg-success/10 text-success',\n warning: 'bg-warning/10 text-warning',\n error: 'bg-destructive/10 text-destructive'\n };\n\n // Hover/active classes\n const interactiveClasses =\n clickable && !disabled ? 'cursor-pointer hover:opacity-80 active:opacity-60 transition-opacity' : '';\n\n const disabledClasses = disabled ? 'opacity-50 cursor-not-allowed' : '';\n\n const handleClick = (e: MouseEvent<HTMLDivElement>) => {\n if (!disabled && clickable && onClick) {\n onClick(e);\n }\n };\n\n const handleRemove = (e: MouseEvent<HTMLButtonElement>) => {\n e.stopPropagation(); // Don't trigger chip onClick\n if (!disabled && onRemove) {\n onRemove(e);\n }\n };\n\n return (\n <div\n className={`\n inline-flex items-center justify-center\n rounded-full font-medium\n ${sizeClasses[size]}\n ${variantClasses[variant]}\n ${interactiveClasses}\n ${disabledClasses}\n ${className}\n `}\n onClick={handleClick}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable && !disabled ? 0 : undefined}\n onKeyDown={\n clickable && !disabled\n ? (e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onClick?.(e as unknown as MouseEvent<HTMLDivElement>);\n }\n }\n : undefined\n }\n >\n {/* Icon */}\n {icon && <span className=\"flex-shrink-0 flex items-center\">{icon}</span>}\n\n {/* Content */}\n <span className=\"truncate\">{children}</span>\n\n {/* Remove button */}\n {onRemove && (\n <button\n type=\"button\"\n onClick={handleRemove}\n disabled={disabled}\n className={`\n flex-shrink-0 flex items-center justify-center\n rounded-full hover:bg-black/10 dark:hover:bg-white/10\n transition-colors\n ${size === 'sm' ? 'w-3 h-3' : size === 'md' ? 'w-4 h-4' : 'w-5 h-5'}\n ${disabled ? 'cursor-not-allowed' : 'cursor-pointer'}\n `}\n aria-label=\"Remove\"\n >\n <IconX className={size === 'sm' ? 'w-2.5 h-2.5' : size === 'md' ? 'w-3 h-3' : 'w-3.5 h-3.5'} />\n </button>\n )}\n </div>\n );\n}\n\nChip.displayName = 'Chip';\n\nexport default Chip;\n","import { ReactNode } from 'react';\n\nexport type TimelineItemProps = {\n children: ReactNode;\n className?: string;\n icon?: ReactNode;\n iconColor?: 'default' | 'primary' | 'success' | 'warning' | 'error';\n title?: string;\n subtitle?: string;\n timestamp?: string;\n isLast?: boolean;\n};\n\nexport type TimelineProps = {\n children: ReactNode;\n className?: string;\n position?: 'left' | 'center' | 'right';\n};\n\n/**\n * TimelineItem - Individual event in timeline\n */\nexport function TimelineItem({\n children,\n className = '',\n icon,\n iconColor = 'default',\n title,\n subtitle,\n timestamp,\n isLast = false\n}: Readonly<TimelineItemProps>) {\n const iconColorClasses = {\n default: 'bg-muted text-muted-foreground',\n primary: 'bg-primary text-primary-foreground',\n success: 'bg-success text-success-foreground',\n warning: 'bg-warning text-warning-foreground',\n error: 'bg-destructive text-destructive-foreground'\n };\n\n return (\n <div className={`flex gap-4 ${className}`}>\n {/* Icon/Dot Column */}\n <div className=\"flex flex-col items-center\">\n {/* Icon or Dot */}\n <div\n className={`\n flex items-center justify-center\n w-8 h-8 rounded-full\n flex-shrink-0\n ${iconColorClasses[iconColor]}\n `}\n >\n {icon || <div className=\"w-2 h-2 rounded-full bg-current\" />}\n </div>\n\n {/* Connector Line */}\n {!isLast && <div className=\"w-0.5 flex-1 bg-border mt-2\" />}\n </div>\n\n {/* Content Column */}\n <div className={`flex-1 ${!isLast ? 'pb-8' : ''}`}>\n {/* Header */}\n {(title || timestamp) && (\n <div className=\"flex items-start justify-between gap-4 mb-1\">\n {title && <h4 className=\"font-semibold text-foreground\">{title}</h4>}\n {timestamp && <time className=\"text-sm text-muted-foreground whitespace-nowrap\">{timestamp}</time>}\n </div>\n )}\n\n {/* Subtitle */}\n {subtitle && <p className=\"text-sm text-muted-foreground mb-2\">{subtitle}</p>}\n\n {/* Content */}\n {children && <div className=\"text-sm text-foreground\">{children}</div>}\n </div>\n </div>\n );\n}\n\n/**\n * Timeline - Vertical timeline for events, activities, history\n *\n * Features:\n * - Vertical layout with connector lines\n * - Custom icons or default dots\n * - Color-coded events\n * - Titles, subtitles, timestamps\n * - Flexible content\n *\n * Common uses:\n * - Activity feeds\n * - Order tracking\n * - Version history\n * - Process steps\n */\nfunction Timeline({ children, className = '', position = 'left' }: Readonly<TimelineProps>) {\n const positionClasses = {\n left: '',\n center: 'mx-auto max-w-2xl',\n right: 'ml-auto max-w-2xl'\n };\n\n return <div className={`${positionClasses[position]} ${className}`}>{children}</div>;\n}\n\nTimeline.displayName = 'Timeline';\n\nexport default Timeline;\n","import React from 'react';\n\nexport type GridProps = {\n children: React.ReactNode;\n className?: string;\n /** Size of grid items (controls minimum width before wrapping) */\n itemSize?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Maximum number of columns (optional constraint) */\n maxCols?: number;\n /** Gap between grid items */\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Responsive column configuration for different breakpoints */\n responsive?: {\n sm?: number; // min-width: 640px\n md?: number; // min-width: 768px\n lg?: number; // min-width: 1024px\n xl?: number; // min-width: 1280px\n };\n /** Align items vertically */\n alignItems?: 'start' | 'center' | 'end' | 'stretch';\n /** Justify items horizontally */\n justifyItems?: 'start' | 'center' | 'end' | 'stretch';\n};\n\n/**\n * Grid - Responsive grid layout component\n *\n * Features:\n * - Auto-responsive grid using CSS Grid auto-fit/auto-fill\n * - Configurable minimum item width (items wrap when too narrow)\n * - Optional responsive column overrides for specific breakpoints\n * - Flexible gap spacing\n * - Alignment controls\n *\n * @example\n * ```tsx\n * // Auto-responsive grid with md (250px) item size\n * <Grid itemSize=\"md\" gap=\"md\">\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * <Card>Item 3</Card>\n * </Grid>\n *\n * // Responsive grid with breakpoint overrides\n * <Grid\n * itemSize=\"sm\"\n * responsive={{ sm: 1, md: 2, lg: 3, xl: 4 }}\n * gap=\"lg\"\n * >\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * </Grid>\n *\n * // Fixed max columns with auto-fit\n * <Grid itemSize=\"xs\" maxCols={4} gap=\"md\">\n * <Card>Item 1</Card>\n * <Card>Item 2</Card>\n * </Grid>\n * ```\n */\nfunction Grid({\n children,\n className = '',\n itemSize = 'md',\n maxCols,\n gap = 'md',\n responsive,\n alignItems = 'stretch',\n justifyItems = 'stretch'\n}: Readonly<GridProps>) {\n const itemSizeValues = {\n xs: '150px',\n sm: '200px',\n md: '250px',\n lg: '300px',\n xl: '350px',\n '2xl': '400px'\n };\n\n const gapClasses = {\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 const alignItemsClasses = {\n start: 'items-start',\n center: 'items-center',\n end: 'items-end',\n stretch: 'items-stretch'\n };\n\n const justifyItemsClasses = {\n start: 'justify-items-start',\n center: 'justify-items-center',\n end: 'justify-items-end',\n stretch: 'justify-items-stretch'\n };\n\n // Build responsive column classes if provided\n const responsiveClasses = responsive\n ? Object.entries(responsive)\n .map(([breakpoint, cols]) => {\n const breakpointPrefix =\n breakpoint === 'sm' ? 'sm:' : breakpoint === 'md' ? 'md:' : breakpoint === 'lg' ? 'lg:' : 'xl:';\n return `${breakpointPrefix}grid-cols-${cols}`;\n })\n .join(' ')\n : '';\n\n // Get minimum width value from variant\n const minWidth = itemSizeValues[itemSize];\n\n // Build grid template columns style\n // If responsive classes are provided, use them via Tailwind\n // Otherwise, use CSS custom property for auto-fit/auto-fill\n const gridStyle = !responsive\n ? {\n gridTemplateColumns: maxCols\n ? `repeat(auto-fit, minmax(min(${minWidth}, 100%), 1fr))`\n : `repeat(auto-fill, minmax(min(${minWidth}, 100%), 1fr))`\n }\n : undefined;\n\n return (\n <div\n className={`\n grid\n ${!responsive ? '' : responsiveClasses}\n ${gapClasses[gap]}\n ${alignItemsClasses[alignItems]}\n ${justifyItemsClasses[justifyItems]}\n ${className}\n `.trim()}\n style={gridStyle}\n >\n {children}\n </div>\n );\n}\n\nGrid.displayName = 'Grid';\n\nexport default Grid;\n","import { ReactNode, createElement } from 'react';\n\nexport type HeadingProps = {\n children: ReactNode;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n className?: string;\n noMargin?: boolean;\n};\n\n/**\n * Heading - Consistent typography scale (H1-H6)\n * Includes sensible default margins for spacing\n */\nfunction Heading({ children, level = 1, className = '', noMargin = false }: Readonly<HeadingProps>) {\n const levelClasses = {\n 1: 'text-4xl font-bold',\n 2: 'text-3xl font-bold',\n 3: 'text-2xl font-semibold',\n 4: 'text-xl font-semibold',\n 5: 'text-lg font-medium',\n 6: 'text-base font-medium'\n };\n\n const marginClasses = {\n 1: 'mb-4',\n 2: 'mb-3',\n 3: 'mb-3',\n 4: 'mb-2',\n 5: 'mb-2',\n 6: 'mb-2'\n };\n\n const margin = noMargin ? '' : marginClasses[level];\n\n return createElement(\n `h${level}`,\n {\n className: `text-foreground ${levelClasses[level]} ${margin} ${className}`\n },\n children\n );\n}\n\nHeading.displayName = 'Heading';\n\nexport default Heading;\n","import { ReactNode } from 'react';\n\nimport Container from '../../layout/container/container';\nimport Grid from '../../layout/grid/grid';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\n\nexport type PricingTableProps = {\n title?: string;\n description?: string;\n children: ReactNode;\n columns?: 2 | 3 | 4;\n className?: string;\n};\n\n/**\n * PricingTable Component - Pricing section\n * - Responsive grid layout\n * - Optional title and description\n * - Flexible column count\n * - Container for PricingTier components\n */\nfunction PricingTable({ title, description, children, columns = 3, className = '' }: Readonly<PricingTableProps>) {\n return (\n <section className={`py-16 md:py-20 ${className}`}>\n <Container size=\"xl\">\n {(title || description) && (\n <div className=\"text-center mb-12 md:mb-16 max-w-3xl mx-auto\">\n {title && (\n <Heading level={2} className=\"text-3xl md:text-4xl font-bold mb-4\">\n {title}\n </Heading>\n )}\n {description && <Text className=\"text-lg md:text-xl text-muted\">{description}</Text>}\n </div>\n )}\n\n <Grid itemSize=\"lg\" maxCols={columns} gap=\"lg\" className=\"items-stretch\">\n {children}\n </Grid>\n </Container>\n </section>\n );\n}\n\nPricingTable.displayName = 'PricingTable';\n\nexport default PricingTable;\n","import React from 'react';\n\nexport type CardProps = {\n children: React.ReactNode;\n className?: string;\n /** Visual style variant */\n variant?: 'default' | 'bordered' | 'ghost' | 'filled';\n /** Size of the card (sets fixed width) */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Width behavior - 'auto' uses size prop, 'full' stretches to container, 'fit' fits content */\n width?: 'auto' | 'full' | 'fit';\n /** Makes the card hoverable with transition effects */\n hoverable?: boolean;\n /** Card image position (when using figure element) */\n imagePosition?: 'top' | 'bottom' | 'side' | 'overlay';\n /** Centers the card content */\n centered?: boolean;\n /** Compact mode with reduced padding */\n compact?: boolean;\n} & React.HTMLAttributes<HTMLDivElement>;\n\n/**\n * Card - Modern card component with flexible layouts\n *\n * Features:\n * - Multiple visual variants (default, bordered, ghost, filled)\n * - Flexible image positioning (top, bottom, side, overlay)\n * - Size variants from xs to xl\n * - Hover effects and transitions\n * - Centered content option\n * - Works with CardTitle, CardBody, CardActions, and CardFigure sub-components\n *\n * @example\n * ```tsx\n * // Basic card\n * <Card>\n * <CardBody>Content</CardBody>\n * </Card>\n *\n * // Card in Grid - stretches to fill grid cell\n * <Grid>\n * <Card width=\"full\">\n * <CardBody>Grid Item</CardBody>\n * </Card>\n * </Grid>\n *\n * // Fixed size card\n * <Card size=\"lg\">\n * <CardBody>Fixed width card</CardBody>\n * </Card>\n *\n * // Card with image and content\n * <Card hoverable width=\"full\">\n * <CardFigure>\n * <img src=\"...\" alt=\"...\" />\n * </CardFigure>\n * <CardBody>\n * <CardTitle>Product Name</CardTitle>\n * <Text>Description</Text>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction Card({\n children,\n className = '',\n variant = 'default',\n size = 'md',\n width = 'auto',\n hoverable = false,\n imagePosition = 'top',\n centered = false,\n compact = false,\n ...props\n}: Readonly<CardProps>) {\n const variantClasses = {\n default: 'bg-card text-card-foreground border border-border shadow-md',\n bordered: 'bg-card text-card-foreground border-2 border-border',\n ghost: 'bg-transparent',\n filled: 'bg-muted text-foreground'\n };\n\n const sizeClasses = {\n xs: 'w-36',\n sm: 'w-64',\n md: 'w-96',\n lg: 'w-[28rem]',\n xl: 'w-[32rem]'\n };\n\n const widthClasses = {\n auto: size !== 'md' ? sizeClasses[size] : 'max-w-full',\n full: 'w-full',\n fit: 'w-fit'\n };\n\n const hoverClasses = hoverable\n ? 'transition-all duration-300 hover:shadow-xl hover:-translate-y-1 cursor-pointer'\n : 'transition-shadow duration-200';\n\n const imagePositionClasses = {\n top: 'flex-col',\n bottom: 'flex-col-reverse',\n side: 'flex-row',\n overlay: 'relative'\n };\n\n const centerClasses = centered ? 'text-center items-center' : '';\n\n return (\n <div\n className={`\n rounded-2xl\n overflow-hidden\n ${variantClasses[variant]}\n ${widthClasses[width]}\n ${hoverClasses}\n ${imagePositionClasses[imagePosition]}\n ${centerClasses}\n ${compact ? 'p-4' : ''}\n ${imagePosition === 'side' ? 'flex' : 'flex'}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nCard.displayName = 'Card';\n\nexport default Card;\n","import { ReactNode } from 'react';\n\nexport type CardHeaderProps = {\n children: ReactNode;\n className?: string;\n /**\n * Add border to bottom of header\n * @default true\n */\n bordered?: boolean;\n /**\n * Padding size\n * @default 'md'\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n};\n\n/**\n * CardHeader - Header section for Card\n *\n * Displays a header section at the top of a card, typically used for titles or metadata.\n * Can be used with or without CardBody.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardHeader>\n * <h3>Card Header</h3>\n * </CardHeader>\n * <CardBody>\n * <p>Content</p>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction CardHeader({ children, className = '', bordered = true, padding = 'md' }: Readonly<CardHeaderProps>) {\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8'\n };\n\n return (\n <div\n className={`\n card-header\n flex items-center justify-between gap-3\n ${paddingClasses[padding]}\n ${bordered ? 'border-b border-border' : ''}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </div>\n );\n}\n\nCardHeader.displayName = 'CardHeader';\n\nexport default CardHeader;\n","import { ReactNode } from 'react';\n\nexport type CardFooterProps = {\n children: ReactNode;\n className?: string;\n /**\n * Add border to top of footer\n * @default true\n */\n bordered?: boolean;\n /**\n * Padding size\n * @default 'md'\n */\n padding?: 'none' | 'sm' | 'md' | 'lg';\n /**\n * Alignment of footer content\n * @default 'start'\n */\n align?: 'start' | 'center' | 'end';\n};\n\n/**\n * CardFooter - Footer section for Card\n *\n * Displays a footer section at the bottom of a card, typically used for actions or metadata.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardBody>\n * <CardTitle>Title</CardTitle>\n * <p>Content</p>\n * </CardBody>\n * <CardFooter align=\"end\">\n * <Button>Action</Button>\n * </CardFooter>\n * </Card>\n * ```\n */\nfunction CardFooter({\n children,\n className = '',\n bordered = true,\n padding = 'md',\n align = 'start'\n}: Readonly<CardFooterProps>) {\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8'\n };\n\n const alignClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end'\n };\n\n return (\n <div\n className={`\n card-footer\n flex items-center gap-1\n ${paddingClasses[padding]}\n ${bordered ? 'border-t border-border' : ''}\n ${alignClasses[align]}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </div>\n );\n}\n\nCardFooter.displayName = 'CardFooter';\n\nexport default CardFooter;\n","import { IconCheck } from '@tabler/icons-react';\n\nimport Card from '../../layout/card/card';\nimport CardHeader from '../../layout/card/card-header';\nimport CardFooter from '../../layout/card/card-footer';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\nimport Button from '../../forms/button/button';\nimport Badge from '../badge/badge';\n\nexport type PricingFeature = {\n label: string;\n included: boolean;\n};\n\nexport type PricingTierProps = {\n name: string;\n price: string;\n period?: string;\n description?: string;\n features: PricingFeature[];\n ctaLabel: string;\n ctaOnClick: () => void;\n featured?: boolean;\n badge?: string;\n className?: string;\n};\n\n/**\n * PricingTier Component - Individual pricing card\n * - Price display with period\n * - Feature list with checkmarks\n * - CTA button\n * - Featured highlighting\n * - Optional badge\n */\nfunction PricingTier({\n name,\n price,\n period = '/month',\n description,\n features,\n ctaLabel,\n ctaOnClick,\n featured = false,\n badge,\n className = ''\n}: Readonly<PricingTierProps>) {\n return (\n <Card\n className={`relative flex flex-col h-full ${\n featured ? 'border-2 border-primary shadow-xl' : 'border border-border'\n } ${className}`}\n >\n <CardHeader className={`relative text-center border-none bg-transparent px-6 pt-12 pb-0`}>\n {badge && (\n <div className=\"absolute top-2 left-1/2 -translate-x-1/2\">\n <Badge variant=\"primary\" className=\"px-4 py-1 shadow-md\">\n {badge}\n </Badge>\n </div>\n )}\n <Heading level={3} className=\"text-2xl font-bold mb-3 text-foreground\">\n {name}\n </Heading>\n {description && (\n <Text variant=\"muted\" className=\"text-sm mb-1\">\n {description}\n </Text>\n )}\n </CardHeader>\n\n <div className=\"pt-3 pb-8 text-center px-6\">\n <div className=\"flex items-baseline justify-center gap-1\">\n <span className=\"text-5xl font-bold text-foreground\">{price}</span>\n {period && <span className=\"text-muted-foreground text-lg\">{period}</span>}\n </div>\n </div>\n\n <div className=\"flex-1 space-y-4 py-6 px-6 border-t border-border/50\">\n {features.map((feature, index) => (\n <div key={index} className=\"flex items-start gap-3\">\n <IconCheck\n size={20}\n className={`flex-shrink-0 mt-0.5 ${feature.included ? 'text-success' : 'text-muted-foreground opacity-30'}`}\n />\n <Text className={`text-sm ${feature.included ? 'text-foreground' : 'text-muted-foreground line-through'}`}>\n {feature.label}\n </Text>\n </div>\n ))}\n </div>\n\n <CardFooter className=\"border-none bg-transparent px-6 pb-6 pt-4\">\n <Button\n variant={featured ? 'primary' : 'neutral'}\n style={featured ? 'solid' : 'outline'}\n className=\"w-full\"\n size=\"lg\"\n onClick={ctaOnClick}\n >\n {ctaLabel}\n </Button>\n </CardFooter>\n </Card>\n );\n}\n\nPricingTier.displayName = 'PricingTier';\n\nexport default PricingTier;\n","import { useState } from 'react';\n\nimport Button from '../../forms/button/button';\n\nexport type CodeBlockProps = {\n code: string;\n className?: string;\n showCopy?: boolean;\n};\n\n/**\n * CodeBlock - Displays formatted code with syntax highlighting and copy functionality\n */\nfunction CodeBlock({ code, className = '', showCopy = true }: Readonly<CodeBlockProps>) {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(code);\n setCopied(true);\n setTimeout(() => setCopied(false), 2000);\n } catch (err) {\n // eslint-disable-next-line no-console\n console.error('Failed to copy code:', err);\n }\n };\n\n return (\n <div className={`relative group ${className}`}>\n {showCopy && (\n <div className=\"absolute top-2 right-2 opacity-0 group-hover:opacity-100 transition-opacity\">\n <Button\n variant=\"neutral\"\n style=\"ghost\"\n size=\"sm\"\n onClick={handleCopy}\n className=\"text-xs bg-background/80 hover:bg-background\"\n >\n {copied ? '✓ Copied' : 'Copy'}\n </Button>\n </div>\n )}\n <pre className={`bg-muted/50 border rounded-lg p-4 overflow-x-auto text-sm ${showCopy ? 'pr-24' : ''}`}>\n <code className=\"font-mono text-foreground\">{code}</code>\n </pre>\n </div>\n );\n}\n\nCodeBlock.displayName = 'CodeBlock';\n\nexport default CodeBlock;\n","export interface CardBodyProps {\n /**\n * Content to render inside the card body\n */\n children: React.ReactNode;\n\n /**\n * Padding size\n * @default 'md'\n */\n padding?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n\n /**\n * Additional CSS classes\n */\n className?: string;\n}\n\n/**\n * CardBody - Content container for Card component\n *\n * The main content area of a card, typically containing title, description, and actions.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardBody>\n * <h2>Title</h2>\n * <p>Description text</p>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction CardBody({ children, padding = 'md', className = '' }: CardBodyProps) {\n // Build padding classes\n const paddingClasses = {\n none: 'p-0',\n sm: 'p-4',\n md: 'p-6',\n lg: 'p-8',\n xl: 'p-10'\n };\n\n return (\n <div\n className={`\n card-body\n flex flex-col gap-2\n ${paddingClasses[padding]}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </div>\n );\n}\n\nCardBody.displayName = 'CardBody';\n\nexport default CardBody;\n","import { ReactNode } from 'react';\n\nexport type CardTitleProps = {\n /**\n * Title content\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * HTML heading level\n * @default 'h2'\n */\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n /**\n * Size of the title\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg' | 'xl';\n};\n\n/**\n * CardTitle - Title component for Card\n *\n * Displays a prominent title within a card, typically used at the top of CardBody.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardBody>\n * <CardTitle>My Card Title</CardTitle>\n * <p>Card content goes here</p>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction CardTitle({ children, className = '', as: Component = 'h2', size = 'md' }: Readonly<CardTitleProps>) {\n const sizeClasses = {\n sm: 'text-base font-semibold',\n md: 'text-lg font-bold',\n lg: 'text-xl font-bold',\n xl: 'text-2xl font-bold'\n };\n\n return (\n <Component\n className={`\n card-title\n ${sizeClasses[size]}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </Component>\n );\n}\n\nCardTitle.displayName = 'CardTitle';\n\nexport default CardTitle;\n","import { ReactNode } from 'react';\n\nexport type CardActionsProps = {\n /**\n * Action buttons or elements\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Alignment of actions\n * @default 'end'\n */\n align?: 'start' | 'center' | 'end' | 'stretch';\n\n /**\n * Direction of actions\n * @default 'row'\n */\n direction?: 'row' | 'column';\n};\n\n/**\n * CardActions - Action buttons container for Card (DaisyUI aesthetic with pure Tailwind)\n *\n * Container for buttons and other interactive elements within a card.\n * Place after CardBody for proper spacing and alignment.\n *\n * @example\n * ```tsx\n * <Card>\n * <CardBody>\n * <CardTitle>Product</CardTitle>\n * <p>Description</p>\n * </CardBody>\n * <CardActions align=\"end\">\n * <Button style=\"ghost\">Cancel</Button>\n * <Button>Buy Now</Button>\n * </CardActions>\n * </Card>\n * ```\n */\nfunction CardActions({ children, className = '', align = 'end', direction = 'row' }: Readonly<CardActionsProps>) {\n const alignClasses = {\n start: 'justify-start',\n center: 'justify-center',\n end: 'justify-end',\n stretch: 'justify-stretch'\n };\n\n const directionClasses = {\n row: 'flex-row',\n column: 'flex-col'\n };\n\n return (\n <div\n className={`\n flex gap-2 px-6 pb-6 pt-2\n ${directionClasses[direction]}\n ${alignClasses[align]}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </div>\n );\n}\n\nCardActions.displayName = 'CardActions';\n\nexport default CardActions;\n","import { ReactNode } from 'react';\n\nexport type CardFigureProps = {\n /**\n * Image or media content\n */\n children: ReactNode;\n\n /**\n * Additional CSS classes\n */\n className?: string;\n\n /**\n * Aspect ratio for the image\n */\n aspectRatio?: 'square' | 'video' | 'wide' | 'portrait' | 'auto';\n};\n\n/**\n * CardFigure - Image/media container for Card\n *\n * Container for images or other media content within a card.\n * Automatically handles aspect ratios and positioning based on parent Card's imagePosition.\n *\n * @example\n * ```tsx\n * // Basic card with image\n * <Card>\n * <CardFigure>\n * <img src=\"product.jpg\" alt=\"Product\" />\n * </CardFigure>\n * <CardBody>\n * <CardTitle>Product Name</CardTitle>\n * </CardBody>\n * </Card>\n *\n * // Card with custom aspect ratio\n * <Card>\n * <CardFigure aspectRatio=\"wide\">\n * <img src=\"banner.jpg\" alt=\"Banner\" />\n * </CardFigure>\n * <CardBody>\n * <CardTitle>Wide Image</CardTitle>\n * </CardBody>\n * </Card>\n * ```\n */\nfunction CardFigure({ children, className = '', aspectRatio = 'auto' }: Readonly<CardFigureProps>) {\n const aspectRatioClasses = {\n square: 'aspect-square',\n video: 'aspect-video',\n wide: 'aspect-[21/9]',\n portrait: 'aspect-[3/4]',\n auto: ''\n };\n\n return (\n <figure\n className={`\n card-figure\n relative overflow-hidden\n ${aspectRatioClasses[aspectRatio]}\n ${className}\n `\n .trim()\n .replace(/\\s+/g, ' ')}\n >\n {children}\n </figure>\n );\n}\n\nCardFigure.displayName = 'CardFigure';\n\nexport default CardFigure;\n","export type DividerProps = {\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n} & React.HTMLAttributes<HTMLHRElement>;\n\n/**\n * Divider - Visual section break\n */\nfunction Divider({ orientation = 'horizontal', className = '', ...props }: Readonly<DividerProps>) {\n const orientationClasses = orientation === 'horizontal' ? 'w-full h-px' : 'h-full w-px';\n\n return (\n <hr className={`border-0 bg-border ${orientationClasses} ${className}`} aria-orientation={orientation} {...props} />\n );\n}\n\nDivider.displayName = 'Divider';\n\nexport default Divider;\n","import { ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport useOverlay from '../../feedback/overlay/useOverlay';\n\nexport type DrawerProps = {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n position?: 'left' | 'right' | 'top' | 'bottom';\n className?: string;\n title?: string;\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n closeOnEscape?: boolean;\n closeOnOutside?: boolean;\n unmountOnExit?: boolean; // keep mounted after close if false\n portalRoot?: HTMLElement | null; // custom portal root\n noAnimation?: boolean; // disable slide animation\n};\n\n/**\n * Drawer - Simple, reliable slide-in panel\n */\nfunction Drawer({\n isOpen,\n onClose,\n children,\n position = 'right',\n className = '',\n title,\n size = 'md',\n closeOnEscape = true,\n closeOnOutside = true,\n unmountOnExit = true,\n portalRoot = typeof document !== 'undefined' ? document.body : null,\n noAnimation = false\n}: Readonly<DrawerProps>) {\n const { phase, shouldRender, ref, getPhaseClass } = useOverlay<HTMLDivElement>({\n isOpen,\n lockScroll: true,\n restoreFocus: true,\n focusTrap: true,\n unmountOnExit,\n exitDuration: noAnimation ? 0 : 300,\n animationFrames: noAnimation ? 0 : 2\n });\n\n // If closed & unmounting, skip render\n if (!shouldRender) return null;\n\n const sizeClasses: Record<string, string> = {\n sm: 'w-72',\n md: 'w-96',\n lg: 'w-[32rem]',\n xl: 'w-[40rem]',\n full: 'w-full max-w-2xl'\n };\n\n const edgeClasses: Record<string, string> = {\n left: 'left-0 top-0 bottom-0',\n right: 'right-0 top-0 bottom-0',\n top: 'top-0 left-0 right-0 h-96',\n bottom: 'bottom-0 left-0 right-0 h-96'\n };\n\n const closedTransform: Record<string, string> = {\n left: '-translate-x-full',\n right: 'translate-x-full',\n top: '-translate-y-full',\n bottom: 'translate-y-full'\n };\n\n const openTransform = 'translate-x-0 translate-y-0';\n const panelTransform = noAnimation ? '' : getPhaseClass(openTransform, closedTransform[position]);\n const overlayOpacity = noAnimation ? '' : getPhaseClass('opacity-100', 'opacity-0');\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Escape' && closeOnEscape) {\n e.stopPropagation();\n onClose();\n }\n };\n\n const panel = (\n <>\n {/* Overlay */}\n <div\n className={`fixed inset-0 z-40 bg-black/50 backdrop-blur-sm transition-opacity duration-300 ${overlayOpacity}`}\n aria-hidden=\"true\"\n onClick={() => closeOnOutside && onClose()}\n data-phase={phase}\n />\n {/* Panel */}\n <div\n ref={ref}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={title || 'Drawer'}\n tabIndex={-1}\n data-phase={phase}\n data-position={position}\n className={`fixed ${edgeClasses[position]} ${position === 'left' || position === 'right' ? sizeClasses[size] : ''} bg-card text-card-foreground shadow-2xl z-50 flex flex-col outline-none ${panelTransform} ${noAnimation ? '' : 'transition-[transform] duration-300 ease-out'} ${className}`}\n onKeyDown={handleKeyDown}\n >\n {title && (\n <div className=\"flex items-center justify-between px-5 py-4 border-b border-border/60 bg-card/95 backdrop-blur-sm\">\n <h2 className=\"text-base font-semibold tracking-tight\">{title}</h2>\n <button\n type=\"button\"\n aria-label=\"Close drawer\"\n onClick={onClose}\n className=\"w-8 h-8 inline-flex items-center justify-center rounded-md hover:bg-muted focus:outline-none focus:ring-2 focus:ring-ring\"\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n )}\n <div className=\"flex-1 overflow-y-auto p-5 flex flex-col gap-4\">\n {children}\n </div>\n </div>\n </>\n );\n\n return portalRoot ? createPortal(panel, portalRoot) : panel;\n}\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n","import React from 'react';\n\nexport type PageProps = {\n /** Page content */\n children: React.ReactNode;\n /** Additional CSS classes */\n className?: string;\n};\n\n/**\n * Page - Semantic wrapper for page-level content\n * Provides consistent structure with main element and background styling\n */\nfunction Page({ children, className = '' }: Readonly<PageProps>) {\n return <main className={`min-h-screen bg-background ${className}`}>{children}</main>;\n}\n\nPage.displayName = 'Page';\n\nexport default Page;\n","import { ReactNode, useState } from 'react';\n\nexport type AccordionItemProps = {\n title: string;\n children: ReactNode;\n defaultOpen?: boolean;\n};\n\nexport type AccordionProps = {\n children: ReactNode;\n className?: string;\n allowMultiple?: boolean;\n};\n\n/**\n * AccordionItem - Single expandable section\n */\nexport function AccordionItem({ title, children, defaultOpen = false }: Readonly<AccordionItemProps>) {\n const [isOpen, setIsOpen] = useState(defaultOpen);\n\n return (\n <article className=\"border-b border-border\">\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"w-full flex items-center justify-between py-4 px-2 text-left text-foreground hover:bg-muted/50 active:bg-muted transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 rounded-sm\"\n aria-expanded={isOpen}\n >\n <span className=\"font-medium\">{title}</span>\n <svg\n className={`w-5 h-5 transition-transform ${isOpen ? 'rotate-180' : ''}`}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M19 9l-7 7-7-7\" />\n </svg>\n </button>\n {isOpen && <section className=\"px-2 pb-4 text-muted-foreground\">{children}</section>}\n </article>\n );\n}\n\n/**\n * Accordion - Expandable sections for FAQs, filters, etc.\n */\nfunction Accordion({ children, className = '' }: Readonly<AccordionProps>) {\n return <div className={`divide-y divide-border ${className}`}>{children}</div>;\n}\n\nAccordion.displayName = 'Accordion';\n\nexport default Accordion;\n","import { ReactNode } from 'react';\n\nimport Container from '../container/container';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\nimport Stack from '../stack/stack';\nimport Button from '../../forms/button/button';\n\nexport type HeroAction = {\n label: string;\n onClick: () => void;\n variant?: 'primary' | 'secondary' | 'neutral' | 'error' | 'accent';\n style?: 'solid' | 'outline' | 'ghost';\n loading?: boolean;\n icon?: ReactNode;\n};\n\nexport type HeroProps = {\n title: string;\n subtitle?: string;\n description?: string;\n primaryAction?: HeroAction;\n secondaryAction?: HeroAction;\n children?: ReactNode;\n className?: string;\n variant?: 'gradient' | 'solid' | 'minimal';\n centered?: boolean;\n size?: 'sm' | 'md' | 'lg';\n};\n\n/**\n * Hero Component - Eye-catching hero section\n *\n * @example\n * ```tsx\n * <Hero\n * title=\"Build Amazing Products\"\n * subtitle=\"The modern way to ship\"\n * description=\"Start building with our component library.\"\n * primaryAction={{\n * label: 'Get Started',\n * onClick: () => {},\n * variant: 'primary'\n * }}\n * variant=\"gradient\"\n * />\n * ```\n */\nfunction Hero({\n title,\n subtitle,\n description,\n primaryAction,\n secondaryAction,\n children,\n className = '',\n variant = 'gradient',\n centered = true,\n size = 'lg'\n}: Readonly<HeroProps>) {\n const sizeClasses = {\n sm: 'py-12 md:py-16',\n md: 'py-16 md:py-20',\n lg: 'py-20 md:py-28'\n };\n\n const titleSizes = {\n sm: 'text-3xl md:text-4xl',\n md: 'text-4xl md:text-5xl',\n lg: 'text-5xl md:text-6xl lg:text-7xl'\n };\n\n const variantClasses = {\n gradient: 'bg-gradient-to-b from-primary/10 via-primary/5 to-background',\n solid: 'bg-muted/30',\n minimal: 'bg-background'\n };\n\n return (\n <section className={`relative ${sizeClasses[size]} ${variantClasses[variant]} ${className}`}>\n {/* Top border with subtle glow */}\n {variant === 'gradient' && (\n <div className=\"absolute inset-x-0 top-0 h-px bg-gradient-to-r from-transparent via-primary/20 to-transparent\" />\n )}\n\n {/* Bottom shadow fade */}\n <div className=\"absolute inset-x-0 bottom-0 h-32 bg-gradient-to-t from-background to-transparent pointer-events-none\" />\n\n <Container size=\"lg\">\n <div className={centered ? 'text-center mx-auto max-w-4xl' : 'max-w-4xl'}>\n {subtitle && (\n <Text className=\"text-lg md:text-xl font-semibold text-primary mb-4\" weight=\"semibold\">\n {subtitle}\n </Text>\n )}\n\n <Heading level={1} className={`${titleSizes[size]} font-extrabold mb-6 tracking-tight`}>\n {title}\n </Heading>\n\n {description && (\n <Text className=\"text-lg md:text-xl mb-8 text-muted-foreground max-w-2xl mx-auto\">{description}</Text>\n )}\n\n {(primaryAction || secondaryAction) && (\n <Stack direction=\"horizontal\" spacing=\"md\" className={`flex-wrap ${centered ? 'justify-center' : ''}`}>\n {primaryAction && (\n <Button\n size=\"lg\"\n variant={primaryAction.variant || 'primary'}\n style={primaryAction.style}\n onClick={primaryAction.onClick}\n loading={primaryAction.loading}\n icon={primaryAction.icon}\n className=\"shadow-lg shadow-primary/20 hover:shadow-xl hover:shadow-primary/30 transition-all\"\n >\n {primaryAction.label}\n </Button>\n )}\n {secondaryAction && (\n <Button\n size=\"lg\"\n variant={secondaryAction.variant || 'neutral'}\n style={secondaryAction.style || 'outline'}\n onClick={secondaryAction.onClick}\n loading={secondaryAction.loading}\n icon={secondaryAction.icon}\n className=\"hover:shadow-md transition-all\"\n >\n {secondaryAction.label}\n </Button>\n )}\n </Stack>\n )}\n\n {children && <div className=\"mt-10\">{children}</div>}\n </div>\n </Container>\n </section>\n );\n}\n\nHero.displayName = 'Hero';\n\nexport default Hero;\n","import { ReactNode } from 'react';\n\nimport Container from '../container/container';\nimport Grid from '../grid/grid';\nimport Heading from '../../typography/heading/heading';\nimport Text from '../../typography/text/text';\n\nexport type Feature = {\n icon: ReactNode;\n title: string;\n description: string;\n};\n\nexport type FeatureSectionProps = {\n title?: string;\n description?: string;\n features: Feature[];\n columns?: 2 | 3 | 4;\n centered?: boolean;\n className?: string;\n};\n\n/**\n * FeatureSection Component - Features grid\n * - Display features with icons in a responsive grid\n * - Configurable column count\n * - Optional section title and description\n * - Icon-first design pattern\n */\nfunction FeatureSection({\n title,\n description,\n features,\n columns = 3,\n centered = true,\n className = ''\n}: Readonly<FeatureSectionProps>) {\n return (\n <section className={`py-16 md:py-20 ${className}`}>\n <Container size=\"xl\">\n {(title || description) && (\n <div\n className={`mb-12 md:mb-16 ${centered ? 'text-center' : ''} ${\n centered ? 'max-w-3xl mx-auto' : 'max-w-3xl'\n }`}\n >\n {title && (\n <Heading level={2} className=\"text-3xl md:text-4xl font-bold mb-4\">\n {title}\n </Heading>\n )}\n {description && <Text className=\"text-lg md:text-xl\">{description}</Text>}\n </div>\n )}\n\n <Grid itemSize=\"md\" maxCols={columns} gap=\"lg\">\n {features.map((feature, index) => (\n <article key={index} className={centered ? 'text-center' : ''}>\n <span\n className={`inline-flex items-center justify-center w-12 h-12 md:w-16 md:h-16 rounded-lg md:rounded-xl bg-primary/10 text-primary mb-4 md:mb-6 ${\n centered ? '' : 'mr-auto'\n }`}\n >\n {feature.icon}\n </span>\n <Heading level={3} className=\"text-xl font-semibold mb-2 md:mb-3\">\n {feature.title}\n </Heading>\n <Text variant=\"muted\" className=\"text-sm md:text-base\">\n {feature.description}\n </Text>\n </article>\n ))}\n </Grid>\n </Container>\n </section>\n );\n}\n\nFeatureSection.displayName = 'FeatureSection';\n\nexport default FeatureSection;\n","import { ReactNode } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\n\nexport type LinkProps = {\n children: ReactNode;\n href: string;\n\n /**\n * Whether this is an external link (opens in new tab with icon)\n * @default false\n */\n external?: boolean;\n\n /**\n * Visual variant\n * @default 'default'\n */\n variant?: 'default' | 'muted' | 'secondary' | 'inherit';\n\n /**\n * When to show underline\n * @default 'hover'\n */\n underline?: 'hover' | 'always' | 'none';\n\n /**\n * Text size\n * @default 'md'\n */\n size?: 'sm' | 'md' | 'lg';\n\n /**\n * Display behavior\n * @default 'inline'\n */\n display?: 'inline' | 'block';\n\n /**\n * Additional CSS classes (use as last resort)\n */\n className?: string;\n};\n\n/**\n * Link - Themed anchor with hover state\n * Automatically uses React Router for internal links\n */\nfunction Link({\n children,\n href,\n external = false,\n variant = 'default',\n underline = 'hover',\n size = 'md',\n display = 'inline',\n className = ''\n}: Readonly<LinkProps>) {\n // Build variant classes\n const variantClasses = {\n default: 'text-primary hover:text-primary/80',\n muted: 'text-muted-foreground hover:text-foreground',\n secondary: 'text-secondary hover:text-secondary/80',\n inherit: 'text-inherit hover:opacity-80'\n };\n\n // Build underline classes\n const underlineClasses = {\n hover: 'hover:underline',\n always: 'underline',\n none: 'no-underline'\n };\n\n // Build size classes\n const sizeClasses = {\n sm: 'text-sm',\n md: 'text-base',\n lg: 'text-lg'\n };\n\n // Build display classes\n const displayClasses = {\n inline: 'inline',\n block: 'block'\n };\n\n const linkClassName = [\n variantClasses[variant],\n underlineClasses[underline],\n sizeClasses[size],\n displayClasses[display],\n 'cursor-pointer transition-colors',\n className\n ]\n .filter(Boolean)\n .join(' ');\n\n // External links use regular anchor tag\n if (external) {\n return (\n <a href={href} className={linkClassName} target=\"_blank\" rel=\"noopener noreferrer\">\n {children}\n <svg\n className=\"inline-block w-4 h-4 ml-1\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14\"\n />\n </svg>\n </a>\n );\n }\n\n // Internal links use React Router Link\n return (\n <RouterLink to={href} className={linkClassName}>\n {children}\n </RouterLink>\n );\n}\n\nLink.displayName = 'Link';\n\nexport default Link;\n","import { ReactNode } from 'react';\n\nimport Container from '../container/container';\nimport Grid from '../grid/grid';\nimport Text from '../../typography/text/text';\nimport Link from '../../typography/link/link';\n\nexport type FooterSection = {\n title: string;\n links: Array<{ label: string; href: string; external?: boolean }>;\n};\n\nexport type FooterProps = {\n sections?: FooterSection[];\n copyright?: string;\n social?: ReactNode;\n className?: string;\n};\n\n/**\n * Footer Component - Site footer\n * - Multi-column link sections\n * - Copyright text\n * - Social media icons\n * - Responsive layout\n */\nfunction Footer({ sections, copyright, social, className = '' }: Readonly<FooterProps>) {\n return (\n <footer className={`border-t border-border bg-muted/20 ${className}`}>\n <Container>\n {sections && sections.length > 0 && (\n <div className=\"py-12 md:py-16\">\n <Grid itemSize=\"xs\" maxCols={4} gap=\"lg\">\n {sections.map((section, index) => (\n <div key={index}>\n <h3 className=\"font-semibold text-foreground mb-4\">{section.title}</h3>\n <ul className=\"space-y-3\">\n {section.links.map((link, linkIndex) => (\n <li key={linkIndex}>\n <Link\n href={link.href}\n external={link.external}\n className=\"text-sm text-muted hover:text-foreground transition-colors\"\n >\n {link.label}\n </Link>\n </li>\n ))}\n </ul>\n </div>\n ))}\n </Grid>\n </div>\n )}\n\n <div\n className={`${sections && sections.length > 0 ? 'border-t border-border' : ''} py-6 flex flex-col md:flex-row items-center justify-between gap-4`}\n >\n {copyright && (\n <Text variant=\"muted\" className=\"text-sm text-center md:text-left\">\n {copyright}\n </Text>\n )}\n {social && <div className=\"flex items-center space-x-4\">{social}</div>}\n </div>\n </Container>\n </footer>\n );\n}\n\nFooter.displayName = 'Footer';\n\nexport default Footer;\n","import { useEffect } from 'react';\n\n/**\n * Robust scroll reset on key changes (e.g., route changes).\n * Attempts multiple strategies to ensure scroll position returns to top.\n */\nexport function useScrollReset(deps: unknown[], container?: HTMLElement | null) {\n useEffect(() => {\n let cancelled = false;\n const maxRaf = 6;\n let rafCount = 0;\n\n const setAllScrollTop = () => {\n if (cancelled) return;\n window.scrollTo(0, 0);\n if (container) container.scrollTop = 0;\n document.documentElement.scrollTop = 0;\n document.body.scrollTop = 0;\n };\n\n // Immediate\n setAllScrollTop();\n\n // Microtask flush\n Promise.resolve().then(() => setAllScrollTop());\n\n // Timeout after potential layout shift\n const timeoutId = setTimeout(() => setAllScrollTop(), 0);\n\n // A few RAF retries to combat async mounts\n const loop = () => {\n if (cancelled) return;\n setAllScrollTop();\n rafCount += 1;\n if (rafCount < maxRaf) requestAnimationFrame(loop);\n };\n requestAnimationFrame(loop);\n\n return () => {\n cancelled = true;\n clearTimeout(timeoutId);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n}\n\nexport default useScrollReset;\n","import { ReactNode, useState, useRef, useEffect } from 'react';\nimport useScrollReset from '@/hooks/useScrollReset';\nimport { IconChevronRight, IconChevronLeft } from '@tabler/icons-react';\n\nexport type LeftNavLayoutProps = {\n /** Navigation sidebar content */\n nav: ReactNode;\n /** Main content area */\n children: ReactNode;\n /** Whether sidebar is collapsed (icon-only mode) */\n collapsed?: boolean;\n /** Callback when collapse state changes */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Whether to show collapse toggle button */\n showToggle?: boolean;\n /** Custom className for the layout container */\n className?: string;\n /** Custom className for the nav sidebar */\n navClassName?: string;\n /** Custom className for the content area */\n contentClassName?: string;\n /** Width of the sidebar when expanded */\n navWidth?: string;\n /** Width of the sidebar when collapsed */\n navWidthCollapsed?: string;\n /** Whether sidebar is collapsible on mobile (becomes overlay) */\n mobileCollapsible?: boolean;\n /** Mobile menu open state (controlled) */\n mobileMenuOpen?: boolean;\n /** Callback when mobile menu state changes */\n onMobileMenuOpenChange?: (open: boolean) => void;\n /** Embedded demo mode (no fixed positioning, constrained height) */\n embedded?: boolean;\n /** Ref for the main content scrollable element */\n mainContentRef?: React.RefObject<HTMLDivElement>;\n};\n\n/**\n * LeftNavLayout - Full-featured responsive left navigation layout\n *\n * Provides a robust sidebar navigation with:\n * - Full and collapsed (icon-only) states\n * - Smooth transitions without janky spacing\n * - Proper scroll handling\n * - Responsive mobile behavior\n * - Accessible keyboard navigation\n *\n * @example\n * ```tsx\n * <LeftNavLayout\n * collapsed={isCollapsed}\n * onCollapsedChange={setIsCollapsed}\n * nav={\n * <>\n * <LeftNavSection>\n * <LeftNavItem icon={<HomeIcon />} href=\"/\" active>Home</LeftNavItem>\n * <LeftNavItem icon={<DashboardIcon />} href=\"/dashboard\">Dashboard</LeftNavItem>\n * </LeftNavSection>\n * </>\n * }\n * >\n * <main>Your content here</main>\n * </LeftNavLayout>\n * ```\n */\nfunction LeftNavLayout({\n nav,\n children,\n collapsed: controlledCollapsed,\n onCollapsedChange,\n showToggle = true,\n className = '',\n navClassName = '',\n contentClassName = '',\n navWidth = '16rem',\n navWidthCollapsed = '4.5rem',\n mobileCollapsible = true,\n mobileMenuOpen: controlledMobileMenuOpen,\n onMobileMenuOpenChange,\n embedded = false,\n mainContentRef\n}: Readonly<LeftNavLayoutProps>) {\n const [internalCollapsed, setInternalCollapsed] = useState(false);\n const [internalMobileMenuOpen, setInternalMobileMenuOpen] = useState(false);\n const navRef = useRef<HTMLDivElement | null>(null);\n const scrollPosRef = useRef<number>(0);\n const internalContentRef = useRef<HTMLElement | null>(null);\n const contentRef = mainContentRef || internalContentRef;\n\n // Use controlled or uncontrolled collapsed state\n const collapsed = controlledCollapsed ?? internalCollapsed;\n const setCollapsed = (value: boolean) => {\n if (onCollapsedChange) {\n onCollapsedChange(value);\n } else {\n setInternalCollapsed(value);\n }\n };\n\n // Use controlled or uncontrolled mobile menu state\n const mobileMenuOpen = controlledMobileMenuOpen ?? internalMobileMenuOpen;\n const setMobileMenuOpen = (value: boolean) => {\n if (onMobileMenuOpenChange) {\n onMobileMenuOpenChange(value);\n } else {\n setInternalMobileMenuOpen(value);\n }\n };\n\n const toggleCollapsed = () => setCollapsed(!collapsed);\n const toggleMobileMenu = () => setMobileMenuOpen(!mobileMenuOpen);\n\n // Restore nav scroll position after children change (route switch) & reset scroll\n useEffect(() => {\n if (navRef.current) {\n navRef.current.scrollTop = scrollPosRef.current;\n }\n }, [children]);\n\n // Robust scroll reset for main content area on children change\n useScrollReset([children], contentRef.current as HTMLElement | null);\n\n const containerClasses = embedded\n ? 'flex bg-background border border-border rounded-lg overflow-hidden'\n : 'flex h-[calc(100vh-4rem)] bg-background';\n\n return (\n <div className={`${containerClasses} ${className}`}>\n {/* Mobile Overlay */}\n {mobileCollapsible && mobileMenuOpen && (\n <div\n className=\"fixed inset-0 z-40 lg:hidden bg-background/80 backdrop-blur-sm\"\n onClick={toggleMobileMenu}\n aria-hidden=\"true\"\n />\n )}\n\n {/* Sidebar Navigation */}\n <aside\n className={`\n ${embedded ? 'relative flex flex-col h-full' : 'fixed lg:relative top-0 left-0 z-40 lg:z-10 h-screen lg:h-full'}\n flex flex-col flex-shrink-0\n bg-background border-r border-border\n transition-all duration-300 ease-in-out\n ${!embedded && mobileCollapsible && !mobileMenuOpen ? '-translate-x-full lg:translate-x-0' : 'translate-x-0'}\n ${collapsed ? 'w-[4.5rem]' : 'w-64'}\n ${navClassName}\n `}\n style={\n (!collapsed && navWidth !== '16rem') || (collapsed && navWidthCollapsed !== '4.5rem')\n ? ({\n width: collapsed ? navWidthCollapsed : navWidth\n } as React.CSSProperties)\n : undefined\n }\n aria-label=\"Main navigation\"\n >\n {/* Nav Header with Toggle */}\n {showToggle && (\n <div\n className={`\n flex items-center h-12 flex-shrink-0\n px-4 border-b border-border\n ${collapsed ? 'justify-center' : 'justify-between'}\n `}\n >\n {!collapsed && <span className=\"text-sm font-semibold text-foreground\">Navigation</span>}\n <button\n onClick={toggleCollapsed}\n className=\"\n hidden lg:flex items-center justify-center\n w-8 h-8 rounded-md\n text-muted-foreground hover:text-foreground\n hover:bg-muted\n transition-colors\n focus:outline-none focus:ring-2 focus:ring-ring\n \"\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n type=\"button\"\n >\n {collapsed ? <IconChevronRight size={20} /> : <IconChevronLeft size={20} />}\n </button>\n </div>\n )}\n\n {/* Nav Content - Scrollable */}\n <nav\n ref={navRef}\n className=\"flex-1 overflow-y-auto overflow-x-hidden scrollbar-thin\"\n data-collapsed={collapsed}\n onScroll={(e) => {\n scrollPosRef.current = (e.currentTarget as HTMLDivElement).scrollTop;\n }}\n >\n {nav}\n </nav>\n </aside>\n\n {/* Main Content Area */}\n <main\n ref={contentRef as React.RefObject<HTMLDivElement>}\n className={`flex-1 overflow-auto ${embedded ? 'h-60' : ''} ${contentClassName}`}\n >\n {children}\n </main>\n </div>\n );\n}\n\nLeftNavLayout.displayName = 'LeftNavLayout';\n\nexport default LeftNavLayout;\n","import { ReactNode, MouseEvent, useRef, useState, useEffect } from 'react';\nimport { NavLink } from 'react-router-dom';\n\nimport Tooltip from '../../feedback/tooltip/tooltip';\n\nexport type LeftNavItemProps = {\n /** Icon to display (SVG or React component) */\n icon?: ReactNode;\n /** Link label text */\n children: ReactNode;\n /** Whether this item is currently active */\n active?: boolean;\n /** Custom className */\n className?: string;\n /** Badge or count to display on the right */\n badge?: ReactNode;\n /** Destination href */\n href?: string;\n /** Accessible label override */\n title?: string;\n /** Prevent actual navigation (demo mode) */\n preventNavigation?: boolean;\n};\n\n/**\n * LeftNavItem - Navigation link item for LeftNavLayout\n *\n * Features:\n * - Icon support with proper alignment\n * - Active state styling\n * - Tooltip on hover in collapsed mode (using Tooltip component with Portal)\n * - Badge/count support\n * - Accessible keyboard navigation\n *\n * @example\n * ```tsx\n * <LeftNavItem\n * icon={<HomeIcon />}\n * href=\"/\"\n * active\n * title=\"Home\"\n * >\n * Home\n * </LeftNavItem>\n * ```\n */\nfunction LeftNavItem({\n icon,\n children,\n active = false,\n className = '',\n badge,\n href = '#',\n title,\n preventNavigation = false\n}: Readonly<LeftNavItemProps>) {\n const navRef = useRef<HTMLAnchorElement>(null);\n const [isCollapsed, setIsCollapsed] = useState(() => {\n // Try to get initial collapsed state from nav element if it exists\n if (typeof window !== 'undefined') {\n const navElement = document.querySelector('nav[data-collapsed]');\n return navElement?.getAttribute('data-collapsed') === 'true';\n }\n return false;\n });\n\n // Check if nav is collapsed by looking at parent nav element\n useEffect(() => {\n const checkCollapsed = () => {\n const navElement = navRef.current?.closest('nav');\n if (navElement) {\n setIsCollapsed(navElement.getAttribute('data-collapsed') === 'true');\n }\n };\n\n checkCollapsed();\n\n // Create observer to watch for attribute changes\n const navElement = navRef.current?.closest('nav');\n if (navElement) {\n const observer = new MutationObserver(checkCollapsed);\n observer.observe(navElement, {\n attributes: true,\n attributeFilter: ['data-collapsed']\n });\n return () => observer.disconnect();\n }\n\n return undefined;\n }, []);\n\n // Use children as fallback title for accessibility\n const itemTitle = title || (typeof children === 'string' ? children : undefined);\n\n const navLink = (\n <NavLink\n ref={navRef}\n to={href}\n onClick={(e: MouseEvent) => {\n if (preventNavigation) {\n e.preventDefault();\n }\n }}\n className={({ isActive }) => `\n group relative flex items-center gap-3\n px-3 py-2.5 rounded-lg\n mx-2\n [nav[data-collapsed='true']_&]:mx-2\n [nav[data-collapsed='true']_&]:px-0\n [nav[data-collapsed='true']_&]:w-12\n [nav[data-collapsed='true']_&]:justify-center\n text-sm font-medium\n transition-colors duration-200\n focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-card\n ${\n isActive || active\n ? 'bg-primary text-primary-foreground shadow-sm'\n : 'text-foreground hover:bg-muted hover:text-foreground'\n }\n ${className}\n `}\n aria-current={active ? 'page' : undefined}\n aria-label={itemTitle}\n end\n >\n {/* Icon */}\n {icon && (\n <span className=\"flex-shrink-0\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n {/* Label - Hidden in collapsed mode via parent's data-collapsed selector */}\n <span\n className=\"\n flex-1 truncate\n [nav[data-collapsed='true']_&]:hidden\n \"\n >\n {children}\n </span>\n\n {/* Badge - Hidden in collapsed mode */}\n {badge && (\n <span\n className=\"\n flex-shrink-0\n [nav[data-collapsed='true']_&]:hidden\n \"\n >\n {badge}\n </span>\n )}\n </NavLink>\n );\n\n // Only show tooltip when collapsed\n if (!isCollapsed) {\n return navLink;\n }\n\n // Get tooltip content\n const tooltipContent = typeof children === 'string' ? children : itemTitle || 'Menu Item';\n\n return (\n <Tooltip content={tooltipContent} position=\"right\" variant=\"default\" usePortal className=\"w-full block\">\n {navLink}\n </Tooltip>\n );\n}\n\nLeftNavItem.displayName = 'LeftNavItem';\n\nexport default LeftNavItem;\n","import { ReactNode } from 'react';\n\nexport type LeftNavSectionProps = {\n /** Section content (typically LeftNavItem components) */\n children: ReactNode;\n /** Optional section header label */\n label?: string;\n /** Custom className */\n className?: string;\n};\n\n/**\n * LeftNavSection - Section grouping for LeftNavLayout navigation items\n *\n * Groups related navigation items together with an optional label.\n * In collapsed mode, the label is hidden but the grouping is preserved.\n *\n * @example\n * ```tsx\n * <LeftNavSection label=\"Main\">\n * <LeftNavItem icon={<HomeIcon />} href=\"/\">Home</LeftNavItem>\n * <LeftNavItem icon={<DashboardIcon />} href=\"/dashboard\">Dashboard</LeftNavItem>\n * </LeftNavSection>\n *\n * <LeftNavSection label=\"Settings\">\n * <LeftNavItem icon={<SettingsIcon />} href=\"/settings\">Settings</LeftNavItem>\n * </LeftNavSection>\n * ```\n */\nfunction LeftNavSection({ children, label, className = '' }: Readonly<LeftNavSectionProps>) {\n return (\n <div className={`py-2 ${className}`}>\n {/* Section Label - Hidden in collapsed mode */}\n {label && (\n <h3\n className=\"\n px-5 mb-2 mt-2\n text-xs font-semibold uppercase tracking-wider\n text-muted-foreground\n [nav[data-collapsed='true']_&]:hidden\n \"\n >\n {label}\n </h3>\n )}\n\n {/* Section Items */}\n <div className=\"space-y-1\">{children}</div>\n\n {/* Divider - Subtle separator between sections */}\n <div className=\"h-px bg-border mx-3 mt-2\" aria-hidden=\"true\" />\n </div>\n );\n}\n\nLeftNavSection.displayName = 'LeftNavSection';\n\nexport default LeftNavSection;\n","import { ReactNode } from 'react';\n\nexport type CodeProps = {\n children: ReactNode;\n block?: boolean;\n variant?: 'default' | 'primary' | 'muted';\n className?: string;\n};\n\n/**\n * Code - Styled code snippets (inline or block)\n */\nfunction Code({ children, block = false, variant = 'default', className = '' }: Readonly<CodeProps>) {\n const variantClasses = {\n default: 'bg-muted text-foreground',\n primary: 'text-primary',\n muted: 'text-muted-foreground'\n };\n\n const baseClasses = `font-mono ${variantClasses[variant]}`;\n\n if (block) {\n return (\n <pre className={`${baseClasses} p-4 rounded-lg overflow-x-auto border border-border ${className}`}>\n <code>{children}</code>\n </pre>\n );\n }\n\n return <code className={`${baseClasses} px-1.5 py-0.5 rounded text-sm ${className}`}>{children}</code>;\n}\n\nCode.displayName = 'Code';\n\nexport default Code;\n","import { createContext, useContext, useEffect, useState, useMemo, ReactNode, useCallback } from 'react';\n\n/**\n * hydn UI Theme System\n * - Supports light and dark themes\n * - Themes are applied via className on the <html> element\n * - Define new themes in globals.css following the CSS variable pattern\n */\n\nexport type Theme = 'light' | 'dark';\n\nexport type ThemeContextType = {\n theme: Theme;\n setTheme: (theme: Theme) => void;\n availableThemes: Theme[];\n};\n\nconst ThemeContext = createContext<ThemeContextType | undefined>(undefined);\n\nexport type ThemeProviderProps = {\n children: ReactNode;\n defaultTheme?: Theme;\n storageKey?: string;\n /**\n * List of available theme names.\n * Defaults to ['light', 'dark']\n */\n themes?: Theme[];\n};\n\n/**\n * ThemeProvider - Context for managing light/dark themes\n */\nexport function ThemeProvider({\n children,\n defaultTheme = 'light',\n storageKey = 'hydn-theme',\n themes = ['light', 'dark']\n}: Readonly<ThemeProviderProps>) {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window !== 'undefined') {\n const stored = localStorage.getItem(storageKey) as Theme;\n return stored && themes.includes(stored) ? stored : defaultTheme;\n }\n return defaultTheme;\n });\n\n useEffect(() => {\n const root = window.document.documentElement;\n\n // Remove all possible theme classes\n root.classList.remove(...themes);\n\n // Apply the theme class to <html>\n root.classList.add(theme);\n }, [theme, themes]);\n\n const setTheme = useCallback(\n (newTheme: Theme) => {\n if (themes.includes(newTheme)) {\n localStorage.setItem(storageKey, newTheme);\n setThemeState(newTheme);\n } else {\n /* eslint-disable-next-line no-console */\n console.warn(`Theme \"${newTheme}\" is not in availableThemes. Add it to the themes prop.`);\n }\n },\n [themes, storageKey]\n );\n\n const value = useMemo(\n () => ({\n theme,\n setTheme,\n availableThemes: themes\n }),\n [theme, themes, setTheme]\n );\n\n return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;\n}\n\n/**\n * useTheme - Hook to access theme context\n */\nexport function useTheme() {\n const context = useContext(ThemeContext);\n if (!context) {\n throw new Error('useTheme must be used within a ThemeProvider');\n }\n return context;\n}\n\nexport default ThemeProvider;\n","import { useTheme } from '../theme-provider';\n\nexport type ColorModeToggleProps = {\n className?: string;\n};\n\n/**\n * ColorModeToggle - Simple light/dark theme switcher\n */\nfunction ColorModeToggle({ className = '' }: Readonly<ColorModeToggleProps>) {\n const { theme, setTheme } = useTheme();\n\n const toggleTheme = () => {\n setTheme(theme === 'light' ? 'dark' : 'light');\n };\n\n const isDark = theme === 'dark';\n const label = `Switch to ${theme === 'light' ? 'dark' : 'light'} theme`;\n\n return (\n <button\n onClick={toggleTheme}\n className={`relative p-2 rounded-md hover:bg-accent hover:text-accent-foreground transition-colors cursor-pointer ${className}`}\n aria-label={label}\n title={label}\n >\n {/* Sun icon - visible in light mode */}\n <svg\n className={`w-5 h-5 absolute inset-0 m-auto transition-all duration-300 ${\n isDark ? 'rotate-90 scale-0 opacity-0' : 'rotate-0 scale-100 opacity-100'\n }`}\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=\"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z\"\n />\n </svg>\n\n {/* Moon icon - visible in dark mode */}\n <svg\n className={`w-5 h-5 transition-all duration-300 ${\n isDark ? 'rotate-0 scale-100 opacity-100' : '-rotate-90 scale-0 opacity-0'\n }`}\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=\"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z\"\n />\n </svg>\n </button>\n );\n}\n\nColorModeToggle.displayName = 'ColorModeToggle';\n\nexport default ColorModeToggle;\n"]}