@hyddenlabs/hydn-ui 0.0.1-alpha.34
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/README.md +569 -0
- package/dist/index.cjs +3121 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +1029 -0
- package/dist/index.d.ts +1029 -0
- package/dist/index.js +3042 -0
- package/dist/index.js.map +1 -0
- package/dist/style.css +2 -0
- package/package.json +99 -0
|
@@ -0,0 +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/radio.tsx","../src/components/forms/select/select.tsx","../src/components/forms/select/select-item.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/forms/radio-group/radio-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/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/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/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":["jsxs","jsx","isValidElement","cloneElement","useState","IconX","IconMenu2","Link","NavLink","useRef","useEffect","IconCheck","createPortal","Fragment","IconTrash","useMemo","IconSelector","IconChevronUp","IconChevronDown","createElement","RouterLink","useLocation","IconChevronRight","IconChevronLeft","navElement","createContext","useCallback","useContext"],"mappings":"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","file":"index.cjs","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 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};\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}: Readonly<CheckboxProps>) {\n return (\n <input\n type=\"checkbox\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n className={`h-4 w-4 rounded border-2 border-input bg-background text-primary transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-muted/50 checked:bg-primary checked:border-primary hover:border-ring cursor-pointer ${className}`}\n />\n );\n}\n\nCheckbox.displayName = 'Checkbox';\n\nexport default Checkbox;\n","import React from 'react';\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};\n\n/**\n * Accessible Radio component\n */\nfunction Radio({\n checked,\n onChange,\n disabled = false,\n className = '',\n ariaLabel,\n id,\n name,\n value\n}: Readonly<RadioProps>) {\n return (\n <input\n type=\"radio\"\n checked={checked}\n onChange={onChange}\n disabled={disabled}\n aria-label={ariaLabel}\n id={id}\n name={name}\n value={value}\n className={`w-4 h-4 text-primary border-2 border-input bg-background transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed disabled:bg-muted/50 checked:bg-primary checked:border-primary hover:border-ring cursor-pointer ${className}`}\n />\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 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 RadioGroupProps = {\n children: ReactNode;\n name: string;\n label?: string;\n orientation?: 'horizontal' | 'vertical';\n className?: string;\n};\n\n/**\n * RadioGroup - Wrapper for radio inputs with consistent spacing\n */\nfunction RadioGroup({\n children,\n name: _name,\n label,\n orientation = 'vertical',\n className = ''\n}: Readonly<RadioGroupProps>) {\n const orientationClasses = orientation === 'horizontal' ? 'flex flex-row gap-4' : 'flex flex-col gap-2';\n\n return (\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 );\n}\n\nRadioGroup.displayName = 'RadioGroup';\n\nexport default RadioGroup;\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 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',\n blur: 'bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/80',\n transparent: 'bg-transparent'\n };\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 className={`${\n sticky ? 'sticky top-0 z-50' : ''\n } ${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\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'\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\"\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 } from 'react';\n\nexport type DropdownProps = {\n trigger: React.ReactNode;\n children: React.ReactNode;\n className?: string;\n};\n\n/**\n * Dropdown component with click-outside handling\n */\nfunction Dropdown({ trigger, children, className = '' }: Readonly<DropdownProps>) {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.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 return (\n <div ref={dropdownRef} className={`relative ${className}`}>\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"bg-transparent border-0 p-0 cursor-pointer outline-none\"\n type=\"button\"\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n >\n {trigger}\n </button>\n {isOpen && (\n <div\n className=\"absolute left-0 mt-2 bg-popover text-popover-foreground border border-border rounded-lg shadow-xl z-50 min-w-[180px] animate-scaleIn\"\n onClick={() => setIsOpen(false)}\n onKeyDown={(e) => e.key === 'Enter' && setIsOpen(false)}\n role=\"menu\"\n tabIndex={-1}\n >\n {children}\n </div>\n )}\n </div>\n );\n}\n\nDropdown.displayName = 'Dropdown';\n\nexport default Dropdown;\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={`bg-muted border-r border-border ${widthClass || ''} ${className}`}\n style={!widthClass ? ({ width } as React.CSSProperties) : undefined}\n aria-label=\"Sidebar navigation\"\n >\n {children}\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 && status !== 'pending';\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={isClickable ? `Go to step ${index + 1}: ${step.title}` : 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 transition-colors\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 className={`h-0.5 flex-1 ${status === 'completed' ? 'bg-success' : 'bg-muted'}`} />\n )}\n </div>\n\n {/* Label */}\n <div className=\"mt-3 text-center\">\n <div className={`text-sm ${styles.title}`}>\n {step.title}\n {step.optional && <span className=\"ml-1 text-xs text-muted-foreground\">(Optional)</span>}\n </div>\n {step.description && <div className={`text-xs mt-1 ${styles.description}`}>{step.description}</div>}\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={isClickable ? `Go to step ${index + 1}: ${step.title}` : 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 transition-colors flex-shrink-0\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 className={`w-0.5 flex-1 mt-2 ${status === 'completed' ? 'bg-success' : 'bg-muted'}`} />\n )}\n </div>\n\n {/* Content Column */}\n <div className=\"flex-1 pt-2\">\n <div className={`text-base ${styles.title}`}>\n {step.title}\n {step.optional && <span className=\"ml-2 text-xs text-muted-foreground\">(Optional)</span>}\n </div>\n {step.description && <div className={`text-sm mt-1 ${styles.description}`}>{step.description}</div>}\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","export type ToastProps = {\n message?: string;\n children?: React.ReactNode;\n type?: 'info' | 'success' | 'warning' | 'error';\n onClose?: () => void;\n className?: string;\n};\n\n/**\n * Toast - Notification popup\n */\nfunction Toast({ message, children, type = 'info', onClose, className = '' }: Readonly<ToastProps>) {\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 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]} ${className}`}\n >\n <span>{children || message}</span>\n {onClose && (\n <button onClick={onClose} className=\"ml-4 font-bold\" 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-gray-900',\n error: 'bg-red-500 text-white',\n neutral: 'bg-gray-700 text-white dark:bg-gray-300 dark:text-gray-900'\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-gray-700 dark:before:border-gray-300'\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:right-full before:top-1/2 before:-translate-y-1/2 before:border-t-transparent before:border-b-transparent before:border-l-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:right-full before:border-t-transparent before:border-b-transparent before:border-l-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 React, { useEffect } from 'react';\n\nexport type ModalProps = {\n isOpen: boolean;\n onClose: () => void;\n children: React.ReactNode;\n className?: string;\n ariaLabel?: string;\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, className = '', ariaLabel }: Readonly<ModalProps>) {\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n onClose();\n }\n };\n\n if (isOpen) {\n // Lock body scroll when modal is open\n document.body.style.overflow = 'hidden';\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.body.style.overflow = '';\n document.removeEventListener('keydown', handleEscape);\n };\n }\n return undefined;\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n return (\n // Backdrop: fixed overlay, centered grid, semi-transparent black background\n <div\n className=\"fixed inset-0 z-[999] grid place-items-center bg-black/40 backdrop-blur-sm p-4 overflow-y-auto overscroll-contain\"\n onClick={onClose}\n onKeyDown={(e) => e.key === 'Escape' && onClose()}\n role=\"button\"\n aria-label={ariaLabel || 'Close modal'}\n tabIndex={0}\n >\n {/* Modal box: white card with shadow, rounded corners, max width */}\n <div\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 ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n >\n {children}\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-info-foreground border-info/30',\n success: 'bg-success/10 text-success-foreground border-success/30',\n warning: 'bg-warning/10 text-warning-foreground border-warning/30',\n error: 'bg-destructive/10 text-destructive-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 <div className={iconClasses[type]}>{icons[type]}</div>\n <div className=\"flex-1 text-sm\">{children}</div>\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-gray-200 ${className}`}>{children}</Component>;\n}\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\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 { useTable, UseTableOptions } from './use-table';\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 // 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 * - Empty state handling\n * - Sticky headers\n * - Click handlers\n *\n * Built on top of low-level Table primitives.\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 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 </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 </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 */\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} & 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 ...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 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 ${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 p-6 ${\n featured ? 'border-2 border-primary shadow-lg scale-105' : 'border border-border'\n } ${className}`}\n >\n {badge && (\n <div className=\"absolute -top-3 left-1/2 transform -translate-x-1/2\">\n <Badge variant=\"primary\">{badge}</Badge>\n </div>\n )}\n\n <CardHeader className=\"text-center border-none bg-transparent px-0 pt-0\">\n <Heading level={3} className=\"text-2xl font-bold mb-2\">\n {name}\n </Heading>\n {description && (\n <Text variant=\"muted\" className=\"text-sm\">\n {description}\n </Text>\n )}\n </CardHeader>\n\n <div className=\"py-6 text-center\">\n <div className=\"flex items-baseline justify-center\">\n <span className=\"text-5xl font-bold\">{price}</span>\n {period && <span className=\"text-muted ml-2\">{period}</span>}\n </div>\n </div>\n\n <div className=\"flex-1 space-y-3 py-6\">\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 opacity-30'}`}\n />\n <Text className={`text-sm ${feature.included ? 'text-foreground' : 'text-muted line-through'}`}>\n {feature.label}\n </Text>\n </div>\n ))}\n </div>\n\n <CardFooter className=\"border-none bg-transparent px-0 pb-0\">\n <Button\n variant={featured ? 'primary' : 'neutral'}\n style={featured ? undefined : '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';\n\nexport type DrawerProps = {\n isOpen: boolean;\n onClose: () => void;\n children: ReactNode;\n position?: 'left' | 'right' | 'top' | 'bottom';\n className?: string;\n};\n\n/**\n * Drawer - Slide-in panel for navigation or tools\n */\nfunction Drawer({ isOpen, onClose, children, position = 'right', className = '' }: Readonly<DrawerProps>) {\n useEffect(() => {\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n\n if (isOpen) {\n // Lock body scroll when drawer is open\n document.body.style.overflow = 'hidden';\n document.addEventListener('keydown', handleEscape);\n\n return () => {\n document.body.style.overflow = '';\n document.removeEventListener('keydown', handleEscape);\n };\n }\n return undefined;\n }, [isOpen, onClose]);\n\n if (!isOpen) return null;\n\n const positionClasses = {\n left: 'left-0 top-0 h-full w-80 animate-slideInLeft',\n right: 'right-0 top-0 h-full w-80 animate-slideInRight',\n top: 'top-0 left-0 w-full h-80 animate-slideInTop',\n bottom: 'bottom-0 left-0 w-full h-80 animate-slideInBottom'\n };\n\n return (\n <>\n <button\n className=\"fixed inset-0 bg-black/50 backdrop-blur-sm z-40 animate-fadeIn border-none p-0 m-0 cursor-default\"\n onClick={onClose}\n aria-label=\"Close drawer\"\n type=\"button\"\n />\n <aside\n className={`fixed bg-card text-card-foreground border border-border shadow-2xl z-50 ${positionClasses[position]} ${className}`}\n role=\"dialog\"\n aria-modal=\"true\"\n tabIndex={-1}\n >\n {children}\n </aside>\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 <div 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 hover:bg-accent hover:text-accent-foreground transition-colors\"\n aria-expanded={isOpen}\n >\n <span className=\"font-medium text-foreground\">{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 && <div className=\"px-2 pb-4 text-muted-foreground\">{children}</div>}\n </div>\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-gray-200 ${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 <div key={index} className={centered ? 'text-center' : ''}>\n <div\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 </div>\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 </div>\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 { ReactNode, useState, useRef, useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\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};\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}: 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 contentRef = useRef<HTMLElement | null>(null);\n const location = useLocation();\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)\n useEffect(() => {\n if (navRef.current) {\n navRef.current.scrollTop = scrollPosRef.current;\n }\n }, [children]);\n\n // Reset main content scroll position on route change\n useEffect(() => {\n if (contentRef.current) {\n // Immediate reset\n contentRef.current.scrollTop = 0;\n // Fallback: ensure after layout/paint\n requestAnimationFrame(() => {\n if (contentRef.current) {\n contentRef.current.scrollTop = 0;\n }\n });\n }\n // In case some pages scroll the window instead of internal container\n window.scrollTo({ top: 0 });\n }, [location.pathname]);\n\n const containerClasses = embedded\n ? 'flex bg-background border border-border rounded-lg overflow-hidden'\n : 'flex min-h-screen bg-background';\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\" onClick={toggleMobileMenu} aria-hidden=\"true\" />\n )}\n\n {/* Sidebar Navigation */}\n <aside\n className={`\n ${embedded ? 'relative flex flex-col h-full' : 'fixed lg:fixed top-0 lg:top-16 left-0 z-40 lg:z-10 h-screen lg:h-[calc(100vh-4rem)]'}\n flex flex-col\n bg-background\n transition-all duration-300 ease-in-out\n ${!embedded && mobileCollapsible && !mobileMenuOpen ? '-translate-x-full lg:translate-x-0' : 'translate-x-0'}\n ${collapsed ? (navWidthCollapsed === '4.5rem' ? 'w-[4.5rem]' : '') : navWidth === '16rem' ? 'w-64' : ''}\n overflow-visible\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 justify-between\n px-4 py-3 border-b border-border\n ${collapsed ? 'justify-center' : ''}\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\n text-foreground/70 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-visible 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 <div\n className={`flex-1 flex flex-col min-w-0 ${\n !embedded ? 'transition-[margin-left] duration-300 ease-in-out' : ''\n } ${\n !embedded && collapsed\n ? navWidthCollapsed === '4.5rem'\n ? 'lg:ml-[4.5rem]'\n : ''\n : !embedded && navWidth === '16rem'\n ? 'lg:ml-64'\n : ''\n }`}\n style={\n !embedded && ((collapsed && navWidthCollapsed !== '4.5rem') || (!collapsed && navWidth !== '16rem'))\n ? ({\n marginLeft: window.innerWidth >= 1024 ? (collapsed ? navWidthCollapsed : navWidth) : '0'\n } as React.CSSProperties)\n : undefined\n }\n >\n {/* Main Content */}\n <main ref={contentRef} className={`flex-1 overflow-auto ${embedded ? 'h-60' : ''} ${contentClassName}`}>\n {children}\n </main>\n </div>\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"]}
|