ui_zenkit 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -0
- package/dist/index.d.mts +4776 -0
- package/dist/index.d.ts +4776 -0
- package/dist/index.js +16739 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +16401 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/utils/cn.ts","../src/components/Button/Button.tsx","../src/components/Input/Input.tsx","../src/components/Textarea/Textarea.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Radio/Radio.tsx","../src/components/Select/Select.tsx","../src/components/Switch/Switch.tsx","../src/components/Form/Form.tsx","../src/components/Typography/Typography.tsx","../src/components/Grid/Grid.tsx","../src/components/Flex/Flex.tsx","../src/components/Space/Space.tsx","../src/components/Container/Container.tsx","../src/components/Card/Card.tsx","../src/components/Alert/Alert.tsx","../src/components/Modal/Modal.tsx","../src/components/Provider/Provider.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/Menu/Menu.tsx","../src/components/Steps/Steps.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Popover/Popover.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Progress/Progress.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Notification/Notification.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Tag/Tag.tsx","../src/components/Collapse/Collapse.tsx","../src/components/Divider/Divider.tsx","../src/components/Slider/Slider.tsx","../src/components/Table/Table.tsx","../src/components/List/List.tsx","../src/components/Descriptions/Descriptions.tsx","../src/components/Timeline/Timeline.tsx","../src/components/Statistic/Statistic.tsx","../src/components/Empty/Empty.tsx","../src/components/Image/Image.tsx","../src/components/Result/Result.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Rate/Rate.tsx","../src/components/BackTop/BackTop.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Icon/Icon.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Chip/Chip.tsx","../src/components/CloseButton/CloseButton.tsx","../src/components/Code/Code.tsx","../src/components/Stack/Stack.tsx","../src/components/AspectRatio/AspectRatio.tsx","../src/components/Masonry/Masonry.tsx","../src/components/Splitter/Splitter.tsx","../src/components/Link/Link.tsx","../src/components/Navbar/Navbar.tsx","../src/components/Sidebar/Sidebar.tsx","../src/components/Anchor/Anchor.tsx","../src/components/CommandPalette/CommandPalette.tsx","../src/components/ContextMenu/ContextMenu.tsx","../src/components/SpeedDial/SpeedDial.tsx","../src/components/BottomNavigation/BottomNavigation.tsx","../src/components/Menubar/Menubar.tsx","../src/components/NavigationMenu/NavigationMenu.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/Autocomplete/Autocomplete.tsx","../src/components/Upload/Upload.tsx","../src/components/NumberInput/NumberInput.tsx","../src/components/ColorPicker/ColorPicker.tsx","../src/components/Mentions/Mentions.tsx","../src/components/Cascader/Cascader.tsx","../src/components/TreeSelect/TreeSelect.tsx","../src/components/Transfer/Transfer.tsx","../src/components/InputOTP/InputOTP.tsx","../src/components/TagsInput/TagsInput.tsx","../src/components/Dropzone/Dropzone.tsx","../src/components/PasswordInput/PasswordInput.tsx","../src/components/PinInput/PinInput.tsx","../src/components/Fieldset/Fieldset.tsx","../src/components/Editable/Editable.tsx","../src/components/DataGrid/DataGrid.tsx","../src/components/Carousel/Carousel.tsx","../src/components/Tree/Tree.tsx","../src/components/Calendar/Calendar.tsx","../src/components/QRCode/QRCode.tsx","../src/components/Segmented/Segmented.tsx","../src/components/Kbd/Kbd.tsx","../src/components/ScrollArea/ScrollArea.tsx","../src/components/HoverCard/HoverCard.tsx","../src/components/Toggle/Toggle.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Snippet/Snippet.tsx","../src/components/ImageList/ImageList.tsx","../src/components/AlertDialog/AlertDialog.tsx","../src/components/Message/Message.tsx","../src/components/CircularProgress/CircularProgress.tsx","../src/components/Popconfirm/Popconfirm.tsx","../src/components/Watermark/Watermark.tsx","../src/components/Tour/Tour.tsx","../src/components/Sheet/Sheet.tsx","../src/components/ConfigProvider/ConfigProvider.tsx","../src/components/Portal/Portal.tsx","../src/components/Transition/Transition.tsx","../src/components/Affix/Affix.tsx","../src/components/FloatButton/FloatButton.tsx","../src/components/Resizable/Resizable.tsx","../src/components/Toast/Toast.tsx","../src/components/Dialog/Dialog.tsx","../src/components/Label/Label.tsx","../src/components/Separator/Separator.tsx","../src/components/Heading/Heading.tsx","../src/components/Text/Text.tsx","../src/components/Box/Box.tsx","../src/components/Center/Center.tsx","../src/components/FileInput/FileInput.tsx","../src/components/RangeSlider/RangeSlider.tsx","../src/components/MultiSelect/MultiSelect.tsx","../src/components/Combobox/Combobox.tsx","../src/components/ColorInput/ColorInput.tsx","../src/components/CopyButton/CopyButton.tsx","../src/components/CheckboxGroup/CheckboxGroup.tsx","../src/components/AppShell/AppShell.tsx","../src/components/AppBar/AppBar.tsx","../src/components/Paper/Paper.tsx","../src/components/Backdrop/Backdrop.tsx","../src/components/LoadingOverlay/LoadingOverlay.tsx","../src/components/RingProgress/RingProgress.tsx","../src/components/VisuallyHidden/VisuallyHidden.tsx","../src/components/FocusTrap/FocusTrap.tsx","../src/components/Highlight/Highlight.tsx","../src/components/Indicator/Indicator.tsx","../src/components/Spoiler/Spoiler.tsx","../src/components/Stepper/Stepper.tsx","../src/components/NavLink/NavLink.tsx","../src/components/Chart/Chart.tsx","../src/components/JsonInput/JsonInput.tsx","../src/components/AngleSlider/AngleSlider.tsx","../src/components/TableOfContents/TableOfContents.tsx","../src/components/SemiCircleProgress/SemiCircleProgress.tsx","../src/components/CheckboxCard/CheckboxCard.tsx","../src/components/ScrollShadow/ScrollShadow.tsx","../src/components/ColorSwatch/ColorSwatch.tsx","../src/components/ThemeIcon/ThemeIcon.tsx","../src/components/DateTimePicker/DateTimePicker.tsx","../src/components/MonthPicker/MonthPicker.tsx","../src/components/YearPicker/YearPicker.tsx","../src/components/RadioCard/RadioCard.tsx","../src/components/Toolbar/Toolbar.tsx","../src/components/SimpleGrid/SimpleGrid.tsx","../src/components/Blockquote/Blockquote.tsx","../src/components/VirtualList/VirtualList.tsx","../src/components/InfiniteScroll/InfiniteScroll.tsx","../src/components/SplitButton/SplitButton.tsx","../src/components/NumberFormatter/NumberFormatter.tsx","../src/components/Sortable/Sortable.tsx","../src/components/ErrorBoundary/ErrorBoundary.tsx","../src/components/RichTextEditor/RichTextEditor.tsx","../src/components/Sparkline/Sparkline.tsx","../src/components/Gauge/Gauge.tsx","../src/components/LazyLoad/LazyLoad.tsx","../src/components/Group/Group.tsx","../src/components/Float/Float.tsx","../src/components/Overlay/Overlay.tsx","../src/components/ActionIcon/ActionIcon.tsx","../src/components/UnstyledButton/UnstyledButton.tsx","../src/components/FileButton/FileButton.tsx","../src/components/FloatingIndicator/FloatingIndicator.tsx","../src/components/Pill/Pill.tsx","../src/components/Mark/Mark.tsx","../src/components/User/User.tsx","../src/components/DataList/DataList.tsx","../src/components/BackgroundImage/BackgroundImage.tsx","../src/components/SkipNavLink/SkipNavLink.tsx","../src/components/AbsoluteCenter/AbsoluteCenter.tsx","../src/components/PillsInput/PillsInput.tsx","../src/components/Burger/Burger.tsx","../src/components/Listbox/Listbox.tsx","../src/components/LinkOverlay/LinkOverlay.tsx","../src/components/Toggletip/Toggletip.tsx","../src/components/Disclosure/Disclosure.tsx","../src/components/RangeCalendar/RangeCalendar.tsx","../src/components/ClientOnly/ClientOnly.tsx"],"names":["sizeClasses","forwardRef","jsxs","jsx","textarea","createContext","useContext","variantClasses","Component","gapClasses","alignClasses","useState","useEffect","Fragment","useRef","placementClasses","cloneElement","sizeMap","createPortal","statusClasses","colorClasses","Image","defaultIcon","getDaysInMonth","isToday","DAYS","MONTHS","formatDate","isInRange","prev","next","targetElement","React","useCallback","typeIcons","dashLength","useMemo","start","end","value","justifyClasses","radiusClasses","useImperativeHandle"],"mappings":"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","file":"index.mjs","sourcesContent":["import { clsx, type ClassValue } from 'clsx';\n\nexport function cn(...inputs: ClassValue[]) {\n return clsx(inputs);\n}\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size, ColorScheme } from '../../types';\n\nexport type ButtonVariant = 'solid' | 'outline' | 'ghost' | 'link' | 'soft';\n\nexport interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: ButtonVariant;\n colorScheme?: ColorScheme;\n size?: Size;\n fullWidth?: boolean;\n loading?: boolean;\n loadingText?: string;\n leftIcon?: ReactNode;\n rightIcon?: ReactNode;\n iconOnly?: boolean;\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'btn-sm',\n md: '',\n lg: 'btn-lg',\n};\n\nconst variantClasses: Record<ButtonVariant, Record<ColorScheme, string>> = {\n solid: {\n primary: 'btn-primary',\n secondary: 'btn-secondary',\n success: 'btn-success',\n danger: 'btn-danger',\n warning: 'btn-warning',\n info: 'btn-info',\n light: 'btn-light',\n dark: 'btn-dark',\n },\n outline: {\n primary: 'btn-outline-primary',\n secondary: 'btn-outline-secondary',\n success: 'btn-outline-success',\n danger: 'btn-outline-danger',\n warning: 'btn-outline-warning',\n info: 'btn-outline-info',\n light: 'btn-outline-light',\n dark: 'btn-outline-dark',\n },\n ghost: {\n primary: 'btn-ghost btn-ghost-primary',\n secondary: 'btn-ghost btn-ghost-secondary',\n success: 'btn-ghost btn-ghost-success',\n danger: 'btn-ghost btn-ghost-danger',\n warning: 'btn-ghost btn-ghost-warning',\n info: 'btn-ghost btn-ghost-info',\n light: 'btn-ghost btn-ghost-light',\n dark: 'btn-ghost btn-ghost-dark',\n },\n link: {\n primary: 'btn-link',\n secondary: 'btn-link text-secondary',\n success: 'btn-link text-success',\n danger: 'btn-link text-danger',\n warning: 'btn-link text-warning',\n info: 'btn-link text-info',\n light: 'btn-link text-light',\n dark: 'btn-link text-dark',\n },\n soft: {\n primary: 'btn-soft-primary',\n secondary: 'btn-soft-secondary',\n success: 'btn-soft-success',\n danger: 'btn-soft-danger',\n warning: 'btn-soft-warning',\n info: 'btn-soft-info',\n light: 'btn-soft-light',\n dark: 'btn-soft-dark',\n },\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = 'solid',\n colorScheme = 'primary',\n size = 'md',\n fullWidth = false,\n loading = false,\n loadingText,\n leftIcon,\n rightIcon,\n iconOnly = false,\n disabled,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={isDisabled}\n className={cn(\n 'btn',\n variantClasses[variant][colorScheme],\n sizeClasses[size],\n fullWidth && 'btn-block',\n iconOnly && 'btn-icon',\n loading && 'btn-loading',\n className\n )}\n aria-busy={loading}\n aria-disabled={isDisabled}\n {...props}\n >\n {loading ? (\n <>\n <span className=\"btn-spinner\" aria-hidden=\"true\" />\n {loadingText && <span>{loadingText}</span>}\n {!loadingText && <span className=\"sr-only\">Loading</span>}\n </>\n ) : (\n <>\n {leftIcon && (\n <span className=\"btn-icon-left\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {children}\n {rightIcon && (\n <span className=\"btn-icon-right\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </>\n )}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","import { forwardRef, useState, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size } from '../../types';\n\nexport interface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'prefix'> {\n /** Input size variant */\n size?: Size;\n /** Error state */\n error?: boolean;\n /** Prefix element (icon or text) */\n prefix?: ReactNode;\n /** Suffix element (icon or text) */\n suffix?: ReactNode;\n /** Show clear button */\n allowClear?: boolean;\n /** Callback when clear button is clicked */\n onClear?: () => void;\n /** Full width input */\n fullWidth?: boolean;\n /** Wrapper className */\n wrapperClassName?: string;\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'form-control-sm',\n md: '',\n lg: 'form-control-lg',\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n size = 'md',\n error = false,\n prefix,\n suffix,\n allowClear = false,\n onClear,\n fullWidth = false,\n disabled,\n className,\n wrapperClassName,\n value,\n defaultValue,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (!isControlled) {\n setInternalValue(e.target.value);\n }\n onChange?.(e);\n };\n\n const handleClear = () => {\n if (!isControlled) {\n setInternalValue('');\n }\n onClear?.();\n // Create a synthetic event for onChange\n const syntheticEvent = {\n target: { value: '' },\n currentTarget: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n };\n\n const showClear = allowClear && currentValue && !disabled;\n const hasPrefix = !!prefix;\n const hasSuffix = !!suffix || showClear;\n\n if (hasPrefix || hasSuffix) {\n return (\n <div\n className={cn(\n 'form-input-wrapper',\n hasPrefix && 'has-prefix',\n hasSuffix && 'has-suffix',\n fullWidth && 'w-100',\n wrapperClassName\n )}\n >\n {prefix && <span className=\"form-input-prefix\">{prefix}</span>}\n <input\n ref={ref}\n value={currentValue}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n 'form-control',\n sizeClasses[size],\n error && 'is-invalid',\n className\n )}\n aria-invalid={error}\n {...props}\n />\n {(suffix || showClear) && (\n <span className=\"form-input-suffix\">\n {showClear && (\n <button\n type=\"button\"\n className=\"form-input-clear\"\n onClick={handleClear}\n aria-label=\"Clear input\"\n tabIndex={-1}\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n {suffix}\n </span>\n )}\n </div>\n );\n }\n\n return (\n <input\n ref={ref}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? defaultValue : undefined}\n onChange={onChange}\n disabled={disabled}\n className={cn(\n 'form-control',\n sizeClasses[size],\n error && 'is-invalid',\n fullWidth && 'w-100',\n className\n )}\n aria-invalid={error}\n {...props}\n />\n );\n }\n);\n\nInput.displayName = 'Input';\n","import { forwardRef, useRef, useEffect, type TextareaHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size } from '../../types';\n\nexport interface TextareaProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'size'> {\n /** Textarea size variant */\n size?: Size;\n /** Error state */\n error?: boolean;\n /** Auto grow based on content */\n autoGrow?: boolean;\n /** Minimum rows for auto grow */\n minRows?: number;\n /** Maximum rows for auto grow */\n maxRows?: number;\n /** Show character counter */\n showCount?: boolean;\n /** Full width textarea */\n fullWidth?: boolean;\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'form-control-sm',\n md: '',\n lg: 'form-control-lg',\n};\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(\n (\n {\n size = 'md',\n error = false,\n autoGrow = false,\n minRows = 2,\n maxRows = 10,\n showCount = false,\n fullWidth = false,\n maxLength,\n className,\n value,\n defaultValue,\n onChange,\n rows,\n ...props\n },\n ref\n ) => {\n const internalRef = useRef<HTMLTextAreaElement>(null);\n const textareaRef = (ref as React.RefObject<HTMLTextAreaElement>) || internalRef;\n\n const adjustHeight = () => {\n const textarea = textareaRef.current;\n if (!textarea || !autoGrow) return;\n\n textarea.style.height = 'auto';\n const lineHeight = parseInt(getComputedStyle(textarea).lineHeight) || 20;\n const minHeight = minRows * lineHeight;\n const maxHeight = maxRows * lineHeight;\n const scrollHeight = textarea.scrollHeight;\n\n textarea.style.height = `${Math.min(Math.max(scrollHeight, minHeight), maxHeight)}px`;\n };\n\n useEffect(() => {\n adjustHeight();\n }, [value, defaultValue]);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n adjustHeight();\n onChange?.(e);\n };\n\n const currentLength = String(value ?? defaultValue ?? '').length;\n\n const textarea = (\n <textarea\n ref={textareaRef}\n value={value}\n defaultValue={defaultValue}\n onChange={handleChange}\n maxLength={maxLength}\n rows={autoGrow ? minRows : rows}\n className={cn(\n 'form-control',\n sizeClasses[size],\n error && 'is-invalid',\n autoGrow && 'form-control-autogrow',\n fullWidth && 'w-100',\n className\n )}\n aria-invalid={error}\n {...props}\n />\n );\n\n if (showCount && maxLength) {\n return (\n <div className={cn('form-textarea-wrapper', fullWidth && 'w-100')}>\n {textarea}\n <div className=\"form-character-counter\">\n <span className={currentLength >= maxLength ? 'text-danger' : ''}>\n {currentLength}\n </span>\n <span> / {maxLength}</span>\n </div>\n </div>\n );\n }\n\n return textarea;\n }\n);\n\nTextarea.displayName = 'Textarea';\n","import { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size, ColorScheme } from '../../types';\n\nexport interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Checkbox label */\n label?: ReactNode;\n /** Checkbox size */\n size?: Size;\n /** Color scheme */\n colorScheme?: ColorScheme;\n /** Indeterminate state */\n indeterminate?: boolean;\n /** Error state */\n error?: boolean;\n /** Label position */\n labelPosition?: 'left' | 'right';\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'form-check-sm',\n md: '',\n lg: 'form-check-lg',\n};\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n size = 'md',\n colorScheme = 'primary',\n indeterminate = false,\n error = false,\n labelPosition = 'right',\n disabled,\n className,\n id,\n ...props\n },\n ref\n ) => {\n const checkboxId = id || `checkbox-${Math.random().toString(36).substr(2, 9)}`;\n\n return (\n <div\n className={cn(\n 'form-check',\n sizeClasses[size],\n labelPosition === 'left' && 'form-check-reverse',\n error && 'is-invalid',\n className\n )}\n >\n <input\n ref={(node) => {\n if (node) {\n node.indeterminate = indeterminate;\n }\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n type=\"checkbox\"\n id={checkboxId}\n disabled={disabled}\n className={cn(\n 'form-check-input',\n colorScheme !== 'primary' && `form-check-${colorScheme}`\n )}\n aria-invalid={error}\n {...props}\n />\n {label && (\n <label\n htmlFor={checkboxId}\n className=\"form-check-label\"\n >\n {label}\n </label>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = 'Checkbox';\n","import { forwardRef, createContext, useContext, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size, ColorScheme } from '../../types';\n\n// Radio Group Context\ninterface RadioGroupContextValue {\n name?: string;\n value?: string;\n onChange?: (value: string) => void;\n size?: Size;\n colorScheme?: ColorScheme;\n disabled?: boolean;\n}\n\nconst RadioGroupContext = createContext<RadioGroupContextValue>({});\n\n// Radio Group Component\nexport interface RadioGroupProps {\n children: ReactNode;\n name?: string;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n size?: Size;\n colorScheme?: ColorScheme;\n disabled?: boolean;\n direction?: 'horizontal' | 'vertical';\n className?: string;\n}\n\nexport const RadioGroup = ({\n children,\n name,\n value,\n onChange,\n size = 'md',\n colorScheme = 'primary',\n disabled = false,\n direction = 'vertical',\n className,\n}: RadioGroupProps) => {\n return (\n <RadioGroupContext.Provider value={{ name, value, onChange, size, colorScheme, disabled }}>\n <div\n role=\"radiogroup\"\n className={cn(\n 'form-radio-group',\n direction === 'horizontal' && 'form-radio-group-horizontal',\n className\n )}\n style={{\n display: 'flex',\n flexDirection: direction === 'horizontal' ? 'row' : 'column',\n gap: direction === 'horizontal' ? '1.5rem' : '0.5rem',\n }}\n >\n {children}\n </div>\n </RadioGroupContext.Provider>\n );\n};\n\n// Radio Component\nexport interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Radio label */\n label?: ReactNode;\n /** Radio size */\n size?: Size;\n /** Color scheme */\n colorScheme?: ColorScheme;\n /** Error state */\n error?: boolean;\n /** Label position */\n labelPosition?: 'left' | 'right';\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'form-check-sm',\n md: '',\n lg: 'form-check-lg',\n};\n\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n size: sizeProp,\n colorScheme: colorSchemeProp,\n error = false,\n labelPosition = 'right',\n disabled: disabledProp,\n className,\n id,\n value,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const group = useContext(RadioGroupContext);\n\n const size = sizeProp ?? group.size ?? 'md';\n const colorScheme = colorSchemeProp ?? group.colorScheme ?? 'primary';\n const disabled = disabledProp ?? group.disabled ?? false;\n const name = props.name ?? group.name;\n\n const isChecked = group.value !== undefined ? group.value === value : checked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (group.onChange && value !== undefined) {\n group.onChange(String(value));\n }\n onChange?.(e);\n };\n\n const radioId = id || `radio-${Math.random().toString(36).substr(2, 9)}`;\n\n return (\n <div\n className={cn(\n 'form-check',\n sizeClasses[size],\n labelPosition === 'left' && 'form-check-reverse',\n error && 'is-invalid',\n className\n )}\n >\n <input\n ref={ref}\n type=\"radio\"\n id={radioId}\n name={name}\n value={value}\n checked={isChecked}\n disabled={disabled}\n onChange={handleChange}\n className={cn(\n 'form-check-input',\n colorScheme !== 'primary' && `form-check-${colorScheme}`\n )}\n aria-invalid={error}\n {...props}\n />\n {label && (\n <label htmlFor={radioId} className=\"form-check-label\">\n {label}\n </label>\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = 'Radio';\nRadioGroup.displayName = 'RadioGroup';\n","import { forwardRef, type SelectHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size } from '../../types';\n\nexport interface SelectOption {\n value: string | number;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectOptionGroup {\n label: string;\n options: SelectOption[];\n}\n\nexport interface SelectProps extends Omit<SelectHTMLAttributes<HTMLSelectElement>, 'size' | 'prefix'> {\n /** Select options */\n options?: (SelectOption | SelectOptionGroup)[];\n /** Placeholder text */\n placeholder?: string;\n /** Select size */\n size?: Size;\n /** Error state */\n error?: boolean;\n /** Full width */\n fullWidth?: boolean;\n /** Loading state */\n loading?: boolean;\n /** Prefix element */\n prefixIcon?: ReactNode;\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'form-select-sm',\n md: '',\n lg: 'form-select-lg',\n};\n\nconst isOptionGroup = (option: SelectOption | SelectOptionGroup): option is SelectOptionGroup => {\n return 'options' in option;\n};\n\nexport const Select = forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n options = [],\n placeholder,\n size = 'md',\n error = false,\n fullWidth = false,\n loading = false,\n prefixIcon,\n disabled,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const isDisabled = disabled || loading;\n\n const renderOptions = () => {\n if (children) return children;\n\n return options.map((option, index) => {\n if (isOptionGroup(option)) {\n return (\n <optgroup key={`group-${index}`} label={option.label}>\n {option.options.map((opt) => (\n <option key={opt.value} value={opt.value} disabled={opt.disabled}>\n {opt.label}\n </option>\n ))}\n </optgroup>\n );\n }\n\n return (\n <option key={option.value} value={option.value} disabled={option.disabled}>\n {option.label}\n </option>\n );\n });\n };\n\n const selectElement = (\n <select\n ref={ref}\n disabled={isDisabled}\n className={cn(\n 'form-select',\n sizeClasses[size],\n error && 'is-invalid',\n loading && 'form-select-loading',\n fullWidth && 'w-100',\n className\n )}\n aria-invalid={error}\n aria-busy={loading}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {renderOptions()}\n </select>\n );\n\n if (prefixIcon) {\n return (\n <div className={cn('form-select-wrapper has-prefix', fullWidth && 'w-100')}>\n <span className=\"form-select-prefix\">{prefixIcon}</span>\n {selectElement}\n </div>\n );\n }\n\n return selectElement;\n }\n);\n\nSelect.displayName = 'Select';\n","import { forwardRef, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { Size, ColorScheme } from '../../types';\n\nexport interface SwitchProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type'> {\n /** Switch label */\n label?: ReactNode;\n /** Switch size */\n size?: Size;\n /** Color scheme */\n colorScheme?: ColorScheme;\n /** Loading state */\n loading?: boolean;\n /** Error state */\n error?: boolean;\n /** Label position */\n labelPosition?: 'left' | 'right';\n}\n\nconst sizeClasses: Record<Size, string> = {\n sm: 'form-switch-sm',\n md: '',\n lg: 'form-switch-lg',\n};\n\nexport const Switch = forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = 'md',\n colorScheme = 'primary',\n loading = false,\n error = false,\n labelPosition = 'right',\n disabled,\n className,\n id,\n ...props\n },\n ref\n ) => {\n const switchId = id || `switch-${Math.random().toString(36).substr(2, 9)}`;\n const isDisabled = disabled || loading;\n\n return (\n <div\n className={cn(\n 'form-check form-switch',\n sizeClasses[size],\n labelPosition === 'left' && 'form-check-reverse',\n error && 'is-invalid',\n className\n )}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n role=\"switch\"\n id={switchId}\n disabled={isDisabled}\n className={cn(\n 'form-check-input',\n colorScheme !== 'primary' && `form-check-${colorScheme}`,\n loading && 'form-switch-loading'\n )}\n aria-invalid={error}\n aria-busy={loading}\n {...props}\n />\n {label && (\n <label htmlFor={switchId} className=\"form-check-label\">\n {loading && <span className=\"spinner-border spinner-border-sm me-2\" />}\n {label}\n </label>\n )}\n </div>\n );\n }\n);\n\nSwitch.displayName = 'Switch';\n","import { forwardRef, createContext, useContext, type FormHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\n// Form Context\ninterface FormContextValue {\n layout?: 'vertical' | 'horizontal' | 'inline';\n size?: 'sm' | 'md' | 'lg';\n disabled?: boolean;\n requiredMark?: boolean | 'optional';\n}\n\nconst FormContext = createContext<FormContextValue>({});\n\nexport const useFormContext = () => useContext(FormContext);\n\n// Form Component\nexport interface FormProps extends FormHTMLAttributes<HTMLFormElement> {\n /** Form layout */\n layout?: 'vertical' | 'horizontal' | 'inline';\n /** Form size */\n size?: 'sm' | 'md' | 'lg';\n /** Disable all form fields */\n disabled?: boolean;\n /** Show required mark */\n requiredMark?: boolean | 'optional';\n}\n\nexport const Form = forwardRef<HTMLFormElement, FormProps>(\n (\n {\n layout = 'vertical',\n size = 'md',\n disabled = false,\n requiredMark = true,\n className,\n children,\n onSubmit,\n ...props\n },\n ref\n ) => {\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n onSubmit?.(e);\n };\n\n return (\n <FormContext.Provider value={{ layout, size, disabled, requiredMark }}>\n <form\n ref={ref}\n onSubmit={handleSubmit}\n className={cn(\n 'form',\n `form-${layout}`,\n disabled && 'form-disabled',\n className\n )}\n {...props}\n >\n {children}\n </form>\n </FormContext.Provider>\n );\n }\n);\n\nForm.displayName = 'Form';\n\n// FormItem Component\nexport interface FormItemProps {\n /** Label text */\n label?: ReactNode;\n /** Helper text */\n helperText?: ReactNode;\n /** Error message */\n error?: ReactNode;\n /** Required field */\n required?: boolean;\n /** HTML for attribute */\n htmlFor?: string;\n /** Children elements */\n children?: ReactNode;\n /** Additional class name */\n className?: string;\n}\n\nexport const FormItem = ({\n label,\n helperText,\n error,\n required = false,\n htmlFor,\n children,\n className,\n}: FormItemProps) => {\n const { layout, requiredMark } = useFormContext();\n const hasError = !!error;\n\n const showRequiredMark = required && requiredMark === true;\n const showOptionalMark = !required && requiredMark === 'optional';\n\n return (\n <div\n className={cn(\n 'form-group',\n layout === 'horizontal' && 'form-group-horizontal',\n layout === 'inline' && 'form-group-inline',\n hasError && 'has-error',\n className\n )}\n >\n {label && (\n <label htmlFor={htmlFor} className=\"form-label\">\n {label}\n {showRequiredMark && <span className=\"form-required\">*</span>}\n {showOptionalMark && <span className=\"form-optional\">(optional)</span>}\n </label>\n )}\n <div className=\"form-control-wrapper\">\n {children}\n {helperText && !hasError && (\n <div className=\"form-text\">{helperText}</div>\n )}\n {hasError && (\n <div className=\"invalid-feedback\" role=\"alert\">\n {error}\n </div>\n )}\n </div>\n </div>\n );\n};\n\nFormItem.displayName = 'FormItem';\n","import { forwardRef, type HTMLAttributes, type ElementType } from 'react';\nimport { cn } from '../../utils/cn';\nimport type { ColorScheme } from '../../types';\n\ntype TypographyVariant = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'body1' | 'body2' | 'caption' | 'overline';\n\nexport interface TypographyProps extends HTMLAttributes<HTMLElement> {\n /** Typography variant */\n variant?: TypographyVariant;\n /** Custom element type */\n as?: ElementType;\n /** Color */\n color?: ColorScheme | 'muted' | 'inherit';\n /** Text alignment */\n align?: 'left' | 'center' | 'right' | 'justify';\n /** Truncate text */\n truncate?: boolean;\n /** Number of lines before truncation */\n lineClamp?: number;\n /** Font weight */\n weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\n /** Italic text */\n italic?: boolean;\n /** Underline text */\n underline?: boolean;\n /** Strikethrough text */\n strikethrough?: boolean;\n /** Disable margin */\n noMargin?: boolean;\n}\n\nconst variantMapping: Record<TypographyVariant, ElementType> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n body1: 'p',\n body2: 'p',\n caption: 'span',\n overline: 'span',\n};\n\nconst variantClasses: Record<TypographyVariant, string> = {\n h1: 'h1',\n h2: 'h2',\n h3: 'h3',\n h4: 'h4',\n h5: 'h5',\n h6: 'h6',\n body1: 'text-body',\n body2: 'text-body text-sm',\n caption: 'text-caption',\n overline: 'text-overline',\n};\n\nconst colorClasses: Record<string, string> = {\n primary: 'text-primary',\n secondary: 'text-secondary',\n success: 'text-success',\n danger: 'text-danger',\n warning: 'text-warning',\n info: 'text-info',\n muted: 'text-muted',\n inherit: '',\n};\n\nconst weightClasses: Record<string, string> = {\n light: 'fw-light',\n normal: 'fw-normal',\n medium: 'fw-medium',\n semibold: 'fw-semibold',\n bold: 'fw-bold',\n};\n\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(\n (\n {\n variant = 'body1',\n as,\n color,\n align,\n truncate = false,\n lineClamp,\n weight,\n italic = false,\n underline = false,\n strikethrough = false,\n noMargin = false,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const Component = as || variantMapping[variant];\n\n return (\n <Component\n ref={ref}\n className={cn(\n variantClasses[variant],\n color && colorClasses[color],\n align && `text-${align}`,\n truncate && 'text-truncate',\n lineClamp && 'line-clamp',\n weight && weightClasses[weight],\n italic && 'fst-italic',\n underline && 'text-decoration-underline',\n strikethrough && 'text-decoration-line-through',\n noMargin && 'mb-0',\n className\n )}\n style={{\n ...style,\n ...(lineClamp && {\n display: '-webkit-box',\n WebkitLineClamp: lineClamp,\n WebkitBoxOrient: 'vertical',\n overflow: 'hidden',\n }),\n }}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nTypography.displayName = 'Typography';\n\n// Convenience components\nexport const Heading = forwardRef<HTMLHeadingElement, Omit<TypographyProps, 'variant'> & { level?: 1 | 2 | 3 | 4 | 5 | 6 }>(\n ({ level = 1, ...props }, ref) => {\n const variant = `h${level}` as TypographyVariant;\n return <Typography ref={ref} variant={variant} {...props} />;\n }\n);\n\nHeading.displayName = 'Heading';\n\nexport const Text = forwardRef<HTMLParagraphElement, Omit<TypographyProps, 'variant'> & { size?: 'sm' | 'md' }>(\n ({ size = 'md', ...props }, ref) => {\n const variant = size === 'sm' ? 'body2' : 'body1';\n return <Typography ref={ref} variant={variant} {...props} />;\n }\n);\n\nText.displayName = 'Text';\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ColSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 'auto';\ntype Gap = 0 | 1 | 2 | 3 | 4 | 5;\n\nexport interface GridProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of columns */\n columns?: number;\n /** Gap between items */\n gap?: Gap;\n /** Row gap */\n rowGap?: Gap;\n /** Column gap */\n columnGap?: Gap;\n /** Align items */\n alignItems?: CSSProperties['alignItems'];\n /** Justify content */\n justifyContent?: CSSProperties['justifyContent'];\n}\n\nexport interface ColProps extends HTMLAttributes<HTMLDivElement> {\n /** Column span */\n span?: ColSpan;\n /** Offset */\n offset?: number;\n /** Small breakpoint span */\n sm?: ColSpan;\n /** Medium breakpoint span */\n md?: ColSpan;\n /** Large breakpoint span */\n lg?: ColSpan;\n /** Extra large breakpoint span */\n xl?: ColSpan;\n}\n\nconst gapClasses: Record<Gap, string> = {\n 0: 'g-0',\n 1: 'g-1',\n 2: 'g-2',\n 3: 'g-3',\n 4: 'g-4',\n 5: 'g-5',\n};\n\nexport const Grid = forwardRef<HTMLDivElement, GridProps>(\n (\n {\n columns,\n gap = 3,\n rowGap,\n columnGap,\n alignItems,\n justifyContent,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const gridStyle: CSSProperties = {\n ...style,\n ...(columns && { gridTemplateColumns: `repeat(${columns}, 1fr)` }),\n ...(alignItems && { alignItems }),\n ...(justifyContent && { justifyContent }),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'row',\n gap !== undefined && gapClasses[gap],\n rowGap !== undefined && `gy-${rowGap}`,\n columnGap !== undefined && `gx-${columnGap}`,\n className\n )}\n style={gridStyle}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nGrid.displayName = 'Grid';\n\nexport const Col = forwardRef<HTMLDivElement, ColProps>(\n (\n {\n span,\n offset,\n sm,\n md,\n lg,\n xl,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n span ? `col-${span}` : 'col',\n offset && `offset-${offset}`,\n sm && `col-sm-${sm}`,\n md && `col-md-${md}`,\n lg && `col-lg-${lg}`,\n xl && `col-xl-${xl}`,\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCol.displayName = 'Col';\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype Gap = 0 | 1 | 2 | 3 | 4 | 5;\n\nexport interface FlexProps extends HTMLAttributes<HTMLDivElement> {\n /** Flex direction */\n direction?: CSSProperties['flexDirection'];\n /** Align items */\n align?: CSSProperties['alignItems'];\n /** Justify content */\n justify?: CSSProperties['justifyContent'];\n /** Flex wrap */\n wrap?: CSSProperties['flexWrap'];\n /** Gap between items */\n gap?: Gap;\n /** Display inline-flex */\n inline?: boolean;\n}\n\nconst gapClasses: Record<Gap, string> = {\n 0: 'gap-0',\n 1: 'gap-1',\n 2: 'gap-2',\n 3: 'gap-3',\n 4: 'gap-4',\n 5: 'gap-5',\n};\n\nconst directionClasses: Record<string, string> = {\n row: 'flex-row',\n 'row-reverse': 'flex-row-reverse',\n column: 'flex-column',\n 'column-reverse': 'flex-column-reverse',\n};\n\nconst alignClasses: Record<string, string> = {\n 'flex-start': 'align-items-start',\n 'flex-end': 'align-items-end',\n center: 'align-items-center',\n baseline: 'align-items-baseline',\n stretch: 'align-items-stretch',\n start: 'align-items-start',\n end: 'align-items-end',\n};\n\nconst justifyClasses: Record<string, string> = {\n 'flex-start': 'justify-content-start',\n 'flex-end': 'justify-content-end',\n center: 'justify-content-center',\n 'space-between': 'justify-content-between',\n 'space-around': 'justify-content-around',\n 'space-evenly': 'justify-content-evenly',\n start: 'justify-content-start',\n end: 'justify-content-end',\n};\n\nconst wrapClasses: Record<string, string> = {\n wrap: 'flex-wrap',\n nowrap: 'flex-nowrap',\n 'wrap-reverse': 'flex-wrap-reverse',\n};\n\nexport const Flex = forwardRef<HTMLDivElement, FlexProps>(\n (\n {\n direction = 'row',\n align,\n justify,\n wrap,\n gap,\n inline = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n inline ? 'd-inline-flex' : 'd-flex',\n direction && directionClasses[direction],\n align && alignClasses[align],\n justify && justifyClasses[justify],\n wrap && wrapClasses[wrap],\n gap !== undefined && gapClasses[gap],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nFlex.displayName = 'Flex';\n","import { forwardRef, type HTMLAttributes, Children, isValidElement } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype SpaceSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;\n\nexport interface SpaceProps extends HTMLAttributes<HTMLDivElement> {\n /** Direction of space */\n direction?: 'horizontal' | 'vertical';\n /** Size of spacing */\n size?: SpaceSize;\n /** Wrap items */\n wrap?: boolean;\n /** Alignment */\n align?: 'start' | 'end' | 'center' | 'baseline';\n /** Divider between items */\n divider?: React.ReactNode;\n}\n\nconst sizeMap: Record<string, string> = {\n xs: '0.25rem',\n sm: '0.5rem',\n md: '1rem',\n lg: '1.5rem',\n xl: '2rem',\n};\n\nexport const Space = forwardRef<HTMLDivElement, SpaceProps>(\n (\n {\n direction = 'horizontal',\n size = 'md',\n wrap = false,\n align = 'center',\n divider,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const gap = typeof size === 'number' ? `${size}px` : sizeMap[size];\n const items = Children.toArray(children).filter(isValidElement);\n\n const alignClasses: Record<string, string> = {\n start: 'align-items-start',\n end: 'align-items-end',\n center: 'align-items-center',\n baseline: 'align-items-baseline',\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'd-flex',\n direction === 'vertical' ? 'flex-column' : 'flex-row',\n wrap && 'flex-wrap',\n alignClasses[align],\n className\n )}\n style={{\n gap: divider ? undefined : gap,\n ...style,\n }}\n {...props}\n >\n {items.map((child, index) => (\n <div key={index} className=\"space-item\" style={{ display: 'flex' }}>\n {child}\n {divider && index < items.length - 1 && (\n <div\n className=\"space-divider\"\n style={{\n margin: direction === 'horizontal' ? `0 ${gap}` : `${gap} 0`,\n }}\n >\n {divider}\n </div>\n )}\n </div>\n ))}\n </div>\n );\n }\n);\n\nSpace.displayName = 'Space';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ContainerSize = 'sm' | 'md' | 'lg' | 'xl' | 'xxl' | 'fluid';\n\nexport interface ContainerProps extends HTMLAttributes<HTMLDivElement> {\n /** Container max-width size */\n size?: ContainerSize;\n /** Center the container */\n centered?: boolean;\n /** Add padding */\n padding?: boolean;\n}\n\nconst sizeClasses: Record<ContainerSize, string> = {\n sm: 'container-sm',\n md: 'container-md',\n lg: 'container-lg',\n xl: 'container-xl',\n xxl: 'container-xxl',\n fluid: 'container-fluid',\n};\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n (\n {\n size,\n centered = true,\n padding = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n size ? sizeClasses[size] : 'container',\n !centered && 'ms-0',\n !padding && 'px-0',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nContainer.displayName = 'Container';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CardProps extends HTMLAttributes<HTMLDivElement> {\n /** Card variant */\n variant?: 'default' | 'outlined' | 'filled' | 'elevated';\n /** Hover effect */\n hoverable?: boolean;\n /** Clickable card */\n clickable?: boolean;\n /** Card size */\n size?: 'sm' | 'md' | 'lg';\n /** Full width */\n fullWidth?: boolean;\n}\n\nexport interface CardHeaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Header title */\n title?: ReactNode;\n /** Header subtitle */\n subtitle?: ReactNode;\n /** Extra content (right side) */\n extra?: ReactNode;\n}\n\nexport interface CardBodyProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport interface CardFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\nconst sizeClasses = {\n sm: 'card-sm',\n md: '',\n lg: 'card-lg',\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\n (\n {\n variant = 'default',\n hoverable = false,\n clickable = false,\n size = 'md',\n fullWidth = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'card',\n variant === 'outlined' && 'card-outlined',\n variant === 'filled' && 'card-filled',\n variant === 'elevated' && 'card-elevated',\n hoverable && 'card-hover',\n clickable && 'card-clickable',\n sizeClasses[size],\n fullWidth && 'w-100',\n className\n )}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable ? 0 : undefined}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = 'Card';\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\n ({ title, subtitle, extra, className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('card-header', className)} {...props}>\n {(title || subtitle) && (\n <div className=\"card-header-content\">\n {title && <div className=\"card-title\">{title}</div>}\n {subtitle && <div className=\"card-subtitle\">{subtitle}</div>}\n </div>\n )}\n {extra && <div className=\"card-header-extra\">{extra}</div>}\n {children}\n </div>\n );\n }\n);\n\nCardHeader.displayName = 'CardHeader';\n\nexport const CardBody = forwardRef<HTMLDivElement, CardBodyProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('card-body', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nCardBody.displayName = 'CardBody';\n\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('card-footer', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nCardFooter.displayName = 'CardFooter';\n","import { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype AlertVariant = 'filled' | 'outlined' | 'soft';\ntype AlertStatus = 'info' | 'success' | 'warning' | 'danger';\n\nexport interface AlertProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Alert status/type */\n status?: AlertStatus;\n /** Alert variant */\n variant?: AlertVariant;\n /** Alert title */\n title?: ReactNode;\n /** Alert icon */\n icon?: ReactNode;\n /** Show close button */\n closable?: boolean;\n /** Close callback */\n onClose?: () => void;\n /** Custom close button */\n closeButton?: ReactNode;\n /** Action buttons */\n action?: ReactNode;\n}\n\nconst statusClasses: Record<AlertStatus, string> = {\n info: 'alert-info',\n success: 'alert-success',\n warning: 'alert-warning',\n danger: 'alert-danger',\n};\n\nconst defaultIcons: Record<AlertStatus, ReactNode> = {\n info: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n success: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9 12l2 2 4-4\" />\n </svg>\n ),\n warning: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n ),\n danger: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M15 9l-6 6M9 9l6 6\" />\n </svg>\n ),\n};\n\nexport const Alert = forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n status = 'info',\n variant = 'soft',\n title,\n icon,\n closable = false,\n onClose,\n closeButton,\n action,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = useState(true);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) return null;\n\n const alertIcon = icon === undefined ? defaultIcons[status] : icon;\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(\n 'alert',\n statusClasses[status],\n variant === 'outlined' && 'alert-outlined',\n variant === 'filled' && 'alert-filled',\n className\n )}\n {...props}\n >\n {alertIcon && <div className=\"alert-icon\">{alertIcon}</div>}\n <div className=\"alert-content\">\n {title && <div className=\"alert-title\">{title}</div>}\n {children && <div className=\"alert-description\">{children}</div>}\n </div>\n {action && <div className=\"alert-action\">{action}</div>}\n {closable && (\n closeButton || (\n <button\n type=\"button\"\n className=\"alert-close\"\n onClick={handleClose}\n aria-label=\"Close alert\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"16\" height=\"16\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n )\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = 'Alert';\n","import { forwardRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\nimport { createPortal } from 'react-dom';\n\ntype ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\n\nexport interface ModalProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Whether modal is open */\n isOpen: boolean;\n /** Close callback */\n onClose: () => void;\n /** Modal title */\n title?: ReactNode;\n /** Modal size */\n size?: ModalSize;\n /** Show close button */\n showCloseButton?: boolean;\n /** Close on overlay click */\n closeOnOverlayClick?: boolean;\n /** Close on escape key */\n closeOnEscape?: boolean;\n /** Center modal vertically */\n centered?: boolean;\n /** Scrollable body */\n scrollable?: boolean;\n /** Footer content */\n footer?: ReactNode;\n /** Prevent body scroll when open */\n lockScroll?: boolean;\n}\n\nconst sizeClasses: Record<ModalSize, string> = {\n sm: 'modal-sm',\n md: '',\n lg: 'modal-lg',\n xl: 'modal-xl',\n full: 'modal-fullscreen',\n};\n\nexport const Modal = forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n isOpen,\n onClose,\n title,\n size = 'md',\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n centered = false,\n scrollable = false,\n footer,\n lockScroll = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n // Handle escape key\n useEffect(() => {\n if (!isOpen || !closeOnEscape) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') onClose();\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Lock body scroll\n useEffect(() => {\n if (!lockScroll) return;\n\n if (isOpen) {\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.body.style.overflow = '';\n };\n }, [isOpen, lockScroll]);\n\n if (!isOpen) return null;\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n onClose();\n }\n };\n\n const modalContent = (\n <div\n className={cn('modal', isOpen && 'show')}\n style={{ display: 'block' }}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'modal-title' : undefined}\n onClick={handleOverlayClick}\n >\n <div\n className={cn(\n 'modal-dialog',\n sizeClasses[size],\n centered && 'modal-dialog-centered',\n scrollable && 'modal-dialog-scrollable'\n )}\n >\n <div ref={ref} className={cn('modal-content', className)} {...props}>\n {(title || showCloseButton) && (\n <div className=\"modal-header\">\n {title && (\n <h5 className=\"modal-title\" id=\"modal-title\">\n {title}\n </h5>\n )}\n {showCloseButton && (\n <button\n type=\"button\"\n className=\"btn-close\"\n onClick={onClose}\n aria-label=\"Close modal\"\n />\n )}\n </div>\n )}\n <div className=\"modal-body\">{children}</div>\n {footer && <div className=\"modal-footer\">{footer}</div>}\n </div>\n </div>\n <div className=\"modal-backdrop show\" />\n </div>\n );\n\n if (typeof window === 'undefined') return null;\n\n return createPortal(modalContent, document.body);\n }\n);\n\nModal.displayName = 'Modal';\n\n// Convenience exports\nexport interface ModalHeaderProps extends HTMLAttributes<HTMLDivElement> {\n onClose?: () => void;\n showCloseButton?: boolean;\n}\n\nexport const ModalHeader = forwardRef<HTMLDivElement, ModalHeaderProps>(\n ({ onClose, showCloseButton = true, className, children, ...props }, ref) => (\n <div ref={ref} className={cn('modal-header', className)} {...props}>\n {children}\n {showCloseButton && onClose && (\n <button type=\"button\" className=\"btn-close\" onClick={onClose} aria-label=\"Close\" />\n )}\n </div>\n )\n);\n\nModalHeader.displayName = 'ModalHeader';\n\nexport const ModalBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('modal-body', className)} {...props} />\n )\n);\n\nModalBody.displayName = 'ModalBody';\n\nexport const ModalFooter = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('modal-footer', className)} {...props} />\n )\n);\n\nModalFooter.displayName = 'ModalFooter';\n","import { createContext, useContext, useState, useEffect, type ReactNode } from 'react';\n\ntype Theme = 'light' | 'dark' | 'system';\ntype ColorScheme = 'light' | 'dark';\n\ninterface ZenKitContextValue {\n theme: Theme;\n colorScheme: ColorScheme;\n setTheme: (theme: Theme) => void;\n toggleTheme: () => void;\n}\n\nconst ZenKitContext = createContext<ZenKitContextValue | undefined>(undefined);\n\nexport interface ZenKitProviderProps {\n children: ReactNode;\n /** Default theme */\n defaultTheme?: Theme;\n /** Storage key for persisting theme */\n storageKey?: string;\n /** Attribute to set on document element */\n attribute?: 'class' | 'data-theme';\n}\n\nexport const ZenKitProvider = ({\n children,\n defaultTheme = 'system',\n storageKey = 'zenkit-theme',\n attribute = 'data-theme',\n}: ZenKitProviderProps) => {\n const [theme, setThemeState] = useState<Theme>(() => {\n if (typeof window === 'undefined') return defaultTheme;\n return (localStorage.getItem(storageKey) as Theme) || defaultTheme;\n });\n\n const [colorScheme, setColorScheme] = useState<ColorScheme>('light');\n\n // Resolve the actual color scheme based on theme and system preference\n useEffect(() => {\n const resolveColorScheme = (): ColorScheme => {\n if (theme === 'system') {\n if (typeof window === 'undefined') return 'light';\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return theme;\n };\n\n const updateColorScheme = () => {\n const resolved = resolveColorScheme();\n setColorScheme(resolved);\n\n // Apply to document\n const root = document.documentElement;\n if (attribute === 'class') {\n root.classList.remove('light', 'dark');\n root.classList.add(resolved);\n } else {\n root.setAttribute('data-theme', resolved);\n }\n };\n\n updateColorScheme();\n\n // Listen for system theme changes\n if (theme === 'system' && typeof window !== 'undefined') {\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n const handler = () => updateColorScheme();\n mediaQuery.addEventListener('change', handler);\n return () => mediaQuery.removeEventListener('change', handler);\n }\n }, [theme, attribute]);\n\n const setTheme = (newTheme: Theme) => {\n setThemeState(newTheme);\n if (typeof window !== 'undefined') {\n localStorage.setItem(storageKey, newTheme);\n }\n };\n\n const toggleTheme = () => {\n setTheme(colorScheme === 'light' ? 'dark' : 'light');\n };\n\n return (\n <ZenKitContext.Provider value={{ theme, colorScheme, setTheme, toggleTheme }}>\n {children}\n </ZenKitContext.Provider>\n );\n};\n\nZenKitProvider.displayName = 'ZenKitProvider';\n\nexport const useTheme = (): ZenKitContextValue => {\n const context = useContext(ZenKitContext);\n if (context === undefined) {\n throw new Error('useTheme must be used within a ZenKitProvider');\n }\n return context;\n};\n\n// Optional hook that doesn't throw if used outside provider\nexport const useThemeOptional = (): ZenKitContextValue | undefined => {\n return useContext(ZenKitContext);\n};\n","import {\n forwardRef,\n createContext,\n useContext,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type ButtonHTMLAttributes,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\ntype TabsVariant = 'default' | 'pills' | 'underline';\n\ninterface TabsContextValue {\n activeKey: string;\n setActiveKey: (key: string) => void;\n variant: TabsVariant;\n}\n\nconst TabsContext = createContext<TabsContextValue | null>(null);\n\nconst useTabsContext = () => {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error('Tabs components must be used within a Tabs provider');\n }\n return context;\n};\n\nexport interface TabsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Default active tab key */\n defaultActiveKey?: string;\n /** Controlled active tab key */\n activeKey?: string;\n /** Tab change callback */\n onChange?: (key: string) => void;\n /** Tabs variant */\n variant?: TabsVariant;\n /** Full width tabs */\n fullWidth?: boolean;\n}\n\nexport interface TabListProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport interface TabProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Tab key identifier */\n tabKey: string;\n /** Disabled state */\n disabled?: boolean;\n /** Tab icon */\n icon?: ReactNode;\n}\n\nexport interface TabPanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Panel key matching tab key */\n tabKey: string;\n}\n\nexport const Tabs = forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n defaultActiveKey = '',\n activeKey: controlledActiveKey,\n onChange,\n variant = 'default',\n fullWidth = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internalActiveKey, setInternalActiveKey] = useState(defaultActiveKey);\n const activeKey = controlledActiveKey ?? internalActiveKey;\n\n const setActiveKey = (key: string) => {\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n onChange?.(key);\n };\n\n return (\n <TabsContext.Provider value={{ activeKey, setActiveKey, variant }}>\n <div\n ref={ref}\n className={cn('tabs', fullWidth && 'tabs-full-width', className)}\n {...props}\n >\n {children}\n </div>\n </TabsContext.Provider>\n );\n }\n);\n\nTabs.displayName = 'Tabs';\n\nexport const TabList = forwardRef<HTMLDivElement, TabListProps>(\n ({ className, children, ...props }, ref) => {\n const { variant } = useTabsContext();\n\n return (\n <div\n ref={ref}\n role=\"tablist\"\n className={cn(\n 'nav',\n variant === 'pills' && 'nav-pills',\n variant === 'underline' && 'nav-underline',\n variant === 'default' && 'nav-tabs',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTabList.displayName = 'TabList';\n\nexport const Tab = forwardRef<HTMLButtonElement, TabProps>(\n ({ tabKey, disabled = false, icon, className, children, ...props }, ref) => {\n const { activeKey, setActiveKey } = useTabsContext();\n const isActive = activeKey === tabKey;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isActive}\n aria-disabled={disabled}\n disabled={disabled}\n className={cn('nav-link', isActive && 'active', disabled && 'disabled', className)}\n onClick={() => !disabled && setActiveKey(tabKey)}\n {...props}\n >\n {icon && <span className=\"nav-link-icon\">{icon}</span>}\n {children}\n </button>\n );\n }\n);\n\nTab.displayName = 'Tab';\n\nexport const TabPanel = forwardRef<HTMLDivElement, TabPanelProps>(\n ({ tabKey, className, children, ...props }, ref) => {\n const { activeKey } = useTabsContext();\n const isActive = activeKey === tabKey;\n\n if (!isActive) return null;\n\n return (\n <div\n ref={ref}\n role=\"tabpanel\"\n className={cn('tab-pane', isActive && 'active', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTabPanel.displayName = 'TabPanel';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PaginationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {\n /** Current page */\n current?: number;\n /** Total number of pages */\n total: number;\n /** Items per page */\n pageSize?: number;\n /** Page change callback */\n onChange?: (page: number) => void;\n /** Show size changer */\n showSizeChanger?: boolean;\n /** Size change callback */\n onSizeChange?: (size: number) => void;\n /** Disabled state */\n disabled?: boolean;\n /** Show quick jumper */\n showQuickJumper?: boolean;\n /** Pagination size */\n size?: 'sm' | 'md' | 'lg';\n /** Show total count */\n showTotal?: boolean;\n}\n\nconst sizeClasses = {\n sm: 'pagination-sm',\n md: '',\n lg: 'pagination-lg',\n};\n\nexport const Pagination = forwardRef<HTMLElement, PaginationProps>(\n (\n {\n current = 1,\n total,\n pageSize = 10,\n onChange,\n disabled = false,\n size = 'md',\n showTotal = false,\n className,\n ...props\n },\n ref\n ) => {\n const totalPages = Math.ceil(total / pageSize);\n\n const handlePageClick = (page: number) => {\n if (disabled || page < 1 || page > totalPages || page === current) return;\n onChange?.(page);\n };\n\n const getPageNumbers = (): (number | string)[] => {\n const pages: (number | string)[] = [];\n const showEllipsis = totalPages > 7;\n\n if (!showEllipsis) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n pages.push(1);\n\n if (current > 4) {\n pages.push('...');\n }\n\n const start = Math.max(2, current - 1);\n const end = Math.min(totalPages - 1, current + 1);\n\n for (let i = start; i <= end; i++) {\n if (!pages.includes(i)) {\n pages.push(i);\n }\n }\n\n if (current < totalPages - 3) {\n pages.push('...');\n }\n\n if (!pages.includes(totalPages)) {\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n return (\n <nav ref={ref} aria-label=\"Pagination\" className={className} {...props}>\n {showTotal && (\n <span className=\"pagination-total\">\n Total {total} items\n </span>\n )}\n <ul className={cn('pagination', sizeClasses[size], disabled && 'disabled')}>\n <li className={cn('page-item', (current === 1 || disabled) && 'disabled')}>\n <button\n type=\"button\"\n className=\"page-link\"\n onClick={() => handlePageClick(current - 1)}\n disabled={current === 1 || disabled}\n aria-label=\"Previous page\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M15 18l-6-6 6-6\" />\n </svg>\n </button>\n </li>\n\n {getPageNumbers().map((page, index) => (\n <li\n key={index}\n className={cn(\n 'page-item',\n page === current && 'active',\n (disabled || page === '...') && 'disabled'\n )}\n >\n {page === '...' ? (\n <span className=\"page-link\">...</span>\n ) : (\n <button\n type=\"button\"\n className=\"page-link\"\n onClick={() => handlePageClick(page as number)}\n disabled={disabled}\n aria-current={page === current ? 'page' : undefined}\n >\n {page}\n </button>\n )}\n </li>\n ))}\n\n <li className={cn('page-item', (current === totalPages || disabled) && 'disabled')}>\n <button\n type=\"button\"\n className=\"page-link\"\n onClick={() => handlePageClick(current + 1)}\n disabled={current === totalPages || disabled}\n aria-label=\"Next page\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </button>\n </li>\n </ul>\n </nav>\n );\n }\n);\n\nPagination.displayName = 'Pagination';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface BreadcrumbProps extends HTMLAttributes<HTMLElement> {\n /** Custom separator */\n separator?: ReactNode;\n}\n\nexport interface BreadcrumbItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Link href */\n href?: string;\n /** Active/current item */\n active?: boolean;\n /** Custom icon */\n icon?: ReactNode;\n}\n\nexport const Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n ({ separator = '/', className, children, ...props }, ref) => {\n return (\n <nav ref={ref} aria-label=\"Breadcrumb\" className={className} {...props}>\n <ol className=\"breadcrumb\" data-separator={typeof separator === 'string' ? separator : undefined}>\n {children}\n </ol>\n </nav>\n );\n }\n);\n\nBreadcrumb.displayName = 'Breadcrumb';\n\nexport const BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ href, active = false, icon, className, children, ...props }, ref) => {\n const content = (\n <>\n {icon && <span className=\"breadcrumb-icon\">{icon}</span>}\n {children}\n </>\n );\n\n return (\n <li\n ref={ref}\n className={cn('breadcrumb-item', active && 'active', className)}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n {href && !active ? (\n <a href={href}>{content}</a>\n ) : (\n content\n )}\n </li>\n );\n }\n);\n\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n","import {\n forwardRef,\n createContext,\n useContext,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\ntype MenuMode = 'vertical' | 'horizontal' | 'inline';\n\ninterface MenuContextValue {\n mode: MenuMode;\n activeKey: string;\n openKeys: string[];\n setActiveKey: (key: string) => void;\n toggleOpen: (key: string) => void;\n}\n\nconst MenuContext = createContext<MenuContextValue | null>(null);\n\nconst useMenuContext = () => {\n const context = useContext(MenuContext);\n if (!context) {\n throw new Error('Menu components must be used within a Menu provider');\n }\n return context;\n};\n\nexport interface MenuProps extends Omit<HTMLAttributes<HTMLElement>, 'onSelect'> {\n /** Menu mode */\n mode?: MenuMode;\n /** Default active menu item key */\n defaultActiveKey?: string;\n /** Controlled active menu item key */\n activeKey?: string;\n /** Default open submenu keys */\n defaultOpenKeys?: string[];\n /** Controlled open submenu keys */\n openKeys?: string[];\n /** Active key change callback */\n onSelect?: (key: string) => void;\n /** Open keys change callback */\n onOpenChange?: (keys: string[]) => void;\n /** Collapsed state (for inline mode) */\n collapsed?: boolean;\n}\n\nexport interface MenuItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Menu item key */\n itemKey: string;\n /** Disabled state */\n disabled?: boolean;\n /** Item icon */\n icon?: ReactNode;\n}\n\nexport interface SubMenuProps extends Omit<HTMLAttributes<HTMLLIElement>, 'title'> {\n /** Submenu key */\n subKey: string;\n /** Submenu title */\n title: ReactNode;\n /** Submenu icon */\n icon?: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport interface MenuGroupProps extends Omit<HTMLAttributes<HTMLLIElement>, 'title'> {\n /** Group title */\n title: ReactNode;\n}\n\nexport interface MenuDividerProps extends HTMLAttributes<HTMLLIElement> {}\n\nexport const Menu = forwardRef<HTMLElement, MenuProps>(\n (\n {\n mode = 'vertical',\n defaultActiveKey = '',\n activeKey: controlledActiveKey,\n defaultOpenKeys = [],\n openKeys: controlledOpenKeys,\n onSelect,\n onOpenChange,\n collapsed = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internalActiveKey, setInternalActiveKey] = useState(defaultActiveKey);\n const [internalOpenKeys, setInternalOpenKeys] = useState<string[]>(defaultOpenKeys);\n\n const activeKey = controlledActiveKey ?? internalActiveKey;\n const openKeys = controlledOpenKeys ?? internalOpenKeys;\n\n const setActiveKey = (key: string) => {\n if (controlledActiveKey === undefined) {\n setInternalActiveKey(key);\n }\n onSelect?.(key);\n };\n\n const toggleOpen = (key: string) => {\n const newOpenKeys = openKeys.includes(key)\n ? openKeys.filter((k) => k !== key)\n : [...openKeys, key];\n\n if (controlledOpenKeys === undefined) {\n setInternalOpenKeys(newOpenKeys);\n }\n onOpenChange?.(newOpenKeys);\n };\n\n return (\n <MenuContext.Provider value={{ mode, activeKey, openKeys, setActiveKey, toggleOpen }}>\n <nav\n ref={ref}\n className={cn(\n 'menu',\n `menu-${mode}`,\n collapsed && 'menu-collapsed',\n className\n )}\n {...props}\n >\n <ul className=\"menu-list\" role=\"menu\">\n {children}\n </ul>\n </nav>\n </MenuContext.Provider>\n );\n }\n);\n\nMenu.displayName = 'Menu';\n\nexport const MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n ({ itemKey, disabled = false, icon, className, children, onClick, ...props }, ref) => {\n const { activeKey, setActiveKey } = useMenuContext();\n const isActive = activeKey === itemKey;\n\n const handleClick = (e: React.MouseEvent<HTMLLIElement>) => {\n if (!disabled) {\n setActiveKey(itemKey);\n onClick?.(e);\n }\n };\n\n return (\n <li\n ref={ref}\n role=\"menuitem\"\n className={cn(\n 'menu-item',\n isActive && 'menu-item-active',\n disabled && 'menu-item-disabled',\n className\n )}\n onClick={handleClick}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n {icon && <span className=\"menu-item-icon\">{icon}</span>}\n <span className=\"menu-item-content\">{children}</span>\n </li>\n );\n }\n);\n\nMenuItem.displayName = 'MenuItem';\n\nexport const SubMenu = forwardRef<HTMLLIElement, SubMenuProps>(\n ({ subKey, title, icon, disabled = false, className, children, ...props }, ref) => {\n const { openKeys, toggleOpen } = useMenuContext();\n const isOpen = openKeys.includes(subKey);\n\n const handleToggle = () => {\n if (!disabled) {\n toggleOpen(subKey);\n }\n };\n\n return (\n <li\n ref={ref}\n className={cn(\n 'submenu',\n isOpen && 'submenu-open',\n disabled && 'submenu-disabled',\n className\n )}\n {...props}\n >\n <div\n className=\"submenu-title\"\n onClick={handleToggle}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={isOpen}\n aria-disabled={disabled}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle();\n }\n }}\n >\n {icon && <span className=\"menu-item-icon\">{icon}</span>}\n <span className=\"submenu-title-content\">{title}</span>\n <span className={cn('submenu-arrow', isOpen && 'submenu-arrow-open')}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M6 9l6 6 6-6\" />\n </svg>\n </span>\n </div>\n <ul\n className={cn('submenu-list', isOpen && 'submenu-list-open')}\n role=\"menu\"\n aria-hidden={!isOpen}\n >\n {children}\n </ul>\n </li>\n );\n }\n);\n\nSubMenu.displayName = 'SubMenu';\n\nexport const MenuGroup = forwardRef<HTMLLIElement, MenuGroupProps>(\n ({ title, className, children, ...props }, ref) => {\n return (\n <li ref={ref} className={cn('menu-group', className)} role=\"group\" {...props}>\n <div className=\"menu-group-title\">{title}</div>\n <ul className=\"menu-group-list\" role=\"menu\">\n {children}\n </ul>\n </li>\n );\n }\n);\n\nMenuGroup.displayName = 'MenuGroup';\n\nexport const MenuDivider = forwardRef<HTMLLIElement, MenuDividerProps>(\n ({ className, ...props }, ref) => {\n return (\n <li\n ref={ref}\n className={cn('menu-divider', className)}\n role=\"separator\"\n {...props}\n />\n );\n }\n);\n\nMenuDivider.displayName = 'MenuDivider';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype StepsDirection = 'horizontal' | 'vertical';\ntype StepStatus = 'wait' | 'process' | 'finish' | 'error';\n\nexport interface StepsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current step index (0-based) */\n current?: number;\n /** Steps direction */\n direction?: StepsDirection;\n /** Size variant */\n size?: 'sm' | 'md';\n /** Clickable steps */\n clickable?: boolean;\n /** Step click callback */\n onChange?: (step: number) => void;\n}\n\nexport interface StepProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Step title */\n title: ReactNode;\n /** Step description */\n description?: ReactNode;\n /** Step icon */\n icon?: ReactNode;\n /** Step status override */\n status?: StepStatus;\n /** Disabled state */\n disabled?: boolean;\n}\n\ninterface StepInternalProps extends StepProps {\n stepIndex: number;\n isLast: boolean;\n currentStatus: StepStatus;\n clickable?: boolean;\n onStepClick?: () => void;\n}\n\nconst StepInternal = forwardRef<HTMLDivElement, StepInternalProps>(\n (\n {\n title,\n description,\n icon,\n status,\n disabled = false,\n stepIndex,\n isLast,\n currentStatus,\n clickable,\n onStepClick,\n className,\n ...props\n },\n ref\n ) => {\n const finalStatus = status || currentStatus;\n\n const handleClick = () => {\n if (clickable && !disabled && onStepClick) {\n onStepClick();\n }\n };\n\n const renderIcon = () => {\n if (icon) return <span className=\"step-icon-custom\">{icon}</span>;\n\n if (finalStatus === 'finish') {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M20 6L9 17l-5-5\" />\n </svg>\n );\n }\n\n if (finalStatus === 'error') {\n return (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n );\n }\n\n return <span className=\"step-icon-number\">{stepIndex + 1}</span>;\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'step',\n `step-${finalStatus}`,\n isLast && 'step-last',\n disabled && 'step-disabled',\n clickable && !disabled && 'step-clickable',\n className\n )}\n onClick={handleClick}\n role={clickable ? 'button' : undefined}\n tabIndex={clickable && !disabled ? 0 : undefined}\n aria-disabled={disabled}\n onKeyDown={(e) => {\n if (clickable && !disabled && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n handleClick();\n }\n }}\n {...props}\n >\n <div className=\"step-icon\">{renderIcon()}</div>\n <div className=\"step-content\">\n <div className=\"step-title\">{title}</div>\n {description && <div className=\"step-description\">{description}</div>}\n </div>\n {!isLast && <div className=\"step-connector\" />}\n </div>\n );\n }\n);\n\nStepInternal.displayName = 'StepInternal';\n\nexport const Steps = forwardRef<HTMLDivElement, StepsProps>(\n (\n {\n current = 0,\n direction = 'horizontal',\n size = 'md',\n clickable = false,\n onChange,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const childArray = Array.isArray(children) ? children : [children];\n\n const getStatus = (index: number): StepStatus => {\n if (index < current) return 'finish';\n if (index === current) return 'process';\n return 'wait';\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'steps',\n direction === 'vertical' && 'steps-vertical',\n size === 'sm' && 'steps-sm',\n className\n )}\n {...props}\n >\n {childArray.map((child: any, index) => {\n if (!child) return null;\n return (\n <StepInternal\n key={index}\n {...child.props}\n stepIndex={index}\n isLast={index === childArray.length - 1}\n currentStatus={getStatus(index)}\n clickable={clickable}\n onStepClick={() => onChange?.(index)}\n />\n );\n })}\n </div>\n );\n }\n);\n\nSteps.displayName = 'Steps';\n\nexport const Step = forwardRef<HTMLDivElement, StepProps>(\n (_props, _ref) => {\n // This component is just for defining step props\n // The actual rendering is done by StepInternal\n return null;\n }\n);\n\nStep.displayName = 'Step';\n","import {\n forwardRef,\n createContext,\n useContext,\n useState,\n useRef,\n useEffect,\n type HTMLAttributes,\n type ReactNode,\n type ButtonHTMLAttributes,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\ntype DropdownPlacement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n\ninterface DropdownContextValue {\n isOpen: boolean;\n setIsOpen: (open: boolean) => void;\n toggle: () => void;\n close: () => void;\n}\n\nconst DropdownContext = createContext<DropdownContextValue | null>(null);\n\nconst useDropdownContext = () => {\n const context = useContext(DropdownContext);\n if (!context) {\n throw new Error('Dropdown components must be used within a Dropdown provider');\n }\n return context;\n};\n\nexport interface DropdownProps extends HTMLAttributes<HTMLDivElement> {\n /** Controlled open state */\n open?: boolean;\n /** Open state change callback */\n onOpenChange?: (open: boolean) => void;\n /** Placement of dropdown menu */\n placement?: DropdownPlacement;\n}\n\nexport interface DropdownTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** As child - renders children as trigger */\n asChild?: boolean;\n}\n\nexport interface DropdownMenuProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport interface DropdownItemProps extends HTMLAttributes<HTMLDivElement> {\n /** Disabled state */\n disabled?: boolean;\n /** Danger/destructive action */\n danger?: boolean;\n /** Icon */\n icon?: ReactNode;\n /** Click handler */\n onSelect?: () => void;\n}\n\nexport interface DropdownDividerProps extends HTMLAttributes<HTMLHRElement> {}\n\nexport interface DropdownHeaderProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const Dropdown = forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n open: controlledOpen,\n onOpenChange,\n placement = 'bottom-start',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = controlledOpen ?? internalOpen;\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const setIsOpen = (open: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(open);\n }\n onOpenChange?.(open);\n };\n\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n\n // Close on outside click\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n close();\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n // Close on escape\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen]);\n\n const placementClasses: Record<DropdownPlacement, string> = {\n 'bottom-start': 'dropdown',\n 'bottom-end': 'dropdown dropend',\n 'top-start': 'dropup',\n 'top-end': 'dropup dropend',\n };\n\n return (\n <DropdownContext.Provider value={{ isOpen, setIsOpen, toggle, close }}>\n <div\n ref={(node) => {\n (dropdownRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cn(placementClasses[placement], className)}\n {...props}\n >\n {children}\n </div>\n </DropdownContext.Provider>\n );\n }\n);\n\nDropdown.displayName = 'Dropdown';\n\nexport const DropdownTrigger = forwardRef<HTMLButtonElement, DropdownTriggerProps>(\n ({ asChild = false, className, children, onClick, ...props }, ref) => {\n const { toggle, isOpen } = useDropdownContext();\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n toggle();\n onClick?.(e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('btn dropdown-toggle', className)}\n onClick={handleClick}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nDropdownTrigger.displayName = 'DropdownTrigger';\n\nexport const DropdownMenu = forwardRef<HTMLDivElement, DropdownMenuProps>(\n ({ className, children, ...props }, ref) => {\n const { isOpen } = useDropdownContext();\n\n return (\n <div\n ref={ref}\n className={cn('dropdown-menu', isOpen && 'show', className)}\n role=\"menu\"\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nDropdownMenu.displayName = 'DropdownMenu';\n\nexport const DropdownItem = forwardRef<HTMLDivElement, DropdownItemProps>(\n ({ disabled = false, danger = false, icon, onSelect, className, children, onClick, ...props }, ref) => {\n const { close } = useDropdownContext();\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n onSelect?.();\n close();\n onClick?.(e);\n };\n\n return (\n <div\n ref={ref}\n role=\"menuitem\"\n className={cn(\n 'dropdown-item',\n disabled && 'disabled',\n danger && 'dropdown-item-danger',\n className\n )}\n onClick={handleClick}\n aria-disabled={disabled}\n tabIndex={disabled ? -1 : 0}\n {...props}\n >\n {icon && <span className=\"dropdown-item-icon\">{icon}</span>}\n {children}\n </div>\n );\n }\n);\n\nDropdownItem.displayName = 'DropdownItem';\n\nexport const DropdownDivider = forwardRef<HTMLHRElement, DropdownDividerProps>(\n ({ className, ...props }, ref) => {\n return <hr ref={ref} className={cn('dropdown-divider', className)} {...props} />;\n }\n);\n\nDropdownDivider.displayName = 'DropdownDivider';\n\nexport const DropdownHeader = forwardRef<HTMLDivElement, DropdownHeaderProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('dropdown-header', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nDropdownHeader.displayName = 'DropdownHeader';\n","import {\n forwardRef,\n useState,\n useRef,\n cloneElement,\n type HTMLAttributes,\n type ReactElement,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\ntype TooltipPlacement = 'top' | 'right' | 'bottom' | 'left';\n\nexport interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {\n /** Tooltip content */\n content: React.ReactNode;\n /** Tooltip placement */\n placement?: TooltipPlacement;\n /** Delay before showing (ms) */\n delay?: number;\n /** Disabled state */\n disabled?: boolean;\n /** Arrow visibility */\n arrow?: boolean;\n /** Trigger element */\n children: ReactElement;\n}\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n content,\n placement = 'top',\n delay = 0,\n disabled = false,\n arrow = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = useState(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const triggerRef = useRef<HTMLElement>(null);\n\n const showTooltip = () => {\n if (disabled) return;\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => setIsVisible(true), delay);\n } else {\n setIsVisible(true);\n }\n };\n\n const hideTooltip = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setIsVisible(false);\n };\n\n const placementClasses: Record<TooltipPlacement, string> = {\n top: 'tooltip-top',\n right: 'tooltip-right',\n bottom: 'tooltip-bottom',\n left: 'tooltip-left',\n };\n\n const trigger = cloneElement(children, {\n ref: triggerRef,\n onMouseEnter: (e: React.MouseEvent) => {\n showTooltip();\n children.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n hideTooltip();\n children.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n showTooltip();\n children.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n hideTooltip();\n children.props.onBlur?.(e);\n },\n });\n\n return (\n <div ref={ref} className={cn('tooltip-wrapper', className)} style={{ position: 'relative', display: 'inline-block' }} {...props}>\n {trigger}\n {isVisible && (\n <div\n className={cn('tooltip', placementClasses[placement], 'show')}\n role=\"tooltip\"\n >\n <div className=\"tooltip-inner\">{content}</div>\n {arrow && <div className=\"tooltip-arrow\" />}\n </div>\n )}\n </div>\n );\n }\n);\n\nTooltip.displayName = 'Tooltip';\n","import {\n forwardRef,\n useState,\n useRef,\n useEffect,\n cloneElement,\n type HTMLAttributes,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\ntype PopoverPlacement = 'top' | 'right' | 'bottom' | 'left';\ntype PopoverTrigger = 'click' | 'hover';\n\nexport interface PopoverProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content' | 'title'> {\n /** Popover title */\n title?: ReactNode;\n /** Popover content */\n content: ReactNode;\n /** Popover placement */\n placement?: PopoverPlacement;\n /** Trigger mode */\n trigger?: PopoverTrigger;\n /** Controlled open state */\n open?: boolean;\n /** Open state change callback */\n onOpenChange?: (open: boolean) => void;\n /** Arrow visibility */\n arrow?: boolean;\n /** Trigger element */\n children: ReactElement;\n}\n\nexport const Popover = forwardRef<HTMLDivElement, PopoverProps>(\n (\n {\n title,\n content,\n placement = 'top',\n trigger = 'click',\n open: controlledOpen,\n onOpenChange,\n arrow = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = controlledOpen ?? internalOpen;\n const popoverRef = useRef<HTMLDivElement>(null);\n\n const setIsOpen = (open: boolean) => {\n if (controlledOpen === undefined) {\n setInternalOpen(open);\n }\n onOpenChange?.(open);\n };\n\n const toggle = () => setIsOpen(!isOpen);\n const close = () => setIsOpen(false);\n\n // Close on outside click\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (popoverRef.current && !popoverRef.current.contains(event.target as Node)) {\n close();\n }\n };\n\n if (isOpen && trigger === 'click') {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen, trigger]);\n\n // Close on escape\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n }\n };\n\n if (isOpen) {\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n };\n }, [isOpen]);\n\n const placementClasses: Record<PopoverPlacement, string> = {\n top: 'popover-top',\n right: 'popover-right',\n bottom: 'popover-bottom',\n left: 'popover-left',\n };\n\n const triggerProps =\n trigger === 'click'\n ? {\n onClick: (e: React.MouseEvent) => {\n toggle();\n children.props.onClick?.(e);\n },\n }\n : {\n onMouseEnter: (e: React.MouseEvent) => {\n setIsOpen(true);\n children.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n setIsOpen(false);\n children.props.onMouseLeave?.(e);\n },\n };\n\n const triggerElement = cloneElement(children, triggerProps);\n\n return (\n <div\n ref={(node) => {\n (popoverRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cn('popover-wrapper', className)}\n style={{ position: 'relative', display: 'inline-block' }}\n {...props}\n >\n {triggerElement}\n {isOpen && (\n <div\n className={cn('popover', placementClasses[placement], 'show')}\n role=\"dialog\"\n >\n {arrow && <div className=\"popover-arrow\" />}\n {title && <div className=\"popover-header\">{title}</div>}\n <div className=\"popover-body\">{content}</div>\n </div>\n )}\n </div>\n );\n }\n);\n\nPopover.displayName = 'Popover';\n","import {\n forwardRef,\n useEffect,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../utils/cn';\n\ntype DrawerPlacement = 'left' | 'right' | 'top' | 'bottom';\ntype DrawerSize = 'sm' | 'md' | 'lg' | 'full';\n\nexport interface DrawerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Drawer open state */\n open: boolean;\n /** Close callback */\n onClose: () => void;\n /** Drawer title */\n title?: ReactNode;\n /** Drawer placement */\n placement?: DrawerPlacement;\n /** Drawer size */\n size?: DrawerSize;\n /** Show close button */\n closable?: boolean;\n /** Show overlay/mask */\n mask?: boolean;\n /** Close on mask click */\n maskClosable?: boolean;\n /** Close on escape key */\n closeOnEsc?: boolean;\n /** Footer content */\n footer?: ReactNode;\n /** Custom width (overrides size) */\n width?: number | string;\n /** Custom height (overrides size for top/bottom) */\n height?: number | string;\n}\n\nconst sizeMap: Record<DrawerSize, string> = {\n sm: '320px',\n md: '400px',\n lg: '560px',\n full: '100%',\n};\n\nexport const Drawer = forwardRef<HTMLDivElement, DrawerProps>(\n (\n {\n open,\n onClose,\n title,\n placement = 'right',\n size = 'md',\n closable = true,\n mask = true,\n maskClosable = true,\n closeOnEsc = true,\n footer,\n width,\n height,\n className,\n children,\n ...props\n },\n ref\n ) => {\n // Handle escape key\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (closeOnEsc && event.key === 'Escape') {\n onClose();\n }\n };\n\n if (open) {\n document.addEventListener('keydown', handleEscape);\n document.body.style.overflow = 'hidden';\n }\n\n return () => {\n document.removeEventListener('keydown', handleEscape);\n document.body.style.overflow = '';\n };\n }, [open, closeOnEsc, onClose]);\n\n if (!open) return null;\n\n const isVertical = placement === 'top' || placement === 'bottom';\n const dimensionStyle = isVertical\n ? { height: height || sizeMap[size] }\n : { width: width || sizeMap[size] };\n\n const placementClasses: Record<DrawerPlacement, string> = {\n left: 'drawer-left',\n right: 'drawer-right',\n top: 'drawer-top',\n bottom: 'drawer-bottom',\n };\n\n const handleMaskClick = () => {\n if (maskClosable) {\n onClose();\n }\n };\n\n const drawerContent = (\n <div className={cn('drawer-root', open && 'drawer-open')}>\n {mask && (\n <div\n className=\"drawer-mask\"\n onClick={handleMaskClick}\n aria-hidden=\"true\"\n />\n )}\n <div\n ref={ref}\n className={cn('drawer', placementClasses[placement], className)}\n style={dimensionStyle}\n role=\"dialog\"\n aria-modal=\"true\"\n {...props}\n >\n {(title || closable) && (\n <div className=\"drawer-header\">\n {title && <div className=\"drawer-title\">{title}</div>}\n {closable && (\n <button\n type=\"button\"\n className=\"drawer-close\"\n onClick={onClose}\n aria-label=\"Close drawer\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n )}\n <div className=\"drawer-body\">{children}</div>\n {footer && <div className=\"drawer-footer\">{footer}</div>}\n </div>\n </div>\n );\n\n return createPortal(drawerContent, document.body);\n }\n);\n\nDrawer.displayName = 'Drawer';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ProgressStatus = 'default' | 'success' | 'warning' | 'danger';\n\nexport interface ProgressProps extends HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100) */\n value?: number;\n /** Maximum value */\n max?: number;\n /** Show percentage label */\n showLabel?: boolean;\n /** Progress size */\n size?: 'sm' | 'md' | 'lg';\n /** Striped style */\n striped?: boolean;\n /** Animated stripes */\n animated?: boolean;\n /** Progress status/color */\n status?: ProgressStatus;\n /** Indeterminate loading state */\n indeterminate?: boolean;\n}\n\nconst sizeClasses = {\n sm: 'progress-sm',\n md: '',\n lg: 'progress-lg',\n};\n\nconst statusClasses: Record<ProgressStatus, string> = {\n default: 'bg-primary',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-danger',\n};\n\nexport const Progress = forwardRef<HTMLDivElement, ProgressProps>(\n (\n {\n value = 0,\n max = 100,\n showLabel = false,\n size = 'md',\n striped = false,\n animated = false,\n status = 'default',\n indeterminate = false,\n className,\n ...props\n },\n ref\n ) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n return (\n <div\n ref={ref}\n className={cn('progress', sizeClasses[size], className)}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={max}\n {...props}\n >\n <div\n className={cn(\n 'progress-bar',\n statusClasses[status],\n striped && 'progress-bar-striped',\n (animated || indeterminate) && 'progress-bar-animated',\n indeterminate && 'progress-bar-indeterminate'\n )}\n style={{ width: indeterminate ? '100%' : `${percentage}%` }}\n >\n {showLabel && !indeterminate && `${Math.round(percentage)}%`}\n </div>\n </div>\n );\n }\n);\n\nProgress.displayName = 'Progress';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype SpinnerSize = 'sm' | 'md' | 'lg';\ntype SpinnerVariant = 'border' | 'grow';\n\nexport interface SpinnerProps extends HTMLAttributes<HTMLDivElement> {\n /** Spinner size */\n size?: SpinnerSize;\n /** Spinner variant */\n variant?: SpinnerVariant;\n /** Spinner color */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'light' | 'dark';\n /** Accessible label */\n label?: string;\n}\n\nconst sizeClasses: Record<SpinnerSize, string> = {\n sm: 'spinner-sm',\n md: '',\n lg: 'spinner-lg',\n};\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(\n (\n {\n size = 'md',\n variant = 'border',\n color = 'primary',\n label = 'Loading...',\n className,\n ...props\n },\n ref\n ) => {\n const spinnerClass = variant === 'grow' ? 'spinner-grow' : 'spinner-border';\n\n return (\n <div\n ref={ref}\n className={cn(spinnerClass, sizeClasses[size], `text-${color}`, className)}\n role=\"status\"\n aria-label={label}\n {...props}\n >\n <span className=\"visually-hidden\">{label}</span>\n </div>\n );\n }\n);\n\nSpinner.displayName = 'Spinner';\n","import { forwardRef, useState, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\nimport { cn } from '../../utils/cn';\n\ntype NotificationType = 'info' | 'success' | 'warning' | 'error';\ntype NotificationPlacement = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left' | 'top-center' | 'bottom-center';\n\nexport interface NotificationProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Notification type */\n type?: NotificationType;\n /** Notification title */\n title?: ReactNode;\n /** Notification message */\n message: ReactNode;\n /** Custom icon */\n icon?: ReactNode;\n /** Show close button */\n closable?: boolean;\n /** Close callback */\n onClose?: () => void;\n /** Auto close duration in ms (0 to disable) */\n duration?: number;\n /** Action buttons */\n action?: ReactNode;\n}\n\ninterface NotificationContainerProps {\n placement?: NotificationPlacement;\n notifications: NotificationItem[];\n onClose: (id: string) => void;\n}\n\ninterface NotificationItem {\n id: string;\n props: NotificationProps;\n}\n\nconst typeIcons: Record<NotificationType, ReactNode> = {\n info: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n success: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9 12l2 2 4-4\" />\n </svg>\n ),\n warning: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n ),\n error: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M15 9l-6 6M9 9l6 6\" />\n </svg>\n ),\n};\n\nexport const Notification = forwardRef<HTMLDivElement, NotificationProps>(\n (\n {\n type = 'info',\n title,\n message,\n icon,\n closable = true,\n onClose,\n duration = 4500,\n action,\n className,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = useState(true);\n\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n handleClose();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n if (!visible) return null;\n\n const displayIcon = icon === undefined ? typeIcons[type] : icon;\n\n return (\n <div\n ref={ref}\n className={cn('notification', `notification-${type}`, className)}\n role=\"alert\"\n {...props}\n >\n {displayIcon && <div className=\"notification-icon\">{displayIcon}</div>}\n <div className=\"notification-content\">\n {title && <div className=\"notification-title\">{title}</div>}\n <div className=\"notification-message\">{message}</div>\n {action && <div className=\"notification-action\">{action}</div>}\n </div>\n {closable && (\n <button\n type=\"button\"\n className=\"notification-close\"\n onClick={handleClose}\n aria-label=\"Close notification\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n }\n);\n\nNotification.displayName = 'Notification';\n\n// Notification container for stacking multiple notifications\nexport const NotificationContainer = forwardRef<HTMLDivElement, NotificationContainerProps>(\n ({ placement = 'top-right', notifications, onClose, ...props }, ref) => {\n const placementClasses: Record<NotificationPlacement, string> = {\n 'top-right': 'notification-container-top-right',\n 'top-left': 'notification-container-top-left',\n 'bottom-right': 'notification-container-bottom-right',\n 'bottom-left': 'notification-container-bottom-left',\n 'top-center': 'notification-container-top-center',\n 'bottom-center': 'notification-container-bottom-center',\n };\n\n if (notifications.length === 0) return null;\n\n return createPortal(\n <div\n ref={ref}\n className={cn('notification-container', placementClasses[placement])}\n {...props}\n >\n {notifications.map((item) => (\n <Notification\n key={item.id}\n {...item.props}\n onClose={() => onClose(item.id)}\n />\n ))}\n </div>,\n document.body\n );\n }\n);\n\nNotificationContainer.displayName = 'NotificationContainer';\n","import { forwardRef, type HTMLAttributes, type ImgHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\ntype AvatarShape = 'circle' | 'square' | 'rounded';\n\nexport interface AvatarProps extends HTMLAttributes<HTMLSpanElement> {\n /** Image source */\n src?: string;\n /** Image alt text */\n alt?: string;\n /** Avatar size */\n size?: AvatarSize;\n /** Avatar shape */\n shape?: AvatarShape;\n /** Fallback text (initials) */\n fallback?: string;\n /** Custom image props */\n imgProps?: ImgHTMLAttributes<HTMLImageElement>;\n}\n\nexport interface AvatarGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Maximum avatars to show */\n max?: number;\n /** Avatar size for group */\n size?: AvatarSize;\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n xs: 'avatar-xs',\n sm: 'avatar-sm',\n md: '',\n lg: 'avatar-lg',\n xl: 'avatar-xl',\n};\n\nconst shapeClasses: Record<AvatarShape, string> = {\n circle: 'avatar-circle',\n square: 'avatar-square',\n rounded: 'avatar-rounded',\n};\n\nexport const Avatar = forwardRef<HTMLSpanElement, AvatarProps>(\n (\n {\n src,\n alt = '',\n size = 'md',\n shape = 'circle',\n fallback,\n imgProps,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const getInitials = (text: string) => {\n return text\n .split(' ')\n .map((word) => word[0])\n .join('')\n .toUpperCase()\n .slice(0, 2);\n };\n\n return (\n <span\n ref={ref}\n className={cn('avatar', sizeClasses[size], shapeClasses[shape], className)}\n {...props}\n >\n {src ? (\n <img src={src} alt={alt} className=\"avatar-img\" {...imgProps} />\n ) : fallback ? (\n <span className=\"avatar-fallback\">{getInitials(fallback)}</span>\n ) : children ? (\n <span className=\"avatar-fallback\">{children}</span>\n ) : (\n <span className=\"avatar-fallback\">\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"60%\" height=\"60%\">\n <path d=\"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z\" />\n </svg>\n </span>\n )}\n </span>\n );\n }\n);\n\nAvatar.displayName = 'Avatar';\n\nexport const AvatarGroup = forwardRef<HTMLDivElement, AvatarGroupProps>(\n ({ max, size = 'md', className, children, ...props }, ref) => {\n const childArray = Array.isArray(children) ? children : [children];\n const visibleChildren = max ? childArray.slice(0, max) : childArray;\n const remainingCount = max ? Math.max(0, childArray.length - max) : 0;\n\n return (\n <div ref={ref} className={cn('avatar-group', className)} {...props}>\n {visibleChildren}\n {remainingCount > 0 && (\n <Avatar size={size} className=\"avatar-more\">\n +{remainingCount}\n </Avatar>\n )}\n </div>\n );\n }\n);\n\nAvatarGroup.displayName = 'AvatarGroup';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype BadgeVariant = 'solid' | 'soft' | 'outline';\ntype BadgeColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info';\ntype BadgeSize = 'sm' | 'md' | 'lg';\n\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\n /** Badge variant */\n variant?: BadgeVariant;\n /** Badge color */\n color?: BadgeColor;\n /** Badge size */\n size?: BadgeSize;\n /** Pill shape */\n pill?: boolean;\n /** Dot indicator (no text) */\n dot?: boolean;\n}\n\nconst colorClasses: Record<BadgeColor, string> = {\n primary: 'badge-primary',\n secondary: 'badge-secondary',\n success: 'badge-success',\n danger: 'badge-danger',\n warning: 'badge-warning',\n info: 'badge-info',\n};\n\nconst sizeClasses: Record<BadgeSize, string> = {\n sm: 'badge-sm',\n md: '',\n lg: 'badge-lg',\n};\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = 'solid',\n color = 'primary',\n size = 'md',\n pill = false,\n dot = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'badge',\n colorClasses[color],\n sizeClasses[size],\n variant === 'soft' && 'badge-soft',\n variant === 'outline' && 'badge-outline',\n pill && 'badge-pill',\n dot && 'badge-dot',\n className\n )}\n {...props}\n >\n {!dot && children}\n </span>\n );\n }\n);\n\nBadge.displayName = 'Badge';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype TagVariant = 'solid' | 'soft' | 'outline';\ntype TagColor = 'primary' | 'secondary' | 'success' | 'danger' | 'warning' | 'info' | 'default';\ntype TagSize = 'sm' | 'md' | 'lg';\n\nexport interface TagProps extends HTMLAttributes<HTMLSpanElement> {\n /** Tag variant */\n variant?: TagVariant;\n /** Tag color */\n color?: TagColor;\n /** Tag size */\n size?: TagSize;\n /** Closable tag */\n closable?: boolean;\n /** Close callback */\n onClose?: () => void;\n /** Left icon */\n icon?: ReactNode;\n}\n\nconst colorClasses: Record<TagColor, string> = {\n default: 'tag-default',\n primary: 'tag-primary',\n secondary: 'tag-secondary',\n success: 'tag-success',\n danger: 'tag-danger',\n warning: 'tag-warning',\n info: 'tag-info',\n};\n\nconst sizeClasses: Record<TagSize, string> = {\n sm: 'tag-sm',\n md: '',\n lg: 'tag-lg',\n};\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(\n (\n {\n variant = 'soft',\n color = 'default',\n size = 'md',\n closable = false,\n onClose,\n icon,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const handleClose = (e: React.MouseEvent) => {\n e.stopPropagation();\n onClose?.();\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n 'tag',\n colorClasses[color],\n sizeClasses[size],\n variant === 'solid' && 'tag-solid',\n variant === 'outline' && 'tag-outline',\n className\n )}\n {...props}\n >\n {icon && <span className=\"tag-icon\">{icon}</span>}\n <span className=\"tag-content\">{children}</span>\n {closable && (\n <button type=\"button\" className=\"tag-close\" onClick={handleClose} aria-label=\"Remove tag\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n )}\n </span>\n );\n }\n);\n\nTag.displayName = 'Tag';\n","import {\n forwardRef,\n createContext,\n useContext,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\ninterface CollapseContextValue {\n activeKeys: string[];\n toggleKey: (key: string) => void;\n accordion: boolean;\n}\n\nconst CollapseContext = createContext<CollapseContextValue | null>(null);\n\nconst useCollapseContext = () => {\n const context = useContext(CollapseContext);\n if (!context) {\n throw new Error('Collapse components must be used within a Collapse provider');\n }\n return context;\n};\n\nexport interface CollapseProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Default active panel keys */\n defaultActiveKey?: string | string[];\n /** Controlled active panel keys */\n activeKey?: string | string[];\n /** Active key change callback */\n onChange?: (keys: string[]) => void;\n /** Accordion mode (only one panel open) */\n accordion?: boolean;\n /** Bordered style */\n bordered?: boolean;\n}\n\nexport interface CollapsePanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Panel unique key */\n panelKey: string;\n /** Panel header */\n header: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** Show arrow icon */\n showArrow?: boolean;\n /** Extra content in header */\n extra?: ReactNode;\n}\n\nconst normalizeKeys = (keys?: string | string[]): string[] => {\n if (!keys) return [];\n return Array.isArray(keys) ? keys : [keys];\n};\n\nexport const Collapse = forwardRef<HTMLDivElement, CollapseProps>(\n (\n {\n defaultActiveKey,\n activeKey: controlledActiveKey,\n onChange,\n accordion = false,\n bordered = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internalActiveKeys, setInternalActiveKeys] = useState<string[]>(\n normalizeKeys(defaultActiveKey)\n );\n const activeKeys = controlledActiveKey !== undefined\n ? normalizeKeys(controlledActiveKey)\n : internalActiveKeys;\n\n const toggleKey = (key: string) => {\n let newKeys: string[];\n\n if (accordion) {\n newKeys = activeKeys.includes(key) ? [] : [key];\n } else {\n newKeys = activeKeys.includes(key)\n ? activeKeys.filter((k) => k !== key)\n : [...activeKeys, key];\n }\n\n if (controlledActiveKey === undefined) {\n setInternalActiveKeys(newKeys);\n }\n onChange?.(newKeys);\n };\n\n return (\n <CollapseContext.Provider value={{ activeKeys, toggleKey, accordion }}>\n <div\n ref={ref}\n className={cn('collapse-container', bordered && 'collapse-bordered', className)}\n {...props}\n >\n {children}\n </div>\n </CollapseContext.Provider>\n );\n }\n);\n\nCollapse.displayName = 'Collapse';\n\nexport const CollapsePanel = forwardRef<HTMLDivElement, CollapsePanelProps>(\n (\n {\n panelKey,\n header,\n disabled = false,\n showArrow = true,\n extra,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { activeKeys, toggleKey } = useCollapseContext();\n const isActive = activeKeys.includes(panelKey);\n\n const handleToggle = () => {\n if (!disabled) {\n toggleKey(panelKey);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'collapse-panel',\n isActive && 'collapse-panel-active',\n disabled && 'collapse-panel-disabled',\n className\n )}\n {...props}\n >\n <div\n className=\"collapse-header\"\n onClick={handleToggle}\n role=\"button\"\n tabIndex={disabled ? -1 : 0}\n aria-expanded={isActive}\n aria-disabled={disabled}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleToggle();\n }\n }}\n >\n {showArrow && (\n <span className={cn('collapse-arrow', isActive && 'collapse-arrow-active')}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <path d=\"M9 18l6-6-6-6\" />\n </svg>\n </span>\n )}\n <span className=\"collapse-header-text\">{header}</span>\n {extra && <span className=\"collapse-extra\">{extra}</span>}\n </div>\n <div\n className={cn('collapse-content', isActive && 'collapse-content-active')}\n aria-hidden={!isActive}\n >\n <div className=\"collapse-content-box\">{children}</div>\n </div>\n </div>\n );\n }\n);\n\nCollapsePanel.displayName = 'CollapsePanel';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype DividerOrientation = 'horizontal' | 'vertical';\ntype DividerVariant = 'solid' | 'dashed' | 'dotted';\n\nexport interface DividerProps extends HTMLAttributes<HTMLDivElement> {\n /** Divider orientation */\n orientation?: DividerOrientation;\n /** Divider style variant */\n variant?: DividerVariant;\n /** Text label position */\n labelPosition?: 'left' | 'center' | 'right';\n /** Text content */\n children?: ReactNode;\n}\n\nexport const Divider = forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n orientation = 'horizontal',\n variant = 'solid',\n labelPosition = 'center',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const hasLabel = !!children;\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n 'divider',\n orientation === 'vertical' && 'divider-vertical',\n variant === 'dashed' && 'divider-dashed',\n variant === 'dotted' && 'divider-dotted',\n hasLabel && `divider-with-text divider-text-${labelPosition}`,\n className\n )}\n {...props}\n >\n {hasLabel && <span className=\"divider-text\">{children}</span>}\n </div>\n );\n }\n);\n\nDivider.displayName = 'Divider';\n","import { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SliderProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n /** Slider value */\n value?: number;\n /** Default value */\n defaultValue?: number;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Step increment */\n step?: number;\n /** Show marks */\n showMarks?: boolean;\n /** Show tooltip */\n showTooltip?: boolean;\n /** Slider size */\n size?: 'sm' | 'md' | 'lg';\n /** Slider color */\n color?: 'primary' | 'secondary' | 'success' | 'danger' | 'warning';\n}\n\nconst sizeClasses = {\n sm: 'slider-sm',\n md: '',\n lg: 'slider-lg',\n};\n\nconst colorClasses = {\n primary: 'slider-primary',\n secondary: 'slider-secondary',\n success: 'slider-success',\n danger: 'slider-danger',\n warning: 'slider-warning',\n};\n\nexport const Slider = forwardRef<HTMLInputElement, SliderProps>(\n (\n {\n value,\n defaultValue = 0,\n min = 0,\n max = 100,\n step = 1,\n showMarks = false,\n size = 'md',\n color = 'primary',\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const currentValue = value ?? defaultValue;\n const percentage = ((currentValue - min) / (max - min)) * 100;\n\n return (\n <div\n className={cn(\n 'slider-wrapper',\n sizeClasses[size],\n colorClasses[color],\n disabled && 'slider-disabled',\n className\n )}\n >\n <input\n ref={ref}\n type=\"range\"\n className=\"slider\"\n value={value}\n defaultValue={value === undefined ? defaultValue : undefined}\n min={min}\n max={max}\n step={step}\n disabled={disabled}\n style={{\n background: `linear-gradient(to right, var(--slider-fill-color) 0%, var(--slider-fill-color) ${percentage}%, var(--slider-track-color) ${percentage}%, var(--slider-track-color) 100%)`,\n }}\n {...props}\n />\n {showMarks && (\n <div className=\"slider-marks\">\n <span className=\"slider-mark\">{min}</span>\n <span className=\"slider-mark\">{max}</span>\n </div>\n )}\n </div>\n );\n }\n);\n\nSlider.displayName = 'Slider';\n","import { forwardRef, type HTMLAttributes, type ReactNode, type ThHTMLAttributes, type TdHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype TableSize = 'sm' | 'md' | 'lg';\ntype TableVariant = 'default' | 'striped' | 'bordered';\n\nexport interface TableProps extends HTMLAttributes<HTMLTableElement> {\n /** Table size */\n size?: TableSize;\n /** Table variant */\n variant?: TableVariant;\n /** Hoverable rows */\n hoverable?: boolean;\n /** Fixed header */\n stickyHeader?: boolean;\n /** Responsive wrapper */\n responsive?: boolean;\n /** Caption text */\n caption?: ReactNode;\n /** Caption placement */\n captionSide?: 'top' | 'bottom';\n}\n\nexport interface TableHeadProps extends HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableBodyProps extends HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableFootProps extends HTMLAttributes<HTMLTableSectionElement> {}\n\nexport interface TableRowProps extends HTMLAttributes<HTMLTableRowElement> {\n /** Selected state */\n selected?: boolean;\n}\n\nexport interface TableHeaderProps extends ThHTMLAttributes<HTMLTableCellElement> {\n /** Sortable column */\n sortable?: boolean;\n /** Sort direction */\n sortDirection?: 'asc' | 'desc' | null;\n /** Sort click handler */\n onSort?: () => void;\n}\n\nexport interface TableCellProps extends TdHTMLAttributes<HTMLTableCellElement> {}\n\nconst sizeClasses: Record<TableSize, string> = {\n sm: 'table-sm',\n md: '',\n lg: 'table-lg',\n};\n\nexport const Table = forwardRef<HTMLTableElement, TableProps>(\n (\n {\n size = 'md',\n variant = 'default',\n hoverable = false,\n stickyHeader = false,\n responsive = false,\n caption,\n captionSide = 'bottom',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const table = (\n <table\n ref={ref}\n className={cn(\n 'table',\n sizeClasses[size],\n variant === 'striped' && 'table-striped',\n variant === 'bordered' && 'table-bordered',\n hoverable && 'table-hover',\n stickyHeader && 'table-sticky-header',\n className\n )}\n {...props}\n >\n {caption && (\n <caption className={cn('table-caption', captionSide === 'top' && 'caption-top')}>\n {caption}\n </caption>\n )}\n {children}\n </table>\n );\n\n if (responsive) {\n return <div className=\"table-responsive\">{table}</div>;\n }\n\n return table;\n }\n);\n\nTable.displayName = 'Table';\n\nexport const TableHead = forwardRef<HTMLTableSectionElement, TableHeadProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <thead ref={ref} className={cn('table-head', className)} {...props}>\n {children}\n </thead>\n );\n }\n);\n\nTableHead.displayName = 'TableHead';\n\nexport const TableBody = forwardRef<HTMLTableSectionElement, TableBodyProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <tbody ref={ref} className={cn('table-body', className)} {...props}>\n {children}\n </tbody>\n );\n }\n);\n\nTableBody.displayName = 'TableBody';\n\nexport const TableFoot = forwardRef<HTMLTableSectionElement, TableFootProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <tfoot ref={ref} className={cn('table-foot', className)} {...props}>\n {children}\n </tfoot>\n );\n }\n);\n\nTableFoot.displayName = 'TableFoot';\n\nexport const TableRow = forwardRef<HTMLTableRowElement, TableRowProps>(\n ({ selected = false, className, children, ...props }, ref) => {\n return (\n <tr\n ref={ref}\n className={cn('table-row', selected && 'table-row-selected', className)}\n aria-selected={selected}\n {...props}\n >\n {children}\n </tr>\n );\n }\n);\n\nTableRow.displayName = 'TableRow';\n\nexport const TableHeader = forwardRef<HTMLTableCellElement, TableHeaderProps>(\n ({ sortable = false, sortDirection = null, onSort, className, children, ...props }, ref) => {\n const handleClick = () => {\n if (sortable && onSort) {\n onSort();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (sortable && onSort && (e.key === 'Enter' || e.key === ' ')) {\n e.preventDefault();\n onSort();\n }\n };\n\n return (\n <th\n ref={ref}\n className={cn(\n 'table-header',\n sortable && 'table-header-sortable',\n sortDirection && `table-header-sort-${sortDirection}`,\n className\n )}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n tabIndex={sortable ? 0 : undefined}\n aria-sort={sortDirection === 'asc' ? 'ascending' : sortDirection === 'desc' ? 'descending' : undefined}\n {...props}\n >\n <span className=\"table-header-content\">\n {children}\n {sortable && (\n <span className=\"table-sort-icon\">\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n {sortDirection === 'asc' ? (\n <path d=\"M12 5v14M5 12l7-7 7 7\" />\n ) : sortDirection === 'desc' ? (\n <path d=\"M12 5v14M19 12l-7 7-7-7\" />\n ) : (\n <path d=\"M7 10l5-5 5 5M7 14l5 5 5-5\" />\n )}\n </svg>\n </span>\n )}\n </span>\n </th>\n );\n }\n);\n\nTableHeader.displayName = 'TableHeader';\n\nexport const TableCell = forwardRef<HTMLTableCellElement, TableCellProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <td ref={ref} className={cn('table-cell', className)} {...props}>\n {children}\n </td>\n );\n }\n);\n\nTableCell.displayName = 'TableCell';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ListSize = 'sm' | 'md' | 'lg';\n\nexport interface ListProps extends HTMLAttributes<HTMLDivElement> {\n /** List size */\n size?: ListSize;\n /** Bordered list */\n bordered?: boolean;\n /** Split items with divider */\n split?: boolean;\n /** List header */\n header?: ReactNode;\n /** List footer */\n footer?: ReactNode;\n /** Loading state */\n loading?: boolean;\n /** Empty content when no items */\n emptyText?: ReactNode;\n}\n\nexport interface ListItemProps extends HTMLAttributes<HTMLDivElement> {\n /** Extra content (right side) */\n extra?: ReactNode;\n /** Actions (bottom right) */\n actions?: ReactNode[];\n}\n\nexport interface ListItemMetaProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Avatar/image */\n avatar?: ReactNode;\n /** Title */\n title?: ReactNode;\n /** Description */\n description?: ReactNode;\n}\n\nconst sizeClasses: Record<ListSize, string> = {\n sm: 'list-sm',\n md: '',\n lg: 'list-lg',\n};\n\nexport const List = forwardRef<HTMLDivElement, ListProps>(\n (\n {\n size = 'md',\n bordered = false,\n split = true,\n header,\n footer,\n loading = false,\n emptyText = 'No data',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const hasChildren = Array.isArray(children) ? children.length > 0 : !!children;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'list',\n sizeClasses[size],\n bordered && 'list-bordered',\n split && 'list-split',\n loading && 'list-loading',\n className\n )}\n {...props}\n >\n {header && <div className=\"list-header\">{header}</div>}\n {loading ? (\n <div className=\"list-loading-content\">\n <div className=\"spinner-border spinner-border-sm\" role=\"status\">\n <span className=\"visually-hidden\">Loading...</span>\n </div>\n </div>\n ) : hasChildren ? (\n <div className=\"list-items\">{children}</div>\n ) : (\n <div className=\"list-empty\">{emptyText}</div>\n )}\n {footer && <div className=\"list-footer\">{footer}</div>}\n </div>\n );\n }\n);\n\nList.displayName = 'List';\n\nexport const ListItem = forwardRef<HTMLDivElement, ListItemProps>(\n ({ extra, actions, className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('list-item', className)} {...props}>\n <div className=\"list-item-main\">\n <div className=\"list-item-content\">{children}</div>\n {extra && <div className=\"list-item-extra\">{extra}</div>}\n </div>\n {actions && actions.length > 0 && (\n <ul className=\"list-item-actions\">\n {actions.map((action, index) => (\n <li key={index} className=\"list-item-action\">\n {action}\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n);\n\nListItem.displayName = 'ListItem';\n\nexport const ListItemMeta = forwardRef<HTMLDivElement, ListItemMetaProps>(\n ({ avatar, title, description, className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('list-item-meta', className)} {...props}>\n {avatar && <div className=\"list-item-meta-avatar\">{avatar}</div>}\n <div className=\"list-item-meta-content\">\n {title && <div className=\"list-item-meta-title\">{title}</div>}\n {description && <div className=\"list-item-meta-description\">{description}</div>}\n </div>\n </div>\n );\n }\n);\n\nListItemMeta.displayName = 'ListItemMeta';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype DescriptionsLayout = 'horizontal' | 'vertical';\ntype DescriptionsSize = 'sm' | 'md' | 'lg';\n\nexport interface DescriptionsProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Title */\n title?: ReactNode;\n /** Extra content (top right) */\n extra?: ReactNode;\n /** Layout direction */\n layout?: DescriptionsLayout;\n /** Number of columns */\n column?: number;\n /** Bordered style */\n bordered?: boolean;\n /** Size */\n size?: DescriptionsSize;\n /** Colon after label */\n colon?: boolean;\n}\n\nexport interface DescriptionsItemProps extends HTMLAttributes<HTMLDivElement> {\n /** Item label */\n label: ReactNode;\n /** Span columns */\n span?: number;\n}\n\nconst sizeClasses: Record<DescriptionsSize, string> = {\n sm: 'descriptions-sm',\n md: '',\n lg: 'descriptions-lg',\n};\n\nexport const Descriptions = forwardRef<HTMLDivElement, DescriptionsProps>(\n (\n {\n title,\n extra,\n layout = 'horizontal',\n column = 3,\n bordered = false,\n size = 'md',\n colon = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'descriptions',\n sizeClasses[size],\n layout === 'vertical' && 'descriptions-vertical',\n bordered && 'descriptions-bordered',\n className\n )}\n style={{ '--descriptions-column': column } as React.CSSProperties}\n {...props}\n >\n {(title || extra) && (\n <div className=\"descriptions-header\">\n {title && <div className=\"descriptions-title\">{title}</div>}\n {extra && <div className=\"descriptions-extra\">{extra}</div>}\n </div>\n )}\n <div className=\"descriptions-view\">\n <table className=\"descriptions-table\">\n <tbody>\n {renderRows(children, column, colon, layout)}\n </tbody>\n </table>\n </div>\n </div>\n );\n }\n);\n\nDescriptions.displayName = 'Descriptions';\n\nfunction renderRows(\n children: React.ReactNode,\n column: number,\n colon: boolean,\n layout: DescriptionsLayout\n): React.ReactNode[] {\n const childArray = Array.isArray(children) ? children : [children];\n const rows: React.ReactNode[] = [];\n let currentRow: React.ReactNode[] = [];\n let currentSpan = 0;\n\n childArray.forEach((child: any, index) => {\n if (!child) return;\n\n const span = child.props?.span || 1;\n currentSpan += span;\n currentRow.push(child);\n\n if (currentSpan >= column || index === childArray.length - 1) {\n rows.push(\n <tr key={rows.length} className=\"descriptions-row\">\n {currentRow.map((item: any, i) => {\n const itemSpan = item.props?.span || 1;\n if (layout === 'vertical') {\n return (\n <td key={i} colSpan={itemSpan} className=\"descriptions-item-container\">\n <div className=\"descriptions-item-label\">\n {item.props.label}{colon && ':'}\n </div>\n <div className=\"descriptions-item-content\">\n {item.props.children}\n </div>\n </td>\n );\n }\n return (\n <>\n <th key={`label-${i}`} className=\"descriptions-item-label\">\n {item.props.label}{colon && ':'}\n </th>\n <td key={`content-${i}`} colSpan={itemSpan} className=\"descriptions-item-content\">\n {item.props.children}\n </td>\n </>\n );\n })}\n </tr>\n );\n currentRow = [];\n currentSpan = 0;\n }\n });\n\n return rows;\n}\n\nexport const DescriptionsItem = forwardRef<HTMLDivElement, DescriptionsItemProps>(\n (_props, _ref) => {\n // This component is used for configuration, actual rendering is in parent\n return null;\n }\n);\n\nDescriptionsItem.displayName = 'DescriptionsItem';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype TimelineMode = 'left' | 'right' | 'alternate';\n\nexport interface TimelineProps extends HTMLAttributes<HTMLUListElement> {\n /** Timeline mode */\n mode?: TimelineMode;\n /** Pending item at the end */\n pending?: ReactNode;\n /** Pending dot */\n pendingDot?: ReactNode;\n /** Reverse order */\n reverse?: boolean;\n}\n\nexport interface TimelineItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Custom dot */\n dot?: ReactNode;\n /** Dot color */\n color?: 'primary' | 'success' | 'danger' | 'warning' | 'gray';\n /** Label (for alternate mode) */\n label?: ReactNode;\n /** Position override */\n position?: 'left' | 'right';\n}\n\nconst colorClasses = {\n primary: 'timeline-dot-primary',\n success: 'timeline-dot-success',\n danger: 'timeline-dot-danger',\n warning: 'timeline-dot-warning',\n gray: 'timeline-dot-gray',\n};\n\nexport const Timeline = forwardRef<HTMLUListElement, TimelineProps>(\n (\n {\n mode = 'left',\n pending,\n pendingDot,\n reverse = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const childArray = Array.isArray(children) ? children : [children];\n const items = reverse ? [...childArray].reverse() : childArray;\n\n return (\n <ul\n ref={ref}\n className={cn(\n 'timeline',\n mode === 'right' && 'timeline-right',\n mode === 'alternate' && 'timeline-alternate',\n className\n )}\n {...props}\n >\n {items}\n {pending && (\n <li className=\"timeline-item timeline-item-pending\">\n <div className=\"timeline-item-tail\" />\n <div className=\"timeline-item-dot\">\n {pendingDot || (\n <div className=\"timeline-dot timeline-dot-pending\" />\n )}\n </div>\n <div className=\"timeline-item-content\">{pending}</div>\n </li>\n )}\n </ul>\n );\n }\n);\n\nTimeline.displayName = 'Timeline';\n\nexport const TimelineItem = forwardRef<HTMLLIElement, TimelineItemProps>(\n (\n {\n dot,\n color = 'primary',\n label,\n position,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <li\n ref={ref}\n className={cn(\n 'timeline-item',\n position && `timeline-item-${position}`,\n className\n )}\n {...props}\n >\n <div className=\"timeline-item-tail\" />\n <div className=\"timeline-item-dot\">\n {dot || <div className={cn('timeline-dot', colorClasses[color])} />}\n </div>\n {label && <div className=\"timeline-item-label\">{label}</div>}\n <div className=\"timeline-item-content\">{children}</div>\n </li>\n );\n }\n);\n\nTimelineItem.displayName = 'TimelineItem';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface StatisticProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title' | 'prefix'> {\n /** Statistic title */\n title?: ReactNode;\n /** Statistic value */\n value: ReactNode;\n /** Value prefix */\n prefix?: ReactNode;\n /** Value suffix */\n suffix?: ReactNode;\n /** Precision for number values */\n precision?: number;\n /** Loading state */\n loading?: boolean;\n /** Value style */\n valueStyle?: React.CSSProperties;\n /** Formatter function */\n formatter?: (value: ReactNode) => ReactNode;\n}\n\nexport interface StatisticCountdownProps extends Omit<StatisticProps, 'value'> {\n /** Target timestamp (ms) */\n value: number;\n /** Format string */\n format?: string;\n /** Countdown finish callback */\n onFinish?: () => void;\n}\n\nexport const Statistic = forwardRef<HTMLDivElement, StatisticProps>(\n (\n {\n title,\n value,\n prefix,\n suffix,\n precision,\n loading = false,\n valueStyle,\n formatter,\n className,\n ...props\n },\n ref\n ) => {\n const formatValue = () => {\n if (formatter) {\n return formatter(value);\n }\n\n if (typeof value === 'number' && precision !== undefined) {\n return value.toFixed(precision);\n }\n\n if (typeof value === 'number') {\n return value.toLocaleString();\n }\n\n return value;\n };\n\n return (\n <div ref={ref} className={cn('statistic', className)} {...props}>\n {title && <div className=\"statistic-title\">{title}</div>}\n <div className=\"statistic-content\" style={valueStyle}>\n {loading ? (\n <span className=\"statistic-skeleton\" />\n ) : (\n <>\n {prefix && <span className=\"statistic-prefix\">{prefix}</span>}\n <span className=\"statistic-value\">{formatValue()}</span>\n {suffix && <span className=\"statistic-suffix\">{suffix}</span>}\n </>\n )}\n </div>\n </div>\n );\n }\n);\n\nStatistic.displayName = 'Statistic';\n\n// Statistic Group for displaying multiple statistics\nexport interface StatisticGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Divider between items */\n divider?: boolean;\n}\n\nexport const StatisticGroup = forwardRef<HTMLDivElement, StatisticGroupProps>(\n ({ divider = true, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('statistic-group', divider && 'statistic-group-divider', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStatisticGroup.displayName = 'StatisticGroup';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface EmptyProps extends HTMLAttributes<HTMLDivElement> {\n /** Custom image/icon */\n image?: ReactNode;\n /** Image size */\n imageSize?: number;\n /** Description text */\n description?: ReactNode;\n /** Action buttons */\n children?: ReactNode;\n}\n\nconst defaultImage = (\n <svg viewBox=\"0 0 64 41\" xmlns=\"http://www.w3.org/2000/svg\" width=\"64\" height=\"41\">\n <g fill=\"none\" fillRule=\"evenodd\">\n <ellipse fill=\"#f5f5f5\" cx=\"32\" cy=\"33\" rx=\"32\" ry=\"7\" />\n <g fillRule=\"nonzero\" stroke=\"#d9d9d9\">\n <path d=\"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\" />\n <path\n d=\"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35H11.95C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\"\n fill=\"#fafafa\"\n />\n </g>\n </g>\n </svg>\n);\n\nexport const Empty = forwardRef<HTMLDivElement, EmptyProps>(\n (\n {\n image = defaultImage,\n imageSize,\n description = 'No data',\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div ref={ref} className={cn('empty', className)} {...props}>\n <div\n className=\"empty-image\"\n style={imageSize ? { width: imageSize, height: imageSize } : undefined}\n >\n {image}\n </div>\n {description && <div className=\"empty-description\">{description}</div>}\n {children && <div className=\"empty-footer\">{children}</div>}\n </div>\n );\n }\n);\n\nEmpty.displayName = 'Empty';\n","import { forwardRef, useState, type ImgHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ImageProps extends ImgHTMLAttributes<HTMLImageElement> {\n /** Fallback content when image fails to load */\n fallback?: ReactNode;\n /** Preview on click */\n preview?: boolean;\n /** Placeholder while loading */\n placeholder?: ReactNode;\n /** Border radius */\n rounded?: boolean | 'sm' | 'md' | 'lg' | 'full';\n /** Object fit */\n fit?: 'contain' | 'cover' | 'fill' | 'none' | 'scale-down';\n}\n\nexport const Image = forwardRef<HTMLImageElement, ImageProps>(\n (\n {\n src,\n alt = '',\n fallback,\n preview = false,\n placeholder,\n rounded = false,\n fit = 'cover',\n className,\n style,\n onError,\n onLoad,\n ...props\n },\n ref\n ) => {\n const [status, setStatus] = useState<'loading' | 'loaded' | 'error'>('loading');\n const [showPreview, setShowPreview] = useState(false);\n\n const handleLoad = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setStatus('loaded');\n onLoad?.(e);\n };\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement>) => {\n setStatus('error');\n onError?.(e);\n };\n\n const handleClick = () => {\n if (preview && status === 'loaded') {\n setShowPreview(true);\n }\n };\n\n const handleClosePreview = () => {\n setShowPreview(false);\n };\n\n const roundedClasses = {\n true: 'rounded',\n sm: 'rounded-sm',\n md: 'rounded-md',\n lg: 'rounded-lg',\n full: 'rounded-full',\n };\n\n const fitStyles: Record<string, React.CSSProperties['objectFit']> = {\n contain: 'contain',\n cover: 'cover',\n fill: 'fill',\n none: 'none',\n 'scale-down': 'scale-down',\n };\n\n if (status === 'error' && fallback) {\n return <div className={cn('image-fallback', className)}>{fallback}</div>;\n }\n\n return (\n <>\n <div\n className={cn(\n 'image-wrapper',\n preview && status === 'loaded' && 'image-preview-enabled',\n className\n )}\n onClick={handleClick}\n >\n {status === 'loading' && placeholder && (\n <div className=\"image-placeholder\">{placeholder}</div>\n )}\n <img\n ref={ref}\n src={src}\n alt={alt}\n className={cn(\n 'image',\n rounded && roundedClasses[rounded === true ? 'true' : rounded],\n status === 'loading' && 'image-loading'\n )}\n style={{\n objectFit: fitStyles[fit],\n ...style,\n }}\n onLoad={handleLoad}\n onError={handleError}\n {...props}\n />\n </div>\n\n {showPreview && (\n <div className=\"image-preview-overlay\" onClick={handleClosePreview}>\n <button\n className=\"image-preview-close\"\n onClick={handleClosePreview}\n aria-label=\"Close preview\"\n >\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"24\" height=\"24\">\n <path d=\"M18 6L6 18M6 6l12 12\" />\n </svg>\n </button>\n <img src={src} alt={alt} className=\"image-preview-img\" />\n </div>\n )}\n </>\n );\n }\n);\n\nImage.displayName = 'Image';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ResultStatus = 'success' | 'error' | 'info' | 'warning' | '404' | '403' | '500';\n\nexport interface ResultProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Result status */\n status?: ResultStatus;\n /** Custom icon */\n icon?: ReactNode;\n /** Title */\n title?: ReactNode;\n /** Subtitle/description */\n subtitle?: ReactNode;\n /** Extra content (buttons) */\n extra?: ReactNode;\n}\n\nconst statusIcons: Record<ResultStatus, ReactNode> = {\n success: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9 12l2 2 4-4\" />\n </svg>\n ),\n error: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M15 9l-6 6M9 9l6 6\" />\n </svg>\n ),\n info: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4M12 8h.01\" />\n </svg>\n ),\n warning: (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n ),\n '404': (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M16 16s-1.5-2-4-2-4 2-4 2M9 9h.01M15 9h.01\" />\n </svg>\n ),\n '403': (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" ry=\"2\" />\n <path d=\"M7 11V7a5 5 0 0110 0v4\" />\n </svg>\n ),\n '500': (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"72\" height=\"72\">\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" />\n <path d=\"M12 9v4M12 17h.01\" />\n </svg>\n ),\n};\n\nconst statusClasses: Record<ResultStatus, string> = {\n success: 'result-success',\n error: 'result-error',\n info: 'result-info',\n warning: 'result-warning',\n '404': 'result-404',\n '403': 'result-403',\n '500': 'result-500',\n};\n\nexport const Result = forwardRef<HTMLDivElement, ResultProps>(\n (\n {\n status = 'info',\n icon,\n title,\n subtitle,\n extra,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const displayIcon = icon !== undefined ? icon : statusIcons[status];\n\n return (\n <div\n ref={ref}\n className={cn('result', statusClasses[status], className)}\n {...props}\n >\n {displayIcon && <div className=\"result-icon\">{displayIcon}</div>}\n {title && <div className=\"result-title\">{title}</div>}\n {subtitle && <div className=\"result-subtitle\">{subtitle}</div>}\n {extra && <div className=\"result-extra\">{extra}</div>}\n {children && <div className=\"result-content\">{children}</div>}\n </div>\n );\n }\n);\n\nResult.displayName = 'Result';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype SkeletonVariant = 'text' | 'circular' | 'rectangular' | 'rounded';\n\nexport interface SkeletonProps extends HTMLAttributes<HTMLDivElement> {\n /** Skeleton variant */\n variant?: SkeletonVariant;\n /** Width */\n width?: number | string;\n /** Height */\n height?: number | string;\n /** Animation */\n animation?: 'pulse' | 'wave' | false;\n /** Number of lines (for text variant) */\n lines?: number;\n}\n\nexport const Skeleton = forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n variant = 'text',\n width,\n height,\n animation = 'pulse',\n lines = 1,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const variantClasses: Record<SkeletonVariant, string> = {\n text: 'skeleton-text',\n circular: 'skeleton-circular',\n rectangular: 'skeleton-rectangular',\n rounded: 'skeleton-rounded',\n };\n\n const baseStyles: React.CSSProperties = {\n width: width,\n height: variant === 'text' && !height ? '1em' : height,\n ...style,\n };\n\n if (variant === 'text' && lines > 1) {\n return (\n <div ref={ref} className={cn('skeleton-group', className)} {...props}>\n {Array.from({ length: lines }).map((_, index) => (\n <div\n key={index}\n className={cn(\n 'skeleton',\n variantClasses[variant],\n animation && `skeleton-${animation}`,\n index === lines - 1 && 'skeleton-last-line'\n )}\n style={{\n ...baseStyles,\n width: index === lines - 1 ? '80%' : width,\n }}\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'skeleton',\n variantClasses[variant],\n animation && `skeleton-${animation}`,\n className\n )}\n style={baseStyles}\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = 'Skeleton';\n\n// Skeleton with avatar and text preset\nexport interface SkeletonAvatarProps extends HTMLAttributes<HTMLDivElement> {\n /** Avatar size */\n size?: number;\n /** Animation */\n animation?: 'pulse' | 'wave' | false;\n}\n\nexport const SkeletonAvatar = forwardRef<HTMLDivElement, SkeletonAvatarProps>(\n ({ size = 40, animation = 'pulse', className, ...props }, ref) => {\n return (\n <Skeleton\n ref={ref}\n variant=\"circular\"\n width={size}\n height={size}\n animation={animation}\n className={className}\n {...props}\n />\n );\n }\n);\n\nSkeletonAvatar.displayName = 'SkeletonAvatar';\n\nexport interface SkeletonCardProps extends HTMLAttributes<HTMLDivElement> {\n /** Show avatar */\n avatar?: boolean;\n /** Number of text lines */\n lines?: number;\n /** Animation */\n animation?: 'pulse' | 'wave' | false;\n}\n\nexport const SkeletonCard = forwardRef<HTMLDivElement, SkeletonCardProps>(\n ({ avatar = true, lines = 3, animation = 'pulse', className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('skeleton-card', className)} {...props}>\n {avatar && (\n <div className=\"skeleton-card-header\">\n <SkeletonAvatar animation={animation} />\n <div className=\"skeleton-card-meta\">\n <Skeleton variant=\"text\" width=\"40%\" animation={animation} />\n <Skeleton variant=\"text\" width=\"60%\" animation={animation} />\n </div>\n </div>\n )}\n <Skeleton variant=\"text\" lines={lines} animation={animation} />\n </div>\n );\n }\n);\n\nSkeletonCard.displayName = 'SkeletonCard';\n","import { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current value */\n value?: number;\n /** Default value */\n defaultValue?: number;\n /** Number of stars */\n count?: number;\n /** Allow half rating */\n allowHalf?: boolean;\n /** Allow clear */\n allowClear?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Read only */\n readOnly?: boolean;\n /** Custom character */\n character?: ReactNode;\n /** Change callback */\n onChange?: (value: number) => void;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Tooltips for each star */\n tooltips?: string[];\n}\n\nconst defaultStar = (\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"1em\" height=\"1em\">\n <path d=\"M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z\" />\n </svg>\n);\n\nconst sizeClasses = {\n sm: 'rate-sm',\n md: '',\n lg: 'rate-lg',\n};\n\nexport const Rate = forwardRef<HTMLDivElement, RateProps>(\n (\n {\n value: controlledValue,\n defaultValue = 0,\n count = 5,\n allowHalf = false,\n allowClear = true,\n disabled = false,\n readOnly = false,\n character = defaultStar,\n onChange,\n size = 'md',\n tooltips,\n className,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [hoverValue, setHoverValue] = useState<number | null>(null);\n const value = controlledValue ?? internalValue;\n\n const handleClick = (newValue: number) => {\n if (disabled || readOnly) return;\n\n // Allow clear\n if (allowClear && newValue === value) {\n const clearedValue = 0;\n if (controlledValue === undefined) {\n setInternalValue(clearedValue);\n }\n onChange?.(clearedValue);\n return;\n }\n\n if (controlledValue === undefined) {\n setInternalValue(newValue);\n }\n onChange?.(newValue);\n };\n\n const handleMouseEnter = (starValue: number) => {\n if (disabled || readOnly) return;\n setHoverValue(starValue);\n };\n\n const handleMouseLeave = () => {\n setHoverValue(null);\n };\n\n const displayValue = hoverValue ?? value;\n\n const renderStar = (index: number) => {\n const starValue = index + 1;\n const halfValue = index + 0.5;\n const isFull = displayValue >= starValue;\n const isHalf = allowHalf && !isFull && displayValue >= halfValue;\n const isEmpty = !isFull && !isHalf;\n\n const tooltip = tooltips?.[index];\n\n return (\n <div\n key={index}\n className={cn(\n 'rate-star',\n isFull && 'rate-star-full',\n isHalf && 'rate-star-half',\n isEmpty && 'rate-star-empty'\n )}\n onClick={() => handleClick(starValue)}\n onMouseEnter={() => handleMouseEnter(starValue)}\n title={tooltip}\n >\n {allowHalf && (\n <div\n className=\"rate-star-first\"\n onClick={(e) => {\n e.stopPropagation();\n handleClick(halfValue);\n }}\n onMouseEnter={(e) => {\n e.stopPropagation();\n handleMouseEnter(halfValue);\n }}\n >\n {character}\n </div>\n )}\n <div className=\"rate-star-second\">{character}</div>\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'rate',\n sizeClasses[size],\n disabled && 'rate-disabled',\n readOnly && 'rate-readonly',\n className\n )}\n onMouseLeave={handleMouseLeave}\n role=\"radiogroup\"\n aria-label=\"Rating\"\n aria-valuenow={value}\n aria-valuemin={0}\n aria-valuemax={count}\n {...props}\n >\n {Array.from({ length: count }).map((_, index) => renderStar(index))}\n </div>\n );\n }\n);\n\nRate.displayName = 'Rate';\n","import { forwardRef, useState, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface BackTopProps extends HTMLAttributes<HTMLDivElement> {\n /** Scroll target (defaults to window) */\n target?: () => HTMLElement | Window;\n /** Visibility threshold (px from top) */\n visibilityHeight?: number;\n /** Duration of scroll animation (ms) */\n duration?: number;\n /** Custom content */\n children?: ReactNode;\n /** Click callback */\n onClick?: () => void;\n}\n\nconst defaultIcon = (\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\" width=\"20\" height=\"20\">\n <path d=\"M12 19V5M5 12l7-7 7 7\" />\n </svg>\n);\n\nexport const BackTop = forwardRef<HTMLDivElement, BackTopProps>(\n (\n {\n target,\n visibilityHeight = 400,\n duration = 450,\n onClick,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n const scrollTarget = target ? target() : window;\n\n const handleScroll = () => {\n const scrollTop =\n scrollTarget === window\n ? window.pageYOffset || document.documentElement.scrollTop\n : (scrollTarget as HTMLElement).scrollTop;\n\n setVisible(scrollTop > visibilityHeight);\n };\n\n scrollTarget.addEventListener('scroll', handleScroll);\n handleScroll(); // Check initial state\n\n return () => {\n scrollTarget.removeEventListener('scroll', handleScroll);\n };\n }, [target, visibilityHeight]);\n\n const scrollToTop = () => {\n const scrollTarget = target ? target() : window;\n const startTime = performance.now();\n const scrollTop =\n scrollTarget === window\n ? window.pageYOffset || document.documentElement.scrollTop\n : (scrollTarget as HTMLElement).scrollTop;\n\n const animateScroll = (currentTime: number) => {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const easeProgress = 1 - Math.pow(1 - progress, 3); // Ease out cubic\n\n const newScrollTop = scrollTop * (1 - easeProgress);\n\n if (scrollTarget === window) {\n window.scrollTo(0, newScrollTop);\n } else {\n (scrollTarget as HTMLElement).scrollTop = newScrollTop;\n }\n\n if (progress < 1) {\n requestAnimationFrame(animateScroll);\n }\n };\n\n requestAnimationFrame(animateScroll);\n onClick?.();\n };\n\n if (!visible) return null;\n\n return (\n <div\n ref={ref}\n className={cn('back-top', className)}\n onClick={scrollToTop}\n role=\"button\"\n tabIndex={0}\n aria-label=\"Back to top\"\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n scrollToTop();\n }\n }}\n {...props}\n >\n {children || <div className=\"back-top-content\">{defaultIcon}</div>}\n </div>\n );\n }\n);\n\nBackTop.displayName = 'BackTop';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ButtonGroupSize = 'sm' | 'md' | 'lg';\ntype ButtonGroupVariant = 'solid' | 'outline' | 'ghost';\n\nexport interface ButtonGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Size of buttons in the group */\n size?: ButtonGroupSize;\n /** Variant of buttons in the group */\n variant?: ButtonGroupVariant;\n /** Disable all buttons */\n disabled?: boolean;\n /** Vertical orientation */\n vertical?: boolean;\n /** Attached buttons (no gap) */\n attached?: boolean;\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n size = 'md',\n variant = 'solid',\n disabled = false,\n vertical = false,\n attached = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'btn-group',\n vertical && 'btn-group-vertical',\n attached && 'btn-group-attached',\n disabled && 'btn-group-disabled',\n className\n )}\n data-size={size}\n data-variant={variant}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = 'ButtonGroup';\n","import { forwardRef, type SVGAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface IconProps extends SVGAttributes<SVGSVGElement> {\n /** Icon size */\n size?: IconSize;\n /** Icon color */\n color?: string;\n /** Spin animation */\n spin?: boolean;\n /** Icon name (for icon fonts) */\n name?: string;\n}\n\nconst sizeMap: Record<IconSize, number> = {\n xs: 12,\n sm: 16,\n md: 20,\n lg: 24,\n xl: 32,\n};\n\nexport const Icon = forwardRef<SVGSVGElement, IconProps>(\n (\n {\n size = 'md',\n color = 'currentColor',\n spin = false,\n name,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const dimension = sizeMap[size];\n\n return (\n <svg\n ref={ref}\n className={cn(\n 'icon',\n spin && 'icon-spin',\n className\n )}\n width={dimension}\n height={dimension}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n data-icon={name}\n {...props}\n >\n {children}\n </svg>\n );\n }\n);\n\nIcon.displayName = 'Icon';\n\n// Common icons\nexport const Icons = {\n Check: () => <path d=\"M20 6L9 17l-5-5\" />,\n X: () => <><line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" /></>,\n ChevronDown: () => <polyline points=\"6 9 12 15 18 9\" />,\n ChevronUp: () => <polyline points=\"18 15 12 9 6 15\" />,\n ChevronLeft: () => <polyline points=\"15 18 9 12 15 6\" />,\n ChevronRight: () => <polyline points=\"9 18 15 12 9 6\" />,\n Search: () => <><circle cx=\"11\" cy=\"11\" r=\"8\" /><line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" /></>,\n Menu: () => <><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\" /><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\" /><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\" /></>,\n Plus: () => <><line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" /><line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" /></>,\n Minus: () => <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />,\n Info: () => <><circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" /><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" /></>,\n Warning: () => <><path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" /><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" /><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" /></>,\n Error: () => <><circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" /><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" /></>,\n Success: () => <><path d=\"M22 11.08V12a10 10 0 11-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" /></>,\n Loading: () => <><line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\" /><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\" /><line x1=\"4.93\" y1=\"4.93\" x2=\"7.76\" y2=\"7.76\" /><line x1=\"16.24\" y1=\"16.24\" x2=\"19.07\" y2=\"19.07\" /><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\" /><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\" /><line x1=\"4.93\" y1=\"19.07\" x2=\"7.76\" y2=\"16.24\" /><line x1=\"16.24\" y1=\"7.76\" x2=\"19.07\" y2=\"4.93\" /></>,\n};\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype IconButtonSize = 'sm' | 'md' | 'lg';\ntype IconButtonVariant = 'solid' | 'outline' | 'ghost' | 'light';\n\nexport interface IconButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Button size */\n size?: IconButtonSize;\n /** Button variant */\n variant?: IconButtonVariant;\n /** Color scheme */\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n /** Icon element */\n icon: ReactNode;\n /** Loading state */\n loading?: boolean;\n /** Rounded style */\n rounded?: boolean;\n /** Accessible label */\n 'aria-label': string;\n}\n\nconst sizeClasses: Record<IconButtonSize, string> = {\n sm: 'icon-btn-sm',\n md: '',\n lg: 'icon-btn-lg',\n};\n\nconst variantClasses: Record<IconButtonVariant, string> = {\n solid: 'icon-btn-solid',\n outline: 'icon-btn-outline',\n ghost: 'icon-btn-ghost',\n light: 'icon-btn-light',\n};\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n size = 'md',\n variant = 'ghost',\n color = 'primary',\n icon,\n loading = false,\n rounded = false,\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n disabled={disabled || loading}\n className={cn(\n 'icon-btn',\n sizeClasses[size],\n variantClasses[variant],\n `icon-btn-${color}`,\n rounded && 'icon-btn-rounded',\n loading && 'icon-btn-loading',\n className\n )}\n {...props}\n >\n {loading ? (\n <span className=\"icon-btn-spinner\" />\n ) : (\n icon\n )}\n </button>\n );\n }\n);\n\nIconButton.displayName = 'IconButton';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ChipSize = 'sm' | 'md' | 'lg';\ntype ChipVariant = 'solid' | 'outline' | 'light';\ntype ChipColor = 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n\nexport interface ChipProps extends HTMLAttributes<HTMLSpanElement> {\n /** Chip size */\n size?: ChipSize;\n /** Chip variant */\n variant?: ChipVariant;\n /** Color scheme */\n color?: ChipColor;\n /** Avatar or icon on left */\n avatar?: ReactNode;\n /** Start content */\n startContent?: ReactNode;\n /** End content */\n endContent?: ReactNode;\n /** Deletable chip */\n onClose?: () => void;\n /** Disabled state */\n disabled?: boolean;\n /** Clickable chip */\n clickable?: boolean;\n}\n\nconst sizeClasses: Record<ChipSize, string> = {\n sm: 'chip-sm',\n md: '',\n lg: 'chip-lg',\n};\n\nconst variantClasses: Record<ChipVariant, string> = {\n solid: 'chip-solid',\n outline: 'chip-outline',\n light: 'chip-light',\n};\n\nexport const Chip = forwardRef<HTMLSpanElement, ChipProps>(\n (\n {\n size = 'md',\n variant = 'solid',\n color = 'default',\n avatar,\n startContent,\n endContent,\n onClose,\n disabled = false,\n clickable = false,\n className,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const isClickable = clickable || !!onClick;\n\n return (\n <span\n ref={ref}\n role={isClickable ? 'button' : undefined}\n tabIndex={isClickable && !disabled ? 0 : undefined}\n className={cn(\n 'chip',\n sizeClasses[size],\n variantClasses[variant],\n `chip-${color}`,\n disabled && 'chip-disabled',\n isClickable && 'chip-clickable',\n className\n )}\n onClick={!disabled ? onClick : undefined}\n {...props}\n >\n {avatar && <span className=\"chip-avatar\">{avatar}</span>}\n {startContent && <span className=\"chip-start\">{startContent}</span>}\n <span className=\"chip-content\">{children}</span>\n {endContent && <span className=\"chip-end\">{endContent}</span>}\n {onClose && !disabled && (\n <button\n type=\"button\"\n className=\"chip-close\"\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n aria-label=\"Remove\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </span>\n );\n }\n);\n\nChip.displayName = 'Chip';\n\n// Chip Group\nexport interface ChipGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Gap between chips */\n gap?: 'sm' | 'md' | 'lg';\n}\n\nexport const ChipGroup = forwardRef<HTMLDivElement, ChipGroupProps>(\n ({ gap = 'sm', className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('chip-group', `chip-group-gap-${gap}`, className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nChipGroup.displayName = 'ChipGroup';\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype CloseButtonSize = 'sm' | 'md' | 'lg';\n\nexport interface CloseButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Button size */\n size?: CloseButtonSize;\n /** Accessible label */\n 'aria-label'?: string;\n}\n\nconst sizeClasses: Record<CloseButtonSize, string> = {\n sm: 'close-btn-sm',\n md: '',\n lg: 'close-btn-lg',\n};\n\nexport const CloseButton = forwardRef<HTMLButtonElement, CloseButtonProps>(\n (\n {\n size = 'md',\n 'aria-label': ariaLabel = 'Close',\n className,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label={ariaLabel}\n className={cn('close-btn', sizeClasses[size], className)}\n {...props}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"1em\"\n height=\"1em\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n fill=\"none\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n );\n }\n);\n\nCloseButton.displayName = 'CloseButton';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CodeProps extends HTMLAttributes<HTMLElement> {\n /** Color scheme */\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n}\n\nexport const Code = forwardRef<HTMLElement, CodeProps>(\n ({ color = 'default', className, children, ...props }, ref) => {\n return (\n <code\n ref={ref}\n className={cn('code', `code-${color}`, className)}\n {...props}\n >\n {children}\n </code>\n );\n }\n);\n\nCode.displayName = 'Code';\n\n// Code Block\nexport interface CodeBlockProps extends HTMLAttributes<HTMLPreElement> {\n /** Language for syntax highlighting */\n language?: string;\n /** Show line numbers */\n showLineNumbers?: boolean;\n /** Filename header */\n filename?: string;\n /** Copy button */\n copyable?: boolean;\n /** Code content */\n children: string;\n}\n\nexport const CodeBlock = forwardRef<HTMLPreElement, CodeBlockProps>(\n (\n {\n language,\n showLineNumbers = false,\n filename,\n copyable = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const handleCopy = () => {\n navigator.clipboard.writeText(children);\n };\n\n const lines = children.split('\\n');\n\n return (\n <div className={cn('code-block-wrapper', className)}>\n {(filename || copyable) && (\n <div className=\"code-block-header\">\n {filename && <span className=\"code-block-filename\">{filename}</span>}\n {language && <span className=\"code-block-language\">{language}</span>}\n {copyable && (\n <button\n type=\"button\"\n className=\"code-block-copy\"\n onClick={handleCopy}\n aria-label=\"Copy code\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n </button>\n )}\n </div>\n )}\n <pre ref={ref} className=\"code-block\" data-language={language} {...props}>\n {showLineNumbers ? (\n <code className=\"code-block-content\">\n {lines.map((line, i) => (\n <span key={i} className=\"code-block-line\">\n <span className=\"code-block-line-number\">{i + 1}</span>\n <span className=\"code-block-line-content\">{line}</span>\n </span>\n ))}\n </code>\n ) : (\n <code className=\"code-block-content\">{children}</code>\n )}\n </pre>\n </div>\n );\n }\n);\n\nCodeBlock.displayName = 'CodeBlock';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype StackDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\ntype StackAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\ntype StackJustify = 'start' | 'center' | 'end' | 'between' | 'around' | 'evenly';\ntype StackSpacing = 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface StackProps extends HTMLAttributes<HTMLDivElement> {\n /** Stack direction */\n direction?: StackDirection;\n /** Align items */\n align?: StackAlign;\n /** Justify content */\n justify?: StackJustify;\n /** Gap between items */\n spacing?: StackSpacing;\n /** Wrap items */\n wrap?: boolean;\n /** Divider between items */\n divider?: boolean;\n}\n\nexport const Stack = forwardRef<HTMLDivElement, StackProps>(\n (\n {\n direction = 'column',\n align = 'stretch',\n justify = 'start',\n spacing = 'md',\n wrap = false,\n divider = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'stack',\n `stack-${direction}`,\n `stack-align-${align}`,\n `stack-justify-${justify}`,\n `stack-spacing-${spacing}`,\n wrap && 'stack-wrap',\n divider && 'stack-divider',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nStack.displayName = 'Stack';\n\n// VStack - Vertical Stack\nexport interface VStackProps extends Omit<StackProps, 'direction'> {}\n\nexport const VStack = forwardRef<HTMLDivElement, VStackProps>(\n (props, ref) => <Stack ref={ref} direction=\"column\" {...props} />\n);\n\nVStack.displayName = 'VStack';\n\n// HStack - Horizontal Stack\nexport interface HStackProps extends Omit<StackProps, 'direction'> {}\n\nexport const HStack = forwardRef<HTMLDivElement, HStackProps>(\n (props, ref) => <Stack ref={ref} direction=\"row\" {...props} />\n);\n\nHStack.displayName = 'HStack';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AspectRatioProps extends HTMLAttributes<HTMLDivElement> {\n /** Aspect ratio (e.g., 16/9, 4/3, 1) */\n ratio?: number;\n}\n\nexport const AspectRatio = forwardRef<HTMLDivElement, AspectRatioProps>(\n ({ ratio = 1, className, children, style, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('aspect-ratio', className)}\n style={{\n ...style,\n '--aspect-ratio': ratio,\n } as React.CSSProperties}\n {...props}\n >\n <div className=\"aspect-ratio-content\">{children}</div>\n </div>\n );\n }\n);\n\nAspectRatio.displayName = 'AspectRatio';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MasonryProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of columns */\n columns?: number | { sm?: number; md?: number; lg?: number; xl?: number };\n /** Gap between items */\n gap?: 'none' | 'sm' | 'md' | 'lg';\n}\n\nexport const Masonry = forwardRef<HTMLDivElement, MasonryProps>(\n ({ columns = 3, gap = 'md', className, children, style, ...props }, ref) => {\n const columnCount = typeof columns === 'number' ? columns : columns.md || 3;\n\n return (\n <div\n ref={ref}\n className={cn('masonry', `masonry-gap-${gap}`, className)}\n style={{\n ...style,\n '--masonry-columns': columnCount,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nMasonry.displayName = 'Masonry';\n\nexport interface MasonryItemProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const MasonryItem = forwardRef<HTMLDivElement, MasonryItemProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('masonry-item', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nMasonryItem.displayName = 'MasonryItem';\n","'use client';\n\nimport { forwardRef, useState, useRef, useCallback, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SplitterProps extends HTMLAttributes<HTMLDivElement> {\n /** Orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Initial sizes (percentages) */\n defaultSizes?: number[];\n /** Minimum size for panels (px) */\n minSize?: number;\n /** Gutter size (px) */\n gutterSize?: number;\n /** Disable resizing */\n disabled?: boolean;\n}\n\nexport const Splitter = forwardRef<HTMLDivElement, SplitterProps>(\n (\n {\n orientation = 'horizontal',\n defaultSizes,\n minSize = 100,\n gutterSize = 8,\n disabled = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const childArray = Array.isArray(children) ? children : [children];\n const panelCount = childArray.length;\n const initialSizes = defaultSizes || Array(panelCount).fill(100 / panelCount);\n const [sizes, setSizes] = useState<number[]>(initialSizes);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleMouseDown = useCallback(\n (index: number) => (e: React.MouseEvent) => {\n if (disabled) return;\n e.preventDefault();\n\n const container = containerRef.current;\n if (!container) return;\n\n const isHorizontal = orientation === 'horizontal';\n const containerRect = container.getBoundingClientRect();\n const containerSize = isHorizontal ? containerRect.width : containerRect.height;\n\n const startPos = isHorizontal ? e.clientX : e.clientY;\n const startSizes = [...sizes];\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n const currentPos = isHorizontal ? moveEvent.clientX : moveEvent.clientY;\n const delta = ((currentPos - startPos) / containerSize) * 100;\n\n const newSizes = [...startSizes];\n newSizes[index] = Math.max((minSize / containerSize) * 100, startSizes[index] + delta);\n newSizes[index + 1] = Math.max((minSize / containerSize) * 100, startSizes[index + 1] - delta);\n\n setSizes(newSizes);\n };\n\n const handleMouseUp = () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [orientation, sizes, minSize, disabled]\n );\n\n return (\n <div\n ref={(node) => {\n (containerRef as any).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cn(\n 'splitter',\n `splitter-${orientation}`,\n disabled && 'splitter-disabled',\n className\n )}\n {...props}\n >\n {childArray.map((child, index) => (\n <div key={index} className=\"splitter-panel-wrapper\">\n <div\n className=\"splitter-panel\"\n style={{\n [orientation === 'horizontal' ? 'width' : 'height']: `${sizes[index]}%`,\n }}\n >\n {child}\n </div>\n {index < panelCount - 1 && (\n <div\n className={cn('splitter-gutter', !disabled && 'splitter-gutter-active')}\n style={{\n [orientation === 'horizontal' ? 'width' : 'height']: gutterSize,\n }}\n onMouseDown={handleMouseDown(index)}\n >\n <div className=\"splitter-gutter-handle\" />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n }\n);\n\nSplitter.displayName = 'Splitter';\n\nexport interface SplitterPanelProps extends HTMLAttributes<HTMLDivElement> {\n /** Default size (percentage) */\n defaultSize?: number;\n /** Minimum size (px) */\n minSize?: number;\n /** Maximum size (px) */\n maxSize?: number;\n /** Collapsible */\n collapsible?: boolean;\n}\n\nexport const SplitterPanel = forwardRef<HTMLDivElement, SplitterPanelProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('splitter-panel-content', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nSplitterPanel.displayName = 'SplitterPanel';\n","import { forwardRef, type AnchorHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype LinkVariant = 'default' | 'subtle' | 'underline';\n\nexport interface LinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Link variant */\n variant?: LinkVariant;\n /** Color */\n color?: 'primary' | 'secondary' | 'inherit';\n /** External link */\n external?: boolean;\n /** Show external icon */\n showExternalIcon?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const Link = forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n variant = 'default',\n color = 'primary',\n external = false,\n showExternalIcon = false,\n disabled = false,\n className,\n children,\n href,\n target,\n rel,\n ...props\n },\n ref\n ) => {\n const isExternal = external || target === '_blank';\n const externalProps = isExternal\n ? {\n target: '_blank',\n rel: rel || 'noopener noreferrer',\n }\n : {};\n\n return (\n <a\n ref={ref}\n href={disabled ? undefined : href}\n className={cn(\n 'link',\n `link-${variant}`,\n `link-${color}`,\n disabled && 'link-disabled',\n className\n )}\n aria-disabled={disabled}\n {...externalProps}\n {...props}\n >\n {children}\n {showExternalIcon && isExternal && (\n <svg\n className=\"link-external-icon\"\n viewBox=\"0 0 24 24\"\n width=\"0.875em\"\n height=\"0.875em\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n >\n <path d=\"M18 13v6a2 2 0 01-2 2H5a2 2 0 01-2-2V8a2 2 0 012-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line x1=\"10\" y1=\"14\" x2=\"21\" y2=\"3\" />\n </svg>\n )}\n </a>\n );\n }\n);\n\nLink.displayName = 'Link';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface NavbarProps extends HTMLAttributes<HTMLElement> {\n /** Fixed position */\n position?: 'static' | 'sticky' | 'fixed';\n /** Max width */\n maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /** Bordered bottom */\n bordered?: boolean;\n /** Blur background */\n blurred?: boolean;\n}\n\nexport const Navbar = forwardRef<HTMLElement, NavbarProps>(\n (\n {\n position = 'sticky',\n maxWidth = 'xl',\n bordered = true,\n blurred = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <nav\n ref={ref}\n className={cn(\n 'navbar',\n `navbar-${position}`,\n `navbar-max-${maxWidth}`,\n bordered && 'navbar-bordered',\n blurred && 'navbar-blurred',\n className\n )}\n {...props}\n >\n <div className=\"navbar-container\">{children}</div>\n </nav>\n );\n }\n);\n\nNavbar.displayName = 'Navbar';\n\n// Navbar Brand\nexport interface NavbarBrandProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const NavbarBrand = forwardRef<HTMLDivElement, NavbarBrandProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('navbar-brand', className)} {...props}>\n {children}\n </div>\n )\n);\n\nNavbarBrand.displayName = 'NavbarBrand';\n\n// Navbar Content\nexport interface NavbarContentProps extends HTMLAttributes<HTMLUListElement> {\n /** Justify content */\n justify?: 'start' | 'center' | 'end';\n}\n\nexport const NavbarContent = forwardRef<HTMLUListElement, NavbarContentProps>(\n ({ justify = 'start', className, children, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn('navbar-nav', `navbar-nav-${justify}`, className)}\n {...props}\n >\n {children}\n </ul>\n )\n);\n\nNavbarContent.displayName = 'NavbarContent';\n\n// Navbar Item\nexport interface NavbarItemProps extends HTMLAttributes<HTMLLIElement> {\n /** Active state */\n active?: boolean;\n}\n\nexport const NavbarItem = forwardRef<HTMLLIElement, NavbarItemProps>(\n ({ active = false, className, children, ...props }, ref) => (\n <li\n ref={ref}\n className={cn('nav-item', active && 'active', className)}\n {...props}\n >\n {children}\n </li>\n )\n);\n\nNavbarItem.displayName = 'NavbarItem';\n\n// Navbar Menu Toggle (for mobile)\nexport interface NavbarMenuToggleProps extends HTMLAttributes<HTMLButtonElement> {\n /** Is menu open */\n isOpen?: boolean;\n}\n\nexport const NavbarMenuToggle = forwardRef<HTMLButtonElement, NavbarMenuToggleProps>(\n ({ isOpen = false, className, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n aria-label={isOpen ? 'Close menu' : 'Open menu'}\n aria-expanded={isOpen}\n className={cn('navbar-toggle', isOpen && 'active', className)}\n {...props}\n >\n <span />\n <span />\n <span />\n </button>\n )\n);\n\nNavbarMenuToggle.displayName = 'NavbarMenuToggle';\n\n// Navbar Menu (mobile dropdown)\nexport interface NavbarMenuProps extends HTMLAttributes<HTMLDivElement> {\n /** Is menu open */\n isOpen?: boolean;\n}\n\nexport const NavbarMenu = forwardRef<HTMLDivElement, NavbarMenuProps>(\n ({ isOpen = false, className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('navbar-collapse', isOpen && 'show', className)}\n {...props}\n >\n {children}\n </div>\n )\n);\n\nNavbarMenu.displayName = 'NavbarMenu';\n\n// Navbar Menu Item\nexport interface NavbarMenuItemProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const NavbarMenuItem = forwardRef<HTMLDivElement, NavbarMenuItemProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('nav-item', className)} {...props}>\n {children}\n </div>\n )\n);\n\nNavbarMenuItem.displayName = 'NavbarMenuItem';\n","'use client';\n\nimport { forwardRef, createContext, useContext, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\ninterface SidebarContextValue {\n collapsed: boolean;\n setCollapsed: (collapsed: boolean) => void;\n}\n\nconst SidebarContext = createContext<SidebarContextValue | null>(null);\n\nexport const useSidebar = () => {\n const context = useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a Sidebar');\n }\n return context;\n};\n\nexport interface SidebarProps extends HTMLAttributes<HTMLElement> {\n /** Collapsed state */\n collapsed?: boolean;\n /** Default collapsed state */\n defaultCollapsed?: boolean;\n /** On collapse change */\n onCollapsedChange?: (collapsed: boolean) => void;\n /** Width when expanded */\n width?: number;\n /** Width when collapsed */\n collapsedWidth?: number;\n /** Position */\n position?: 'left' | 'right';\n}\n\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(\n (\n {\n collapsed: controlledCollapsed,\n defaultCollapsed = false,\n onCollapsedChange,\n width = 280,\n collapsedWidth = 80,\n position = 'left',\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const [internalCollapsed, setInternalCollapsed] = useState(defaultCollapsed);\n const collapsed = controlledCollapsed ?? internalCollapsed;\n\n const setCollapsed = (value: boolean) => {\n setInternalCollapsed(value);\n onCollapsedChange?.(value);\n };\n\n return (\n <SidebarContext.Provider value={{ collapsed, setCollapsed }}>\n <aside\n ref={ref}\n className={cn(\n 'sidebar',\n collapsed && 'sidebar-collapsed',\n `sidebar-${position}`,\n className\n )}\n style={{\n ...style,\n '--sidebar-width': `${width}px`,\n '--sidebar-collapsed-width': `${collapsedWidth}px`,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </aside>\n </SidebarContext.Provider>\n );\n }\n);\n\nSidebar.displayName = 'Sidebar';\n\n// Sidebar Header\nexport interface SidebarHeaderProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const SidebarHeader = forwardRef<HTMLDivElement, SidebarHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sidebar-header', className)} {...props}>\n {children}\n </div>\n )\n);\n\nSidebarHeader.displayName = 'SidebarHeader';\n\n// Sidebar Content\nexport interface SidebarContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const SidebarContent = forwardRef<HTMLDivElement, SidebarContentProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sidebar-content', className)} {...props}>\n {children}\n </div>\n )\n);\n\nSidebarContent.displayName = 'SidebarContent';\n\n// Sidebar Footer\nexport interface SidebarFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const SidebarFooter = forwardRef<HTMLDivElement, SidebarFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sidebar-footer', className)} {...props}>\n {children}\n </div>\n )\n);\n\nSidebarFooter.displayName = 'SidebarFooter';\n\n// Sidebar Group\nexport interface SidebarGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label?: ReactNode;\n}\n\nexport const SidebarGroup = forwardRef<HTMLDivElement, SidebarGroupProps>(\n ({ label, className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sidebar-group', className)} {...props}>\n {label && <div className=\"sidebar-group-label\">{label}</div>}\n <div className=\"sidebar-group-content\">{children}</div>\n </div>\n )\n);\n\nSidebarGroup.displayName = 'SidebarGroup';\n\n// Sidebar Item\nexport interface SidebarItemProps extends HTMLAttributes<HTMLDivElement> {\n /** Icon */\n icon?: ReactNode;\n /** Active state */\n active?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const SidebarItem = forwardRef<HTMLDivElement, SidebarItemProps>(\n ({ icon, active = false, disabled = false, className, children, ...props }, ref) => {\n const { collapsed } = useSidebar();\n\n return (\n <div\n ref={ref}\n className={cn(\n 'sidebar-item',\n active && 'sidebar-item-active',\n disabled && 'sidebar-item-disabled',\n className\n )}\n {...props}\n >\n {icon && <span className=\"sidebar-item-icon\">{icon}</span>}\n {!collapsed && <span className=\"sidebar-item-label\">{children}</span>}\n </div>\n );\n }\n);\n\nSidebarItem.displayName = 'SidebarItem';\n\n// Sidebar Toggle\nexport interface SidebarToggleProps extends HTMLAttributes<HTMLButtonElement> {}\n\nexport const SidebarToggle = forwardRef<HTMLButtonElement, SidebarToggleProps>(\n ({ className, ...props }, ref) => {\n const { collapsed, setCollapsed } = useSidebar();\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\n className={cn('sidebar-toggle', className)}\n onClick={() => setCollapsed(!collapsed)}\n {...props}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"20\"\n height=\"20\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n style={{ transform: collapsed ? 'rotate(180deg)' : undefined }}\n >\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n );\n }\n);\n\nSidebarToggle.displayName = 'SidebarToggle';\n","'use client';\n\nimport { forwardRef, useState, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AnchorItem {\n key: string;\n href: string;\n title: ReactNode;\n children?: AnchorItem[];\n}\n\nexport interface AnchorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Anchor items */\n items: AnchorItem[];\n /** Offset from top (px) */\n offsetTop?: number;\n /** Target offset (px) */\n targetOffset?: number;\n /** Show ink indicator */\n showInk?: boolean;\n /** Affix mode */\n affix?: boolean;\n /** Current active link */\n activeLink?: string;\n /** On change callback */\n onChange?: (activeLink: string) => void;\n /** On click callback */\n onLinkClick?: (e: React.MouseEvent, link: { title: ReactNode; href: string }) => void;\n}\n\nexport const Anchor = forwardRef<HTMLDivElement, AnchorProps>(\n (\n {\n items,\n offsetTop = 0,\n targetOffset = 0,\n showInk = true,\n affix = true,\n activeLink: controlledActiveLink,\n onChange,\n onLinkClick,\n className,\n ...props\n },\n ref\n ) => {\n const [activeLink, setActiveLink] = useState<string>(controlledActiveLink || '');\n\n useEffect(() => {\n if (controlledActiveLink !== undefined) {\n setActiveLink(controlledActiveLink);\n }\n }, [controlledActiveLink]);\n\n useEffect(() => {\n const handleScroll = () => {\n const scrollTop = window.scrollY + offsetTop + targetOffset;\n let currentActive = '';\n\n const getAllHrefs = (anchorItems: AnchorItem[]): string[] => {\n return anchorItems.flatMap((item) => [\n item.href,\n ...(item.children ? getAllHrefs(item.children) : []),\n ]);\n };\n\n const hrefs = getAllHrefs(items);\n\n for (const href of hrefs) {\n const id = href.replace('#', '');\n const element = document.getElementById(id);\n if (element) {\n const { top } = element.getBoundingClientRect();\n const elementTop = top + window.scrollY;\n if (scrollTop >= elementTop) {\n currentActive = href;\n }\n }\n }\n\n if (currentActive !== activeLink && controlledActiveLink === undefined) {\n setActiveLink(currentActive);\n onChange?.(currentActive);\n }\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n handleScroll();\n\n return () => window.removeEventListener('scroll', handleScroll);\n }, [items, offsetTop, targetOffset, activeLink, controlledActiveLink, onChange]);\n\n const handleClick = (e: React.MouseEvent, item: AnchorItem) => {\n e.preventDefault();\n onLinkClick?.(e, { title: item.title, href: item.href });\n\n const id = item.href.replace('#', '');\n const element = document.getElementById(id);\n if (element) {\n const top = element.getBoundingClientRect().top + window.scrollY - offsetTop;\n window.scrollTo({ top, behavior: 'smooth' });\n }\n\n if (controlledActiveLink === undefined) {\n setActiveLink(item.href);\n onChange?.(item.href);\n }\n };\n\n const renderItems = (anchorItems: AnchorItem[], level = 0) => {\n return anchorItems.map((item) => (\n <div key={item.key} className=\"anchor-item\" style={{ paddingLeft: level * 16 }}>\n <a\n href={item.href}\n className={cn('anchor-link', activeLink === item.href && 'anchor-link-active')}\n onClick={(e) => handleClick(e, item)}\n >\n {item.title}\n </a>\n {item.children && renderItems(item.children, level + 1)}\n </div>\n ));\n };\n\n return (\n <div\n ref={ref}\n className={cn('anchor', affix && 'anchor-affix', className)}\n style={{ top: affix ? offsetTop : undefined }}\n {...props}\n >\n {showInk && <div className=\"anchor-ink\" />}\n <div className=\"anchor-content\">{renderItems(items)}</div>\n </div>\n );\n }\n);\n\nAnchor.displayName = 'Anchor';\n","'use client';\n\nimport { forwardRef, useState, useEffect, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CommandItem {\n id: string;\n label: string;\n description?: string;\n icon?: ReactNode;\n shortcut?: string[];\n group?: string;\n onSelect?: () => void;\n disabled?: boolean;\n}\n\nexport interface CommandPaletteProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n /** Is palette open */\n open?: boolean;\n /** On open change */\n onOpenChange?: (open: boolean) => void;\n /** Command items */\n items: CommandItem[];\n /** Placeholder text */\n placeholder?: string;\n /** Empty state text */\n emptyText?: string;\n /** On item select */\n onSelect?: (item: CommandItem) => void;\n /** Filter function */\n filter?: (item: CommandItem, search: string) => boolean;\n}\n\nexport const CommandPalette = forwardRef<HTMLDivElement, CommandPaletteProps>(\n (\n {\n open = false,\n onOpenChange,\n items,\n placeholder = 'Type a command or search...',\n emptyText = 'No results found.',\n onSelect,\n filter,\n className,\n ...props\n },\n ref\n ) => {\n const [search, setSearch] = useState('');\n const [selectedIndex, setSelectedIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const defaultFilter = (item: CommandItem, query: string) => {\n const lowerQuery = query.toLowerCase();\n return (\n item.label.toLowerCase().includes(lowerQuery) ||\n item.description?.toLowerCase().includes(lowerQuery) ||\n item.group?.toLowerCase().includes(lowerQuery)\n );\n };\n\n const filterFn = filter || defaultFilter;\n const filteredItems = search ? items.filter((item) => filterFn(item, search)) : items;\n\n // Group items\n const groupedItems = filteredItems.reduce((acc, item) => {\n const group = item.group || 'Commands';\n if (!acc[group]) acc[group] = [];\n acc[group].push(item);\n return acc;\n }, {} as Record<string, CommandItem[]>);\n\n useEffect(() => {\n if (open) {\n inputRef.current?.focus();\n setSearch('');\n setSelectedIndex(0);\n }\n }, [open]);\n\n useEffect(() => {\n const handleKeyDown = (e: KeyboardEvent) => {\n if ((e.metaKey || e.ctrlKey) && e.key === 'k') {\n e.preventDefault();\n onOpenChange?.(!open);\n }\n\n if (!open) return;\n\n if (e.key === 'Escape') {\n onOpenChange?.(false);\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n setSelectedIndex((i) => (i + 1) % filteredItems.length);\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setSelectedIndex((i) => (i - 1 + filteredItems.length) % filteredItems.length);\n } else if (e.key === 'Enter') {\n e.preventDefault();\n const item = filteredItems[selectedIndex];\n if (item && !item.disabled) {\n item.onSelect?.();\n onSelect?.(item);\n onOpenChange?.(false);\n }\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open, onOpenChange, filteredItems, selectedIndex, onSelect]);\n\n if (!open) return null;\n\n return (\n <>\n <div className=\"command-palette-overlay\" onClick={() => onOpenChange?.(false)} />\n <div ref={ref} className={cn('command-palette', className)} {...props}>\n <div className=\"command-palette-header\">\n <svg className=\"command-palette-search-icon\" viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <line x1=\"21\" y1=\"21\" x2=\"16.65\" y2=\"16.65\" />\n </svg>\n <input\n ref={inputRef}\n type=\"text\"\n className=\"command-palette-input\"\n placeholder={placeholder}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setSelectedIndex(0);\n }}\n />\n <kbd className=\"command-palette-shortcut\">ESC</kbd>\n </div>\n <div className=\"command-palette-content\">\n {filteredItems.length === 0 ? (\n <div className=\"command-palette-empty\">{emptyText}</div>\n ) : (\n Object.entries(groupedItems).map(([group, groupItems]) => (\n <div key={group} className=\"command-palette-group\">\n <div className=\"command-palette-group-label\">{group}</div>\n {groupItems.map((item) => {\n const itemIndex = filteredItems.indexOf(item);\n return (\n <div\n key={item.id}\n className={cn(\n 'command-palette-item',\n itemIndex === selectedIndex && 'command-palette-item-selected',\n item.disabled && 'command-palette-item-disabled'\n )}\n onClick={() => {\n if (!item.disabled) {\n item.onSelect?.();\n onSelect?.(item);\n onOpenChange?.(false);\n }\n }}\n onMouseEnter={() => setSelectedIndex(itemIndex)}\n >\n {item.icon && <span className=\"command-palette-item-icon\">{item.icon}</span>}\n <div className=\"command-palette-item-content\">\n <span className=\"command-palette-item-label\">{item.label}</span>\n {item.description && (\n <span className=\"command-palette-item-description\">{item.description}</span>\n )}\n </div>\n {item.shortcut && (\n <div className=\"command-palette-item-shortcut\">\n {item.shortcut.map((key, i) => (\n <kbd key={i}>{key}</kbd>\n ))}\n </div>\n )}\n </div>\n );\n })}\n </div>\n ))\n )}\n </div>\n </div>\n </>\n );\n }\n);\n\nCommandPalette.displayName = 'CommandPalette';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ContextMenuItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n shortcut?: string;\n disabled?: boolean;\n danger?: boolean;\n children?: ContextMenuItem[];\n onSelect?: () => void;\n}\n\nexport interface ContextMenuProps extends HTMLAttributes<HTMLDivElement> {\n /** Menu items */\n items: ContextMenuItem[];\n /** Trigger element */\n children: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const ContextMenu = forwardRef<HTMLDivElement, ContextMenuProps>(\n ({ items, children, disabled = false, className, ...props }, ref) => {\n const [open, setOpen] = useState(false);\n const [position, setPosition] = useState({ x: 0, y: 0 });\n const menuRef = useRef<HTMLDivElement>(null);\n\n const handleContextMenu = (e: React.MouseEvent) => {\n if (disabled) return;\n e.preventDefault();\n setPosition({ x: e.clientX, y: e.clientY });\n setOpen(true);\n };\n\n useEffect(() => {\n const handleClick = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === 'Escape') setOpen(false);\n };\n\n if (open) {\n document.addEventListener('click', handleClick);\n document.addEventListener('keydown', handleEscape);\n }\n\n return () => {\n document.removeEventListener('click', handleClick);\n document.removeEventListener('keydown', handleEscape);\n };\n }, [open]);\n\n const renderItems = (menuItems: ContextMenuItem[]) => {\n return menuItems.map((item) => {\n if (item.children) {\n return (\n <div key={item.key} className=\"context-menu-submenu\">\n <div className={cn('context-menu-item', item.disabled && 'context-menu-item-disabled')}>\n {item.icon && <span className=\"context-menu-item-icon\">{item.icon}</span>}\n <span className=\"context-menu-item-label\">{item.label}</span>\n <svg className=\"context-menu-submenu-arrow\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </div>\n <div className=\"context-menu-submenu-content\">{renderItems(item.children)}</div>\n </div>\n );\n }\n\n return (\n <div\n key={item.key}\n className={cn(\n 'context-menu-item',\n item.disabled && 'context-menu-item-disabled',\n item.danger && 'context-menu-item-danger'\n )}\n onClick={() => {\n if (!item.disabled) {\n item.onSelect?.();\n setOpen(false);\n }\n }}\n >\n {item.icon && <span className=\"context-menu-item-icon\">{item.icon}</span>}\n <span className=\"context-menu-item-label\">{item.label}</span>\n {item.shortcut && <span className=\"context-menu-item-shortcut\">{item.shortcut}</span>}\n </div>\n );\n });\n };\n\n return (\n <div ref={ref} className={cn('context-menu-trigger', className)} onContextMenu={handleContextMenu} {...props}>\n {children}\n {open && (\n <div\n ref={menuRef}\n className=\"context-menu\"\n style={{ left: position.x, top: position.y }}\n >\n {renderItems(items)}\n </div>\n )}\n </div>\n );\n }\n);\n\nContextMenu.displayName = 'ContextMenu';\n\n// Context Menu Separator\nexport const ContextMenuSeparator = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('context-menu-separator', className)} {...props} />\n )\n);\n\nContextMenuSeparator.displayName = 'ContextMenuSeparator';\n","'use client';\n\nimport { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SpeedDialAction {\n key: string;\n icon: ReactNode;\n label?: string;\n onClick?: () => void;\n disabled?: boolean;\n}\n\nexport interface SpeedDialProps extends HTMLAttributes<HTMLDivElement> {\n /** Actions */\n actions: SpeedDialAction[];\n /** Main button icon */\n icon?: ReactNode;\n /** Open icon (when expanded) */\n openIcon?: ReactNode;\n /** Direction */\n direction?: 'up' | 'down' | 'left' | 'right';\n /** Position */\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n /** Controlled open state */\n open?: boolean;\n /** On open change */\n onOpenChange?: (open: boolean) => void;\n /** Show labels */\n showLabels?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const SpeedDial = forwardRef<HTMLDivElement, SpeedDialProps>(\n (\n {\n actions,\n icon,\n openIcon,\n direction = 'up',\n position = 'bottom-right',\n open: controlledOpen,\n onOpenChange,\n showLabels = true,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = controlledOpen ?? internalOpen;\n\n const handleToggle = () => {\n if (disabled) return;\n const newOpen = !isOpen;\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n const handleActionClick = (action: SpeedDialAction) => {\n if (action.disabled) return;\n action.onClick?.();\n setInternalOpen(false);\n onOpenChange?.(false);\n };\n\n const defaultIcon = (\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\" />\n <line x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\" />\n </svg>\n );\n\n const defaultOpenIcon = (\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n );\n\n return (\n <div\n ref={ref}\n className={cn(\n 'speed-dial',\n `speed-dial-${position}`,\n `speed-dial-${direction}`,\n isOpen && 'speed-dial-open',\n disabled && 'speed-dial-disabled',\n className\n )}\n {...props}\n >\n <div className=\"speed-dial-actions\">\n {actions.map((action, index) => (\n <div\n key={action.key}\n className={cn(\n 'speed-dial-action',\n action.disabled && 'speed-dial-action-disabled'\n )}\n style={{ transitionDelay: isOpen ? `${index * 50}ms` : '0ms' }}\n onClick={() => handleActionClick(action)}\n >\n {showLabels && action.label && (\n <span className=\"speed-dial-action-label\">{action.label}</span>\n )}\n <button\n type=\"button\"\n className=\"speed-dial-action-button\"\n disabled={action.disabled}\n aria-label={action.label}\n >\n {action.icon}\n </button>\n </div>\n ))}\n </div>\n <button\n type=\"button\"\n className=\"speed-dial-trigger\"\n onClick={handleToggle}\n disabled={disabled}\n aria-expanded={isOpen}\n aria-label={isOpen ? 'Close actions' : 'Open actions'}\n >\n <span className={cn('speed-dial-icon', isOpen && 'speed-dial-icon-open')}>\n {isOpen ? (openIcon || defaultOpenIcon) : (icon || defaultIcon)}\n </span>\n </button>\n </div>\n );\n }\n);\n\nSpeedDial.displayName = 'SpeedDial';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface BottomNavigationProps extends Omit<HTMLAttributes<HTMLElement>, 'onChange'> {\n /** Active item key */\n activeKey?: string;\n /** On change callback */\n onChange?: (key: string) => void;\n /** Show labels */\n showLabels?: boolean;\n /** Hide on scroll */\n hideOnScroll?: boolean;\n}\n\nexport const BottomNavigation = forwardRef<HTMLElement, BottomNavigationProps>(\n (\n {\n activeKey,\n onChange,\n showLabels = true,\n hideOnScroll = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <nav\n ref={ref}\n className={cn(\n 'bottom-nav',\n showLabels && 'bottom-nav-labels',\n hideOnScroll && 'bottom-nav-hide-scroll',\n className\n )}\n {...props}\n >\n <div className=\"bottom-nav-container\">{children}</div>\n </nav>\n );\n }\n);\n\nBottomNavigation.displayName = 'BottomNavigation';\n\n// Bottom Navigation Item\nexport interface BottomNavigationItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** Item key */\n itemKey: string;\n /** Icon */\n icon: ReactNode;\n /** Label */\n label?: string;\n /** Active state */\n active?: boolean;\n /** Badge count */\n badge?: number | boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const BottomNavigationItem = forwardRef<HTMLButtonElement, BottomNavigationItemProps>(\n (\n {\n itemKey,\n icon,\n label,\n active = false,\n badge,\n disabled = false,\n className,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={active}\n disabled={disabled}\n className={cn(\n 'bottom-nav-item',\n active && 'bottom-nav-item-active',\n disabled && 'bottom-nav-item-disabled',\n className\n )}\n onClick={onClick}\n {...props}\n >\n <span className=\"bottom-nav-item-icon\">\n {icon}\n {badge !== undefined && badge !== false && (\n <span className=\"bottom-nav-item-badge\">\n {typeof badge === 'number' ? (badge > 99 ? '99+' : badge) : ''}\n </span>\n )}\n </span>\n {label && <span className=\"bottom-nav-item-label\">{label}</span>}\n </button>\n );\n }\n);\n\nBottomNavigationItem.displayName = 'BottomNavigationItem';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MenubarItem {\n key: string;\n label: ReactNode;\n icon?: ReactNode;\n shortcut?: string;\n disabled?: boolean;\n children?: MenubarItem[];\n onSelect?: () => void;\n type?: 'item' | 'separator' | 'checkbox' | 'radio';\n checked?: boolean;\n}\n\nexport interface MenubarProps extends HTMLAttributes<HTMLDivElement> {\n /** Loop keyboard navigation */\n loop?: boolean;\n}\n\nexport const Menubar = forwardRef<HTMLDivElement, MenubarProps>(\n ({ loop = true, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"menubar\"\n className={cn('menubar', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nMenubar.displayName = 'Menubar';\n\n// Menubar Menu\nexport interface MenubarMenuProps extends HTMLAttributes<HTMLDivElement> {\n /** Trigger label */\n trigger: ReactNode;\n /** Menu items */\n items: MenubarItem[];\n}\n\nexport const MenubarMenu = forwardRef<HTMLDivElement, MenubarMenuProps>(\n ({ trigger, items, className, ...props }, _ref) => {\n const [open, setOpen] = useState(false);\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (menuRef.current && !menuRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const renderItems = (menuItems: MenubarItem[]) => {\n return menuItems.map((item) => {\n if (item.type === 'separator') {\n return <div key={item.key} className=\"menubar-separator\" />;\n }\n\n if (item.children) {\n return (\n <div key={item.key} className=\"menubar-submenu\">\n <div className={cn('menubar-item', item.disabled && 'menubar-item-disabled')}>\n {item.icon && <span className=\"menubar-item-icon\">{item.icon}</span>}\n <span className=\"menubar-item-label\">{item.label}</span>\n <svg className=\"menubar-submenu-arrow\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </div>\n <div className=\"menubar-submenu-content\">{renderItems(item.children)}</div>\n </div>\n );\n }\n\n return (\n <div\n key={item.key}\n role=\"menuitem\"\n className={cn(\n 'menubar-item',\n item.disabled && 'menubar-item-disabled',\n item.checked && 'menubar-item-checked'\n )}\n onClick={() => {\n if (!item.disabled) {\n item.onSelect?.();\n setOpen(false);\n }\n }}\n >\n {item.type === 'checkbox' && (\n <span className=\"menubar-item-check\">\n {item.checked && (\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </span>\n )}\n {item.icon && <span className=\"menubar-item-icon\">{item.icon}</span>}\n <span className=\"menubar-item-label\">{item.label}</span>\n {item.shortcut && <span className=\"menubar-item-shortcut\">{item.shortcut}</span>}\n </div>\n );\n });\n };\n\n return (\n <div ref={menuRef} className={cn('menubar-menu', className)} {...props}>\n <button\n type=\"button\"\n role=\"menuitem\"\n aria-haspopup=\"true\"\n aria-expanded={open}\n className={cn('menubar-trigger', open && 'menubar-trigger-open')}\n onClick={() => setOpen(!open)}\n onMouseEnter={() => {\n // Open on hover if another menu is open\n const anyOpen = document.querySelector('.menubar-trigger-open');\n if (anyOpen && anyOpen !== menuRef.current?.querySelector('.menubar-trigger')) {\n setOpen(true);\n }\n }}\n >\n {trigger}\n </button>\n {open && (\n <div className=\"menubar-content\" role=\"menu\">\n {renderItems(items)}\n </div>\n )}\n </div>\n );\n }\n);\n\nMenubarMenu.displayName = 'MenubarMenu';\n","'use client';\n\nimport { forwardRef, useState, createContext, useContext, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ninterface NavigationMenuContextValue {\n activeItem: string | null;\n setActiveItem: (item: string | null) => void;\n}\n\nconst NavigationMenuContext = createContext<NavigationMenuContextValue | null>(null);\n\nexport interface NavigationMenuProps extends HTMLAttributes<HTMLElement> {\n /** Default active item */\n defaultValue?: string;\n /** Controlled active value */\n value?: string;\n /** On value change */\n onValueChange?: (value: string) => void;\n /** Orientation */\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const NavigationMenu = forwardRef<HTMLElement, NavigationMenuProps>(\n (\n {\n defaultValue,\n value,\n onValueChange,\n orientation = 'horizontal',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [activeItem, setActiveItem] = useState<string | null>(defaultValue || null);\n const currentValue = value ?? activeItem;\n\n const handleSetActiveItem = (item: string | null) => {\n setActiveItem(item);\n if (item) onValueChange?.(item);\n };\n\n return (\n <NavigationMenuContext.Provider value={{ activeItem: currentValue, setActiveItem: handleSetActiveItem }}>\n <nav\n ref={ref}\n className={cn('nav-menu', `nav-menu-${orientation}`, className)}\n {...props}\n >\n <div className=\"nav-menu-list\">{children}</div>\n </nav>\n </NavigationMenuContext.Provider>\n );\n }\n);\n\nNavigationMenu.displayName = 'NavigationMenu';\n\n// Navigation Menu Item\nexport interface NavigationMenuItemProps extends HTMLAttributes<HTMLDivElement> {\n /** Item value */\n value: string;\n}\n\nexport const NavigationMenuItem = forwardRef<HTMLDivElement, NavigationMenuItemProps>(\n ({ value, className, children, ...props }, ref) => {\n const context = useContext(NavigationMenuContext);\n\n return (\n <div\n ref={ref}\n className={cn('nav-menu-item', context?.activeItem === value && 'nav-menu-item-active', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nNavigationMenuItem.displayName = 'NavigationMenuItem';\n\n// Navigation Menu Trigger\nexport interface NavigationMenuTriggerProps extends HTMLAttributes<HTMLButtonElement> {\n /** Disable chevron */\n hideChevron?: boolean;\n}\n\nexport const NavigationMenuTrigger = forwardRef<HTMLButtonElement, NavigationMenuTriggerProps>(\n ({ hideChevron = false, className, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('nav-menu-trigger', className)}\n {...props}\n >\n {children}\n {!hideChevron && (\n <svg className=\"nav-menu-trigger-chevron\" viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n )}\n </button>\n );\n }\n);\n\nNavigationMenuTrigger.displayName = 'NavigationMenuTrigger';\n\n// Navigation Menu Content\nexport interface NavigationMenuContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const NavigationMenuContent = forwardRef<HTMLDivElement, NavigationMenuContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('nav-menu-content', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nNavigationMenuContent.displayName = 'NavigationMenuContent';\n\n// Navigation Menu Link\nexport interface NavigationMenuLinkProps extends HTMLAttributes<HTMLAnchorElement> {\n /** Link href */\n href?: string;\n /** Active state */\n active?: boolean;\n}\n\nexport const NavigationMenuLink = forwardRef<HTMLAnchorElement, NavigationMenuLinkProps>(\n ({ href, active = false, className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n href={href}\n className={cn('nav-menu-link', active && 'nav-menu-link-active', className)}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\n\nNavigationMenuLink.displayName = 'NavigationMenuLink';\n\n// Navigation Menu Viewport\nexport interface NavigationMenuViewportProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const NavigationMenuViewport = forwardRef<HTMLDivElement, NavigationMenuViewportProps>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('nav-menu-viewport', className)} {...props} />;\n }\n);\n\nNavigationMenuViewport.displayName = 'NavigationMenuViewport';\n\n// Navigation Menu Indicator\nexport interface NavigationMenuIndicatorProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const NavigationMenuIndicator = forwardRef<HTMLDivElement, NavigationMenuIndicatorProps>(\n ({ className, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('nav-menu-indicator', className)} {...props}>\n <div className=\"nav-menu-indicator-arrow\" />\n </div>\n );\n }\n);\n\nNavigationMenuIndicator.displayName = 'NavigationMenuIndicator';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DatePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'> {\n /** Selected date */\n value?: Date | null;\n /** On change callback */\n onChange?: (date: Date | null) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Date format */\n format?: string;\n /** Minimum date */\n minDate?: Date;\n /** Maximum date */\n maxDate?: Date;\n /** Disabled dates */\n disabledDates?: Date[];\n /** Clearable */\n clearable?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nconst formatDate = (date: Date, format: string = 'MM/DD/YYYY'): string => {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n return format.replace('DD', day).replace('MM', month).replace('YYYY', year.toString());\n};\n\nexport const DatePicker = forwardRef<HTMLInputElement, DatePickerProps>(\n (\n {\n value,\n onChange,\n placeholder = 'Select date',\n format = 'MM/DD/YYYY',\n minDate,\n maxDate,\n disabledDates = [],\n clearable = true,\n size = 'md',\n error = false,\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [viewDate, setViewDate] = useState(value || new Date());\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const getDaysInMonth = (date: Date) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const days: { date: Date; isCurrentMonth: boolean }[] = [];\n\n // Previous month days\n for (let i = firstDay - 1; i >= 0; i--) {\n days.push({\n date: new Date(year, month - 1, daysInPrevMonth - i),\n isCurrentMonth: false,\n });\n }\n\n // Current month days\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({\n date: new Date(year, month, i),\n isCurrentMonth: true,\n });\n }\n\n // Next month days\n const remaining = 42 - days.length;\n for (let i = 1; i <= remaining; i++) {\n days.push({\n date: new Date(year, month + 1, i),\n isCurrentMonth: false,\n });\n }\n\n return days;\n };\n\n const isDisabled = (date: Date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return disabledDates.some(d => d.toDateString() === date.toDateString());\n };\n\n const isSelected = (date: Date) => {\n return value?.toDateString() === date.toDateString();\n };\n\n const isToday = (date: Date) => {\n return new Date().toDateString() === date.toDateString();\n };\n\n const handleSelect = (date: Date) => {\n if (isDisabled(date)) return;\n onChange?.(date);\n setOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(null);\n };\n\n const navigateMonth = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1));\n };\n\n return (\n <div ref={containerRef} className={cn('date-picker', `date-picker-${size}`, className)}>\n <div\n className={cn(\n 'date-picker-input',\n error && 'date-picker-error',\n disabled && 'date-picker-disabled',\n open && 'date-picker-open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <input\n ref={ref}\n type=\"text\"\n readOnly\n disabled={disabled}\n placeholder={placeholder}\n value={value ? formatDate(value, format) : ''}\n className=\"date-picker-input-field\"\n {...props}\n />\n <div className=\"date-picker-icons\">\n {clearable && value && !disabled && (\n <button type=\"button\" className=\"date-picker-clear\" onClick={handleClear}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n <svg className=\"date-picker-icon\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" /><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" /><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" /><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </div>\n </div>\n\n {open && (\n <div className=\"date-picker-dropdown\">\n <div className=\"date-picker-header\">\n <button type=\"button\" onClick={() => navigateMonth(-1)} className=\"date-picker-nav\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span className=\"date-picker-title\">\n {MONTHS[viewDate.getMonth()]} {viewDate.getFullYear()}\n </span>\n <button type=\"button\" onClick={() => navigateMonth(1)} className=\"date-picker-nav\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n <div className=\"date-picker-days-header\">\n {DAYS.map(day => <div key={day} className=\"date-picker-day-name\">{day}</div>)}\n </div>\n <div className=\"date-picker-days\">\n {getDaysInMonth(viewDate).map(({ date, isCurrentMonth }, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn(\n 'date-picker-day',\n !isCurrentMonth && 'date-picker-day-outside',\n isSelected(date) && 'date-picker-day-selected',\n isToday(date) && 'date-picker-day-today',\n isDisabled(date) && 'date-picker-day-disabled'\n )}\n onClick={() => handleSelect(date)}\n disabled={isDisabled(date)}\n >\n {date.getDate()}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nDatePicker.displayName = 'DatePicker';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface DateRangePickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Selected date range */\n value?: DateRange;\n /** On change callback */\n onChange?: (range: DateRange) => void;\n /** Start placeholder */\n startPlaceholder?: string;\n /** End placeholder */\n endPlaceholder?: string;\n /** Minimum date */\n minDate?: Date;\n /** Maximum date */\n maxDate?: Date;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nconst formatDate = (date: Date | null): string => {\n if (!date) return '';\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n return `${month}/${day}/${year}`;\n};\n\nexport const DateRangePicker = forwardRef<HTMLDivElement, DateRangePickerProps>(\n (\n {\n value = { start: null, end: null },\n onChange,\n startPlaceholder = 'Start date',\n endPlaceholder = 'End date',\n minDate,\n maxDate,\n size = 'md',\n error = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [selecting, setSelecting] = useState<'start' | 'end'>('start');\n const [hoverDate, setHoverDate] = useState<Date | null>(null);\n const [leftMonth, setLeftMonth] = useState(value.start || new Date());\n const containerRef = useRef<HTMLDivElement>(null);\n\n const rightMonth = new Date(leftMonth.getFullYear(), leftMonth.getMonth() + 1, 1);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const getDaysInMonth = (date: Date) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const days: { date: Date; isCurrentMonth: boolean }[] = [];\n\n for (let i = firstDay - 1; i >= 0; i--) {\n days.push({ date: new Date(year, month - 1, daysInPrevMonth - i), isCurrentMonth: false });\n }\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({ date: new Date(year, month, i), isCurrentMonth: true });\n }\n const remaining = 42 - days.length;\n for (let i = 1; i <= remaining; i++) {\n days.push({ date: new Date(year, month + 1, i), isCurrentMonth: false });\n }\n\n return days;\n };\n\n const isInRange = (date: Date) => {\n if (!value.start) return false;\n const end = value.end || hoverDate;\n if (!end) return false;\n return date >= value.start && date <= end;\n };\n\n const isRangeStart = (date: Date) => value.start?.toDateString() === date.toDateString();\n const isRangeEnd = (date: Date) => (value.end || hoverDate)?.toDateString() === date.toDateString();\n\n const handleSelect = (date: Date) => {\n if (selecting === 'start' || !value.start || date < value.start) {\n onChange?.({ start: date, end: null });\n setSelecting('end');\n } else {\n onChange?.({ start: value.start, end: date });\n setSelecting('start');\n setOpen(false);\n }\n };\n\n const renderCalendar = (monthDate: Date) => (\n <div className=\"daterange-calendar\">\n <div className=\"daterange-calendar-header\">\n <span className=\"daterange-calendar-title\">{MONTHS[monthDate.getMonth()]} {monthDate.getFullYear()}</span>\n </div>\n <div className=\"daterange-weekdays\">\n {DAYS.map(d => <div key={d} className=\"daterange-weekday\">{d}</div>)}\n </div>\n <div className=\"daterange-days\">\n {getDaysInMonth(monthDate).map(({ date, isCurrentMonth }, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn(\n 'daterange-day',\n !isCurrentMonth && 'daterange-day-other-month',\n isInRange(date) && 'daterange-day-in-range',\n isRangeStart(date) && 'daterange-day-range-start',\n isRangeEnd(date) && 'daterange-day-range-end'\n )}\n onClick={() => handleSelect(date)}\n onMouseEnter={() => selecting === 'end' && setHoverDate(date)}\n >\n {date.getDate()}\n </button>\n ))}\n </div>\n </div>\n );\n\n return (\n <div ref={containerRef} className={cn('daterange', `daterange-${size}`, className)} {...props}>\n <div\n ref={ref}\n className={cn(\n 'daterange-inputs',\n error && 'daterange-error',\n disabled && 'daterange-disabled',\n open && 'daterange-open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <input type=\"text\" readOnly placeholder={startPlaceholder} value={formatDate(value.start)} className=\"daterange-input\" />\n <span className=\"daterange-separator\">→</span>\n <input type=\"text\" readOnly placeholder={endPlaceholder} value={formatDate(value.end)} className=\"daterange-input\" />\n <svg className=\"daterange-icon\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" /><line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" /><line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" /><line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </div>\n\n {open && (\n <div className=\"daterange-dropdown\">\n <button type=\"button\" className=\"daterange-calendar-btn daterange-calendar-nav-prev\" onClick={() => setLeftMonth(new Date(leftMonth.getFullYear(), leftMonth.getMonth() - 1, 1))}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\"><polyline points=\"15 18 9 12 15 6\" /></svg>\n </button>\n {renderCalendar(leftMonth)}\n {renderCalendar(rightMonth)}\n <button type=\"button\" className=\"daterange-calendar-btn daterange-calendar-nav-next\" onClick={() => setLeftMonth(new Date(leftMonth.getFullYear(), leftMonth.getMonth() + 1, 1))}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\"><polyline points=\"9 18 15 12 9 6\" /></svg>\n </button>\n </div>\n )}\n </div>\n );\n }\n);\n\nDateRangePicker.displayName = 'DateRangePicker';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TimePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'> {\n /** Selected time */\n value?: string;\n /** On change callback */\n onChange?: (time: string) => void;\n /** Use 12-hour format */\n use12Hours?: boolean;\n /** Show seconds */\n showSeconds?: boolean;\n /** Hour step */\n hourStep?: number;\n /** Minute step */\n minuteStep?: number;\n /** Second step */\n secondStep?: number;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Clearable */\n clearable?: boolean;\n}\n\nexport const TimePicker = forwardRef<HTMLInputElement, TimePickerProps>(\n (\n {\n value = '',\n onChange,\n use12Hours = false,\n showSeconds = false,\n hourStep = 1,\n minuteStep = 1,\n secondStep = 1,\n size = 'md',\n error = false,\n clearable = true,\n disabled,\n placeholder = 'Select time',\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const [hours, minutes, seconds] = value.split(':').map(Number);\n const [period, setPeriod] = useState<'AM' | 'PM'>(hours >= 12 ? 'PM' : 'AM');\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const generateOptions = (max: number, step: number) => {\n const options: number[] = [];\n for (let i = 0; i < max; i += step) {\n options.push(i);\n }\n return options;\n };\n\n const hourOptions = generateOptions(use12Hours ? 12 : 24, hourStep);\n const minuteOptions = generateOptions(60, minuteStep);\n const secondOptions = generateOptions(60, secondStep);\n\n const formatTime = (h: number, m: number, s: number) => {\n const parts = [\n h.toString().padStart(2, '0'),\n m.toString().padStart(2, '0'),\n ];\n if (showSeconds) parts.push(s.toString().padStart(2, '0'));\n return parts.join(':');\n };\n\n const handleSelect = (type: 'hour' | 'minute' | 'second', val: number) => {\n let h = hours || 0;\n let m = minutes || 0;\n let s = seconds || 0;\n\n if (type === 'hour') {\n h = use12Hours && period === 'PM' ? (val === 12 ? 12 : val + 12) : (use12Hours && val === 12 ? 0 : val);\n } else if (type === 'minute') {\n m = val;\n } else {\n s = val;\n }\n\n onChange?.(formatTime(h, m, s));\n };\n\n const displayValue = value\n ? use12Hours\n ? `${(hours % 12 || 12).toString().padStart(2, '0')}:${minutes?.toString().padStart(2, '0') || '00'}${showSeconds ? `:${seconds?.toString().padStart(2, '0') || '00'}` : ''} ${hours >= 12 ? 'PM' : 'AM'}`\n : value\n : '';\n\n return (\n <div ref={containerRef} className={cn('time-picker', `time-picker-${size}`, className)}>\n <div\n className={cn(\n 'time-picker-input',\n error && 'time-picker-error',\n disabled && 'time-picker-disabled',\n open && 'time-picker-open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <input\n ref={ref}\n type=\"text\"\n readOnly\n disabled={disabled}\n placeholder={placeholder}\n value={displayValue}\n className=\"time-picker-input-field\"\n {...props}\n />\n <svg className=\"time-picker-icon\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><polyline points=\"12 6 12 12 16 14\" />\n </svg>\n </div>\n\n {open && (\n <div className=\"time-picker-dropdown\">\n <div className=\"time-picker-column\">\n {hourOptions.map((h) => (\n <button\n key={h}\n type=\"button\"\n className={cn('time-picker-option', (use12Hours ? (hours % 12 || 12) : hours) === h && 'time-picker-option-selected')}\n onClick={() => handleSelect('hour', h)}\n >\n {(use12Hours ? (h === 0 ? 12 : h) : h).toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n <div className=\"time-picker-column\">\n {minuteOptions.map((m) => (\n <button\n key={m}\n type=\"button\"\n className={cn('time-picker-option', minutes === m && 'time-picker-option-selected')}\n onClick={() => handleSelect('minute', m)}\n >\n {m.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n {showSeconds && (\n <div className=\"time-picker-column\">\n {secondOptions.map((s) => (\n <button\n key={s}\n type=\"button\"\n className={cn('time-picker-option', seconds === s && 'time-picker-option-selected')}\n onClick={() => handleSelect('second', s)}\n >\n {s.toString().padStart(2, '0')}\n </button>\n ))}\n </div>\n )}\n {use12Hours && (\n <div className=\"time-picker-column time-picker-column-period\">\n <button\n type=\"button\"\n className={cn('time-picker-option', hours < 12 && 'time-picker-option-selected')}\n onClick={() => {\n setPeriod('AM');\n if (hours >= 12) onChange?.(formatTime(hours - 12, minutes || 0, seconds || 0));\n }}\n >\n AM\n </button>\n <button\n type=\"button\"\n className={cn('time-picker-option', hours >= 12 && 'time-picker-option-selected')}\n onClick={() => {\n setPeriod('PM');\n if (hours < 12) onChange?.(formatTime(hours + 12, minutes || 0, seconds || 0));\n }}\n >\n PM\n </button>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTimePicker.displayName = 'TimePicker';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AutocompleteOption {\n value: string;\n label: ReactNode;\n disabled?: boolean;\n}\n\nexport interface AutocompleteProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'size'> {\n /** Options */\n options: AutocompleteOption[];\n /** Selected value */\n value?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** On search callback */\n onSearch?: (value: string) => void;\n /** Loading state */\n loading?: boolean;\n /** Allow free text */\n freeSolo?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Empty text */\n emptyText?: string;\n}\n\nexport const Autocomplete = forwardRef<HTMLInputElement, AutocompleteProps>(\n (\n {\n options,\n value = '',\n onChange,\n onSearch,\n loading = false,\n freeSolo = false,\n size = 'md',\n error = false,\n emptyText = 'No options',\n disabled,\n placeholder,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(value);\n const [highlightedIndex, setHighlightedIndex] = useState(0);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const filteredOptions = options.filter(\n (opt) => opt.label?.toString().toLowerCase().includes(inputValue.toLowerCase())\n );\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n if (!freeSolo) {\n const match = options.find((o) => o.value === inputValue);\n if (!match) setInputValue(value);\n }\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [freeSolo, inputValue, options, value]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setInputValue(val);\n setOpen(true);\n setHighlightedIndex(0);\n onSearch?.(val);\n if (freeSolo) onChange?.(val);\n };\n\n const handleSelect = (option: AutocompleteOption) => {\n if (option.disabled) return;\n setInputValue(option.label?.toString() || option.value);\n onChange?.(option.value);\n setOpen(false);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((i) => Math.min(i + 1, filteredOptions.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter' && open) {\n e.preventDefault();\n const opt = filteredOptions[highlightedIndex];\n if (opt) handleSelect(opt);\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={containerRef} className={cn('autocomplete', `autocomplete-${size}`, className)}>\n <input\n ref={ref}\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n onFocus={() => setOpen(true)}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n 'autocomplete-input',\n error && 'autocomplete-error',\n disabled && 'autocomplete-disabled'\n )}\n role=\"combobox\"\n aria-expanded={open}\n aria-autocomplete=\"list\"\n {...props}\n />\n\n {open && (\n <div className=\"autocomplete-dropdown\">\n {loading ? (\n <div className=\"autocomplete-loading\">Loading...</div>\n ) : filteredOptions.length === 0 ? (\n <div className=\"autocomplete-empty\">{emptyText}</div>\n ) : (\n filteredOptions.map((option, index) => (\n <div\n key={option.value}\n className={cn(\n 'autocomplete-option',\n index === highlightedIndex && 'autocomplete-option-highlighted',\n option.disabled && 'autocomplete-option-disabled',\n option.value === value && 'autocomplete-option-selected'\n )}\n onClick={() => handleSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n {option.label}\n </div>\n ))\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nAutocomplete.displayName = 'Autocomplete';\n","'use client';\n\nimport { forwardRef, useRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface UploadFile {\n uid: string;\n name: string;\n size: number;\n type: string;\n status: 'uploading' | 'done' | 'error';\n percent?: number;\n url?: string;\n originFile?: File;\n}\n\nexport interface UploadProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** File list */\n fileList?: UploadFile[];\n /** On change callback */\n onChange?: (fileList: UploadFile[]) => void;\n /** Custom upload handler */\n customRequest?: (file: File) => Promise<string>;\n /** Accept file types */\n accept?: string;\n /** Multiple files */\n multiple?: boolean;\n /** Max file count */\n maxCount?: number;\n /** Max file size (bytes) */\n maxSize?: number;\n /** Disabled state */\n disabled?: boolean;\n /** Show file list */\n showFileList?: boolean;\n /** List type */\n listType?: 'text' | 'picture' | 'picture-card';\n /** Custom content */\n children?: ReactNode;\n}\n\nexport const Upload = forwardRef<HTMLDivElement, UploadProps>(\n (\n {\n fileList = [],\n onChange,\n customRequest,\n accept,\n multiple = false,\n maxCount,\n maxSize,\n disabled = false,\n showFileList = true,\n listType = 'text',\n children,\n className,\n ...props\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n\n const handleClick = () => {\n if (!disabled) inputRef.current?.click();\n };\n\n const processFiles = async (files: FileList) => {\n const newFiles: UploadFile[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n if (maxCount && fileList.length + newFiles.length >= maxCount) break;\n if (maxSize && file.size > maxSize) continue;\n\n const uploadFile: UploadFile = {\n uid: `${Date.now()}-${i}`,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'uploading',\n percent: 0,\n originFile: file,\n };\n\n newFiles.push(uploadFile);\n }\n\n onChange?.([...fileList, ...newFiles]);\n\n // Process uploads\n for (const uploadFile of newFiles) {\n try {\n if (customRequest && uploadFile.originFile) {\n const url = await customRequest(uploadFile.originFile);\n uploadFile.status = 'done';\n uploadFile.url = url;\n uploadFile.percent = 100;\n } else {\n // Simulate upload\n uploadFile.status = 'done';\n uploadFile.percent = 100;\n if (uploadFile.originFile) {\n uploadFile.url = URL.createObjectURL(uploadFile.originFile);\n }\n }\n } catch {\n uploadFile.status = 'error';\n }\n }\n\n onChange?.([...fileList, ...newFiles]);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) processFiles(e.target.files);\n e.target.value = '';\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setDragOver(false);\n if (!disabled && e.dataTransfer.files) {\n processFiles(e.dataTransfer.files);\n }\n };\n\n const handleRemove = (uid: string) => {\n onChange?.(fileList.filter((f) => f.uid !== uid));\n };\n\n return (\n <div ref={ref} className={cn('upload', `upload-${listType}`, className)} {...props}>\n <div\n className={cn(\n 'upload-trigger',\n disabled && 'upload-disabled',\n dragOver && 'upload-drag-over'\n )}\n onClick={handleClick}\n onDragOver={(e) => { e.preventDefault(); setDragOver(true); }}\n onDragLeave={() => setDragOver(false)}\n onDrop={handleDrop}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n style={{ display: 'none' }}\n />\n {children || (\n <div className=\"upload-content\">\n <svg className=\"upload-icon\" viewBox=\"0 0 24 24\" width=\"40\" height=\"40\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\">\n <path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n <p className=\"upload-text\">Click or drag files to upload</p>\n </div>\n )}\n </div>\n\n {showFileList && fileList.length > 0 && (\n <div className=\"upload-list\">\n {fileList.map((file) => (\n <div key={file.uid} className={cn('upload-item', `upload-item-${file.status}`)}>\n {listType === 'picture-card' && file.url && (\n <img src={file.url} alt={file.name} className=\"upload-item-image\" />\n )}\n <div className=\"upload-item-info\">\n <span className=\"upload-item-name\">{file.name}</span>\n {file.status === 'uploading' && (\n <div className=\"upload-item-progress\" style={{ width: `${file.percent}%` }} />\n )}\n </div>\n <button\n type=\"button\"\n className=\"upload-item-remove\"\n onClick={() => handleRemove(file.uid)}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nUpload.displayName = 'Upload';\n","'use client';\n\nimport { forwardRef, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface NumberInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'type' | 'prefix' | 'size'> {\n /** Value */\n value?: number;\n /** On change callback */\n onChange?: (value: number | undefined) => void;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Step value */\n step?: number;\n /** Precision */\n precision?: number;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Hide controls */\n hideControls?: boolean;\n /** Prefix */\n prefix?: React.ReactNode;\n /** Suffix */\n suffix?: React.ReactNode;\n}\n\nexport const NumberInput = forwardRef<HTMLInputElement, NumberInputProps>(\n (\n {\n value,\n onChange,\n min,\n max,\n step = 1,\n precision,\n size = 'md',\n error = false,\n hideControls = false,\n prefix,\n suffix,\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n const clamp = (val: number) => {\n let result = val;\n if (min !== undefined) result = Math.max(min, result);\n if (max !== undefined) result = Math.min(max, result);\n if (precision !== undefined) result = Number(result.toFixed(precision));\n return result;\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n if (val === '' || val === '-') {\n onChange?.(undefined);\n return;\n }\n const num = parseFloat(val);\n if (!isNaN(num)) {\n onChange?.(clamp(num));\n }\n };\n\n const increment = () => {\n const newValue = clamp((value ?? 0) + step);\n onChange?.(newValue);\n };\n\n const decrement = () => {\n const newValue = clamp((value ?? 0) - step);\n onChange?.(newValue);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'ArrowUp') {\n e.preventDefault();\n increment();\n } else if (e.key === 'ArrowDown') {\n e.preventDefault();\n decrement();\n }\n };\n\n return (\n <div\n className={cn(\n 'number-input',\n `number-input-${size}`,\n error && 'number-input-error',\n disabled && 'number-input-disabled',\n className\n )}\n >\n {prefix && <span className=\"number-input-prefix\">{prefix}</span>}\n <input\n ref={ref}\n type=\"text\"\n inputMode=\"decimal\"\n value={value ?? ''}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n className=\"number-input-field\"\n {...props}\n />\n {suffix && <span className=\"number-input-suffix\">{suffix}</span>}\n {!hideControls && (\n <div className=\"number-input-controls\">\n <button\n type=\"button\"\n className=\"number-input-control\"\n onClick={increment}\n disabled={disabled || (max !== undefined && (value ?? 0) >= max)}\n tabIndex={-1}\n >\n <svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n </button>\n <button\n type=\"button\"\n className=\"number-input-control\"\n onClick={decrement}\n disabled={disabled || (min !== undefined && (value ?? 0) <= min)}\n tabIndex={-1}\n >\n <svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </button>\n </div>\n )}\n </div>\n );\n }\n);\n\nNumberInput.displayName = 'NumberInput';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ColorPickerProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Selected color */\n value?: string;\n /** On change callback */\n onChange?: (color: string) => void;\n /** Preset colors */\n presets?: string[];\n /** Show alpha slider */\n showAlpha?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Disabled state */\n disabled?: boolean;\n /** Format */\n format?: 'hex' | 'rgb' | 'hsl';\n}\n\nconst DEFAULT_PRESETS = [\n '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#3f51b5', '#2196f3',\n '#03a9f4', '#00bcd4', '#009688', '#4caf50', '#8bc34a', '#cddc39',\n '#ffeb3b', '#ffc107', '#ff9800', '#ff5722', '#795548', '#607d8b',\n];\n\nexport const ColorPicker = forwardRef<HTMLDivElement, ColorPickerProps>(\n (\n {\n value = '#000000',\n onChange,\n presets = DEFAULT_PRESETS,\n showAlpha = false,\n size = 'md',\n disabled = false,\n format = 'hex',\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [inputValue, setInputValue] = useState(value);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const val = e.target.value;\n setInputValue(val);\n if (/^#[0-9A-Fa-f]{6}$/.test(val)) {\n onChange?.(val);\n }\n };\n\n const handlePresetClick = (color: string) => {\n setInputValue(color);\n onChange?.(color);\n };\n\n const handleNativeChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const color = e.target.value;\n setInputValue(color);\n onChange?.(color);\n };\n\n return (\n <div ref={containerRef} className={cn('colorpicker', `colorpicker-${size}`, className)} {...props}>\n <div\n ref={ref}\n className={cn(\n 'colorpicker-trigger',\n disabled && 'colorpicker-disabled',\n open && 'colorpicker-open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <div className=\"colorpicker-swatch\" style={{ backgroundColor: value }} />\n <input\n type=\"text\"\n value={inputValue}\n onChange={handleInputChange}\n disabled={disabled}\n className=\"colorpicker-input\"\n onClick={(e) => e.stopPropagation()}\n />\n </div>\n\n {open && (\n <div className=\"colorpicker-dropdown\">\n <div className=\"colorpicker-native-wrapper\">\n <input\n type=\"color\"\n value={value}\n onChange={handleNativeChange}\n className=\"colorpicker-native\"\n />\n <div className=\"colorpicker-gradient\" style={{ backgroundColor: value }} />\n </div>\n\n {presets.length > 0 && (\n <div className=\"colorpicker-presets\">\n {presets.map((color) => (\n <button\n key={color}\n type=\"button\"\n className={cn(\n 'colorpicker-preset',\n value === color && 'colorpicker-preset-selected'\n )}\n style={{ backgroundColor: color }}\n onClick={() => handlePresetClick(color)}\n />\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nColorPicker.displayName = 'ColorPicker';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type TextareaHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MentionOption {\n value: string;\n label: string;\n avatar?: string;\n}\n\nexport interface MentionsProps extends Omit<TextareaHTMLAttributes<HTMLTextAreaElement>, 'onChange'> {\n /** Mention options */\n options: MentionOption[];\n /** Value */\n value?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** On mention callback */\n onMention?: (option: MentionOption) => void;\n /** Trigger character */\n trigger?: string;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n}\n\nexport const Mentions = forwardRef<HTMLTextAreaElement, MentionsProps>(\n (\n {\n options,\n value = '',\n onChange,\n onMention,\n trigger = '@',\n size = 'md',\n error = false,\n disabled,\n placeholder,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [highlightedIndex, setHighlightedIndex] = useState(0);\n const [cursorPosition, setCursorPosition] = useState(0);\n const containerRef = useRef<HTMLDivElement>(null);\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n\n const filteredOptions = options.filter((opt) =>\n opt.label.toLowerCase().includes(search.toLowerCase())\n );\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const val = e.target.value;\n const pos = e.target.selectionStart || 0;\n setCursorPosition(pos);\n onChange?.(val);\n\n // Check for trigger\n const beforeCursor = val.slice(0, pos);\n const triggerIndex = beforeCursor.lastIndexOf(trigger);\n\n if (triggerIndex !== -1) {\n const afterTrigger = beforeCursor.slice(triggerIndex + 1);\n if (!/\\s/.test(afterTrigger)) {\n setSearch(afterTrigger);\n setOpen(true);\n setHighlightedIndex(0);\n return;\n }\n }\n\n setOpen(false);\n };\n\n const handleSelect = (option: MentionOption) => {\n const beforeTrigger = value.slice(0, value.lastIndexOf(trigger, cursorPosition));\n const afterCursor = value.slice(cursorPosition);\n const newValue = `${beforeTrigger}${trigger}${option.value} ${afterCursor}`;\n onChange?.(newValue);\n onMention?.(option);\n setOpen(false);\n\n // Focus back on textarea\n setTimeout(() => {\n textareaRef.current?.focus();\n }, 0);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (!open) return;\n\n if (e.key === 'ArrowDown') {\n e.preventDefault();\n setHighlightedIndex((i) => Math.min(i + 1, filteredOptions.length - 1));\n } else if (e.key === 'ArrowUp') {\n e.preventDefault();\n setHighlightedIndex((i) => Math.max(i - 1, 0));\n } else if (e.key === 'Enter' && open) {\n e.preventDefault();\n const opt = filteredOptions[highlightedIndex];\n if (opt) handleSelect(opt);\n } else if (e.key === 'Escape') {\n setOpen(false);\n }\n };\n\n return (\n <div ref={containerRef} className={cn('mentions', `mentions-${size}`, className)}>\n <textarea\n ref={(el) => {\n textareaRef.current = el;\n if (typeof ref === 'function') ref(el);\n else if (ref) ref.current = el;\n }}\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n disabled={disabled}\n placeholder={placeholder}\n className={cn(\n 'mentions-input',\n error && 'mentions-error',\n disabled && 'mentions-disabled'\n )}\n {...props}\n />\n\n {open && filteredOptions.length > 0 && (\n <div className=\"mentions-dropdown\">\n {filteredOptions.map((option, index) => (\n <div\n key={option.value}\n className={cn(\n 'mentions-option',\n index === highlightedIndex && 'mentions-option-highlighted'\n )}\n onClick={() => handleSelect(option)}\n onMouseEnter={() => setHighlightedIndex(index)}\n >\n {option.avatar && (\n <img src={option.avatar} alt=\"\" className=\"mentions-option-avatar\" />\n )}\n <span className=\"mentions-option-label\">{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nMentions.displayName = 'Mentions';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CascaderOption {\n value: string;\n label: ReactNode;\n children?: CascaderOption[];\n disabled?: boolean;\n}\n\nexport interface CascaderProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Options */\n options: CascaderOption[];\n /** Selected value path */\n value?: string[];\n /** On change callback */\n onChange?: (value: string[], options: CascaderOption[]) => void;\n /** Placeholder */\n placeholder?: string;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Show full path in input */\n showFullPath?: boolean;\n /** Separator for display */\n separator?: string;\n}\n\nexport const Cascader = forwardRef<HTMLDivElement, CascaderProps>(\n (\n {\n options,\n value = [],\n onChange,\n placeholder = 'Select...',\n size = 'md',\n error = false,\n disabled = false,\n showFullPath = true,\n separator = ' / ',\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [activeColumns, setActiveColumns] = useState<CascaderOption[][]>([options]);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const getSelectedOptions = (): CascaderOption[] => {\n const result: CascaderOption[] = [];\n let currentOptions = options;\n\n for (const val of value) {\n const opt = currentOptions.find((o) => o.value === val);\n if (opt) {\n result.push(opt);\n currentOptions = opt.children || [];\n }\n }\n\n return result;\n };\n\n const displayValue = showFullPath\n ? getSelectedOptions().map((o) => o.label).join(separator)\n : getSelectedOptions().slice(-1)[0]?.label || '';\n\n const handleOptionClick = (option: CascaderOption, columnIndex: number) => {\n if (option.disabled) return;\n\n const newValue = value.slice(0, columnIndex);\n newValue.push(option.value);\n\n if (option.children && option.children.length > 0) {\n const newColumns = activeColumns.slice(0, columnIndex + 1);\n newColumns.push(option.children);\n setActiveColumns(newColumns);\n onChange?.(newValue, getSelectedOptions());\n } else {\n onChange?.(newValue, [...getSelectedOptions().slice(0, columnIndex), option]);\n setOpen(false);\n }\n };\n\n const handleOpen = () => {\n if (disabled) return;\n setOpen(!open);\n\n // Rebuild columns based on current value\n if (!open) {\n const columns: CascaderOption[][] = [options];\n let currentOptions = options;\n\n for (const val of value) {\n const opt = currentOptions.find((o) => o.value === val);\n if (opt?.children) {\n columns.push(opt.children);\n currentOptions = opt.children;\n }\n }\n\n setActiveColumns(columns);\n }\n };\n\n return (\n <div ref={containerRef} className={cn('cascader', `cascader-${size}`, className)} {...props}>\n <div\n ref={ref}\n className={cn(\n 'cascader-selector',\n error && 'cascader-error',\n disabled && 'cascader-disabled',\n open && 'cascader-open'\n )}\n onClick={handleOpen}\n >\n <span className={cn('cascader-value', !displayValue && 'cascader-placeholder')}>\n {displayValue || placeholder}\n </span>\n <svg className=\"cascader-arrow\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </div>\n\n {open && (\n <div className=\"cascader-dropdown\">\n {activeColumns.map((column, columnIndex) => (\n <div key={columnIndex} className=\"cascader-column\">\n {column.map((option) => (\n <div\n key={option.value}\n className={cn(\n 'cascader-option',\n value[columnIndex] === option.value && 'cascader-option-selected',\n option.disabled && 'cascader-option-disabled'\n )}\n onClick={() => handleOptionClick(option, columnIndex)}\n >\n <span className=\"cascader-option-label\">{option.label}</span>\n {option.children && option.children.length > 0 && (\n <svg className=\"cascader-option-arrow\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n )}\n </div>\n ))}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nCascader.displayName = 'Cascader';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TreeSelectNode {\n key: string;\n title: ReactNode;\n value: string;\n children?: TreeSelectNode[];\n disabled?: boolean;\n selectable?: boolean;\n}\n\nexport interface TreeSelectProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Tree data */\n treeData: TreeSelectNode[];\n /** Selected value(s) */\n value?: string | string[];\n /** On change callback */\n onChange?: (value: string | string[]) => void;\n /** Multiple selection */\n multiple?: boolean;\n /** Placeholder */\n placeholder?: string;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Show checkbox */\n showCheckbox?: boolean;\n /** Default expanded keys */\n defaultExpandedKeys?: string[];\n}\n\nexport const TreeSelect = forwardRef<HTMLDivElement, TreeSelectProps>(\n (\n {\n treeData,\n value,\n onChange,\n multiple = false,\n placeholder = 'Select...',\n size = 'md',\n error = false,\n disabled = false,\n showCheckbox = false,\n defaultExpandedKeys = [],\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set(defaultExpandedKeys));\n const containerRef = useRef<HTMLDivElement>(null);\n\n const selectedValues = Array.isArray(value) ? value : value ? [value] : [];\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const findNode = (nodes: TreeSelectNode[], val: string): TreeSelectNode | undefined => {\n for (const node of nodes) {\n if (node.value === val) return node;\n if (node.children) {\n const found = findNode(node.children, val);\n if (found) return found;\n }\n }\n return undefined;\n };\n\n const getDisplayValue = () => {\n if (selectedValues.length === 0) return '';\n const titles = selectedValues.map((v) => findNode(treeData, v)?.title).filter(Boolean);\n return titles.join(', ');\n };\n\n const handleSelect = (node: TreeSelectNode) => {\n if (node.disabled || node.selectable === false) return;\n\n if (multiple) {\n const newValues = selectedValues.includes(node.value)\n ? selectedValues.filter((v) => v !== node.value)\n : [...selectedValues, node.value];\n onChange?.(newValues);\n } else {\n onChange?.(node.value);\n setOpen(false);\n }\n };\n\n const toggleExpand = (key: string, e: React.MouseEvent) => {\n e.stopPropagation();\n const newExpanded = new Set(expandedKeys);\n if (newExpanded.has(key)) {\n newExpanded.delete(key);\n } else {\n newExpanded.add(key);\n }\n setExpandedKeys(newExpanded);\n };\n\n const renderNodes = (nodes: TreeSelectNode[], level = 0): ReactNode => {\n return nodes.map((node) => {\n const isExpanded = expandedKeys.has(node.key);\n const isSelected = selectedValues.includes(node.value);\n const hasChildren = node.children && node.children.length > 0;\n\n return (\n <div key={node.key}>\n <div\n className={cn(\n 'tree-select-node',\n isSelected && 'tree-select-node-selected',\n node.disabled && 'tree-select-node-disabled'\n )}\n style={{ paddingLeft: level * 20 + 8 }}\n onClick={() => handleSelect(node)}\n >\n {hasChildren && (\n <button\n type=\"button\"\n className=\"tree-select-expand\"\n onClick={(e) => toggleExpand(node.key, e)}\n >\n <svg\n viewBox=\"0 0 24 24\"\n width=\"12\"\n height=\"12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n style={{ transform: isExpanded ? 'rotate(90deg)' : undefined }}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n )}\n {!hasChildren && <span className=\"tree-select-expand-placeholder\" />}\n {showCheckbox && (\n <span className={cn('tree-select-checkbox', isSelected && 'tree-select-checkbox-checked')} />\n )}\n <span className=\"tree-select-title\">{node.title}</span>\n </div>\n {hasChildren && isExpanded && renderNodes(node.children!, level + 1)}\n </div>\n );\n });\n };\n\n return (\n <div ref={containerRef} className={cn('tree-select', `tree-select-${size}`, className)} {...props}>\n <div\n ref={ref}\n className={cn(\n 'tree-select-selector',\n error && 'tree-select-error',\n disabled && 'tree-select-disabled',\n open && 'tree-select-open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <span className={cn('tree-select-value', !getDisplayValue() && 'tree-select-placeholder')}>\n {getDisplayValue() || placeholder}\n </span>\n <svg className=\"tree-select-arrow\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </div>\n\n {open && (\n <div className=\"tree-select-dropdown\">\n {renderNodes(treeData)}\n </div>\n )}\n </div>\n );\n }\n);\n\nTreeSelect.displayName = 'TreeSelect';\n","'use client';\n\nimport { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TransferItem {\n key: string;\n title: ReactNode;\n description?: string;\n disabled?: boolean;\n}\n\nexport interface TransferProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Data source */\n dataSource: TransferItem[];\n /** Target keys */\n targetKeys?: string[];\n /** On change callback */\n onChange?: (targetKeys: string[], direction: 'left' | 'right', moveKeys: string[]) => void;\n /** Titles for both lists */\n titles?: [ReactNode, ReactNode];\n /** Show search */\n showSearch?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** One way mode */\n oneWay?: boolean;\n}\n\nexport const Transfer = forwardRef<HTMLDivElement, TransferProps>(\n (\n {\n dataSource,\n targetKeys = [],\n onChange,\n titles = ['Source', 'Target'],\n showSearch = false,\n disabled = false,\n oneWay = false,\n className,\n ...props\n },\n ref\n ) => {\n const [selectedKeys, setSelectedKeys] = useState<Set<string>>(new Set());\n const [leftSearch, setLeftSearch] = useState('');\n const [rightSearch, setRightSearch] = useState('');\n\n const leftItems = dataSource.filter((item) => !targetKeys.includes(item.key));\n const rightItems = dataSource.filter((item) => targetKeys.includes(item.key));\n\n const filterItems = (items: TransferItem[], search: string) => {\n if (!search) return items;\n return items.filter((item) =>\n item.title?.toString().toLowerCase().includes(search.toLowerCase())\n );\n };\n\n const toggleSelect = (key: string) => {\n const newSelected = new Set(selectedKeys);\n if (newSelected.has(key)) {\n newSelected.delete(key);\n } else {\n newSelected.add(key);\n }\n setSelectedKeys(newSelected);\n };\n\n const moveRight = () => {\n const moveKeys = leftItems\n .filter((item) => selectedKeys.has(item.key) && !item.disabled)\n .map((item) => item.key);\n\n if (moveKeys.length > 0) {\n onChange?.([...targetKeys, ...moveKeys], 'right', moveKeys);\n setSelectedKeys(new Set());\n }\n };\n\n const moveLeft = () => {\n const moveKeys = rightItems\n .filter((item) => selectedKeys.has(item.key) && !item.disabled)\n .map((item) => item.key);\n\n if (moveKeys.length > 0) {\n onChange?.(targetKeys.filter((k) => !moveKeys.includes(k)), 'left', moveKeys);\n setSelectedKeys(new Set());\n }\n };\n\n const renderList = (\n items: TransferItem[],\n title: ReactNode,\n search: string,\n setSearch: (v: string) => void,\n _side: 'left' | 'right'\n ) => {\n const filtered = filterItems(items, search);\n const selectedCount = items.filter((item) => selectedKeys.has(item.key)).length;\n\n return (\n <div className=\"transfer-list\">\n <div className=\"transfer-list-header\">\n <span className=\"transfer-list-title\">\n {selectedCount > 0 && `${selectedCount}/`}{items.length} {title}\n </span>\n </div>\n {showSearch && (\n <div className=\"transfer-list-search\">\n <input\n type=\"text\"\n placeholder=\"Search...\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n className=\"transfer-search-input\"\n />\n </div>\n )}\n <div className=\"transfer-list-content\">\n {filtered.map((item) => (\n <div\n key={item.key}\n className={cn(\n 'transfer-item',\n selectedKeys.has(item.key) && 'transfer-item-selected',\n item.disabled && 'transfer-item-disabled'\n )}\n onClick={() => !item.disabled && !disabled && toggleSelect(item.key)}\n >\n <span className={cn('transfer-item-checkbox', selectedKeys.has(item.key) && 'transfer-item-checkbox-checked')} />\n <div className=\"transfer-item-content\">\n <span className=\"transfer-item-title\">{item.title}</span>\n {item.description && (\n <span className=\"transfer-item-description\">{item.description}</span>\n )}\n </div>\n </div>\n ))}\n {filtered.length === 0 && (\n <div className=\"transfer-list-empty\">No data</div>\n )}\n </div>\n </div>\n );\n };\n\n const hasLeftSelected = leftItems.some((item) => selectedKeys.has(item.key) && !item.disabled);\n const hasRightSelected = rightItems.some((item) => selectedKeys.has(item.key) && !item.disabled);\n\n return (\n <div\n ref={ref}\n className={cn('transfer', disabled && 'transfer-disabled', className)}\n {...props}\n >\n {renderList(leftItems, titles[0], leftSearch, setLeftSearch, 'left')}\n\n <div className=\"transfer-operations\">\n <button\n type=\"button\"\n className=\"transfer-operation\"\n onClick={moveRight}\n disabled={disabled || !hasLeftSelected}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n {!oneWay && (\n <button\n type=\"button\"\n className=\"transfer-operation\"\n onClick={moveLeft}\n disabled={disabled || !hasRightSelected}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n )}\n </div>\n\n {renderList(rightItems, titles[1], rightSearch, setRightSearch, 'right')}\n </div>\n );\n }\n);\n\nTransfer.displayName = 'Transfer';\n","'use client';\n\nimport { forwardRef, useState, useRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface InputOTPProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Number of inputs */\n length?: number;\n /** Value */\n value?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** On complete callback */\n onComplete?: (value: string) => void;\n /** Mask input */\n mask?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Auto focus first input */\n autoFocus?: boolean;\n /** Type */\n type?: 'numeric' | 'alphanumeric';\n}\n\nexport const InputOTP = forwardRef<HTMLDivElement, InputOTPProps>(\n (\n {\n length = 6,\n value = '',\n onChange,\n onComplete,\n mask = false,\n size = 'md',\n error = false,\n disabled = false,\n autoFocus = false,\n type = 'numeric',\n className,\n ...props\n },\n ref\n ) => {\n const [values, setValues] = useState<string[]>(value.split('').slice(0, length));\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n const focusInput = (index: number) => {\n if (index >= 0 && index < length) {\n inputRefs.current[index]?.focus();\n }\n };\n\n const handleChange = (index: number, inputValue: string) => {\n const regex = type === 'numeric' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/;\n const char = inputValue.slice(-1);\n\n if (!char || regex.test(char)) {\n const newValues = [...values];\n newValues[index] = char;\n setValues(newValues);\n\n const newValue = newValues.join('');\n onChange?.(newValue);\n\n if (char && index < length - 1) {\n focusInput(index + 1);\n }\n\n if (newValue.length === length) {\n onComplete?.(newValue);\n }\n }\n };\n\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n if (!values[index] && index > 0) {\n focusInput(index - 1);\n } else {\n const newValues = [...values];\n newValues[index] = '';\n setValues(newValues);\n onChange?.(newValues.join(''));\n }\n } else if (e.key === 'ArrowLeft') {\n focusInput(index - 1);\n } else if (e.key === 'ArrowRight') {\n focusInput(index + 1);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text');\n const regex = type === 'numeric' ? /[0-9]/g : /[a-zA-Z0-9]/g;\n const validChars = pastedData.match(regex) || [];\n\n const newValues = [...values];\n validChars.slice(0, length).forEach((char, i) => {\n newValues[i] = char;\n });\n\n setValues(newValues);\n const newValue = newValues.join('');\n onChange?.(newValue);\n\n if (newValue.length === length) {\n onComplete?.(newValue);\n }\n\n focusInput(Math.min(validChars.length, length - 1));\n };\n\n return (\n <div\n ref={ref}\n className={cn('input-otp', `input-otp-${size}`, error && 'input-otp-error', className)}\n {...props}\n >\n {Array.from({ length }).map((_, index) => (\n <input\n key={index}\n ref={(el) => { inputRefs.current[index] = el; }}\n type={mask ? 'password' : 'text'}\n inputMode={type === 'numeric' ? 'numeric' : 'text'}\n maxLength={1}\n value={values[index] || ''}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n disabled={disabled}\n autoFocus={autoFocus && index === 0}\n className=\"input-otp-slot\"\n autoComplete=\"one-time-code\"\n />\n ))}\n </div>\n );\n }\n);\n\nInputOTP.displayName = 'InputOTP';\n","'use client';\n\nimport { forwardRef, useState, useRef, type HTMLAttributes, type KeyboardEvent } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TagsInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Tags */\n value?: string[];\n /** On change callback */\n onChange?: (tags: string[]) => void;\n /** Placeholder */\n placeholder?: string;\n /** Max tags */\n maxTags?: number;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Allow duplicates */\n allowDuplicates?: boolean;\n /** Separator keys */\n separatorKeys?: string[];\n}\n\nexport const TagsInput = forwardRef<HTMLDivElement, TagsInputProps>(\n (\n {\n value = [],\n onChange,\n placeholder = 'Add tag...',\n maxTags,\n size = 'md',\n error = false,\n disabled = false,\n allowDuplicates = false,\n separatorKeys = ['Enter', ','],\n className,\n ...props\n },\n ref\n ) => {\n const [inputValue, setInputValue] = useState('');\n const inputRef = useRef<HTMLInputElement>(null);\n\n const addTag = (tag: string) => {\n const trimmedTag = tag.trim();\n if (!trimmedTag) return;\n if (maxTags && value.length >= maxTags) return;\n if (!allowDuplicates && value.includes(trimmedTag)) return;\n\n onChange?.([...value, trimmedTag]);\n setInputValue('');\n };\n\n const removeTag = (index: number) => {\n onChange?.(value.filter((_, i) => i !== index));\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (separatorKeys.includes(e.key)) {\n e.preventDefault();\n addTag(inputValue);\n } else if (e.key === 'Backspace' && !inputValue && value.length > 0) {\n removeTag(value.length - 1);\n }\n };\n\n const handleContainerClick = () => {\n inputRef.current?.focus();\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'tags-input',\n `tags-input-${size}`,\n error && 'tags-input-error',\n disabled && 'tags-input-disabled',\n className\n )}\n onClick={handleContainerClick}\n {...props}\n >\n <div className=\"tags-input-tags\">\n {value.map((tag, index) => (\n <span key={`${tag}-${index}`} className=\"tags-input-tag\">\n <span className=\"tags-input-tag-text\">{tag}</span>\n {!disabled && (\n <button\n type=\"button\"\n className=\"tags-input-tag-remove\"\n onClick={(e) => {\n e.stopPropagation();\n removeTag(index);\n }}\n >\n <svg viewBox=\"0 0 24 24\" width=\"12\" height=\"12\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </span>\n ))}\n <input\n ref={inputRef}\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n onBlur={() => addTag(inputValue)}\n placeholder={value.length === 0 ? placeholder : ''}\n disabled={disabled || (maxTags !== undefined && value.length >= maxTags)}\n className=\"tags-input-input\"\n />\n </div>\n </div>\n );\n }\n);\n\nTagsInput.displayName = 'TagsInput';\n","'use client';\n\nimport { forwardRef, useState, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DropzoneProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onDrop'> {\n /** On drop callback */\n onDrop?: (files: File[]) => void;\n /** Accept file types */\n accept?: string;\n /** Multiple files */\n multiple?: boolean;\n /** Max file size (bytes) */\n maxSize?: number;\n /** Max files */\n maxFiles?: number;\n /** Disabled state */\n disabled?: boolean;\n /** Custom content */\n children?: ReactNode;\n /** Loading state */\n loading?: boolean;\n}\n\nexport const Dropzone = forwardRef<HTMLDivElement, DropzoneProps>(\n (\n {\n onDrop,\n accept,\n multiple = true,\n maxSize,\n maxFiles,\n disabled = false,\n children,\n loading = false,\n className,\n ...props\n },\n ref\n ) => {\n const [isDragOver, setIsDragOver] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const validateFiles = (files: FileList | File[]): File[] => {\n const validFiles: File[] = [];\n const fileArray = Array.from(files);\n\n for (const file of fileArray) {\n if (maxFiles && validFiles.length >= maxFiles) break;\n if (maxSize && file.size > maxSize) {\n setError(`File ${file.name} exceeds max size`);\n continue;\n }\n if (accept) {\n const acceptedTypes = accept.split(',').map((t) => t.trim());\n const isValid = acceptedTypes.some((type) => {\n if (type.startsWith('.')) {\n return file.name.endsWith(type);\n }\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.slice(0, -1));\n }\n return file.type === type;\n });\n if (!isValid) continue;\n }\n validFiles.push(file);\n }\n\n return validFiles;\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n setError(null);\n\n if (disabled || loading) return;\n\n const files = validateFiles(e.dataTransfer.files);\n if (files.length > 0) {\n onDrop?.(files);\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (!disabled && !loading) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = () => {\n setIsDragOver(false);\n };\n\n const handleClick = () => {\n if (!disabled && !loading) {\n inputRef.current?.click();\n }\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setError(null);\n if (e.target.files) {\n const files = validateFiles(e.target.files);\n if (files.length > 0) {\n onDrop?.(files);\n }\n }\n e.target.value = '';\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'dropzone',\n isDragOver && 'dropzone-active',\n disabled && 'dropzone-disabled',\n loading && 'dropzone-loading',\n error && 'dropzone-error',\n className\n )}\n onDrop={handleDrop}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onClick={handleClick}\n {...props}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n style={{ display: 'none' }}\n />\n {children || (\n <div className=\"dropzone-content\">\n {loading ? (\n <div className=\"dropzone-loading-indicator\">\n <span className=\"dropzone-spinner\" />\n <p>Uploading...</p>\n </div>\n ) : (\n <>\n <svg className=\"dropzone-icon\" viewBox=\"0 0 24 24\" width=\"48\" height=\"48\" stroke=\"currentColor\" strokeWidth=\"1.5\" fill=\"none\">\n <path d=\"M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4\" />\n <polyline points=\"17 8 12 3 7 8\" />\n <line x1=\"12\" y1=\"3\" x2=\"12\" y2=\"15\" />\n </svg>\n <p className=\"dropzone-text\">\n <span className=\"dropzone-text-primary\">Click to upload</span> or drag and drop\n </p>\n {accept && <p className=\"dropzone-hint\">{accept}</p>}\n {maxSize && <p className=\"dropzone-hint\">Max size: {Math.round(maxSize / 1024 / 1024)}MB</p>}\n </>\n )}\n </div>\n )}\n {error && <p className=\"dropzone-error-text\">{error}</p>}\n </div>\n );\n }\n);\n\nDropzone.displayName = 'Dropzone';\n","'use client';\n\nimport { forwardRef, useState, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Show strength indicator */\n showStrength?: boolean;\n /** Visible by default */\n defaultVisible?: boolean;\n}\n\nconst calculateStrength = (password: string): { score: number; label: string } => {\n let score = 0;\n if (password.length >= 8) score++;\n if (password.length >= 12) score++;\n if (/[a-z]/.test(password) && /[A-Z]/.test(password)) score++;\n if (/\\d/.test(password)) score++;\n if (/[^a-zA-Z0-9]/.test(password)) score++;\n\n const labels = ['Very weak', 'Weak', 'Fair', 'Strong', 'Very strong'];\n return { score, label: labels[Math.min(score, 4)] };\n};\n\nexport const PasswordInput = forwardRef<HTMLInputElement, PasswordInputProps>(\n (\n {\n size = 'md',\n error = false,\n showStrength = false,\n defaultVisible = false,\n disabled,\n value,\n className,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = useState(defaultVisible);\n const strength = showStrength && typeof value === 'string' ? calculateStrength(value) : null;\n\n return (\n <div className={cn('password-input-wrapper', className)}>\n <div\n className={cn(\n 'password-input',\n `password-input-${size}`,\n error && 'password-input-error',\n disabled && 'password-input-disabled'\n )}\n >\n <input\n ref={ref}\n type={visible ? 'text' : 'password'}\n value={value}\n disabled={disabled}\n className=\"password-input-field\"\n {...props}\n />\n <button\n type=\"button\"\n className=\"password-toggle\"\n onClick={() => setVisible(!visible)}\n disabled={disabled}\n tabIndex={-1}\n aria-label={visible ? 'Hide password' : 'Show password'}\n >\n {visible ? (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <path d=\"M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n ) : (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n )}\n </button>\n </div>\n\n {showStrength && strength && typeof value === 'string' && value.length > 0 && (\n <div className=\"password-strength\">\n <div className=\"password-strength-bar\">\n {[0, 1, 2, 3, 4].map((i) => (\n <div\n key={i}\n className={cn(\n 'password-strength-segment',\n i < strength.score && `password-strength-segment-${strength.score}`\n )}\n />\n ))}\n </div>\n <span className=\"password-strength-label\">{strength.label}</span>\n </div>\n )}\n </div>\n );\n }\n);\n\nPasswordInput.displayName = 'PasswordInput';\n","'use client';\n\nimport { forwardRef, useState, useRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PinInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Number of inputs */\n length?: number;\n /** Value */\n value?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** On complete callback */\n onComplete?: (value: string) => void;\n /** Mask input */\n mask?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Disabled state */\n disabled?: boolean;\n /** Type */\n type?: 'numeric' | 'alphanumeric';\n /** Placeholder character */\n placeholder?: string;\n /** Auto focus */\n autoFocus?: boolean;\n}\n\nexport const PinInput = forwardRef<HTMLDivElement, PinInputProps>(\n (\n {\n length = 4,\n value = '',\n onChange,\n onComplete,\n mask = false,\n size = 'md',\n error = false,\n disabled = false,\n type = 'alphanumeric',\n placeholder = '○',\n autoFocus = false,\n className,\n ...props\n },\n ref\n ) => {\n const [values, setValues] = useState<string[]>(value.split('').slice(0, length));\n const inputRefs = useRef<(HTMLInputElement | null)[]>([]);\n\n const focusInput = (index: number) => {\n if (index >= 0 && index < length) {\n inputRefs.current[index]?.focus();\n }\n };\n\n const handleChange = (index: number, inputValue: string) => {\n const regex = type === 'numeric' ? /^[0-9]$/ : /^[a-zA-Z0-9]$/;\n const char = inputValue.slice(-1).toUpperCase();\n\n if (!char || regex.test(char)) {\n const newValues = [...values];\n newValues[index] = char;\n setValues(newValues);\n\n const newValue = newValues.join('');\n onChange?.(newValue);\n\n if (char && index < length - 1) {\n focusInput(index + 1);\n }\n\n if (newValue.length === length && !newValue.includes('')) {\n onComplete?.(newValue);\n }\n }\n };\n\n const handleKeyDown = (index: number, e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Backspace') {\n if (!values[index] && index > 0) {\n focusInput(index - 1);\n } else {\n const newValues = [...values];\n newValues[index] = '';\n setValues(newValues);\n onChange?.(newValues.join(''));\n }\n } else if (e.key === 'ArrowLeft') {\n focusInput(index - 1);\n } else if (e.key === 'ArrowRight') {\n focusInput(index + 1);\n }\n };\n\n const handlePaste = (e: React.ClipboardEvent) => {\n e.preventDefault();\n const pastedData = e.clipboardData.getData('text');\n const regex = type === 'numeric' ? /[0-9]/g : /[a-zA-Z0-9]/g;\n const validChars = (pastedData.match(regex) || []).map((c) => c.toUpperCase());\n\n const newValues = [...values];\n validChars.slice(0, length).forEach((char, i) => {\n newValues[i] = char;\n });\n\n setValues(newValues);\n const newValue = newValues.join('');\n onChange?.(newValue);\n\n if (newValue.length === length) {\n onComplete?.(newValue);\n }\n\n focusInput(Math.min(validChars.length, length - 1));\n };\n\n return (\n <div\n ref={ref}\n className={cn('pin-input', `pin-input-${size}`, error && 'pin-input-error', className)}\n {...props}\n >\n {Array.from({ length }).map((_, index) => (\n <input\n key={index}\n ref={(el) => { inputRefs.current[index] = el; }}\n type={mask ? 'password' : 'text'}\n inputMode={type === 'numeric' ? 'numeric' : 'text'}\n maxLength={1}\n value={values[index] || ''}\n onChange={(e) => handleChange(index, e.target.value)}\n onKeyDown={(e) => handleKeyDown(index, e)}\n onPaste={handlePaste}\n onFocus={(e) => e.target.select()}\n disabled={disabled}\n autoFocus={autoFocus && index === 0}\n placeholder={placeholder}\n className=\"pin-input-field\"\n />\n ))}\n </div>\n );\n }\n);\n\nPinInput.displayName = 'PinInput';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface FieldsetProps extends HTMLAttributes<HTMLFieldSetElement> {\n /** Legend/title */\n legend?: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** Variant */\n variant?: 'default' | 'outlined' | 'filled';\n}\n\nexport const Fieldset = forwardRef<HTMLFieldSetElement, FieldsetProps>(\n ({ legend, disabled = false, variant = 'default', className, children, ...props }, ref) => {\n return (\n <fieldset\n ref={ref}\n disabled={disabled}\n className={cn(\n 'fieldset',\n `fieldset-${variant}`,\n disabled && 'fieldset-disabled',\n className\n )}\n {...props}\n >\n {legend && <legend className=\"fieldset-legend\">{legend}</legend>}\n <div className=\"fieldset-content\">{children}</div>\n </fieldset>\n );\n }\n);\n\nFieldset.displayName = 'Fieldset';\n\n// Field component for grouping form fields\nexport interface FieldProps extends HTMLAttributes<HTMLDivElement> {\n /** Field label */\n label?: ReactNode;\n /** Label position */\n labelPosition?: 'top' | 'left';\n /** Required indicator */\n required?: boolean;\n /** Help text */\n help?: ReactNode;\n /** Error text */\n error?: ReactNode;\n}\n\nexport const Field = forwardRef<HTMLDivElement, FieldProps>(\n (\n {\n label,\n labelPosition = 'top',\n required = false,\n help,\n error,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'field',\n `field-label-${labelPosition}`,\n error && 'field-error',\n className\n )}\n {...props}\n >\n {label && (\n <label className=\"field-label\">\n {label}\n {required && <span className=\"field-required\">*</span>}\n </label>\n )}\n <div className=\"field-control\">{children}</div>\n {error && <span className=\"field-error-text\">{error}</span>}\n {!error && help && <span className=\"field-help\">{help}</span>}\n </div>\n );\n }\n);\n\nField.displayName = 'Field';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface EditableProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'onSubmit'> {\n /** Value */\n value?: string;\n /** Default value */\n defaultValue?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** On submit callback */\n onSubmit?: (value: string) => void;\n /** On cancel callback */\n onCancel?: () => void;\n /** Placeholder */\n placeholder?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Start in edit mode */\n startWithEditView?: boolean;\n /** Submit on blur */\n submitOnBlur?: boolean;\n /** Select all on focus */\n selectAllOnFocus?: boolean;\n /** As element type */\n as?: 'span' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'p';\n}\n\nexport const Editable = forwardRef<HTMLDivElement, EditableProps>(\n (\n {\n value: controlledValue,\n defaultValue = '',\n onChange,\n onSubmit,\n onCancel,\n placeholder = 'Click to edit',\n disabled = false,\n startWithEditView = false,\n submitOnBlur = true,\n selectAllOnFocus = true,\n as: Component = 'span',\n className,\n ...props\n },\n ref\n ) => {\n const [isEditing, setIsEditing] = useState(startWithEditView);\n const [value, setValue] = useState(controlledValue ?? defaultValue);\n const [previousValue, setPreviousValue] = useState(value);\n const inputRef = useRef<HTMLInputElement>(null);\n\n useEffect(() => {\n if (controlledValue !== undefined) {\n setValue(controlledValue);\n }\n }, [controlledValue]);\n\n useEffect(() => {\n if (isEditing && inputRef.current) {\n inputRef.current.focus();\n if (selectAllOnFocus) {\n inputRef.current.select();\n }\n }\n }, [isEditing, selectAllOnFocus]);\n\n const handleEdit = () => {\n if (disabled) return;\n setPreviousValue(value);\n setIsEditing(true);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setValue(newValue);\n onChange?.(newValue);\n };\n\n const handleSubmit = () => {\n setIsEditing(false);\n onSubmit?.(value);\n };\n\n const handleCancel = () => {\n setValue(previousValue);\n setIsEditing(false);\n onCancel?.();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n handleSubmit();\n } else if (e.key === 'Escape') {\n handleCancel();\n }\n };\n\n const handleBlur = () => {\n if (submitOnBlur) {\n handleSubmit();\n } else {\n handleCancel();\n }\n };\n\n if (isEditing) {\n return (\n <div ref={ref} className={cn('editable', 'editable-editing', className)} {...props}>\n <input\n ref={inputRef}\n type=\"text\"\n value={value}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n onBlur={handleBlur}\n className=\"editable-input\"\n />\n <div className=\"editable-controls\">\n <button\n type=\"button\"\n className=\"editable-submit\"\n onClick={handleSubmit}\n aria-label=\"Submit\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </button>\n <button\n type=\"button\"\n className=\"editable-cancel\"\n onClick={handleCancel}\n aria-label=\"Cancel\"\n >\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n </div>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn('editable', disabled && 'editable-disabled', className)}\n onClick={handleEdit}\n {...props}\n >\n <Component className={cn('editable-preview', !value && 'editable-placeholder')}>\n {value || placeholder}\n </Component>\n {!disabled && (\n <svg className=\"editable-icon\" viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <path d=\"M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7\" />\n <path d=\"M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z\" />\n </svg>\n )}\n </div>\n );\n }\n);\n\nEditable.displayName = 'Editable';\n","'use client';\n\nimport { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DataGridColumn<T> {\n key: string;\n title: ReactNode;\n dataIndex?: keyof T;\n width?: number | string;\n minWidth?: number;\n sortable?: boolean;\n filterable?: boolean;\n resizable?: boolean;\n fixed?: 'left' | 'right';\n render?: (value: any, record: T, index: number) => ReactNode;\n}\n\nexport interface DataGridProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Columns configuration */\n columns: DataGridColumn<T>[];\n /** Data source */\n dataSource: T[];\n /** Row key */\n rowKey: keyof T | ((record: T) => string);\n /** Loading state */\n loading?: boolean;\n /** Bordered */\n bordered?: boolean;\n /** Striped rows */\n striped?: boolean;\n /** Hover effect */\n hover?: boolean;\n /** Fixed header */\n stickyHeader?: boolean;\n /** Height */\n height?: number | string;\n /** Empty text */\n emptyText?: ReactNode;\n /** Row selection */\n rowSelection?: {\n selectedRowKeys: string[];\n onChange: (selectedRowKeys: string[]) => void;\n };\n /** On row click */\n onRowClick?: (record: T, index: number) => void;\n}\n\nexport const DataGrid = forwardRef<HTMLDivElement, DataGridProps<any>>(\n (\n {\n columns,\n dataSource,\n rowKey,\n loading = false,\n bordered = true,\n striped = false,\n hover = true,\n stickyHeader = false,\n height,\n emptyText = 'No data',\n rowSelection,\n onRowClick,\n className,\n ...props\n },\n ref\n ) => {\n const [sortConfig, setSortConfig] = useState<{ key: string; direction: 'asc' | 'desc' } | null>(null);\n\n const getRowKey = (record: any, index: number): string => {\n if (typeof rowKey === 'function') {\n return rowKey(record);\n }\n return String(record[rowKey] ?? index);\n };\n\n const sortedData = [...dataSource].sort((a, b) => {\n if (!sortConfig) return 0;\n const col = columns.find((c) => c.key === sortConfig.key);\n if (!col?.dataIndex) return 0;\n\n const aVal = a[col.dataIndex];\n const bVal = b[col.dataIndex];\n\n if (aVal < bVal) return sortConfig.direction === 'asc' ? -1 : 1;\n if (aVal > bVal) return sortConfig.direction === 'asc' ? 1 : -1;\n return 0;\n });\n\n const handleSort = (key: string) => {\n setSortConfig((prev) => {\n if (prev?.key === key) {\n if (prev.direction === 'asc') return { key, direction: 'desc' };\n return null;\n }\n return { key, direction: 'asc' };\n });\n };\n\n const handleSelectAll = () => {\n if (!rowSelection) return;\n const allKeys = dataSource.map((record, i) => getRowKey(record, i));\n const allSelected = allKeys.every((k) => rowSelection.selectedRowKeys.includes(k));\n rowSelection.onChange(allSelected ? [] : allKeys);\n };\n\n const handleSelectRow = (key: string) => {\n if (!rowSelection) return;\n const isSelected = rowSelection.selectedRowKeys.includes(key);\n rowSelection.onChange(\n isSelected\n ? rowSelection.selectedRowKeys.filter((k) => k !== key)\n : [...rowSelection.selectedRowKeys, key]\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'datagrid',\n bordered && 'datagrid-bordered',\n striped && 'datagrid-striped',\n hover && 'datagrid-hover',\n stickyHeader && 'datagrid-sticky',\n className\n )}\n style={{ height }}\n {...props}\n >\n {loading && (\n <div className=\"datagrid-loading\">\n <span className=\"datagrid-spinner\" />\n </div>\n )}\n <div className=\"datagrid-container\">\n <table className=\"datagrid-table\">\n <thead className=\"datagrid-header\">\n <tr>\n {rowSelection && (\n <th className=\"datagrid-header-cell datagrid-selection\">\n <input\n type=\"checkbox\"\n checked={dataSource.length > 0 && dataSource.every((r, i) => rowSelection.selectedRowKeys.includes(getRowKey(r, i)))}\n onChange={handleSelectAll}\n />\n </th>\n )}\n {columns.map((col) => (\n <th\n key={col.key}\n className={cn('datagrid-header-cell', col.sortable && 'datagrid-header-cell-sortable')}\n style={{ width: col.width, minWidth: col.minWidth }}\n onClick={() => col.sortable && handleSort(col.key)}\n >\n <div className=\"datagrid-header-content\">\n {col.title}\n {col.sortable && (\n <span className=\"datagrid-sort-icon\">\n {sortConfig?.key === col.key ? (sortConfig.direction === 'asc' ? '↑' : '↓') : '↕'}\n </span>\n )}\n </div>\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"datagrid-body\">\n {sortedData.length === 0 ? (\n <tr>\n <td colSpan={columns.length + (rowSelection ? 1 : 0)} className=\"datagrid-empty\">\n {emptyText}\n </td>\n </tr>\n ) : (\n sortedData.map((record, index) => {\n const key = getRowKey(record, index);\n const isSelected = rowSelection?.selectedRowKeys.includes(key);\n\n return (\n <tr\n key={key}\n className={cn('datagrid-row', isSelected && 'datagrid-row-selected')}\n onClick={() => onRowClick?.(record, index)}\n >\n {rowSelection && (\n <td className=\"datagrid-cell datagrid-selection\">\n <input\n type=\"checkbox\"\n checked={isSelected}\n onChange={() => handleSelectRow(key)}\n onClick={(e) => e.stopPropagation()}\n />\n </td>\n )}\n {columns.map((col) => (\n <td key={col.key} className=\"datagrid-cell\">\n {col.render\n ? col.render(col.dataIndex ? record[col.dataIndex] : undefined, record, index)\n : col.dataIndex\n ? record[col.dataIndex]\n : null}\n </td>\n ))}\n </tr>\n );\n })\n )}\n </tbody>\n </table>\n </div>\n </div>\n );\n }\n);\n\nDataGrid.displayName = 'DataGrid';\n","'use client';\n\nimport { forwardRef, useState, useEffect, useRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CarouselProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Autoplay */\n autoplay?: boolean;\n /** Autoplay interval (ms) */\n interval?: number;\n /** Show arrows */\n arrows?: boolean;\n /** Show dots */\n dots?: boolean;\n /** Dots position */\n dotsPosition?: 'bottom' | 'top' | 'left' | 'right';\n /** Loop infinitely */\n loop?: boolean;\n /** Pause on hover */\n pauseOnHover?: boolean;\n /** On slide change */\n onChange?: (index: number) => void;\n}\n\nexport const Carousel = forwardRef<HTMLDivElement, CarouselProps>(\n (\n {\n autoplay = false,\n interval = 3000,\n arrows = true,\n dots = true,\n dotsPosition = 'bottom',\n loop = true,\n pauseOnHover = true,\n onChange,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isPaused, setIsPaused] = useState(false);\n const slidesRef = useRef<HTMLDivElement>(null);\n\n const slides = Array.isArray(children) ? children : [children];\n const totalSlides = slides.length;\n\n useEffect(() => {\n if (!autoplay || isPaused || totalSlides <= 1) return;\n\n const timer = setInterval(() => {\n setCurrentIndex((prev) => {\n const next = prev + 1;\n if (next >= totalSlides) {\n return loop ? 0 : prev;\n }\n return next;\n });\n }, interval);\n\n return () => clearInterval(timer);\n }, [autoplay, interval, isPaused, totalSlides, loop]);\n\n useEffect(() => {\n onChange?.(currentIndex);\n }, [currentIndex, onChange]);\n\n const goTo = (index: number) => {\n if (index < 0) {\n setCurrentIndex(loop ? totalSlides - 1 : 0);\n } else if (index >= totalSlides) {\n setCurrentIndex(loop ? 0 : totalSlides - 1);\n } else {\n setCurrentIndex(index);\n }\n };\n\n const prev = () => goTo(currentIndex - 1);\n const next = () => goTo(currentIndex + 1);\n\n return (\n <div\n ref={ref}\n className={cn('carousel', `carousel-dots-${dotsPosition}`, className)}\n onMouseEnter={() => pauseOnHover && setIsPaused(true)}\n onMouseLeave={() => pauseOnHover && setIsPaused(false)}\n {...props}\n >\n <div className=\"carousel-container\">\n <div\n ref={slidesRef}\n className=\"carousel-slides\"\n style={{ transform: `translateX(-${currentIndex * 100}%)` }}\n >\n {slides.map((slide, index) => (\n <div key={index} className=\"carousel-slide\">\n {slide}\n </div>\n ))}\n </div>\n </div>\n\n {arrows && totalSlides > 1 && (\n <>\n <button type=\"button\" className=\"carousel-arrow carousel-arrow-prev\" onClick={prev} aria-label=\"Previous\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <button type=\"button\" className=\"carousel-arrow carousel-arrow-next\" onClick={next} aria-label=\"Next\">\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </>\n )}\n\n {dots && totalSlides > 1 && (\n <div className=\"carousel-dots\">\n {slides.map((_, index) => (\n <button\n key={index}\n type=\"button\"\n className={cn('carousel-dot', index === currentIndex && 'carousel-dot-active')}\n onClick={() => goTo(index)}\n aria-label={`Go to slide ${index + 1}`}\n />\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nCarousel.displayName = 'Carousel';\n\n// Carousel Item\nexport interface CarouselItemProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const CarouselItem = forwardRef<HTMLDivElement, CarouselItemProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('carousel-item', className)} {...props}>\n {children}\n </div>\n )\n);\n\nCarouselItem.displayName = 'CarouselItem';\n","'use client';\n\nimport { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TreeNode {\n key: string;\n title: ReactNode;\n children?: TreeNode[];\n disabled?: boolean;\n isLeaf?: boolean;\n icon?: ReactNode;\n}\n\nexport interface TreeProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onSelect'> {\n /** Tree data */\n treeData: TreeNode[];\n /** Expanded keys */\n expandedKeys?: string[];\n /** Default expanded keys */\n defaultExpandedKeys?: string[];\n /** Selected keys */\n selectedKeys?: string[];\n /** Default selected keys */\n defaultSelectedKeys?: string[];\n /** Checked keys (for checkable tree) */\n checkedKeys?: string[];\n /** Checkable tree */\n checkable?: boolean;\n /** Multiple selection */\n multiple?: boolean;\n /** Show lines */\n showLine?: boolean;\n /** Show icon */\n showIcon?: boolean;\n /** On expand */\n onExpand?: (expandedKeys: string[], node: TreeNode, expanded: boolean) => void;\n /** On select */\n onSelect?: (selectedKeys: string[], node: TreeNode, selected: boolean) => void;\n /** On check */\n onCheck?: (checkedKeys: string[], node: TreeNode, checked: boolean) => void;\n}\n\nexport const Tree = forwardRef<HTMLDivElement, TreeProps>(\n (\n {\n treeData,\n expandedKeys: controlledExpandedKeys,\n defaultExpandedKeys = [],\n selectedKeys: controlledSelectedKeys,\n defaultSelectedKeys = [],\n checkedKeys: controlledCheckedKeys,\n checkable = false,\n multiple = false,\n showLine = false,\n showIcon = false,\n onExpand,\n onSelect,\n onCheck,\n className,\n ...props\n },\n ref\n ) => {\n const [expandedKeys, setExpandedKeys] = useState<Set<string>>(new Set(defaultExpandedKeys));\n const [selectedKeys, setSelectedKeys] = useState<Set<string>>(new Set(defaultSelectedKeys));\n const [checkedKeys, setCheckedKeys] = useState<Set<string>>(new Set(controlledCheckedKeys || []));\n\n const currentExpanded = controlledExpandedKeys ? new Set(controlledExpandedKeys) : expandedKeys;\n const currentSelected = controlledSelectedKeys ? new Set(controlledSelectedKeys) : selectedKeys;\n const currentChecked = controlledCheckedKeys ? new Set(controlledCheckedKeys) : checkedKeys;\n\n const handleExpand = (node: TreeNode) => {\n const isExpanded = currentExpanded.has(node.key);\n const newExpanded = new Set(currentExpanded);\n\n if (isExpanded) {\n newExpanded.delete(node.key);\n } else {\n newExpanded.add(node.key);\n }\n\n setExpandedKeys(newExpanded);\n onExpand?.(Array.from(newExpanded), node, !isExpanded);\n };\n\n const handleSelect = (node: TreeNode) => {\n if (node.disabled) return;\n\n const isSelected = currentSelected.has(node.key);\n let newSelected: Set<string>;\n\n if (multiple) {\n newSelected = new Set(currentSelected);\n if (isSelected) {\n newSelected.delete(node.key);\n } else {\n newSelected.add(node.key);\n }\n } else {\n newSelected = isSelected ? new Set() : new Set([node.key]);\n }\n\n setSelectedKeys(newSelected);\n onSelect?.(Array.from(newSelected), node, !isSelected);\n };\n\n const handleCheck = (node: TreeNode) => {\n if (node.disabled) return;\n\n const isChecked = currentChecked.has(node.key);\n const newChecked = new Set(currentChecked);\n\n if (isChecked) {\n newChecked.delete(node.key);\n } else {\n newChecked.add(node.key);\n }\n\n setCheckedKeys(newChecked);\n onCheck?.(Array.from(newChecked), node, !isChecked);\n };\n\n const renderNode = (node: TreeNode, level: number = 0): ReactNode => {\n const isExpanded = currentExpanded.has(node.key);\n const isSelected = currentSelected.has(node.key);\n const isChecked = currentChecked.has(node.key);\n const hasChildren = node.children && node.children.length > 0;\n\n return (\n <div key={node.key} className=\"tree-node-wrapper\">\n <div\n className={cn(\n 'tree-node',\n isSelected && 'tree-node-selected',\n node.disabled && 'tree-node-disabled'\n )}\n style={{ paddingLeft: level * 24 }}\n >\n <span\n className={cn('tree-switcher', hasChildren && 'tree-switcher-expand')}\n onClick={() => hasChildren && handleExpand(node)}\n >\n {hasChildren && (\n <svg\n viewBox=\"0 0 24 24\"\n width=\"12\"\n height=\"12\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n fill=\"none\"\n style={{ transform: isExpanded ? 'rotate(90deg)' : undefined }}\n >\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n )}\n </span>\n\n {checkable && (\n <span\n className={cn('tree-checkbox', isChecked && 'tree-checkbox-checked')}\n onClick={() => handleCheck(node)}\n />\n )}\n\n {showIcon && node.icon && <span className=\"tree-icon\">{node.icon}</span>}\n\n <span className=\"tree-title\" onClick={() => handleSelect(node)}>\n {node.title}\n </span>\n </div>\n\n {hasChildren && isExpanded && (\n <div className=\"tree-children\">\n {node.children!.map((child) => renderNode(child, level + 1))}\n </div>\n )}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn('tree', showLine && 'tree-show-line', className)}\n role=\"tree\"\n {...props}\n >\n {treeData.map((node) => renderNode(node))}\n </div>\n );\n }\n);\n\nTree.displayName = 'Tree';\n","'use client';\n\nimport { forwardRef, useState, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CalendarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Selected date */\n value?: Date;\n /** On change callback */\n onChange?: (date: Date) => void;\n /** Mode */\n mode?: 'month' | 'year';\n /** On mode change */\n onModeChange?: (mode: 'month' | 'year') => void;\n /** Full screen mode */\n fullscreen?: boolean;\n /** Disabled dates */\n disabledDate?: (date: Date) => boolean;\n /** Custom date cell render */\n dateCellRender?: (date: Date) => ReactNode;\n /** Custom month cell render */\n monthCellRender?: (month: number) => ReactNode;\n /** Header render */\n headerRender?: (config: { value: Date; onChange: (date: Date) => void }) => ReactNode;\n}\n\nconst DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\nconst MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n value,\n onChange,\n mode = 'month',\n onModeChange,\n fullscreen = true,\n disabledDate,\n dateCellRender,\n monthCellRender,\n headerRender,\n className,\n ...props\n },\n ref\n ) => {\n const [currentDate, setCurrentDate] = useState(value || new Date());\n const [currentMode, setCurrentMode] = useState(mode);\n\n const handleModeChange = (newMode: 'month' | 'year') => {\n setCurrentMode(newMode);\n onModeChange?.(newMode);\n };\n\n const handleDateChange = (date: Date) => {\n setCurrentDate(date);\n onChange?.(date);\n };\n\n const navigateMonth = (delta: number) => {\n const newDate = new Date(currentDate);\n if (currentMode === 'month') {\n newDate.setMonth(newDate.getMonth() + delta);\n } else {\n newDate.setFullYear(newDate.getFullYear() + delta);\n }\n setCurrentDate(newDate);\n };\n\n const getDaysInMonth = () => {\n const year = currentDate.getFullYear();\n const month = currentDate.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const days: { date: Date; isCurrentMonth: boolean }[] = [];\n\n for (let i = firstDay - 1; i >= 0; i--) {\n days.push({ date: new Date(year, month - 1, daysInPrevMonth - i), isCurrentMonth: false });\n }\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({ date: new Date(year, month, i), isCurrentMonth: true });\n }\n const remaining = 42 - days.length;\n for (let i = 1; i <= remaining; i++) {\n days.push({ date: new Date(year, month + 1, i), isCurrentMonth: false });\n }\n\n return days;\n };\n\n const isToday = (date: Date) => new Date().toDateString() === date.toDateString();\n const isSelected = (date: Date) => value?.toDateString() === date.toDateString();\n\n const defaultHeader = (\n <div className=\"calendar-header\">\n <div className=\"calendar-header-nav\">\n <button type=\"button\" className=\"calendar-nav-btn\" onClick={() => navigateMonth(-1)}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n </div>\n <button type=\"button\" className=\"calendar-title\" onClick={() => handleModeChange(currentMode === 'month' ? 'year' : 'month')}>\n {currentMode === 'month'\n ? `${MONTHS[currentDate.getMonth()]} ${currentDate.getFullYear()}`\n : currentDate.getFullYear()}\n </button>\n <div className=\"calendar-header-nav\">\n <button type=\"button\" className=\"calendar-nav-btn\" onClick={() => navigateMonth(1)}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n </div>\n );\n\n return (\n <div\n ref={ref}\n className={cn('calendar', fullscreen && 'calendar-fullscreen', className)}\n {...props}\n >\n {headerRender ? headerRender({ value: currentDate, onChange: handleDateChange }) : defaultHeader}\n\n {currentMode === 'month' ? (\n <div className=\"calendar-month\">\n <div className=\"calendar-weekdays\">\n {DAYS.map((day) => (\n <div key={day} className=\"calendar-weekday\">{day}</div>\n ))}\n </div>\n <div className=\"calendar-days\">\n {getDaysInMonth().map(({ date, isCurrentMonth }, i) => {\n const disabled = disabledDate?.(date);\n return (\n <div\n key={i}\n className={cn(\n 'calendar-day',\n !isCurrentMonth && 'is-other-month',\n isToday(date) && 'is-today',\n isSelected(date) && 'is-selected',\n disabled && 'is-disabled'\n )}\n onClick={() => !disabled && handleDateChange(date)}\n >\n <div className=\"calendar-day-number\">{date.getDate()}</div>\n {dateCellRender && <div className=\"calendar-day-events\">{dateCellRender(date)}</div>}\n </div>\n );\n })}\n </div>\n </div>\n ) : (\n <div className=\"calendar-year\">\n {MONTHS.map((month, i) => (\n <div\n key={month}\n className={cn(\n 'calendar-year-month-title',\n currentDate.getMonth() === i && 'is-selected'\n )}\n onClick={() => {\n const newDate = new Date(currentDate);\n newDate.setMonth(i);\n handleDateChange(newDate);\n handleModeChange('month');\n }}\n >\n {monthCellRender ? monthCellRender(i) : month}\n </div>\n ))}\n </div>\n )}\n </div>\n );\n }\n);\n\nCalendar.displayName = 'Calendar';\n","'use client';\n\nimport { forwardRef, useEffect, useRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface QRCodeProps extends HTMLAttributes<HTMLDivElement> {\n /** Value to encode */\n value: string;\n /** Size in pixels */\n size?: number;\n /** Background color */\n bgColor?: string;\n /** Foreground color */\n fgColor?: string;\n /** Error correction level */\n level?: 'L' | 'M' | 'Q' | 'H';\n /** Include margin */\n includeMargin?: boolean;\n /** Icon in center */\n icon?: string;\n /** Icon size */\n iconSize?: number;\n /** Status */\n status?: 'active' | 'expired' | 'loading';\n /** On refresh (for expired) */\n onRefresh?: () => void;\n}\n\n// Simple QR code generator (basic implementation)\nconst generateQRMatrix = (value: string, _size: number): boolean[][] => {\n // This is a simplified visual representation\n // In production, use a proper QR library like qrcode\n const matrix: boolean[][] = [];\n const moduleCount = 21; // Version 1 QR code\n\n for (let i = 0; i < moduleCount; i++) {\n matrix[i] = [];\n for (let j = 0; j < moduleCount; j++) {\n // Create a pattern based on the value\n const hash = (value.charCodeAt((i + j) % value.length) || 0) + i * j;\n matrix[i][j] = hash % 3 === 0;\n }\n }\n\n // Add position patterns (corners)\n const addPositionPattern = (row: number, col: number) => {\n for (let i = 0; i < 7; i++) {\n for (let j = 0; j < 7; j++) {\n if (row + i < moduleCount && col + j < moduleCount) {\n matrix[row + i][col + j] =\n i === 0 || i === 6 || j === 0 || j === 6 ||\n (i >= 2 && i <= 4 && j >= 2 && j <= 4);\n }\n }\n }\n };\n\n addPositionPattern(0, 0);\n addPositionPattern(0, moduleCount - 7);\n addPositionPattern(moduleCount - 7, 0);\n\n return matrix;\n};\n\nexport const QRCode = forwardRef<HTMLDivElement, QRCodeProps>(\n (\n {\n value,\n size = 128,\n bgColor = '#ffffff',\n fgColor = '#000000',\n level = 'M',\n includeMargin = true,\n icon,\n iconSize = 40,\n status = 'active',\n onRefresh,\n className,\n ...props\n },\n ref\n ) => {\n const canvasRef = useRef<HTMLCanvasElement>(null);\n\n useEffect(() => {\n const canvas = canvasRef.current;\n if (!canvas) return;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const matrix = generateQRMatrix(value, size);\n const moduleCount = matrix.length;\n const margin = includeMargin ? 4 : 0;\n const moduleSize = size / (moduleCount + margin * 2);\n\n // Clear canvas\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, size, size);\n\n // Draw modules\n ctx.fillStyle = fgColor;\n matrix.forEach((row, i) => {\n row.forEach((cell, j) => {\n if (cell) {\n ctx.fillRect(\n (j + margin) * moduleSize,\n (i + margin) * moduleSize,\n moduleSize,\n moduleSize\n );\n }\n });\n });\n\n // Draw icon if provided\n if (icon && status === 'active') {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n const x = (size - iconSize) / 2;\n const y = (size - iconSize) / 2;\n ctx.fillStyle = bgColor;\n ctx.fillRect(x - 4, y - 4, iconSize + 8, iconSize + 8);\n ctx.drawImage(img, x, y, iconSize, iconSize);\n };\n img.src = icon;\n }\n }, [value, size, bgColor, fgColor, includeMargin, icon, iconSize, status]);\n\n return (\n <div\n ref={ref}\n className={cn('qrcode', `qrcode-${status}`, className)}\n style={{ width: size, height: size }}\n {...props}\n >\n <canvas ref={canvasRef} width={size} height={size} className=\"qrcode-canvas\" />\n\n {status === 'loading' && (\n <div className=\"qrcode-overlay\">\n <span className=\"qrcode-spinner\" />\n </div>\n )}\n\n {status === 'expired' && (\n <div className=\"qrcode-overlay\">\n <span className=\"qrcode-expired-text\">QR Code expired</span>\n {onRefresh && (\n <button type=\"button\" className=\"qrcode-refresh\" onClick={onRefresh}>\n Refresh\n </button>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nQRCode.displayName = 'QRCode';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SegmentedOption {\n value: string;\n label: ReactNode;\n icon?: ReactNode;\n disabled?: boolean;\n}\n\nexport interface SegmentedProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Options */\n options: (string | SegmentedOption)[];\n /** Selected value */\n value?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Block mode (full width) */\n block?: boolean;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const Segmented = forwardRef<HTMLDivElement, SegmentedProps>(\n (\n {\n options,\n value,\n onChange,\n size = 'md',\n block = false,\n disabled = false,\n className,\n ...props\n },\n ref\n ) => {\n const normalizedOptions: SegmentedOption[] = options.map((opt) =>\n typeof opt === 'string' ? { value: opt, label: opt } : opt\n );\n\n return (\n <div\n ref={ref}\n role=\"radiogroup\"\n className={cn(\n 'segmented',\n `segmented-${size}`,\n block && 'segmented-block',\n disabled && 'segmented-disabled',\n className\n )}\n {...props}\n >\n {normalizedOptions.map((option) => {\n const isSelected = option.value === value;\n const isDisabled = disabled || option.disabled;\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isSelected}\n disabled={isDisabled}\n className={cn(\n 'segmented-item',\n isSelected && 'segmented-item-selected',\n isDisabled && 'segmented-item-disabled'\n )}\n onClick={() => !isDisabled && onChange?.(option.value)}\n >\n {option.icon && <span className=\"segmented-item-icon\">{option.icon}</span>}\n <span className=\"segmented-item-label\">{option.label}</span>\n </button>\n );\n })}\n </div>\n );\n }\n);\n\nSegmented.displayName = 'Segmented';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface KbdProps extends HTMLAttributes<HTMLElement> {\n /** Key combination (array for multiple keys) */\n keys?: string | string[];\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst KEY_MAP: Record<string, string> = {\n command: '⌘',\n cmd: '⌘',\n ctrl: 'Ctrl',\n control: 'Ctrl',\n alt: 'Alt',\n option: '⌥',\n opt: '⌥',\n shift: '⇧',\n enter: '↵',\n return: '↵',\n backspace: '⌫',\n delete: '⌦',\n escape: 'Esc',\n esc: 'Esc',\n tab: '⇥',\n space: 'Space',\n up: '↑',\n down: '↓',\n left: '←',\n right: '→',\n pageup: 'PgUp',\n pagedown: 'PgDn',\n home: 'Home',\n end: 'End',\n};\n\nconst formatKey = (key: string): string => {\n const lower = key.toLowerCase();\n return KEY_MAP[lower] || key.toUpperCase();\n};\n\nexport const Kbd = forwardRef<HTMLElement, KbdProps>(\n ({ keys, size = 'md', className, children, ...props }, ref) => {\n if (children) {\n return (\n <kbd ref={ref} className={cn('kbd', `kbd-${size}`, className)} {...props}>\n {children}\n </kbd>\n );\n }\n\n if (!keys) return null;\n\n const keyArray = Array.isArray(keys) ? keys : [keys];\n\n return (\n <span className={cn('kbd-group', className)}>\n {keyArray.map((key, index) => (\n <span key={index}>\n <kbd ref={index === 0 ? ref : undefined} className={cn('kbd', `kbd-${size}`)} {...props}>\n {formatKey(key)}\n </kbd>\n {index < keyArray.length - 1 && <span className=\"kbd-separator\">+</span>}\n </span>\n ))}\n </span>\n );\n }\n);\n\nKbd.displayName = 'Kbd';\n","'use client';\n\nimport { forwardRef, useRef, useState, useEffect, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ScrollAreaProps extends HTMLAttributes<HTMLDivElement> {\n /** Scroll direction */\n type?: 'auto' | 'always' | 'scroll' | 'hover';\n /** Scrollbar size */\n scrollbarSize?: number;\n /** Hide delay (ms) */\n scrollHideDelay?: number;\n /** Orientation */\n orientation?: 'vertical' | 'horizontal' | 'both';\n}\n\nexport const ScrollArea = forwardRef<HTMLDivElement, ScrollAreaProps>(\n (\n {\n type = 'hover',\n scrollbarSize = 8,\n scrollHideDelay = 600,\n orientation = 'vertical',\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const viewportRef = useRef<HTMLDivElement>(null);\n const [showScrollbar, setShowScrollbar] = useState(type === 'always');\n const [scrollPercentY, setScrollPercentY] = useState(0);\n const [scrollPercentX, setScrollPercentX] = useState(0);\n const [thumbHeightPercent, setThumbHeightPercent] = useState(100);\n const [thumbWidthPercent, setThumbWidthPercent] = useState(100);\n const hideTimeoutRef = useRef<NodeJS.Timeout>();\n\n useEffect(() => {\n const viewport = viewportRef.current;\n if (!viewport) return;\n\n const updateScrollbar = () => {\n const { scrollTop, scrollHeight, clientHeight, scrollLeft, scrollWidth, clientWidth } = viewport;\n\n setThumbHeightPercent(Math.min(100, (clientHeight / scrollHeight) * 100));\n setThumbWidthPercent(Math.min(100, (clientWidth / scrollWidth) * 100));\n setScrollPercentY((scrollTop / (scrollHeight - clientHeight)) * 100 || 0);\n setScrollPercentX((scrollLeft / (scrollWidth - clientWidth)) * 100 || 0);\n };\n\n updateScrollbar();\n viewport.addEventListener('scroll', updateScrollbar);\n window.addEventListener('resize', updateScrollbar);\n\n return () => {\n viewport.removeEventListener('scroll', updateScrollbar);\n window.removeEventListener('resize', updateScrollbar);\n };\n }, []);\n\n const handleMouseEnter = () => {\n if (type === 'hover' || type === 'scroll') {\n clearTimeout(hideTimeoutRef.current);\n setShowScrollbar(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (type === 'hover') {\n hideTimeoutRef.current = setTimeout(() => setShowScrollbar(false), scrollHideDelay);\n }\n };\n\n const handleScroll = () => {\n if (type === 'scroll') {\n clearTimeout(hideTimeoutRef.current);\n setShowScrollbar(true);\n hideTimeoutRef.current = setTimeout(() => setShowScrollbar(false), scrollHideDelay);\n }\n };\n\n const showVertical = (orientation === 'vertical' || orientation === 'both') && thumbHeightPercent < 100;\n const showHorizontal = (orientation === 'horizontal' || orientation === 'both') && thumbWidthPercent < 100;\n\n return (\n <div\n ref={ref}\n className={cn('scroll-area', className)}\n style={{ ...style, '--scrollbar-size': `${scrollbarSize}px` } as React.CSSProperties}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <div\n ref={viewportRef}\n className=\"scroll-area-viewport\"\n onScroll={handleScroll}\n >\n {children}\n </div>\n\n {showVertical && (\n <div className={cn('scroll-area-scrollbar scroll-area-scrollbar-vertical', showScrollbar && 'scroll-area-scrollbar-visible')}>\n <div\n className=\"scroll-area-thumb\"\n style={{\n height: `${thumbHeightPercent}%`,\n top: `${scrollPercentY * (100 - thumbHeightPercent) / 100}%`,\n }}\n />\n </div>\n )}\n\n {showHorizontal && (\n <div className={cn('scroll-area-scrollbar scroll-area-scrollbar-horizontal', showScrollbar && 'scroll-area-scrollbar-visible')}>\n <div\n className=\"scroll-area-thumb\"\n style={{\n width: `${thumbWidthPercent}%`,\n left: `${scrollPercentX * (100 - thumbWidthPercent) / 100}%`,\n }}\n />\n </div>\n )}\n </div>\n );\n }\n);\n\nScrollArea.displayName = 'ScrollArea';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface HoverCardProps extends HTMLAttributes<HTMLDivElement> {\n /** Trigger element */\n trigger: ReactNode;\n /** Open delay (ms) */\n openDelay?: number;\n /** Close delay (ms) */\n closeDelay?: number;\n /** Placement */\n placement?: 'top' | 'bottom' | 'left' | 'right';\n /** Disabled */\n disabled?: boolean;\n}\n\nexport const HoverCard = forwardRef<HTMLDivElement, HoverCardProps>(\n (\n {\n trigger,\n openDelay = 200,\n closeDelay = 300,\n placement = 'bottom',\n disabled = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const openTimeoutRef = useRef<NodeJS.Timeout>();\n const closeTimeoutRef = useRef<NodeJS.Timeout>();\n\n const handleMouseEnter = () => {\n if (disabled) return;\n clearTimeout(closeTimeoutRef.current);\n openTimeoutRef.current = setTimeout(() => setOpen(true), openDelay);\n };\n\n const handleMouseLeave = () => {\n clearTimeout(openTimeoutRef.current);\n closeTimeoutRef.current = setTimeout(() => setOpen(false), closeDelay);\n };\n\n useEffect(() => {\n return () => {\n clearTimeout(openTimeoutRef.current);\n clearTimeout(closeTimeoutRef.current);\n };\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn('hover-card', className)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <div className=\"hover-card-trigger\">{trigger}</div>\n {open && (\n <div className={cn('hover-card-content', `hover-card-${placement}`)}>\n <div className=\"hover-card-arrow\" />\n {children}\n </div>\n )}\n </div>\n );\n }\n);\n\nHoverCard.displayName = 'HoverCard';\n\n// HoverCard Header\nexport interface HoverCardHeaderProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const HoverCardHeader = forwardRef<HTMLDivElement, HoverCardHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('hover-card-header', className)} {...props}>\n {children}\n </div>\n )\n);\n\nHoverCardHeader.displayName = 'HoverCardHeader';\n\n// HoverCard Body\nexport interface HoverCardBodyProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const HoverCardBody = forwardRef<HTMLDivElement, HoverCardBodyProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('hover-card-body', className)} {...props}>\n {children}\n </div>\n )\n);\n\nHoverCardBody.displayName = 'HoverCardBody';\n\n// HoverCard Footer\nexport interface HoverCardFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const HoverCardFooter = forwardRef<HTMLDivElement, HoverCardFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('hover-card-footer', className)} {...props}>\n {children}\n </div>\n )\n);\n\nHoverCardFooter.displayName = 'HoverCardFooter';\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ToggleProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Pressed state */\n pressed?: boolean;\n /** Default pressed state */\n defaultPressed?: boolean;\n /** On pressed change */\n onPressedChange?: (pressed: boolean) => void;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Variant */\n variant?: 'default' | 'outline';\n}\n\nexport const Toggle = forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n pressed,\n defaultPressed = false,\n onPressedChange,\n size = 'md',\n variant = 'default',\n disabled,\n className,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const isControlled = pressed !== undefined;\n const isPressed = isControlled ? pressed : defaultPressed;\n\n const handleClick = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!isControlled) {\n onPressedChange?.(!isPressed);\n } else {\n onPressedChange?.(!pressed);\n }\n onClick?.(e);\n };\n\n return (\n <button\n ref={ref}\n type=\"button\"\n aria-pressed={isPressed}\n disabled={disabled}\n className={cn(\n 'toggle',\n `toggle-${size}`,\n `toggle-${variant}`,\n isPressed && 'toggle-pressed',\n className\n )}\n onClick={handleClick}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nToggle.displayName = 'Toggle';\n","import { forwardRef, createContext, useContext, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\ninterface ToggleGroupContextValue {\n value: string | string[];\n onValueChange: (value: string) => void;\n type: 'single' | 'multiple';\n size: 'sm' | 'md' | 'lg';\n variant: 'default' | 'outline';\n disabled: boolean;\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue | null>(null);\n\nexport interface ToggleGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Selection type */\n type?: 'single' | 'multiple';\n /** Selected value(s) */\n value?: string | string[];\n /** Default value(s) */\n defaultValue?: string | string[];\n /** On value change */\n onValueChange?: (value: string | string[]) => void;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Variant */\n variant?: 'default' | 'outline';\n /** Disabled state */\n disabled?: boolean;\n /** Orientation */\n orientation?: 'horizontal' | 'vertical';\n}\n\nexport const ToggleGroup = forwardRef<HTMLDivElement, ToggleGroupProps>(\n (\n {\n type = 'single',\n value,\n defaultValue,\n onValueChange,\n size = 'md',\n variant = 'default',\n disabled = false,\n orientation = 'horizontal',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const currentValue = value ?? defaultValue ?? (type === 'single' ? '' : []);\n\n const handleValueChange = (itemValue: string) => {\n if (type === 'single') {\n onValueChange?.(itemValue === currentValue ? '' : itemValue);\n } else {\n const arrayValue = Array.isArray(currentValue) ? currentValue : [];\n const newValue = arrayValue.includes(itemValue)\n ? arrayValue.filter((v) => v !== itemValue)\n : [...arrayValue, itemValue];\n onValueChange?.(newValue);\n }\n };\n\n return (\n <ToggleGroupContext.Provider\n value={{\n value: currentValue,\n onValueChange: handleValueChange,\n type,\n size,\n variant,\n disabled,\n }}\n >\n <div\n ref={ref}\n role=\"group\"\n className={cn(\n 'toggle-group',\n `toggle-group-${orientation}`,\n className\n )}\n {...props}\n >\n {children}\n </div>\n </ToggleGroupContext.Provider>\n );\n }\n);\n\nToggleGroup.displayName = 'ToggleGroup';\n\n// Toggle Group Item\nexport interface ToggleGroupItemProps extends HTMLAttributes<HTMLButtonElement> {\n /** Item value */\n value: string;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport const ToggleGroupItem = forwardRef<HTMLButtonElement, ToggleGroupItemProps>(\n ({ value, disabled: itemDisabled, className, children, ...props }, ref) => {\n const context = useContext(ToggleGroupContext);\n\n if (!context) {\n throw new Error('ToggleGroupItem must be used within a ToggleGroup');\n }\n\n const { value: groupValue, onValueChange, type, size, variant, disabled: groupDisabled } = context;\n\n const isPressed = type === 'single'\n ? groupValue === value\n : Array.isArray(groupValue) && groupValue.includes(value);\n\n const isDisabled = groupDisabled || itemDisabled;\n\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"radio\"\n aria-checked={isPressed}\n disabled={isDisabled}\n className={cn(\n 'toggle-group-item',\n `toggle-group-item-${size}`,\n `toggle-group-item-${variant}`,\n isPressed && 'toggle-group-item-pressed',\n className\n )}\n onClick={() => onValueChange(value)}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nToggleGroupItem.displayName = 'ToggleGroupItem';\n","'use client';\n\nimport { forwardRef, useState, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SnippetProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onCopy'> {\n /** Code content */\n children: string;\n /** Symbol prefix */\n symbol?: string;\n /** Color variant */\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Show copy button */\n copyable?: boolean;\n /** Disable copy */\n disableCopy?: boolean;\n /** Hide symbol */\n hideSymbol?: boolean;\n /** Copy text (overrides children) */\n copyText?: string;\n /** On copy callback */\n onCopy?: (text: string) => void;\n}\n\nexport const Snippet = forwardRef<HTMLDivElement, SnippetProps>(\n (\n {\n children,\n symbol = '$',\n color = 'default',\n size = 'md',\n copyable = true,\n disableCopy = false,\n hideSymbol = false,\n copyText,\n onCopy,\n className,\n ...props\n },\n ref\n ) => {\n const [copied, setCopied] = useState(false);\n\n const handleCopy = async () => {\n if (disableCopy) return;\n\n const textToCopy = copyText || children;\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n onCopy?.(textToCopy);\n\n setTimeout(() => setCopied(false), 2000);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'snippet',\n `snippet-${color}`,\n `snippet-${size}`,\n className\n )}\n {...props}\n >\n <div className=\"snippet-content\">\n {!hideSymbol && <span className=\"snippet-symbol\">{symbol}</span>}\n <pre className=\"snippet-pre\">\n <code className=\"snippet-code\">{children}</code>\n </pre>\n </div>\n {copyable && !disableCopy && (\n <button\n type=\"button\"\n className={cn('snippet-copy', copied && 'snippet-copy-success')}\n onClick={handleCopy}\n aria-label={copied ? 'Copied' : 'Copy'}\n >\n {copied ? (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n ) : (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1\" />\n </svg>\n )}\n </button>\n )}\n </div>\n );\n }\n);\n\nSnippet.displayName = 'Snippet';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ImageListItem {\n src: string;\n alt?: string;\n title?: string;\n subtitle?: string;\n cols?: number;\n rows?: number;\n}\n\nexport interface ImageListProps extends HTMLAttributes<HTMLDivElement> {\n /** Image items */\n items?: ImageListItem[];\n /** Number of columns */\n cols?: number;\n /** Gap between items */\n gap?: number;\n /** Row height */\n rowHeight?: number | 'auto';\n /** Variant */\n variant?: 'standard' | 'masonry' | 'quilted' | 'woven';\n /** On item click */\n onItemClick?: (item: ImageListItem, index: number) => void;\n}\n\nexport const ImageList = forwardRef<HTMLDivElement, ImageListProps>(\n (\n {\n items = [],\n cols = 3,\n gap = 8,\n rowHeight = 200,\n variant = 'standard',\n onItemClick,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('imagelist', `imagelist-${variant}`, `imagelist-cols-${cols}`, className)}\n style={{\n ...style,\n '--imagelist-gap': `${gap}px`,\n '--imagelist-row-height': rowHeight === 'auto' ? 'auto' : `${rowHeight}px`,\n } as React.CSSProperties}\n {...props}\n >\n {children || items.map((item, index) => (\n <ImageListItem\n key={index}\n {...item}\n onClick={() => onItemClick?.(item, index)}\n />\n ))}\n </div>\n );\n }\n);\n\nImageList.displayName = 'ImageList';\n\n// Image List Item\nexport interface ImageListItemProps extends HTMLAttributes<HTMLDivElement> {\n /** Image source */\n src?: string;\n /** Alt text */\n alt?: string;\n /** Title */\n title?: string;\n /** Subtitle */\n subtitle?: string;\n /** Column span */\n cols?: number;\n /** Row span */\n rows?: number;\n /** Children (for custom content) */\n children?: ReactNode;\n}\n\nexport const ImageListItem = forwardRef<HTMLDivElement, ImageListItemProps>(\n (\n {\n src,\n alt = '',\n title,\n subtitle,\n cols = 1,\n rows = 1,\n className,\n children,\n style,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn('imagelist-item', onClick && 'imagelist-item-clickable', className)}\n style={{\n ...style,\n '--imagelist-item-cols': cols,\n '--imagelist-item-rows': rows,\n } as React.CSSProperties}\n onClick={onClick}\n {...props}\n >\n {children || (\n <>\n {src && <img src={src} alt={alt} className=\"imagelist-item-img\" loading=\"lazy\" />}\n {(title || subtitle) && (\n <div className=\"imagelist-item-bar\">\n {title && <span className=\"imagelist-item-title\">{title}</span>}\n {subtitle && <span className=\"imagelist-item-subtitle\">{subtitle}</span>}\n </div>\n )}\n </>\n )}\n </div>\n );\n }\n);\n\nImageListItem.displayName = 'ImageListItem';\n\n// Image List Item Bar (for custom positioning)\nexport interface ImageListItemBarProps extends HTMLAttributes<HTMLDivElement> {\n /** Bar position */\n position?: 'top' | 'bottom';\n /** Action buttons */\n actionIcon?: ReactNode;\n /** Action position */\n actionPosition?: 'left' | 'right';\n}\n\nexport const ImageListItemBar = forwardRef<HTMLDivElement, ImageListItemBarProps>(\n (\n {\n position = 'bottom',\n actionIcon,\n actionPosition = 'right',\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'imagelist-item-bar',\n `imagelist-item-bar-${position}`,\n className\n )}\n {...props}\n >\n <div className=\"imagelist-item-bar-content\">{children}</div>\n {actionIcon && (\n <div className={cn('imagelist-item-bar-actions', `imagelist-item-bar-actions-${actionPosition}`)}>\n {actionIcon}\n </div>\n )}\n </div>\n );\n }\n);\n\nImageListItemBar.displayName = 'ImageListItemBar';\n","'use client';\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AlertDialogProps extends HTMLAttributes<HTMLDivElement> {\n /** Open state */\n open?: boolean;\n /** On open change */\n onOpenChange?: (open: boolean) => void;\n}\n\nexport const AlertDialog = forwardRef<HTMLDivElement, AlertDialogProps>(\n ({ open = false, onOpenChange, className, children, ...props }, ref) => {\n if (!open) return null;\n\n return (\n <>\n <div className=\"alert-dialog-overlay\" onClick={() => onOpenChange?.(false)} />\n <div ref={ref} className={cn('alert-dialog', className)} role=\"alertdialog\" {...props}>\n {children}\n </div>\n </>\n );\n }\n);\n\nAlertDialog.displayName = 'AlertDialog';\n\n// Alert Dialog Content\nexport interface AlertDialogContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const AlertDialogContent = forwardRef<HTMLDivElement, AlertDialogContentProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('alert-dialog-content', className)} {...props}>\n {children}\n </div>\n )\n);\n\nAlertDialogContent.displayName = 'AlertDialogContent';\n\n// Alert Dialog Header\nexport interface AlertDialogHeaderProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const AlertDialogHeader = forwardRef<HTMLDivElement, AlertDialogHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('alert-dialog-header', className)} {...props}>\n {children}\n </div>\n )\n);\n\nAlertDialogHeader.displayName = 'AlertDialogHeader';\n\n// Alert Dialog Title\nexport interface AlertDialogTitleProps extends HTMLAttributes<HTMLHeadingElement> {}\n\nexport const AlertDialogTitle = forwardRef<HTMLHeadingElement, AlertDialogTitleProps>(\n ({ className, children, ...props }, ref) => (\n <h2 ref={ref} className={cn('alert-dialog-title', className)} {...props}>\n {children}\n </h2>\n )\n);\n\nAlertDialogTitle.displayName = 'AlertDialogTitle';\n\n// Alert Dialog Description\nexport interface AlertDialogDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {}\n\nexport const AlertDialogDescription = forwardRef<HTMLParagraphElement, AlertDialogDescriptionProps>(\n ({ className, children, ...props }, ref) => (\n <p ref={ref} className={cn('alert-dialog-description', className)} {...props}>\n {children}\n </p>\n )\n);\n\nAlertDialogDescription.displayName = 'AlertDialogDescription';\n\n// Alert Dialog Footer\nexport interface AlertDialogFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const AlertDialogFooter = forwardRef<HTMLDivElement, AlertDialogFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('alert-dialog-footer', className)} {...props}>\n {children}\n </div>\n )\n);\n\nAlertDialogFooter.displayName = 'AlertDialogFooter';\n\n// Alert Dialog Action\nexport interface AlertDialogActionProps extends HTMLAttributes<HTMLButtonElement> {\n /** Destructive action */\n destructive?: boolean;\n}\n\nexport const AlertDialogAction = forwardRef<HTMLButtonElement, AlertDialogActionProps>(\n ({ destructive = false, className, children, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn('alert-dialog-action', destructive && 'alert-dialog-action-destructive', className)}\n {...props}\n >\n {children}\n </button>\n )\n);\n\nAlertDialogAction.displayName = 'AlertDialogAction';\n\n// Alert Dialog Cancel\nexport interface AlertDialogCancelProps extends HTMLAttributes<HTMLButtonElement> {}\n\nexport const AlertDialogCancel = forwardRef<HTMLButtonElement, AlertDialogCancelProps>(\n ({ className, children, ...props }, ref) => (\n <button ref={ref} type=\"button\" className={cn('alert-dialog-cancel', className)} {...props}>\n {children}\n </button>\n )\n);\n\nAlertDialogCancel.displayName = 'AlertDialogCancel';\n","'use client';\n\nimport { forwardRef, useState, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type MessageType = 'info' | 'success' | 'warning' | 'error' | 'loading';\n\nexport interface MessageProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {\n /** Message type */\n type?: MessageType;\n /** Message content */\n content: ReactNode;\n /** Duration in ms (0 for manual close) */\n duration?: number;\n /** On close callback */\n onClose?: () => void;\n /** Show icon */\n showIcon?: boolean;\n /** Closable */\n closable?: boolean;\n}\n\nconst icons: Record<MessageType, ReactNode> = {\n info: (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\" /><line x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\" />\n </svg>\n ),\n success: (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <path d=\"M22 11.08V12a10 10 0 11-5.93-9.14\" /><polyline points=\"22 4 12 14.01 9 11.01\" />\n </svg>\n ),\n warning: (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <path d=\"M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\" /><line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" /><line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n ),\n error: (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" /><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\" /><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\" />\n </svg>\n ),\n loading: (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\" className=\"message-icon-spin\">\n <line x1=\"12\" y1=\"2\" x2=\"12\" y2=\"6\" /><line x1=\"12\" y1=\"18\" x2=\"12\" y2=\"22\" /><line x1=\"4.93\" y1=\"4.93\" x2=\"7.76\" y2=\"7.76\" /><line x1=\"16.24\" y1=\"16.24\" x2=\"19.07\" y2=\"19.07\" /><line x1=\"2\" y1=\"12\" x2=\"6\" y2=\"12\" /><line x1=\"18\" y1=\"12\" x2=\"22\" y2=\"12\" /><line x1=\"4.93\" y1=\"19.07\" x2=\"7.76\" y2=\"16.24\" /><line x1=\"16.24\" y1=\"7.76\" x2=\"19.07\" y2=\"4.93\" />\n </svg>\n ),\n};\n\nexport const Message = forwardRef<HTMLDivElement, MessageProps>(\n (\n {\n type = 'info',\n content,\n duration = 3000,\n onClose,\n showIcon = true,\n closable = false,\n className,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = useState(true);\n\n useEffect(() => {\n if (duration > 0) {\n const timer = setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [duration, onClose]);\n\n if (!visible) return null;\n\n return (\n <div\n ref={ref}\n className={cn('message', `message-${type}`, className)}\n role=\"alert\"\n {...props}\n >\n {showIcon && <span className=\"message-icon\">{icons[type]}</span>}\n <span className=\"message-content\">{content}</span>\n {closable && (\n <button\n type=\"button\"\n className=\"message-close\"\n onClick={() => {\n setVisible(false);\n onClose?.();\n }}\n >\n <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n </div>\n );\n }\n);\n\nMessage.displayName = 'Message';\n\n// Message Container (for positioning multiple messages)\nexport interface MessageContainerProps extends HTMLAttributes<HTMLDivElement> {\n /** Position */\n position?: 'top' | 'top-left' | 'top-right' | 'bottom' | 'bottom-left' | 'bottom-right';\n}\n\nexport const MessageContainer = forwardRef<HTMLDivElement, MessageContainerProps>(\n ({ position = 'top', className, children, ...props }, ref) => (\n <div\n ref={ref}\n className={cn('message-container', `message-container-${position}`, className)}\n {...props}\n >\n {children}\n </div>\n )\n);\n\nMessageContainer.displayName = 'MessageContainer';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CircularProgressProps extends HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100) */\n value?: number;\n /** Size in pixels */\n size?: number;\n /** Stroke width */\n strokeWidth?: number;\n /** Indeterminate state */\n indeterminate?: boolean;\n /** Color */\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger';\n /** Show value label */\n showValue?: boolean;\n /** Track color */\n trackColor?: string;\n /** Custom formatter */\n formatValue?: (value: number) => string;\n}\n\nexport const CircularProgress = forwardRef<HTMLDivElement, CircularProgressProps>(\n (\n {\n value = 0,\n size = 48,\n strokeWidth = 4,\n indeterminate = false,\n color = 'primary',\n showValue = false,\n trackColor,\n formatValue = (v) => `${Math.round(v)}%`,\n className,\n ...props\n },\n ref\n ) => {\n const radius = (size - strokeWidth) / 2;\n const circumference = radius * 2 * Math.PI;\n const offset = circumference - (value / 100) * circumference;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'circular-progress',\n `circular-progress-${color}`,\n indeterminate && 'circular-progress-indeterminate',\n className\n )}\n style={{ width: size, height: size }}\n role=\"progressbar\"\n aria-valuenow={indeterminate ? undefined : value}\n aria-valuemin={0}\n aria-valuemax={100}\n {...props}\n >\n <svg className=\"circular-progress-svg\" viewBox={`0 0 ${size} ${size}`}>\n <circle\n className=\"circular-progress-track\"\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={strokeWidth}\n fill=\"none\"\n style={{ stroke: trackColor }}\n />\n <circle\n className=\"circular-progress-indicator\"\n cx={size / 2}\n cy={size / 2}\n r={radius}\n strokeWidth={strokeWidth}\n fill=\"none\"\n strokeLinecap=\"round\"\n style={{\n strokeDasharray: circumference,\n strokeDashoffset: indeterminate ? circumference * 0.75 : offset,\n }}\n />\n </svg>\n {showValue && !indeterminate && (\n <span className=\"circular-progress-value\">{formatValue(value)}</span>\n )}\n </div>\n );\n }\n);\n\nCircularProgress.displayName = 'CircularProgress';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PopconfirmProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Title */\n title: ReactNode;\n /** Description */\n description?: ReactNode;\n /** Trigger element */\n children: ReactNode;\n /** On confirm callback */\n onConfirm?: () => void;\n /** On cancel callback */\n onCancel?: () => void;\n /** Confirm button text */\n okText?: string;\n /** Cancel button text */\n cancelText?: string;\n /** Placement */\n placement?: 'top' | 'bottom' | 'left' | 'right';\n /** Show icon */\n showIcon?: boolean;\n /** Icon */\n icon?: ReactNode;\n /** Disabled */\n disabled?: boolean;\n /** Ok button type */\n okType?: 'primary' | 'danger';\n}\n\nexport const Popconfirm = forwardRef<HTMLDivElement, PopconfirmProps>(\n (\n {\n title,\n description,\n children,\n onConfirm,\n onCancel,\n okText = 'Yes',\n cancelText = 'No',\n placement = 'top',\n showIcon = true,\n icon,\n disabled = false,\n okType = 'primary',\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const handleConfirm = () => {\n onConfirm?.();\n setOpen(false);\n };\n\n const handleCancel = () => {\n onCancel?.();\n setOpen(false);\n };\n\n const defaultIcon = (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\n </svg>\n );\n\n return (\n <div ref={containerRef} className={cn('popconfirm', className)} {...props}>\n <div\n ref={ref}\n className=\"popconfirm-trigger\"\n onClick={() => !disabled && setOpen(!open)}\n >\n {children}\n </div>\n {open && (\n <div className={cn('popconfirm-content', `popconfirm-${placement}`)}>\n <div className=\"popconfirm-arrow\" />\n <div className=\"popconfirm-inner\">\n <div className=\"popconfirm-message\">\n {showIcon && (\n <span className=\"popconfirm-icon\">{icon || defaultIcon}</span>\n )}\n <div className=\"popconfirm-text\">\n <div className=\"popconfirm-title\">{title}</div>\n {description && <div className=\"popconfirm-description\">{description}</div>}\n </div>\n </div>\n <div className=\"popconfirm-buttons\">\n <button\n type=\"button\"\n className=\"popconfirm-btn popconfirm-btn-cancel\"\n onClick={handleCancel}\n >\n {cancelText}\n </button>\n <button\n type=\"button\"\n className={cn('popconfirm-btn', `popconfirm-btn-${okType}`)}\n onClick={handleConfirm}\n >\n {okText}\n </button>\n </div>\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nPopconfirm.displayName = 'Popconfirm';\n","'use client';\n\nimport { forwardRef, useEffect, useRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface WatermarkProps extends Omit<HTMLAttributes<HTMLDivElement>, 'content'> {\n /** Watermark text */\n content?: string | string[];\n /** Font size */\n fontSize?: number;\n /** Font color */\n fontColor?: string;\n /** Font family */\n fontFamily?: string;\n /** Rotation angle */\n rotate?: number;\n /** Gap between watermarks */\n gap?: [number, number];\n /** Offset from origin */\n offset?: [number, number];\n /** Z-index */\n zIndex?: number;\n /** Image source (alternative to text) */\n image?: string;\n /** Image width */\n imageWidth?: number;\n /** Image height */\n imageHeight?: number;\n}\n\nexport const Watermark = forwardRef<HTMLDivElement, WatermarkProps>(\n (\n {\n content = '',\n fontSize = 16,\n fontColor = 'rgba(0, 0, 0, 0.1)',\n fontFamily = 'sans-serif',\n rotate = -22,\n gap = [100, 100],\n offset = [0, 0],\n zIndex = 9,\n image,\n imageWidth = 120,\n imageHeight = 64,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const watermarkRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const container = watermarkRef.current;\n if (!container) return;\n\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n const ratio = window.devicePixelRatio || 1;\n const canvasWidth = (gap[0] + (image ? imageWidth : 200)) * ratio;\n const canvasHeight = (gap[1] + (image ? imageHeight : 100)) * ratio;\n\n canvas.width = canvasWidth;\n canvas.height = canvasHeight;\n\n ctx.scale(ratio, ratio);\n ctx.translate(canvasWidth / 2 / ratio, canvasHeight / 2 / ratio);\n ctx.rotate((rotate * Math.PI) / 180);\n\n if (image) {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => {\n ctx.drawImage(img, -imageWidth / 2, -imageHeight / 2, imageWidth, imageHeight);\n container.style.backgroundImage = `url(${canvas.toDataURL()})`;\n };\n img.src = image;\n } else {\n ctx.font = `${fontSize}px ${fontFamily}`;\n ctx.fillStyle = fontColor;\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n const lines = Array.isArray(content) ? content : [content];\n const lineHeight = fontSize * 1.5;\n const startY = -((lines.length - 1) * lineHeight) / 2;\n\n lines.forEach((line, index) => {\n ctx.fillText(line, 0, startY + index * lineHeight);\n });\n\n container.style.backgroundImage = `url(${canvas.toDataURL()})`;\n }\n\n container.style.backgroundPosition = `${offset[0]}px ${offset[1]}px`;\n }, [content, fontSize, fontColor, fontFamily, rotate, gap, offset, image, imageWidth, imageHeight]);\n\n return (\n <div ref={ref} className={cn('watermark', className)} style={style} {...props}>\n {children}\n <div\n ref={watermarkRef}\n className=\"watermark-layer\"\n style={{ zIndex }}\n />\n </div>\n );\n }\n);\n\nWatermark.displayName = 'Watermark';\n","'use client';\n\nimport { forwardRef, useState, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TourStep {\n /** Target element selector or ref */\n target: string | HTMLElement | null;\n /** Step title */\n title: ReactNode;\n /** Step description */\n description?: ReactNode;\n /** Placement */\n placement?: 'top' | 'bottom' | 'left' | 'right';\n /** Cover image */\n cover?: ReactNode;\n /** Custom arrow style */\n arrow?: boolean;\n}\n\nexport interface TourProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Tour steps */\n steps: TourStep[];\n /** Open state */\n open?: boolean;\n /** On open change */\n onOpenChange?: (open: boolean) => void;\n /** Current step index */\n current?: number;\n /** On step change */\n onChange?: (current: number) => void;\n /** On finish callback */\n onFinish?: () => void;\n /** Show mask */\n mask?: boolean;\n /** Arrow visibility */\n arrow?: boolean;\n /** Next button text */\n nextText?: string;\n /** Previous button text */\n prevText?: string;\n /** Finish button text */\n finishText?: string;\n /** Skip button text */\n skipText?: string;\n /** Show skip button */\n showSkip?: boolean;\n}\n\nexport const Tour = forwardRef<HTMLDivElement, TourProps>(\n (\n {\n steps,\n open = false,\n onOpenChange,\n current: controlledCurrent,\n onChange,\n onFinish,\n mask = true,\n arrow = true,\n nextText = 'Next',\n prevText = 'Previous',\n finishText = 'Finish',\n skipText = 'Skip',\n showSkip = true,\n className,\n ...props\n },\n ref\n ) => {\n const [current, setCurrent] = useState(controlledCurrent ?? 0);\n const [position, setPosition] = useState({ top: 0, left: 0 });\n const [targetRect, setTargetRect] = useState<DOMRect | null>(null);\n\n const currentStep = steps[current];\n const isFirst = current === 0;\n const isLast = current === steps.length - 1;\n\n useEffect(() => {\n if (controlledCurrent !== undefined) {\n setCurrent(controlledCurrent);\n }\n }, [controlledCurrent]);\n\n useEffect(() => {\n if (!open || !currentStep) return;\n\n const getTarget = () => {\n if (typeof currentStep.target === 'string') {\n return document.querySelector(currentStep.target);\n }\n return currentStep.target;\n };\n\n const target = getTarget();\n if (target) {\n const rect = target.getBoundingClientRect();\n setTargetRect(rect);\n\n const placement = currentStep.placement || 'bottom';\n let top = rect.bottom + 10;\n let left = rect.left + rect.width / 2;\n\n if (placement === 'top') {\n top = rect.top - 10;\n } else if (placement === 'left') {\n top = rect.top + rect.height / 2;\n left = rect.left - 10;\n } else if (placement === 'right') {\n top = rect.top + rect.height / 2;\n left = rect.right + 10;\n }\n\n setPosition({ top, left });\n }\n }, [open, current, currentStep]);\n\n const handleNext = () => {\n if (isLast) {\n onFinish?.();\n onOpenChange?.(false);\n } else {\n const next = current + 1;\n setCurrent(next);\n onChange?.(next);\n }\n };\n\n const handlePrev = () => {\n const prev = current - 1;\n setCurrent(prev);\n onChange?.(prev);\n };\n\n const handleSkip = () => {\n onOpenChange?.(false);\n };\n\n if (!open) return null;\n\n return (\n <>\n {mask && targetRect && (\n <div className=\"tour-mask\">\n <div\n className=\"tour-mask-spotlight\"\n style={{\n top: targetRect.top - 4,\n left: targetRect.left - 4,\n width: targetRect.width + 8,\n height: targetRect.height + 8,\n }}\n />\n </div>\n )}\n <div\n ref={ref}\n className={cn(\n 'tour',\n `tour-${currentStep?.placement || 'bottom'}`,\n className\n )}\n style={{ top: position.top, left: position.left }}\n {...props}\n >\n {arrow && <div className=\"tour-arrow\" />}\n <div className=\"tour-content\">\n {currentStep?.cover && <div className=\"tour-cover\">{currentStep.cover}</div>}\n <div className=\"tour-header\">\n <div className=\"tour-title\">{currentStep?.title}</div>\n </div>\n {currentStep?.description && (\n <div className=\"tour-description\">{currentStep.description}</div>\n )}\n <div className=\"tour-footer\">\n <div className=\"tour-indicators\">\n {steps.map((_, i) => (\n <span\n key={i}\n className={cn('tour-indicator', i === current && 'tour-indicator-active')}\n />\n ))}\n </div>\n <div className=\"tour-buttons\">\n {showSkip && !isLast && (\n <button type=\"button\" className=\"tour-btn tour-btn-skip\" onClick={handleSkip}>\n {skipText}\n </button>\n )}\n {!isFirst && (\n <button type=\"button\" className=\"tour-btn tour-btn-prev\" onClick={handlePrev}>\n {prevText}\n </button>\n )}\n <button type=\"button\" className=\"tour-btn tour-btn-next\" onClick={handleNext}>\n {isLast ? finishText : nextText}\n </button>\n </div>\n </div>\n </div>\n </div>\n </>\n );\n }\n);\n\nTour.displayName = 'Tour';\n","'use client';\n\nimport { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SheetProps extends HTMLAttributes<HTMLDivElement> {\n /** Open state */\n open?: boolean;\n /** On open change */\n onOpenChange?: (open: boolean) => void;\n /** Side */\n side?: 'top' | 'bottom' | 'left' | 'right';\n /** Close on overlay click */\n closeOnOverlayClick?: boolean;\n}\n\nexport const Sheet = forwardRef<HTMLDivElement, SheetProps>(\n (\n {\n open = false,\n onOpenChange,\n side = 'right',\n closeOnOverlayClick = true,\n className,\n children,\n ...props\n },\n ref\n ) => {\n if (!open) return null;\n\n return (\n <>\n <div\n className=\"sheet-overlay\"\n onClick={() => closeOnOverlayClick && onOpenChange?.(false)}\n />\n <div\n ref={ref}\n className={cn('sheet', `sheet-${side}`, className)}\n {...props}\n >\n {children}\n </div>\n </>\n );\n }\n);\n\nSheet.displayName = 'Sheet';\n\n// Sheet Header\nexport interface SheetHeaderProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const SheetHeader = forwardRef<HTMLDivElement, SheetHeaderProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sheet-header', className)} {...props}>\n {children}\n </div>\n )\n);\n\nSheetHeader.displayName = 'SheetHeader';\n\n// Sheet Title\nexport interface SheetTitleProps extends HTMLAttributes<HTMLHeadingElement> {}\n\nexport const SheetTitle = forwardRef<HTMLHeadingElement, SheetTitleProps>(\n ({ className, children, ...props }, ref) => (\n <h2 ref={ref} className={cn('sheet-title', className)} {...props}>\n {children}\n </h2>\n )\n);\n\nSheetTitle.displayName = 'SheetTitle';\n\n// Sheet Description\nexport interface SheetDescriptionProps extends HTMLAttributes<HTMLParagraphElement> {}\n\nexport const SheetDescription = forwardRef<HTMLParagraphElement, SheetDescriptionProps>(\n ({ className, children, ...props }, ref) => (\n <p ref={ref} className={cn('sheet-description', className)} {...props}>\n {children}\n </p>\n )\n);\n\nSheetDescription.displayName = 'SheetDescription';\n\n// Sheet Content\nexport interface SheetContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const SheetContent = forwardRef<HTMLDivElement, SheetContentProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sheet-content', className)} {...props}>\n {children}\n </div>\n )\n);\n\nSheetContent.displayName = 'SheetContent';\n\n// Sheet Footer\nexport interface SheetFooterProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const SheetFooter = forwardRef<HTMLDivElement, SheetFooterProps>(\n ({ className, children, ...props }, ref) => (\n <div ref={ref} className={cn('sheet-footer', className)} {...props}>\n {children}\n </div>\n )\n);\n\nSheetFooter.displayName = 'SheetFooter';\n\n// Sheet Close\nexport interface SheetCloseProps extends HTMLAttributes<HTMLButtonElement> {\n /** On close callback */\n onClose?: () => void;\n}\n\nexport const SheetClose = forwardRef<HTMLButtonElement, SheetCloseProps>(\n ({ className, onClose, ...props }, ref) => (\n <button\n ref={ref}\n type=\"button\"\n className={cn('sheet-close', className)}\n onClick={onClose}\n aria-label=\"Close\"\n {...props}\n >\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )\n);\n\nSheetClose.displayName = 'SheetClose';\n","'use client';\n\nimport { createContext, useContext, type ReactNode } from 'react';\n\nexport interface ConfigProviderProps {\n /** Children */\n children: ReactNode;\n /** Theme mode */\n theme?: 'light' | 'dark' | 'system';\n /** Locale */\n locale?: string;\n /** Component size */\n size?: 'small' | 'medium' | 'large';\n /** Prefix for class names */\n prefixCls?: string;\n /** Direction */\n direction?: 'ltr' | 'rtl';\n /** Custom config */\n config?: Record<string, unknown>;\n}\n\nexport interface ConfigContextValue {\n theme: 'light' | 'dark' | 'system';\n locale: string;\n size: 'small' | 'medium' | 'large';\n prefixCls: string;\n direction: 'ltr' | 'rtl';\n config: Record<string, unknown>;\n}\n\nconst defaultConfig: ConfigContextValue = {\n theme: 'light',\n locale: 'en-US',\n size: 'medium',\n prefixCls: 'zenkit',\n direction: 'ltr',\n config: {},\n};\n\nconst ConfigContext = createContext<ConfigContextValue>(defaultConfig);\n\nexport const useConfig = () => useContext(ConfigContext);\n\nexport const ConfigProvider = ({\n children,\n theme = 'light',\n locale = 'en-US',\n size = 'medium',\n prefixCls = 'zenkit',\n direction = 'ltr',\n config = {},\n}: ConfigProviderProps) => {\n const value: ConfigContextValue = {\n theme,\n locale,\n size,\n prefixCls,\n direction,\n config,\n };\n\n return (\n <ConfigContext.Provider value={value}>\n <div\n className=\"config-provider\"\n data-theme={theme}\n data-size={size}\n dir={direction}\n >\n {children}\n </div>\n </ConfigContext.Provider>\n );\n};\n\nConfigProvider.displayName = 'ConfigProvider';\n","'use client';\n\nimport { useEffect, useState, type ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface PortalProps {\n /** Children to render in portal */\n children: ReactNode;\n /** Target container element or selector */\n container?: HTMLElement | string | null;\n /** Whether portal is disabled (render inline) */\n disabled?: boolean;\n}\n\nexport const Portal = ({\n children,\n container,\n disabled = false,\n}: PortalProps) => {\n const [mounted, setMounted] = useState(false);\n const [targetElement, setTargetElement] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n setMounted(true);\n\n if (disabled) {\n setTargetElement(null);\n return;\n }\n\n if (container === null) {\n setTargetElement(null);\n return;\n }\n\n if (typeof container === 'string') {\n const element = document.querySelector(container);\n setTargetElement(element as HTMLElement | null);\n } else if (container instanceof HTMLElement) {\n setTargetElement(container);\n } else {\n setTargetElement(document.body);\n }\n }, [container, disabled]);\n\n if (!mounted) {\n return null;\n }\n\n if (disabled || !targetElement) {\n return <>{children}</>;\n }\n\n return createPortal(children, targetElement);\n};\n\nPortal.displayName = 'Portal';\n","'use client';\n\nimport { forwardRef, useState, useEffect, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type TransitionType =\n | 'fade'\n | 'slide-up'\n | 'slide-down'\n | 'slide-left'\n | 'slide-right'\n | 'scale'\n | 'scale-y'\n | 'scale-x'\n | 'rotate'\n | 'flip'\n | 'collapse';\n\nexport interface TransitionProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Whether to show the element */\n show: boolean;\n /** Transition type */\n type?: TransitionType;\n /** Duration in milliseconds */\n duration?: number;\n /** Delay in milliseconds */\n delay?: number;\n /** Timing function */\n timing?: 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out';\n /** Whether to unmount when hidden */\n unmountOnExit?: boolean;\n /** Enter callback */\n onEnter?: () => void;\n /** Entered callback */\n onEntered?: () => void;\n /** Exit callback */\n onExit?: () => void;\n /** Exited callback */\n onExited?: () => void;\n /** Children */\n children: ReactNode;\n}\n\nexport const Transition = forwardRef<HTMLDivElement, TransitionProps>(\n (\n {\n show,\n type = 'fade',\n duration = 200,\n delay = 0,\n timing = 'ease',\n unmountOnExit = false,\n onEnter,\n onEntered,\n onExit,\n onExited,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const [mounted, setMounted] = useState(show);\n const [state, setState] = useState<'entering' | 'entered' | 'exiting' | 'exited'>(\n show ? 'entered' : 'exited'\n );\n\n useEffect(() => {\n if (show) {\n setMounted(true);\n setState('entering');\n onEnter?.();\n\n const timer = setTimeout(() => {\n setState('entered');\n onEntered?.();\n }, duration + delay);\n\n return () => clearTimeout(timer);\n } else {\n setState('exiting');\n onExit?.();\n\n const timer = setTimeout(() => {\n setState('exited');\n onExited?.();\n if (unmountOnExit) {\n setMounted(false);\n }\n }, duration + delay);\n\n return () => clearTimeout(timer);\n }\n }, [show, duration, delay, unmountOnExit, onEnter, onEntered, onExit, onExited]);\n\n if (!mounted) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'transition',\n `transition-${type}`,\n `transition-${state}`,\n className\n )}\n style={{\n transitionDuration: `${duration}ms`,\n transitionDelay: `${delay}ms`,\n transitionTimingFunction: timing,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nTransition.displayName = 'Transition';\n","'use client';\n\nimport { forwardRef, useState, useEffect, useRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AffixProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Offset from top when affixed */\n offsetTop?: number;\n /** Offset from bottom when affixed */\n offsetBottom?: number;\n /** Target container for scroll events */\n target?: () => HTMLElement | Window | null;\n /** Callback when affix state changes */\n onChange?: (affixed: boolean) => void;\n /** Children */\n children: ReactNode;\n}\n\nexport const Affix = forwardRef<HTMLDivElement, AffixProps>(\n (\n {\n offsetTop,\n offsetBottom,\n target,\n onChange,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const [affixed, setAffixed] = useState(false);\n const [affixStyle, setAffixStyle] = useState<React.CSSProperties>({});\n const [placeholderStyle, setPlaceholderStyle] = useState<React.CSSProperties>({});\n const placeholderRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const getTarget = () => {\n if (target) {\n return target();\n }\n return window;\n };\n\n const handleScroll = () => {\n const targetElement = getTarget();\n if (!targetElement || !placeholderRef.current) return;\n\n const rect = placeholderRef.current.getBoundingClientRect();\n const targetRect = targetElement === window\n ? { top: 0, bottom: window.innerHeight }\n : (targetElement as HTMLElement).getBoundingClientRect();\n\n let shouldAffix = false;\n let newStyle: React.CSSProperties = {};\n\n if (offsetTop !== undefined) {\n if (rect.top - targetRect.top < offsetTop) {\n shouldAffix = true;\n newStyle = {\n position: 'fixed',\n top: offsetTop + (targetElement === window ? 0 : targetRect.top),\n width: rect.width,\n };\n }\n } else if (offsetBottom !== undefined) {\n if (targetRect.bottom - rect.bottom < offsetBottom) {\n shouldAffix = true;\n newStyle = {\n position: 'fixed',\n bottom: offsetBottom + (targetElement === window ? 0 : window.innerHeight - targetRect.bottom),\n width: rect.width,\n };\n }\n }\n\n if (shouldAffix !== affixed) {\n setAffixed(shouldAffix);\n onChange?.(shouldAffix);\n }\n\n if (shouldAffix) {\n setAffixStyle(newStyle);\n setPlaceholderStyle({\n width: rect.width,\n height: rect.height,\n });\n } else {\n setAffixStyle({});\n setPlaceholderStyle({});\n }\n };\n\n const targetElement = getTarget();\n if (targetElement) {\n targetElement.addEventListener('scroll', handleScroll);\n targetElement.addEventListener('resize', handleScroll);\n handleScroll();\n }\n\n return () => {\n if (targetElement) {\n targetElement.removeEventListener('scroll', handleScroll);\n targetElement.removeEventListener('resize', handleScroll);\n }\n };\n }, [offsetTop, offsetBottom, target, affixed, onChange]);\n\n return (\n <div ref={placeholderRef} style={affixed ? placeholderStyle : undefined}>\n <div\n ref={ref}\n className={cn('affix', affixed && 'affix-fixed', className)}\n style={{ ...style, ...affixStyle }}\n {...props}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n\nAffix.displayName = 'Affix';\n","'use client';\n\nimport React, { forwardRef, useState, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface FloatButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display */\n icon?: ReactNode;\n /** Tooltip text */\n tooltip?: string;\n /** Shape of the button */\n shape?: 'circle' | 'square';\n /** Button type/variant */\n variant?: 'default' | 'primary';\n /** Badge content */\n badge?: ReactNode;\n /** Position */\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n /** Href for link button */\n href?: string;\n /** Target for link */\n target?: string;\n}\n\n// Map position prop to zenkit-css class names\nconst getPositionClasses = (position: string, isGroup = false) => {\n if (isGroup) {\n const positionMap: Record<string, string> = {\n 'bottom-right': 'float-button-group-right',\n 'bottom-left': 'float-button-group-left',\n 'top-right': 'float-button-group-right-top',\n 'top-left': 'float-button-group-left-top',\n };\n return positionMap[position] || positionMap['bottom-right'];\n } else {\n // Single FloatButton needs both 'float-button-single' and position class\n const positionMap: Record<string, string> = {\n 'bottom-right': 'float-button-single float-button-single-right',\n 'bottom-left': 'float-button-single float-button-single-left',\n 'top-right': 'float-button-single float-button-single-right',\n 'top-left': 'float-button-single float-button-single-left',\n };\n return positionMap[position] || positionMap['bottom-right'];\n }\n};\n\nexport const FloatButton = forwardRef<HTMLButtonElement, FloatButtonProps>(\n (\n {\n icon,\n tooltip,\n shape = 'circle',\n variant = 'default',\n badge,\n position = 'bottom-right',\n href,\n target,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [showTooltip, setShowTooltip] = useState(false);\n\n const content = (\n <>\n {icon && <span className=\"float-button-icon\">{icon}</span>}\n {children && <span className=\"float-button-text\">{children}</span>}\n {badge !== undefined && <span className=\"float-button-badge\"><span className=\"float-button-badge-count\">{badge}</span></span>}\n {tooltip && showTooltip && (\n <span className=\"float-button-tooltip\">{tooltip}</span>\n )}\n </>\n );\n\n const buttonClass = cn(\n 'float-button',\n `float-button-${shape}`,\n `float-button-${variant}`,\n getPositionClasses(position, false),\n className\n );\n\n if (href) {\n return (\n <a\n href={href}\n target={target}\n className={buttonClass}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n >\n {content}\n </a>\n );\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={buttonClass}\n onMouseEnter={() => setShowTooltip(true)}\n onMouseLeave={() => setShowTooltip(false)}\n {...props}\n >\n {content}\n </button>\n );\n }\n);\n\nFloatButton.displayName = 'FloatButton';\n\n// FloatButton Group\nexport interface FloatButtonGroupProps extends Omit<ButtonHTMLAttributes<HTMLDivElement>, 'onClick'> {\n /** Trigger type */\n trigger?: 'click' | 'hover';\n /** Open state (controlled) */\n open?: boolean;\n /** On open change */\n onOpenChange?: (open: boolean) => void;\n /** Icon when closed */\n icon?: ReactNode;\n /** Icon when open */\n closeIcon?: ReactNode;\n /** Shape */\n shape?: 'circle' | 'square';\n /** Position */\n position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';\n /** Children (FloatButton items) */\n children: ReactNode;\n}\n\nexport const FloatButtonGroup = forwardRef<HTMLDivElement, FloatButtonGroupProps>(\n (\n {\n trigger = 'hover',\n open: controlledOpen,\n onOpenChange,\n icon,\n closeIcon,\n shape = 'circle',\n position = 'bottom-right',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpen = controlledOpen ?? internalOpen;\n\n const handleToggle = () => {\n const newOpen = !isOpen;\n setInternalOpen(newOpen);\n onOpenChange?.(newOpen);\n };\n\n const handleMouseEnter = () => {\n if (trigger === 'hover') {\n setInternalOpen(true);\n onOpenChange?.(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (trigger === 'hover') {\n setInternalOpen(false);\n onOpenChange?.(false);\n }\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'float-button-group',\n getPositionClasses(position, true),\n isOpen && 'is-open',\n className\n )}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n {...props}\n >\n <div className=\"float-button-menu\">\n {React.Children.map(children, (child, index) => (\n <div className=\"float-button-menu-item\" key={index}>\n {child}\n </div>\n ))}\n </div>\n <button\n type=\"button\"\n className={cn('float-button', `float-button-${shape}`, 'float-button-trigger')}\n onClick={trigger === 'click' ? handleToggle : undefined}\n >\n <span className=\"float-button-trigger-icon\">\n {isOpen ? (closeIcon || '×') : (icon || '+')}\n </span>\n </button>\n </div>\n );\n }\n);\n\nFloatButtonGroup.displayName = 'FloatButtonGroup';\n\n// Float Back to top button (alternative to BackTop component)\nexport interface FloatBackTopProps extends Omit<FloatButtonProps, 'onClick' | 'target'> {\n /** Visibility threshold (scroll distance) */\n visibilityHeight?: number;\n /** Target scroll container */\n target?: () => HTMLElement | Window | null;\n /** Duration of scroll animation */\n duration?: number;\n /** On click callback */\n onClick?: () => void;\n}\n\nexport const FloatBackTop = forwardRef<HTMLButtonElement, FloatBackTopProps>(\n (\n {\n visibilityHeight = 400,\n target,\n duration = 450,\n onClick,\n icon,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = useState(false);\n\n const getTarget = () => {\n if (target) {\n return target();\n }\n return window;\n };\n\n const handleScroll = () => {\n const targetElement = getTarget();\n if (!targetElement) return;\n\n const scrollTop = targetElement === window\n ? window.scrollY\n : (targetElement as HTMLElement).scrollTop;\n\n setVisible(scrollTop >= visibilityHeight);\n };\n\n const handleClick = () => {\n const targetElement = getTarget();\n if (!targetElement) return;\n\n const scrollTop = targetElement === window\n ? window.scrollY\n : (targetElement as HTMLElement).scrollTop;\n\n const startTime = performance.now();\n\n const animateScroll = (currentTime: number) => {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n const easeProgress = 1 - Math.pow(1 - progress, 3);\n const newScrollTop = scrollTop * (1 - easeProgress);\n\n if (targetElement === window) {\n window.scrollTo(0, newScrollTop);\n } else {\n (targetElement as HTMLElement).scrollTop = newScrollTop;\n }\n\n if (progress < 1) {\n requestAnimationFrame(animateScroll);\n }\n };\n\n requestAnimationFrame(animateScroll);\n onClick?.();\n };\n\n // Set up scroll listener\n if (typeof window !== 'undefined') {\n const targetElement = getTarget();\n if (targetElement) {\n targetElement.addEventListener('scroll', handleScroll);\n handleScroll();\n }\n }\n\n if (!visible) return null;\n\n return (\n <FloatButton\n ref={ref}\n icon={icon || (\n <svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"18 15 12 9 6 15\" />\n </svg>\n )}\n onClick={handleClick}\n {...props}\n />\n );\n }\n);\n\nFloatBackTop.displayName = 'FloatBackTop';\n","'use client';\n\nimport { forwardRef, useState, useRef, useCallback, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type ResizeDirection = 'top' | 'bottom' | 'left' | 'right' | 'topLeft' | 'topRight' | 'bottomLeft' | 'bottomRight';\n\nexport interface ResizableProps extends HTMLAttributes<HTMLDivElement> {\n /** Minimum width */\n minWidth?: number;\n /** Maximum width */\n maxWidth?: number;\n /** Minimum height */\n minHeight?: number;\n /** Maximum height */\n maxHeight?: number;\n /** Initial width */\n defaultWidth?: number;\n /** Initial height */\n defaultHeight?: number;\n /** Controlled width */\n width?: number;\n /** Controlled height */\n height?: number;\n /** Enabled resize directions */\n directions?: ResizeDirection[];\n /** Handle size */\n handleSize?: number;\n /** On resize callback */\n onResize?: (width: number, height: number) => void;\n /** On resize start */\n onResizeStart?: () => void;\n /** On resize end */\n onResizeEnd?: (width: number, height: number) => void;\n /** Children */\n children: ReactNode;\n}\n\nexport const Resizable = forwardRef<HTMLDivElement, ResizableProps>(\n (\n {\n minWidth = 100,\n maxWidth = Infinity,\n minHeight = 100,\n maxHeight = Infinity,\n defaultWidth,\n defaultHeight,\n width: controlledWidth,\n height: controlledHeight,\n directions = ['right', 'bottom', 'bottomRight'],\n handleSize = 8,\n onResize,\n onResizeStart,\n onResizeEnd,\n className,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [size, setSize] = useState({\n width: defaultWidth || 200,\n height: defaultHeight || 200,\n });\n const [isResizing, setIsResizing] = useState(false);\n\n const width = controlledWidth ?? size.width;\n const height = controlledHeight ?? size.height;\n\n const handleMouseDown = useCallback(\n (direction: ResizeDirection) => (e: React.MouseEvent) => {\n e.preventDefault();\n setIsResizing(true);\n onResizeStart?.();\n\n const startX = e.clientX;\n const startY = e.clientY;\n const startWidth = width;\n const startHeight = height;\n\n const handleMouseMove = (moveEvent: MouseEvent) => {\n let newWidth = startWidth;\n let newHeight = startHeight;\n const deltaX = moveEvent.clientX - startX;\n const deltaY = moveEvent.clientY - startY;\n\n if (direction.includes('right') || direction === 'right') {\n newWidth = Math.min(maxWidth, Math.max(minWidth, startWidth + deltaX));\n }\n if (direction.includes('left') || direction === 'left') {\n newWidth = Math.min(maxWidth, Math.max(minWidth, startWidth - deltaX));\n }\n if (direction.includes('bottom') || direction === 'bottom') {\n newHeight = Math.min(maxHeight, Math.max(minHeight, startHeight + deltaY));\n }\n if (direction.includes('top') || direction === 'top') {\n newHeight = Math.min(maxHeight, Math.max(minHeight, startHeight - deltaY));\n }\n\n if (controlledWidth === undefined && controlledHeight === undefined) {\n setSize({ width: newWidth, height: newHeight });\n }\n onResize?.(newWidth, newHeight);\n };\n\n const handleMouseUp = () => {\n setIsResizing(false);\n onResizeEnd?.(\n controlledWidth ?? size.width,\n controlledHeight ?? size.height\n );\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n },\n [width, height, minWidth, maxWidth, minHeight, maxHeight, controlledWidth, controlledHeight, size, onResize, onResizeStart, onResizeEnd]\n );\n\n const renderHandle = (direction: ResizeDirection) => {\n if (!directions.includes(direction)) return null;\n\n return (\n <div\n key={direction}\n className={cn('resizable-handle', `resizable-handle-${direction}`)}\n style={{ '--handle-size': `${handleSize}px` } as React.CSSProperties}\n onMouseDown={handleMouseDown(direction)}\n />\n );\n };\n\n return (\n <div\n ref={ref || containerRef}\n className={cn('resizable', isResizing && 'resizable-resizing', className)}\n style={{\n width,\n height,\n ...style,\n }}\n {...props}\n >\n {children}\n {renderHandle('top')}\n {renderHandle('bottom')}\n {renderHandle('left')}\n {renderHandle('right')}\n {renderHandle('topLeft')}\n {renderHandle('topRight')}\n {renderHandle('bottomLeft')}\n {renderHandle('bottomRight')}\n </div>\n );\n }\n);\n\nResizable.displayName = 'Resizable';\n","'use client';\n\nimport React, { forwardRef, useEffect, useState, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ToastProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Toast title */\n title?: React.ReactNode;\n /** Toast description/message */\n description?: React.ReactNode;\n /** Toast type */\n type?: 'default' | 'success' | 'error' | 'warning' | 'info';\n /** Duration in ms before auto-dismiss (0 = no auto-dismiss) */\n duration?: number;\n /** Show close button */\n closable?: boolean;\n /** Action button */\n action?: React.ReactNode;\n /** Called when toast is dismissed */\n onDismiss?: () => void;\n /** Toast position */\n position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n /** Whether the toast is open */\n open?: boolean;\n}\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n className,\n title,\n description,\n type = 'default',\n duration = 5000,\n closable = true,\n action,\n onDismiss,\n position = 'bottom-right',\n open = true,\n children,\n ...props\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = useState(open);\n\n useEffect(() => {\n setIsVisible(open);\n }, [open]);\n\n useEffect(() => {\n if (isVisible && duration > 0) {\n const timer = setTimeout(() => {\n setIsVisible(false);\n onDismiss?.();\n }, duration);\n return () => clearTimeout(timer);\n }\n }, [isVisible, duration, onDismiss]);\n\n const handleDismiss = useCallback(() => {\n setIsVisible(false);\n onDismiss?.();\n }, [onDismiss]);\n\n if (!isVisible) return null;\n\n const typeIcons: Record<string, string> = {\n success: '✓',\n error: '✕',\n warning: '⚠',\n info: 'ℹ',\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'toast',\n `toast-${type}`,\n className\n )}\n role=\"alert\"\n aria-live=\"polite\"\n {...props}\n >\n {type !== 'default' && (\n <span className=\"toast-icon\">{typeIcons[type]}</span>\n )}\n <div className=\"toast-body\">\n {title && <div className=\"toast-title\">{title}</div>}\n {description && <div className=\"toast-description\">{description}</div>}\n {children}\n </div>\n {action && <div className=\"toast-action\">{action}</div>}\n {closable && (\n <button\n type=\"button\"\n className=\"toast-close\"\n onClick={handleDismiss}\n aria-label=\"Close\"\n >\n ✕\n </button>\n )}\n </div>\n );\n }\n);\n\nToast.displayName = 'Toast';\n\n// Toast Container for positioning multiple toasts\nexport interface ToastContainerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Position of the toast container */\n position?: 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n}\n\nexport const ToastContainer = forwardRef<HTMLDivElement, ToastContainerProps>(\n ({ className, position = 'bottom-right', children, ...props }, ref) => {\n // Map position to zenkit-css class names\n const positionMap: Record<string, string> = {\n 'top-left': 'toast-container-top-start',\n 'top-center': 'toast-container-top-center',\n 'top-right': 'toast-container-top-end',\n 'bottom-left': 'toast-container-bottom-start',\n 'bottom-center': 'toast-container-bottom-center',\n 'bottom-right': 'toast-container-bottom-end',\n };\n\n return (\n <div\n ref={ref}\n className={cn('toast-container', positionMap[position], className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nToastContainer.displayName = 'ToastContainer';\n","'use client';\n\nimport React, { forwardRef, useEffect, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Portal } from '../Portal';\n\nexport interface DialogProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'title'> {\n /** Whether the dialog is open */\n open?: boolean;\n /** Called when the dialog should close */\n onOpenChange?: (open: boolean) => void;\n /** Dialog title */\n title?: React.ReactNode;\n /** Dialog description */\n description?: React.ReactNode;\n /** Whether to show overlay */\n overlay?: boolean;\n /** Whether clicking overlay closes the dialog */\n closeOnOverlayClick?: boolean;\n /** Whether pressing Escape closes the dialog */\n closeOnEscape?: boolean;\n /** Whether to render in a portal */\n portal?: boolean;\n /** Dialog size */\n size?: 'sm' | 'md' | 'lg' | 'xl' | 'full';\n}\n\nexport const Dialog = forwardRef<HTMLDivElement, DialogProps>(\n (\n {\n className,\n open = false,\n onOpenChange,\n title,\n description,\n overlay = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n portal = true,\n size = 'md',\n children,\n ...props\n },\n ref\n ) => {\n const handleClose = useCallback(() => {\n onOpenChange?.(false);\n }, [onOpenChange]);\n\n const handleOverlayClick = useCallback(\n (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n handleClose();\n }\n },\n [closeOnOverlayClick, handleClose]\n );\n\n useEffect(() => {\n if (!closeOnEscape) return;\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open) {\n handleClose();\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n return () => document.removeEventListener('keydown', handleKeyDown);\n }, [open, closeOnEscape, handleClose]);\n\n useEffect(() => {\n if (open) {\n document.body.style.overflow = 'hidden';\n } else {\n document.body.style.overflow = '';\n }\n return () => {\n document.body.style.overflow = '';\n };\n }, [open]);\n\n if (!open) return null;\n\n const content = (\n <div\n className={cn('dialog-overlay', overlay && 'dialog-overlay-visible')}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n >\n <div\n ref={ref}\n className={cn('dialog', `dialog-${size}`, className)}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby={title ? 'dialog-title' : undefined}\n aria-describedby={description ? 'dialog-description' : undefined}\n {...props}\n >\n {title && (\n <div id=\"dialog-title\" className=\"dialog-title\">\n {title}\n </div>\n )}\n {description && (\n <div id=\"dialog-description\" className=\"dialog-description\">\n {description}\n </div>\n )}\n <div className=\"dialog-content\">{children}</div>\n </div>\n </div>\n );\n\n if (portal) {\n return <Portal>{content}</Portal>;\n }\n\n return content;\n }\n);\n\nDialog.displayName = 'Dialog';\n\n// Dialog subcomponents\nexport interface DialogHeaderProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogHeader = forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('dialog-header', className)} {...props} />\n )\n);\n\nDialogHeader.displayName = 'DialogHeader';\n\nexport interface DialogBodyProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogBody = forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('dialog-body', className)} {...props} />\n )\n);\n\nDialogBody.displayName = 'DialogBody';\n\nexport interface DialogFooterProps extends React.HTMLAttributes<HTMLDivElement> {}\n\nexport const DialogFooter = forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, ...props }, ref) => (\n <div ref={ref} className={cn('dialog-footer', className)} {...props} />\n )\n);\n\nDialogFooter.displayName = 'DialogFooter';\n\nexport interface DialogCloseProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const DialogClose = forwardRef<HTMLButtonElement, DialogCloseProps>(\n ({ className, children, ...props }, ref) => (\n <button ref={ref} className={cn('dialog-close', className)} type=\"button\" {...props}>\n {children || '✕'}\n </button>\n )\n);\n\nDialogClose.displayName = 'DialogClose';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n /** Whether the field is required */\n required?: boolean;\n /** Whether the label is disabled */\n disabled?: boolean;\n /** Size of the label */\n size?: 'sm' | 'md' | 'lg';\n /** Optional description text */\n description?: React.ReactNode;\n /** Whether to show optional indicator */\n showOptional?: boolean;\n}\n\nexport const Label = forwardRef<HTMLLabelElement, LabelProps>(\n (\n {\n className,\n required,\n disabled,\n size = 'md',\n description,\n showOptional,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <label\n ref={ref}\n className={cn(\n 'zk-label',\n `zk-label--${size}`,\n disabled && 'zk-label--disabled',\n className\n )}\n {...props}\n >\n <span className=\"zk-label__text\">\n {children}\n {required && <span className=\"zk-label__required\" aria-hidden=\"true\">*</span>}\n {showOptional && !required && (\n <span className=\"zk-label__optional\">(optional)</span>\n )}\n </span>\n {description && (\n <span className=\"zk-label__description\">{description}</span>\n )}\n </label>\n );\n }\n);\n\nLabel.displayName = 'Label';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SeparatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Orientation of the separator */\n orientation?: 'horizontal' | 'vertical';\n /** Whether the separator is decorative */\n decorative?: boolean;\n /** Size/thickness of the separator */\n size?: 'sm' | 'md' | 'lg';\n /** Label to show in the middle */\n label?: React.ReactNode;\n /** Label position */\n labelPosition?: 'left' | 'center' | 'right';\n}\n\nexport const Separator = forwardRef<HTMLDivElement, SeparatorProps>(\n (\n {\n className,\n orientation = 'horizontal',\n decorative = true,\n size = 'md',\n label,\n labelPosition = 'center',\n ...props\n },\n ref\n ) => {\n const semanticProps = decorative\n ? { role: 'none' }\n : { role: 'separator', 'aria-orientation': orientation };\n\n if (label) {\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-separator',\n `zk-separator--${orientation}`,\n `zk-separator--${size}`,\n 'zk-separator--with-label',\n `zk-separator--label-${labelPosition}`,\n className\n )}\n {...semanticProps}\n {...props}\n >\n <span className=\"zk-separator__label\">{label}</span>\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-separator',\n `zk-separator--${orientation}`,\n `zk-separator--${size}`,\n className\n )}\n {...semanticProps}\n {...props}\n />\n );\n }\n);\n\nSeparator.displayName = 'Separator';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface HeadingProps extends React.HTMLAttributes<HTMLHeadingElement> {\n /** Heading level (h1-h6) */\n as?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n /** Visual size (independent from semantic level) */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl';\n /** Font weight */\n weight?: 'normal' | 'medium' | 'semibold' | 'bold';\n /** Text alignment */\n align?: 'left' | 'center' | 'right';\n /** Whether to truncate text with ellipsis */\n truncate?: boolean;\n /** Color variant */\n color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n /** Line height */\n lineHeight?: 'tight' | 'normal' | 'relaxed';\n}\n\nexport const HeadingText = forwardRef<HTMLHeadingElement, HeadingProps>(\n (\n {\n className,\n as: Component = 'h2',\n size,\n weight = 'bold',\n align,\n truncate,\n color = 'default',\n lineHeight = 'tight',\n children,\n ...props\n },\n ref\n ) => {\n // Default sizes based on heading level\n const defaultSizes: Record<string, string> = {\n h1: '4xl',\n h2: '3xl',\n h3: '2xl',\n h4: 'xl',\n h5: 'lg',\n h6: 'md',\n };\n\n const resolvedSize = size || defaultSizes[Component] || 'lg';\n\n return (\n <Component\n ref={ref}\n className={cn(\n 'zk-heading',\n `zk-heading--${resolvedSize}`,\n `zk-heading--${weight}`,\n `zk-heading--${color}`,\n `zk-heading--${lineHeight}`,\n align && `zk-heading--${align}`,\n truncate && 'zk-heading--truncate',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nHeadingText.displayName = 'HeadingText';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TextProps {\n /** HTML element to render */\n as?: 'p' | 'span' | 'div' | 'label' | 'small' | 'strong' | 'em';\n /** Text size */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Font weight */\n weight?: 'light' | 'normal' | 'medium' | 'semibold' | 'bold';\n /** Text alignment */\n align?: 'left' | 'center' | 'right' | 'justify';\n /** Whether to truncate text with ellipsis */\n truncate?: boolean;\n /** Number of lines before truncating (requires truncate) */\n lineClamp?: number;\n /** Color variant */\n color?: 'default' | 'muted' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n /** Line height */\n lineHeight?: 'tight' | 'normal' | 'relaxed' | 'loose';\n /** Whether text is inline */\n inline?: boolean;\n /** Text transform */\n transform?: 'uppercase' | 'lowercase' | 'capitalize' | 'none';\n /** Whether to inherit parent styles */\n inherit?: boolean;\n /** Additional class name */\n className?: string;\n /** Inline styles */\n style?: React.CSSProperties;\n /** Children */\n children?: React.ReactNode;\n}\n\nexport const TextBlock = forwardRef<HTMLElement, TextProps & React.HTMLAttributes<HTMLElement>>(\n (\n {\n className,\n as = 'p',\n size = 'md',\n weight = 'normal',\n align,\n truncate,\n lineClamp,\n color = 'default',\n lineHeight = 'normal',\n inline,\n transform,\n inherit,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const Component = as;\n\n const combinedStyle: React.CSSProperties = {\n ...style,\n ...(lineClamp && {\n display: '-webkit-box',\n WebkitLineClamp: lineClamp,\n WebkitBoxOrient: 'vertical' as const,\n overflow: 'hidden',\n }),\n };\n\n return React.createElement(\n Component,\n {\n ref,\n className: cn(\n 'zk-text',\n !inherit && `zk-text--${size}`,\n !inherit && `zk-text--${weight}`,\n !inherit && `zk-text--${color}`,\n !inherit && `zk-text--${lineHeight}`,\n align && `zk-text--${align}`,\n truncate && 'zk-text--truncate',\n inline && 'zk-text--inline',\n transform && `zk-text--${transform}`,\n inherit && 'zk-text--inherit',\n className\n ),\n style: combinedStyle,\n ...props,\n },\n children\n );\n }\n);\n\nTextBlock.displayName = 'TextBlock';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface BoxProps extends React.HTMLAttributes<HTMLDivElement> {\n /** HTML element to render */\n as?: React.ElementType;\n /** Padding */\n p?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Padding horizontal */\n px?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Padding vertical */\n py?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Margin */\n m?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Margin horizontal */\n mx?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Margin vertical */\n my?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'auto';\n /** Background color */\n bg?: 'transparent' | 'primary' | 'secondary' | 'muted' | 'accent' | 'surface';\n /** Border radius */\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /** Shadow */\n shadow?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n /** Display */\n display?: 'block' | 'inline' | 'inline-block' | 'flex' | 'inline-flex' | 'grid' | 'none';\n /** Width */\n w?: 'auto' | 'full' | 'screen' | 'fit' | 'min' | 'max';\n /** Height */\n h?: 'auto' | 'full' | 'screen' | 'fit' | 'min' | 'max';\n /** Border */\n border?: boolean;\n}\n\nexport const Box = forwardRef<HTMLDivElement, BoxProps>(\n (\n {\n className,\n as: Component = 'div',\n p,\n px,\n py,\n m,\n mx,\n my,\n bg,\n radius,\n shadow,\n display,\n w,\n h,\n border,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={cn(\n 'zk-box',\n p && `zk-box--p-${p}`,\n px && `zk-box--px-${px}`,\n py && `zk-box--py-${py}`,\n m && `zk-box--m-${m}`,\n mx && `zk-box--mx-${mx}`,\n my && `zk-box--my-${my}`,\n bg && `zk-box--bg-${bg}`,\n radius && `zk-box--radius-${radius}`,\n shadow && `zk-box--shadow-${shadow}`,\n display && `zk-box--${display}`,\n w && `zk-box--w-${w}`,\n h && `zk-box--h-${h}`,\n border && 'zk-box--border',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nBox.displayName = 'Box';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CenterProps extends React.HTMLAttributes<HTMLDivElement> {\n /** HTML element to render */\n as?: React.ElementType;\n /** Whether to center inline (horizontal only) */\n inline?: boolean;\n /** Padding */\n p?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Gap between children */\n gap?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Direction of children */\n direction?: 'row' | 'column';\n}\n\nexport const Center = forwardRef<HTMLDivElement, CenterProps>(\n (\n {\n className,\n as: Component = 'div',\n inline,\n p,\n gap,\n direction = 'row',\n children,\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={cn(\n 'zk-center',\n inline && 'zk-center--inline',\n `zk-center--${direction}`,\n p && `zk-center--p-${p}`,\n gap && `zk-center--gap-${gap}`,\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nCenter.displayName = 'Center';\n","'use client';\n\nimport React, { forwardRef, useRef, useState } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface FileInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'value' | 'onChange' | 'size'> {\n /** Current file(s) */\n value?: File | File[] | null;\n /** Called when files change */\n onChange?: (files: File | File[] | null) => void;\n /** Whether to accept multiple files */\n multiple?: boolean;\n /** Accepted file types */\n accept?: string;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Placeholder text */\n placeholder?: string;\n /** Whether the input is in error state */\n error?: boolean;\n /** Whether to show clear button */\n clearable?: boolean;\n /** Label for the button */\n buttonLabel?: string;\n /** Variant style */\n variant?: 'default' | 'filled' | 'unstyled';\n}\n\nexport const FileInput = forwardRef<HTMLInputElement, FileInputProps>(\n (\n {\n className,\n value,\n onChange,\n multiple,\n accept,\n size = 'md',\n placeholder = 'Choose file...',\n error,\n clearable = true,\n buttonLabel = 'Browse',\n variant = 'default',\n disabled,\n ...props\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [internalFiles, setInternalFiles] = useState<File | File[] | null>(null);\n\n const files = value !== undefined ? value : internalFiles;\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const selectedFiles = e.target.files;\n if (!selectedFiles || selectedFiles.length === 0) {\n setInternalFiles(null);\n onChange?.(null);\n return;\n }\n\n const newFiles = multiple ? Array.from(selectedFiles) : selectedFiles[0];\n setInternalFiles(newFiles);\n onChange?.(newFiles);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n setInternalFiles(null);\n onChange?.(null);\n };\n\n const getDisplayText = () => {\n if (!files) return placeholder;\n if (Array.isArray(files)) {\n return files.length === 1 ? files[0].name : `${files.length} files selected`;\n }\n return files.name;\n };\n\n const hasFiles = files && (Array.isArray(files) ? files.length > 0 : true);\n\n return (\n <div\n className={cn(\n 'file-input',\n `file-input-${size}`,\n `file-input-${variant}`,\n error && 'file-input-error',\n disabled && 'file-input-disabled',\n className\n )}\n onClick={disabled ? undefined : handleClick}\n >\n <input\n ref={(node) => {\n (inputRef as React.MutableRefObject<HTMLInputElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n type=\"file\"\n className=\"file-input-input\"\n onChange={handleChange}\n multiple={multiple}\n accept={accept}\n disabled={disabled}\n {...props}\n />\n <span className={cn('file-input-text', !hasFiles && 'file-input-text--placeholder')}>\n {getDisplayText()}\n </span>\n <div className=\"file-input-actions\">\n {hasFiles && clearable && !disabled && (\n <button\n type=\"button\"\n className=\"file-input-clear\"\n onClick={handleClear}\n aria-label=\"Clear\"\n >\n ✕\n </button>\n )}\n <span className=\"file-input-button\">{buttonLabel}</span>\n </div>\n </div>\n );\n }\n);\n\nFileInput.displayName = 'FileInput';\n","'use client';\n\nimport React, { forwardRef, useCallback, useRef, useState, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RangeSliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Current range value [min, max] */\n value?: [number, number];\n /** Default range value */\n defaultValue?: [number, number];\n /** Called when value changes */\n onChange?: (value: [number, number]) => void;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Step increment */\n step?: number;\n /** Whether the slider is disabled */\n disabled?: boolean;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Color variant */\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n /** Show marks */\n marks?: boolean | { value: number; label?: string }[];\n /** Show tooltip with value */\n showTooltip?: boolean;\n /** Orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Minimum range between handles */\n minRange?: number;\n /** Label */\n label?: React.ReactNode;\n}\n\nexport const RangeSlider = forwardRef<HTMLDivElement, RangeSliderProps>(\n (\n {\n className,\n value,\n defaultValue = [25, 75],\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled,\n size = 'md',\n color = 'primary',\n marks,\n showTooltip,\n orientation = 'horizontal',\n minRange = 0,\n label,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState<[number, number]>(defaultValue);\n const [activeHandle, setActiveHandle] = useState<'start' | 'end' | null>(null);\n const trackRef = useRef<HTMLDivElement>(null);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const getPercentage = (val: number) => ((val - min) / (max - min)) * 100;\n\n const getValueFromPosition = useCallback(\n (clientX: number) => {\n if (!trackRef.current) return currentValue[0];\n const rect = trackRef.current.getBoundingClientRect();\n const percentage = Math.max(0, Math.min(100, ((clientX - rect.left) / rect.width) * 100));\n const rawValue = (percentage / 100) * (max - min) + min;\n return Math.round(rawValue / step) * step;\n },\n [min, max, step, currentValue]\n );\n\n const updateValue = useCallback(\n (newValue: [number, number]) => {\n const [start, end] = newValue;\n const clampedStart = Math.max(min, Math.min(end - minRange, start));\n const clampedEnd = Math.min(max, Math.max(start + minRange, end));\n const finalValue: [number, number] = [clampedStart, clampedEnd];\n\n setInternalValue(finalValue);\n onChange?.(finalValue);\n },\n [min, max, minRange, onChange]\n );\n\n const handleMouseDown = (handle: 'start' | 'end') => (e: React.MouseEvent) => {\n if (disabled) return;\n e.preventDefault();\n setActiveHandle(handle);\n };\n\n useEffect(() => {\n if (!activeHandle) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const newVal = getValueFromPosition(e.clientX);\n if (activeHandle === 'start') {\n updateValue([newVal, currentValue[1]]);\n } else {\n updateValue([currentValue[0], newVal]);\n }\n };\n\n const handleMouseUp = () => {\n setActiveHandle(null);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [activeHandle, currentValue, getValueFromPosition, updateValue]);\n\n const startPercent = getPercentage(currentValue[0]);\n const endPercent = getPercentage(currentValue[1]);\n\n const renderMarks = () => {\n if (!marks) return null;\n\n const markArray = marks === true\n ? [\n { value: min, label: String(min) },\n { value: max, label: String(max) },\n ]\n : marks;\n\n return (\n <div className=\"range-slider-marks\">\n {markArray.map((mark) => (\n <div\n key={mark.value}\n className=\"range-slider-mark\"\n style={{ left: `${getPercentage(mark.value)}%` }}\n >\n {mark.label && <span className=\"range-slider-mark-label\">{mark.label}</span>}\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'range-slider',\n `range-slider-${size}`,\n `range-slider-${color}`,\n `range-slider-${orientation}`,\n disabled && 'range-slider-disabled',\n className\n )}\n {...props}\n >\n {label && <div className=\"range-slider-label\">{label}</div>}\n <div className=\"range-slider-container\">\n <div ref={trackRef} className=\"range-slider-track\">\n <div\n className=\"range-slider-range\"\n style={{\n left: `${startPercent}%`,\n width: `${endPercent - startPercent}%`,\n }}\n />\n <div\n className={cn('range-slider-thumb', activeHandle === 'start' && 'range-slider-thumb--active')}\n style={{ left: `${startPercent}%` }}\n onMouseDown={handleMouseDown('start')}\n role=\"slider\"\n aria-valuemin={min}\n aria-valuemax={currentValue[1] - minRange}\n aria-valuenow={currentValue[0]}\n tabIndex={disabled ? -1 : 0}\n >\n {showTooltip && (\n <div className=\"range-slider-tooltip\">{currentValue[0]}</div>\n )}\n </div>\n <div\n className={cn('range-slider-thumb', activeHandle === 'end' && 'range-slider-thumb--active')}\n style={{ left: `${endPercent}%` }}\n onMouseDown={handleMouseDown('end')}\n role=\"slider\"\n aria-valuemin={currentValue[0] + minRange}\n aria-valuemax={max}\n aria-valuenow={currentValue[1]}\n tabIndex={disabled ? -1 : 0}\n >\n {showTooltip && (\n <div className=\"range-slider-tooltip\">{currentValue[1]}</div>\n )}\n </div>\n </div>\n {renderMarks()}\n </div>\n </div>\n );\n }\n);\n\nRangeSlider.displayName = 'RangeSlider';\n","'use client';\n\nimport React, { forwardRef, useState, useRef, useEffect, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MultiSelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n group?: string;\n}\n\nexport interface MultiSelectProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Available options */\n options: MultiSelectOption[];\n /** Selected values */\n value?: string[];\n /** Default selected values */\n defaultValue?: string[];\n /** Called when selection changes */\n onChange?: (value: string[]) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether the select is searchable */\n searchable?: boolean;\n /** Whether to allow clearing all selections */\n clearable?: boolean;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Maximum number of selections */\n maxSelections?: number;\n /** Label */\n label?: React.ReactNode;\n /** Whether to show checkboxes */\n withCheckbox?: boolean;\n /** Hide selected options from dropdown */\n hideSelected?: boolean;\n}\n\nexport const MultiSelect = forwardRef<HTMLDivElement, MultiSelectProps>(\n (\n {\n className,\n options,\n value,\n defaultValue = [],\n onChange,\n placeholder = 'Select...',\n disabled,\n searchable = true,\n clearable = true,\n size = 'md',\n error,\n maxSelections,\n label,\n withCheckbox = true,\n hideSelected,\n ...props\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [search, setSearch] = useState('');\n const [internalValue, setInternalValue] = useState<string[]>(defaultValue);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n\n const selectedValues = value !== undefined ? value : internalValue;\n\n const updateValue = useCallback(\n (newValue: string[]) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n },\n [onChange]\n );\n\n const filteredOptions = options.filter((option) => {\n const matchesSearch = option.label.toLowerCase().includes(search.toLowerCase());\n const notHidden = !hideSelected || !selectedValues.includes(option.value);\n return matchesSearch && notHidden;\n });\n\n const handleSelect = (optionValue: string) => {\n if (selectedValues.includes(optionValue)) {\n updateValue(selectedValues.filter((v) => v !== optionValue));\n } else {\n if (maxSelections && selectedValues.length >= maxSelections) return;\n updateValue([...selectedValues, optionValue]);\n }\n setSearch('');\n };\n\n const handleRemove = (optionValue: string, e: React.MouseEvent) => {\n e.stopPropagation();\n updateValue(selectedValues.filter((v) => v !== optionValue));\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n updateValue([]);\n setSearch('');\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Backspace' && !search && selectedValues.length > 0) {\n updateValue(selectedValues.slice(0, -1));\n }\n if (e.key === 'Escape') {\n setIsOpen(false);\n }\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n const getLabel = (val: string) => {\n return options.find((o) => o.value === val)?.label || val;\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-multi-select',\n `zk-multi-select--${size}`,\n isOpen && 'zk-multi-select--open',\n disabled && 'zk-multi-select--disabled',\n error && 'zk-multi-select--error',\n className\n )}\n {...props}\n >\n {label && <div className=\"zk-multi-select__label\">{label}</div>}\n <div\n ref={containerRef}\n className=\"zk-multi-select__control\"\n onClick={() => {\n if (!disabled) {\n setIsOpen(true);\n inputRef.current?.focus();\n }\n }}\n >\n <div className=\"zk-multi-select__values\">\n {selectedValues.map((val) => (\n <span key={val} className=\"zk-multi-select__tag\">\n {getLabel(val)}\n <button\n type=\"button\"\n className=\"zk-multi-select__tag-remove\"\n onClick={(e) => handleRemove(val, e)}\n aria-label={`Remove ${getLabel(val)}`}\n >\n ✕\n </button>\n </span>\n ))}\n {searchable && (\n <input\n ref={inputRef}\n type=\"text\"\n className=\"zk-multi-select__input\"\n value={search}\n onChange={(e) => setSearch(e.target.value)}\n onKeyDown={handleKeyDown}\n placeholder={selectedValues.length === 0 ? placeholder : ''}\n disabled={disabled}\n />\n )}\n {!searchable && selectedValues.length === 0 && (\n <span className=\"zk-multi-select__placeholder\">{placeholder}</span>\n )}\n </div>\n <div className=\"zk-multi-select__actions\">\n {clearable && selectedValues.length > 0 && !disabled && (\n <button\n type=\"button\"\n className=\"zk-multi-select__clear\"\n onClick={handleClear}\n aria-label=\"Clear all\"\n >\n ✕\n </button>\n )}\n <span className=\"zk-multi-select__arrow\">▼</span>\n </div>\n </div>\n {isOpen && (\n <div className=\"zk-multi-select__dropdown\">\n {filteredOptions.length === 0 ? (\n <div className=\"zk-multi-select__empty\">No options</div>\n ) : (\n filteredOptions.map((option) => (\n <div\n key={option.value}\n className={cn(\n 'zk-multi-select__option',\n selectedValues.includes(option.value) && 'zk-multi-select__option--selected',\n option.disabled && 'zk-multi-select__option--disabled'\n )}\n onClick={() => !option.disabled && handleSelect(option.value)}\n >\n {withCheckbox && (\n <span className=\"zk-multi-select__checkbox\">\n {selectedValues.includes(option.value) ? '☑' : '☐'}\n </span>\n )}\n {option.label}\n </div>\n ))\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nMultiSelect.displayName = 'MultiSelect';\n","'use client';\n\nimport React, { forwardRef, useState, useRef, useEffect, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n disabled?: boolean;\n description?: string;\n}\n\nexport interface ComboboxProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Available options */\n options: ComboboxOption[];\n /** Selected value */\n value?: string;\n /** Default value */\n defaultValue?: string;\n /** Called when selection changes */\n onChange?: (value: string) => void;\n /** Called when input value changes */\n onInputChange?: (value: string) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Whether the combobox is disabled */\n disabled?: boolean;\n /** Whether to allow custom values */\n allowCustomValue?: boolean;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Label */\n label?: React.ReactNode;\n /** Whether selection is required */\n required?: boolean;\n /** Empty state message */\n emptyMessage?: string;\n /** Loading state */\n loading?: boolean;\n}\n\nexport const Combobox = forwardRef<HTMLDivElement, ComboboxProps>(\n (\n {\n className,\n options,\n value,\n defaultValue = '',\n onChange,\n onInputChange,\n placeholder = 'Search...',\n disabled,\n allowCustomValue = false,\n size = 'md',\n error,\n label,\n required,\n emptyMessage = 'No results found',\n loading,\n ...props\n },\n ref\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [inputValue, setInputValue] = useState('');\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\n const containerRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n\n const selectedValue = value !== undefined ? value : internalValue;\n\n const selectedOption = options.find((o) => o.value === selectedValue);\n\n const filteredOptions = options.filter((option) =>\n option.label.toLowerCase().includes(inputValue.toLowerCase())\n );\n\n const updateValue = useCallback(\n (newValue: string) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n },\n [onChange]\n );\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newInputValue = e.target.value;\n setInputValue(newInputValue);\n onInputChange?.(newInputValue);\n setIsOpen(true);\n setHighlightedIndex(0);\n };\n\n const handleSelect = (option: ComboboxOption) => {\n updateValue(option.value);\n setInputValue('');\n setIsOpen(false);\n inputRef.current?.blur();\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n setIsOpen(true);\n setHighlightedIndex((prev) =>\n prev < filteredOptions.length - 1 ? prev + 1 : prev\n );\n break;\n case 'ArrowUp':\n e.preventDefault();\n setHighlightedIndex((prev) => (prev > 0 ? prev - 1 : prev));\n break;\n case 'Enter':\n e.preventDefault();\n if (highlightedIndex >= 0 && filteredOptions[highlightedIndex]) {\n handleSelect(filteredOptions[highlightedIndex]);\n } else if (allowCustomValue && inputValue) {\n updateValue(inputValue);\n setInputValue('');\n setIsOpen(false);\n }\n break;\n case 'Escape':\n setIsOpen(false);\n setInputValue('');\n break;\n case 'Tab':\n setIsOpen(false);\n break;\n }\n };\n\n const handleFocus = () => {\n setIsOpen(true);\n };\n\n const handleBlur = () => {\n // Delay to allow click events on options\n setTimeout(() => {\n if (!containerRef.current?.contains(document.activeElement)) {\n setIsOpen(false);\n setInputValue('');\n }\n }, 150);\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n setInputValue('');\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-combobox',\n `zk-combobox--${size}`,\n isOpen && 'zk-combobox--open',\n disabled && 'zk-combobox--disabled',\n error && 'zk-combobox--error',\n className\n )}\n {...props}\n >\n {label && (\n <label className=\"zk-combobox__label\">\n {label}\n {required && <span className=\"zk-combobox__required\">*</span>}\n </label>\n )}\n <div ref={containerRef} className=\"zk-combobox__container\">\n <input\n ref={inputRef}\n type=\"text\"\n className=\"zk-combobox__input\"\n value={inputValue || (isOpen ? '' : selectedOption?.label || '')}\n onChange={handleInputChange}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n placeholder={selectedOption?.label || placeholder}\n disabled={disabled}\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n role=\"combobox\"\n />\n <div className=\"zk-combobox__icons\">\n {loading && <span className=\"zk-combobox__loader\">⟳</span>}\n <span className=\"zk-combobox__arrow\">▼</span>\n </div>\n {isOpen && (\n <div ref={listRef} className=\"zk-combobox__dropdown\" role=\"listbox\">\n {filteredOptions.length === 0 ? (\n <div className=\"zk-combobox__empty\">{emptyMessage}</div>\n ) : (\n filteredOptions.map((option, index) => (\n <div\n key={option.value}\n className={cn(\n 'zk-combobox__option',\n option.value === selectedValue && 'zk-combobox__option--selected',\n index === highlightedIndex && 'zk-combobox__option--highlighted',\n option.disabled && 'zk-combobox__option--disabled'\n )}\n onClick={() => !option.disabled && handleSelect(option)}\n role=\"option\"\n aria-selected={option.value === selectedValue}\n >\n <span className=\"zk-combobox__option-label\">{option.label}</span>\n {option.description && (\n <span className=\"zk-combobox__option-description\">{option.description}</span>\n )}\n </div>\n ))\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nCombobox.displayName = 'Combobox';\n","'use client';\n\nimport React, { forwardRef, useState, useRef, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ColorInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'> {\n /** Current color value (hex) */\n value?: string;\n /** Default color value */\n defaultValue?: string;\n /** Called when color changes */\n onChange?: (value: string) => void;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Error state */\n error?: boolean;\n /** Label */\n label?: React.ReactNode;\n /** Preset colors to show */\n swatches?: string[];\n /** Whether to show the color picker popup */\n withPicker?: boolean;\n /** Format for the color value */\n format?: 'hex' | 'rgb' | 'hsl';\n /** Whether to allow opacity/alpha */\n withAlpha?: boolean;\n}\n\nexport const ColorInput = forwardRef<HTMLInputElement, ColorInputProps>(\n (\n {\n className,\n value,\n defaultValue = '#000000',\n onChange,\n size = 'md',\n disabled,\n error,\n label,\n swatches = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff', '#000000', '#ffffff'],\n withPicker = true,\n format = 'hex',\n withAlpha,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [isOpen, setIsOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const colorPickerRef = useRef<HTMLInputElement>(null);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const updateValue = (newValue: string) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (/^#[0-9A-Fa-f]{0,6}$/.test(newValue) || newValue === '') {\n updateValue(newValue);\n }\n };\n\n const handleColorPickerChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n updateValue(e.target.value);\n };\n\n const handleSwatchClick = (color: string) => {\n updateValue(color);\n setIsOpen(false);\n };\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, []);\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'zk-color-input',\n `zk-color-input--${size}`,\n disabled && 'zk-color-input--disabled',\n error && 'zk-color-input--error',\n isOpen && 'zk-color-input--open',\n className\n )}\n >\n {label && <label className=\"zk-color-input__label\">{label}</label>}\n <div className=\"zk-color-input__control\">\n <button\n type=\"button\"\n className=\"zk-color-input__swatch\"\n style={{ backgroundColor: currentValue }}\n onClick={() => !disabled && setIsOpen(!isOpen)}\n disabled={disabled}\n aria-label=\"Pick color\"\n />\n <input\n ref={ref}\n type=\"text\"\n className=\"zk-color-input__input\"\n value={currentValue}\n onChange={handleInputChange}\n disabled={disabled}\n placeholder=\"#000000\"\n {...props}\n />\n {withPicker && (\n <input\n ref={colorPickerRef}\n type=\"color\"\n className=\"zk-color-input__picker\"\n value={currentValue}\n onChange={handleColorPickerChange}\n disabled={disabled}\n />\n )}\n </div>\n {isOpen && swatches.length > 0 && (\n <div className=\"zk-color-input__dropdown\">\n <div className=\"zk-color-input__swatches\">\n {swatches.map((color) => (\n <button\n key={color}\n type=\"button\"\n className={cn(\n 'zk-color-input__swatch-option',\n currentValue === color && 'zk-color-input__swatch-option--selected'\n )}\n style={{ backgroundColor: color }}\n onClick={() => handleSwatchClick(color)}\n aria-label={`Select ${color}`}\n />\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nColorInput.displayName = 'ColorInput';\n","'use client';\n\nimport React, { forwardRef, useState, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CopyButtonProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'onError'> {\n /** Value to copy to clipboard */\n value: string;\n /** Timeout in ms before resetting to default state */\n timeout?: number;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Variant style */\n variant?: 'default' | 'filled' | 'outline' | 'subtle';\n /** Color variant */\n color?: 'default' | 'primary' | 'secondary';\n /** Called after copying */\n onCopy?: () => void;\n /** Called on copy error */\n onError?: (error: Error) => void;\n /** Custom children (receives copied state) */\n children?: (props: { copied: boolean; copy: () => void }) => React.ReactNode;\n /** Copy icon/label */\n copyLabel?: React.ReactNode;\n /** Copied icon/label */\n copiedLabel?: React.ReactNode;\n}\n\nexport const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(\n (\n {\n className,\n value,\n timeout = 2000,\n size = 'md',\n variant = 'default',\n color = 'default',\n onCopy,\n onError,\n children,\n copyLabel = '📋',\n copiedLabel = '✓',\n disabled,\n ...props\n },\n ref\n ) => {\n const [copied, setCopied] = useState(false);\n\n const copy = useCallback(async () => {\n if (copied || disabled) return;\n\n try {\n await navigator.clipboard.writeText(value);\n setCopied(true);\n onCopy?.();\n\n setTimeout(() => {\n setCopied(false);\n }, timeout);\n } catch (error) {\n onError?.(error as Error);\n }\n }, [value, timeout, copied, disabled, onCopy, onError]);\n\n if (children) {\n return <>{children({ copied, copy })}</>;\n }\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'zk-copy-button',\n `zk-copy-button--${size}`,\n `zk-copy-button--${variant}`,\n `zk-copy-button--${color}`,\n copied && 'zk-copy-button--copied',\n disabled && 'zk-copy-button--disabled',\n className\n )}\n onClick={copy}\n disabled={disabled}\n aria-label={copied ? 'Copied' : 'Copy to clipboard'}\n {...props}\n >\n <span className=\"zk-copy-button__icon\">\n {copied ? copiedLabel : copyLabel}\n </span>\n </button>\n );\n }\n);\n\nCopyButton.displayName = 'CopyButton';\n","'use client';\n\nimport React, { forwardRef, createContext, useContext, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckboxGroupOption {\n value: string;\n label: React.ReactNode;\n disabled?: boolean;\n description?: string;\n}\n\nexport interface CheckboxGroupContextValue {\n value: string[];\n onChange: (value: string) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n name?: string;\n}\n\nconst CheckboxGroupContext = createContext<CheckboxGroupContextValue | null>(null);\n\nexport const useCheckboxGroup = () => {\n const context = useContext(CheckboxGroupContext);\n return context;\n};\n\nexport interface CheckboxGroupProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current selected values */\n value?: string[];\n /** Default selected values */\n defaultValue?: string[];\n /** Called when selection changes */\n onChange?: (value: string[]) => void;\n /** Options to render */\n options?: CheckboxGroupOption[];\n /** Whether the group is disabled */\n disabled?: boolean;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Layout orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Name for form submission */\n name?: string;\n /** Label for the group */\n label?: React.ReactNode;\n /** Whether selection is required */\n required?: boolean;\n /** Error state */\n error?: boolean;\n /** Error message */\n errorMessage?: React.ReactNode;\n /** Gap between items */\n gap?: 'xs' | 'sm' | 'md' | 'lg';\n}\n\nexport const CheckboxGroup = forwardRef<HTMLDivElement, CheckboxGroupProps>(\n (\n {\n className,\n value,\n defaultValue = [],\n onChange,\n options,\n disabled,\n size = 'md',\n orientation = 'vertical',\n name,\n label,\n required,\n error,\n errorMessage,\n gap = 'sm',\n children,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState<string[]>(defaultValue);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const handleChange = useCallback(\n (itemValue: string) => {\n const newValue = currentValue.includes(itemValue)\n ? currentValue.filter((v) => v !== itemValue)\n : [...currentValue, itemValue];\n\n setInternalValue(newValue);\n onChange?.(newValue);\n },\n [currentValue, onChange]\n );\n\n const contextValue: CheckboxGroupContextValue = {\n value: currentValue,\n onChange: handleChange,\n disabled,\n size,\n name,\n };\n\n const renderOptions = () => {\n if (!options) return null;\n\n return options.map((option) => (\n <label\n key={option.value}\n className={cn(\n 'zk-checkbox-group__item',\n currentValue.includes(option.value) && 'zk-checkbox-group__item--checked',\n (option.disabled || disabled) && 'zk-checkbox-group__item--disabled'\n )}\n >\n <input\n type=\"checkbox\"\n name={name}\n value={option.value}\n checked={currentValue.includes(option.value)}\n onChange={() => handleChange(option.value)}\n disabled={option.disabled || disabled}\n className=\"zk-checkbox-group__input\"\n />\n <span className=\"zk-checkbox-group__checkbox\">\n {currentValue.includes(option.value) && '✓'}\n </span>\n <span className=\"zk-checkbox-group__content\">\n <span className=\"zk-checkbox-group__label\">{option.label}</span>\n {option.description && (\n <span className=\"zk-checkbox-group__description\">{option.description}</span>\n )}\n </span>\n </label>\n ));\n };\n\n return (\n <CheckboxGroupContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n 'zk-checkbox-group',\n `zk-checkbox-group--${size}`,\n `zk-checkbox-group--${orientation}`,\n `zk-checkbox-group--gap-${gap}`,\n error && 'zk-checkbox-group--error',\n disabled && 'zk-checkbox-group--disabled',\n className\n )}\n role=\"group\"\n aria-labelledby={label ? 'checkbox-group-label' : undefined}\n {...props}\n >\n {label && (\n <div id=\"checkbox-group-label\" className=\"zk-checkbox-group__group-label\">\n {label}\n {required && <span className=\"zk-checkbox-group__required\">*</span>}\n </div>\n )}\n <div className=\"zk-checkbox-group__options\">\n {options ? renderOptions() : children}\n </div>\n {error && errorMessage && (\n <div className=\"zk-checkbox-group__error\">{errorMessage}</div>\n )}\n </div>\n </CheckboxGroupContext.Provider>\n );\n }\n);\n\nCheckboxGroup.displayName = 'CheckboxGroup';\n\n// CheckboxGroupItem component for compound usage\nexport interface CheckboxGroupItemProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'onChange'> {\n /** Item value */\n value: string;\n /** Item label */\n label?: React.ReactNode;\n /** Item description */\n description?: React.ReactNode;\n}\n\nexport const CheckboxGroupItem = forwardRef<HTMLInputElement, CheckboxGroupItemProps>(\n ({ className, value, label, description, disabled, ...props }, ref) => {\n const context = useCheckboxGroup();\n\n if (!context) {\n throw new Error('CheckboxGroupItem must be used within a CheckboxGroup');\n }\n\n const isChecked = context.value.includes(value);\n const isDisabled = disabled || context.disabled;\n\n return (\n <label\n className={cn(\n 'zk-checkbox-group__item',\n isChecked && 'zk-checkbox-group__item--checked',\n isDisabled && 'zk-checkbox-group__item--disabled',\n className\n )}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n name={context.name}\n value={value}\n checked={isChecked}\n onChange={() => context.onChange(value)}\n disabled={isDisabled}\n className=\"zk-checkbox-group__input\"\n {...props}\n />\n <span className=\"zk-checkbox-group__checkbox\">\n {isChecked && '✓'}\n </span>\n {(label || description) && (\n <span className=\"zk-checkbox-group__content\">\n {label && <span className=\"zk-checkbox-group__label\">{label}</span>}\n {description && <span className=\"zk-checkbox-group__description\">{description}</span>}\n </span>\n )}\n </label>\n );\n }\n);\n\nCheckboxGroupItem.displayName = 'CheckboxGroupItem';\n","'use client';\n\nimport React, { forwardRef, createContext, useContext, useState, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AppShellContextValue {\n navbarCollapsed: boolean;\n asideCollapsed: boolean;\n toggleNavbar: () => void;\n toggleAside: () => void;\n}\n\nconst AppShellContext = createContext<AppShellContextValue | null>(null);\n\nexport const useAppShell = () => {\n const context = useContext(AppShellContext);\n if (!context) {\n throw new Error('useAppShell must be used within an AppShell');\n }\n return context;\n};\n\nexport interface AppShellProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Header height */\n headerHeight?: number | string;\n /** Footer height */\n footerHeight?: number | string;\n /** Navbar width */\n navbarWidth?: number | string;\n /** Aside width */\n asideWidth?: number | string;\n /** Whether navbar is initially collapsed */\n navbarCollapsed?: boolean;\n /** Whether aside is initially collapsed */\n asideCollapsed?: boolean;\n /** Padding for main content */\n padding?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Layout variant */\n layout?: 'default' | 'alt';\n /** Whether header is fixed */\n fixedHeader?: boolean;\n}\n\nexport const AppShell = forwardRef<HTMLDivElement, AppShellProps>(\n (\n {\n className,\n headerHeight = 60,\n footerHeight = 60,\n navbarWidth = 250,\n asideWidth = 250,\n navbarCollapsed: initialNavbarCollapsed = false,\n asideCollapsed: initialAsideCollapsed = true,\n padding = 'md',\n layout = 'default',\n fixedHeader = true,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const [navbarCollapsed, setNavbarCollapsed] = useState(initialNavbarCollapsed);\n const [asideCollapsed, setAsideCollapsed] = useState(initialAsideCollapsed);\n\n const toggleNavbar = useCallback(() => setNavbarCollapsed((prev) => !prev), []);\n const toggleAside = useCallback(() => setAsideCollapsed((prev) => !prev), []);\n\n const contextValue: AppShellContextValue = {\n navbarCollapsed,\n asideCollapsed,\n toggleNavbar,\n toggleAside,\n };\n\n return (\n <AppShellContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n 'app-shell',\n `app-shell-${layout}`,\n `app-shell-padding-${padding}`,\n fixedHeader && 'app-shell-fixed-header',\n navbarCollapsed && 'app-shell-navbar-collapsed',\n asideCollapsed && 'app-shell-aside-collapsed',\n className\n )}\n style={{\n '--app-shell-header-height': typeof headerHeight === 'number' ? `${headerHeight}px` : headerHeight,\n '--app-shell-footer-height': typeof footerHeight === 'number' ? `${footerHeight}px` : footerHeight,\n '--app-shell-navbar-width': typeof navbarWidth === 'number' ? `${navbarWidth}px` : navbarWidth,\n '--app-shell-aside-width': typeof asideWidth === 'number' ? `${asideWidth}px` : asideWidth,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n </div>\n </AppShellContext.Provider>\n );\n }\n);\n\nAppShell.displayName = 'AppShell';\n\n// AppShell subcomponents\nexport interface AppShellHeaderProps extends React.HTMLAttributes<HTMLElement> {}\n\nexport const AppShellHeader = forwardRef<HTMLElement, AppShellHeaderProps>(\n ({ className, ...props }, ref) => (\n <header ref={ref} className={cn('app-shell-header', className)} {...props} />\n )\n);\n\nAppShellHeader.displayName = 'AppShellHeader';\n\nexport interface AppShellNavbarProps extends React.HTMLAttributes<HTMLElement> {\n /** Collapsed width */\n collapsedWidth?: number | string;\n}\n\nexport const AppShellNavbar = forwardRef<HTMLElement, AppShellNavbarProps>(\n ({ className, collapsedWidth = 60, style, ...props }, ref) => (\n <nav\n ref={ref}\n className={cn('app-shell-navbar', className)}\n style={{\n '--app-shell-navbar-collapsed-width': typeof collapsedWidth === 'number' ? `${collapsedWidth}px` : collapsedWidth,\n ...style,\n } as React.CSSProperties}\n {...props}\n />\n )\n);\n\nAppShellNavbar.displayName = 'AppShellNavbar';\n\nexport interface AppShellMainProps extends React.HTMLAttributes<HTMLElement> {}\n\nexport const AppShellMain = forwardRef<HTMLElement, AppShellMainProps>(\n ({ className, ...props }, ref) => (\n <main ref={ref} className={cn('app-shell-main', className)} {...props} />\n )\n);\n\nAppShellMain.displayName = 'AppShellMain';\n\nexport interface AppShellAsideProps extends React.HTMLAttributes<HTMLElement> {}\n\nexport const AppShellAside = forwardRef<HTMLElement, AppShellAsideProps>(\n ({ className, ...props }, ref) => (\n <aside ref={ref} className={cn('app-shell-aside', className)} {...props} />\n )\n);\n\nAppShellAside.displayName = 'AppShellAside';\n\nexport interface AppShellFooterProps extends React.HTMLAttributes<HTMLElement> {}\n\nexport const AppShellFooter = forwardRef<HTMLElement, AppShellFooterProps>(\n ({ className, ...props }, ref) => (\n <footer ref={ref} className={cn('app-shell-footer', className)} {...props} />\n )\n);\n\nAppShellFooter.displayName = 'AppShellFooter';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AppBarProps extends React.HTMLAttributes<HTMLElement> {\n /** Position of the app bar */\n position?: 'fixed' | 'absolute' | 'sticky' | 'static' | 'relative';\n /** Color variant */\n color?: 'default' | 'primary' | 'secondary' | 'transparent';\n /** Whether to show elevation/shadow */\n elevation?: boolean;\n /** Whether the app bar is dense */\n dense?: boolean;\n}\n\nexport const AppBar = forwardRef<HTMLElement, AppBarProps>(\n (\n {\n className,\n position = 'fixed',\n color = 'primary',\n elevation = true,\n dense,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <header\n ref={ref}\n className={cn(\n 'zk-app-bar',\n `zk-app-bar--${position}`,\n `zk-app-bar--${color}`,\n elevation && 'zk-app-bar--elevated',\n dense && 'zk-app-bar--dense',\n className\n )}\n {...props}\n >\n {children}\n </header>\n );\n }\n);\n\nAppBar.displayName = 'AppBar';\n\n// AppBarToolbar component for AppBar content layout\nexport interface AppBarToolbarProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether toolbar content should be centered */\n centered?: boolean;\n /** Whether the toolbar is dense */\n dense?: boolean;\n /** Disable gutters (horizontal padding) */\n disableGutters?: boolean;\n}\n\nexport const AppBarToolbar = forwardRef<HTMLDivElement, AppBarToolbarProps>(\n ({ className, centered, dense, disableGutters, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n 'zk-app-bar-toolbar',\n centered && 'zk-app-bar-toolbar--centered',\n dense && 'zk-app-bar-toolbar--dense',\n disableGutters && 'zk-app-bar-toolbar--no-gutters',\n className\n )}\n {...props}\n />\n )\n);\n\nAppBarToolbar.displayName = 'AppBarToolbar';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface PaperProps extends React.HTMLAttributes<HTMLDivElement> {\n /** HTML element to render */\n as?: React.ElementType;\n /** Elevation level (shadow depth) */\n elevation?: 0 | 1 | 2 | 3 | 4 | 5;\n /** Whether to use square corners */\n square?: boolean;\n /** Border radius size */\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl';\n /** Variant style */\n variant?: 'elevation' | 'outlined' | 'filled';\n /** Padding */\n p?: 'none' | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Whether paper is interactive (hoverable) */\n interactive?: boolean;\n /** Background color */\n bg?: 'default' | 'muted' | 'subtle';\n}\n\nexport const Paper = forwardRef<HTMLDivElement, PaperProps>(\n (\n {\n className,\n as: Component = 'div',\n elevation = 1,\n square,\n radius = 'md',\n variant = 'elevation',\n p,\n interactive,\n bg = 'default',\n children,\n ...props\n },\n ref\n ) => {\n return (\n <Component\n ref={ref}\n className={cn(\n 'zk-paper',\n `zk-paper--${variant}`,\n variant === 'elevation' && `zk-paper--elevation-${elevation}`,\n square ? 'zk-paper--square' : `zk-paper--radius-${radius}`,\n p && `zk-paper--p-${p}`,\n `zk-paper--bg-${bg}`,\n interactive && 'zk-paper--interactive',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nPaper.displayName = 'Paper';\n","'use client';\n\nimport React, { forwardRef, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\nimport { Portal } from '../Portal';\n\nexport interface BackdropProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the backdrop is visible */\n open?: boolean;\n /** Called when backdrop is clicked */\n onClick?: (event: React.MouseEvent<HTMLDivElement>) => void;\n /** Whether the backdrop is invisible */\n invisible?: boolean;\n /** Z-index of the backdrop */\n zIndex?: number;\n /** Whether to use portal */\n portal?: boolean;\n /** Whether to lock body scroll */\n lockScroll?: boolean;\n /** Transition duration in ms */\n transitionDuration?: number;\n}\n\nexport const Backdrop = forwardRef<HTMLDivElement, BackdropProps>(\n (\n {\n className,\n open = false,\n onClick,\n invisible,\n zIndex = 1000,\n portal = true,\n lockScroll = true,\n transitionDuration = 300,\n children,\n style,\n ...props\n },\n ref\n ) => {\n useEffect(() => {\n if (open && lockScroll) {\n const originalOverflow = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n return () => {\n document.body.style.overflow = originalOverflow;\n };\n }\n }, [open, lockScroll]);\n\n if (!open) return null;\n\n const content = (\n <div\n ref={ref}\n className={cn(\n 'zk-backdrop',\n invisible && 'zk-backdrop--invisible',\n className\n )}\n onClick={onClick}\n style={{\n zIndex,\n '--backdrop-transition-duration': `${transitionDuration}ms`,\n ...style,\n } as React.CSSProperties}\n aria-hidden=\"true\"\n {...props}\n >\n {children}\n </div>\n );\n\n if (portal) {\n return <Portal>{content}</Portal>;\n }\n\n return content;\n }\n);\n\nBackdrop.displayName = 'Backdrop';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface LoadingOverlayProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the overlay is visible */\n visible?: boolean;\n /** Z-index of the overlay */\n zIndex?: number;\n /** Overlay background opacity */\n overlayOpacity?: number;\n /** Overlay background blur */\n blur?: number;\n /** Custom loader element */\n loader?: React.ReactNode;\n /** Loading text */\n loaderText?: React.ReactNode;\n /** Loader size */\n loaderSize?: 'sm' | 'md' | 'lg' | 'xl';\n /** Transition duration in ms */\n transitionDuration?: number;\n /** Whether the overlay covers the entire viewport */\n fullscreen?: boolean;\n}\n\nexport const LoadingOverlay = forwardRef<HTMLDivElement, LoadingOverlayProps>(\n (\n {\n className,\n visible = false,\n zIndex = 1000,\n overlayOpacity = 0.75,\n blur = 2,\n loader,\n loaderText,\n loaderSize = 'md',\n transitionDuration = 300,\n fullscreen,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const defaultLoader = (\n <div className={cn('loading-overlay-spinner', `loading-overlay-spinner-${loaderSize}`)}>\n <svg viewBox=\"0 0 50 50\" className=\"loading-overlay-spinner-svg\">\n <circle\n cx=\"25\"\n cy=\"25\"\n r=\"20\"\n fill=\"none\"\n strokeWidth=\"4\"\n className=\"loading-overlay-spinner-circle\"\n />\n </svg>\n </div>\n );\n\n return (\n <div\n ref={ref}\n className={cn(\n 'loading-overlay-container',\n className\n )}\n style={{\n '--zk-loading-overlay-z-index': zIndex,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n {children}\n <div\n className={cn(\n 'loading-overlay',\n visible && 'loading-overlay-visible',\n fullscreen && 'loading-overlay-fixed',\n blur > 0 && 'loading-overlay-blur'\n )}\n >\n <div className=\"loading-overlay-content\">\n {loader || defaultLoader}\n {loaderText && (\n <div className=\"loading-overlay-text\">{loaderText}</div>\n )}\n </div>\n </div>\n </div>\n );\n }\n);\n\nLoadingOverlay.displayName = 'LoadingOverlay';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RingProgressSection {\n value: number;\n color: string;\n tooltip?: string;\n}\n\nexport interface RingProgressProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Progress value (0-100) or sections */\n value?: number;\n /** Multiple sections */\n sections?: RingProgressSection[];\n /** Size of the ring */\n size?: number;\n /** Thickness of the ring */\n thickness?: number;\n /** Round end caps */\n roundCaps?: boolean;\n /** Label in the center */\n label?: React.ReactNode;\n /** Root color (background ring) */\n rootColor?: string;\n /** Progress color (single value) */\n color?: string;\n}\n\nexport const RingProgress = forwardRef<HTMLDivElement, RingProgressProps>(\n (\n {\n className,\n value,\n sections,\n size = 120,\n thickness = 12,\n roundCaps = true,\n label,\n rootColor = '#e9ecef',\n color = '#228be6',\n style,\n ...props\n },\n ref\n ) => {\n const radius = (size - thickness) / 2;\n const circumference = 2 * Math.PI * radius;\n\n const renderSections = () => {\n if (sections && sections.length > 0) {\n let offset = 0;\n return sections.map((section, index) => {\n const dashLength = (section.value / 100) * circumference;\n const dashOffset = -offset;\n offset += dashLength;\n\n return (\n <circle\n key={index}\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={section.color}\n strokeWidth={thickness}\n strokeDasharray={`${dashLength} ${circumference - dashLength}`}\n strokeDashoffset={dashOffset}\n strokeLinecap={roundCaps ? 'round' : 'butt'}\n className=\"ring-progress-section\"\n style={{ transform: 'rotate(-90deg)', transformOrigin: 'center' }}\n >\n {section.tooltip && <title>{section.tooltip}</title>}\n </circle>\n );\n });\n }\n\n // Single value\n const dashLength = ((value || 0) / 100) * circumference;\n\n return (\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={color}\n strokeWidth={thickness}\n strokeDasharray={`${dashLength} ${circumference - dashLength}`}\n strokeDashoffset={0}\n strokeLinecap={roundCaps ? 'round' : 'butt'}\n className=\"ring-progress-section\"\n style={{ transform: 'rotate(-90deg)', transformOrigin: 'center' }}\n />\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn('ring-progress', className)}\n style={{\n width: size,\n height: size,\n ...style,\n }}\n {...props}\n >\n <svg width={size} height={size} className=\"ring-progress-svg\">\n {/* Background ring */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={radius}\n fill=\"none\"\n stroke={rootColor}\n strokeWidth={thickness}\n className=\"ring-progress-track\"\n />\n {/* Progress sections */}\n {renderSections()}\n </svg>\n {label && (\n <div className=\"ring-progress-label\">\n {label}\n </div>\n )}\n </div>\n );\n }\n);\n\nRingProgress.displayName = 'RingProgress';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface VisuallyHiddenProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** HTML element to render */\n as?: React.ElementType;\n /** Whether to make content focusable (shows on focus) */\n focusable?: boolean;\n}\n\nexport const VisuallyHidden = forwardRef<HTMLSpanElement, VisuallyHiddenProps>(\n ({ className, as: Component = 'span', focusable, children, ...props }, ref) => {\n return (\n <Component\n ref={ref}\n className={cn(\n 'zk-visually-hidden',\n focusable && 'zk-visually-hidden--focusable',\n className\n )}\n {...props}\n >\n {children}\n </Component>\n );\n }\n);\n\nVisuallyHidden.displayName = 'VisuallyHidden';\n\n// Inline styles for SSR/no-CSS fallback\nexport const visuallyHiddenStyles: React.CSSProperties = {\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: 0,\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n border: 0,\n};\n","'use client';\n\nimport React, { forwardRef, useEffect, useRef, useCallback } from 'react';\n\nexport interface FocusTrapProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Whether the focus trap is active */\n active?: boolean;\n /** Whether to focus the first element on mount */\n autoFocus?: boolean;\n /** Whether to return focus on unmount */\n returnFocus?: boolean;\n /** Called when escape is pressed */\n onEscape?: () => void;\n /** Initial focus element selector or ref */\n initialFocus?: string | React.RefObject<HTMLElement>;\n /** Final focus element (for return focus) */\n finalFocus?: React.RefObject<HTMLElement>;\n}\n\nconst FOCUSABLE_SELECTORS = [\n 'a[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n].join(', ');\n\nexport const FocusTrap = forwardRef<HTMLDivElement, FocusTrapProps>(\n (\n {\n children,\n active = true,\n autoFocus = true,\n returnFocus = true,\n onEscape,\n initialFocus,\n finalFocus,\n ...props\n },\n ref\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const previouslyFocused = useRef<HTMLElement | null>(null);\n\n const getFocusableElements = useCallback(() => {\n if (!containerRef.current) return [];\n return Array.from(\n containerRef.current.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTORS)\n ).filter((el) => el.offsetParent !== null);\n }, []);\n\n const focusFirst = useCallback(() => {\n if (initialFocus) {\n if (typeof initialFocus === 'string') {\n const element = containerRef.current?.querySelector<HTMLElement>(initialFocus);\n element?.focus();\n return;\n }\n initialFocus.current?.focus();\n return;\n }\n\n const focusable = getFocusableElements();\n focusable[0]?.focus();\n }, [initialFocus, getFocusableElements]);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if (!active) return;\n\n if (event.key === 'Escape') {\n onEscape?.();\n return;\n }\n\n if (event.key !== 'Tab') return;\n\n const focusable = getFocusableElements();\n if (focusable.length === 0) return;\n\n const firstElement = focusable[0];\n const lastElement = focusable[focusable.length - 1];\n\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n },\n [active, getFocusableElements, onEscape]\n );\n\n useEffect(() => {\n if (!active) return;\n\n previouslyFocused.current = document.activeElement as HTMLElement;\n\n if (autoFocus) {\n // Delay to ensure content is rendered\n requestAnimationFrame(() => {\n focusFirst();\n });\n }\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n\n if (returnFocus) {\n const focusTarget = finalFocus?.current || previouslyFocused.current;\n focusTarget?.focus();\n }\n };\n }, [active, autoFocus, returnFocus, focusFirst, handleKeyDown, finalFocus]);\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nFocusTrap.displayName = 'FocusTrap';\n","'use client';\n\nimport React, { forwardRef, useMemo } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface HighlightProps extends React.HTMLAttributes<HTMLSpanElement> {\n /** Text to highlight within */\n children: string;\n /** Query string or array of strings to highlight */\n highlight: string | string[];\n /** Color of the highlight */\n color?: 'yellow' | 'green' | 'blue' | 'red' | 'purple' | 'orange';\n /** Whether the highlight should be case sensitive */\n caseSensitive?: boolean;\n /** Custom highlight component */\n highlightComponent?: React.ElementType;\n /** Props to pass to highlight element */\n highlightProps?: React.HTMLAttributes<HTMLElement>;\n}\n\nexport const Highlight = forwardRef<HTMLSpanElement, HighlightProps>(\n (\n {\n className,\n children,\n highlight,\n color = 'yellow',\n caseSensitive = false,\n highlightComponent: HighlightComponent = 'mark',\n highlightProps,\n ...props\n },\n ref\n ) => {\n const chunks = useMemo(() => {\n if (!highlight || !children) {\n return [{ text: children, highlighted: false }];\n }\n\n const queries = Array.isArray(highlight) ? highlight : [highlight];\n const validQueries = queries.filter((q) => q.length > 0);\n\n if (validQueries.length === 0) {\n return [{ text: children, highlighted: false }];\n }\n\n const escapedQueries = validQueries.map((q) =>\n q.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n );\n\n const regex = new RegExp(\n `(${escapedQueries.join('|')})`,\n caseSensitive ? 'g' : 'gi'\n );\n\n const parts = children.split(regex);\n\n return parts.map((part) => ({\n text: part,\n highlighted: validQueries.some((q) =>\n caseSensitive ? part === q : part.toLowerCase() === q.toLowerCase()\n ),\n }));\n }, [children, highlight, caseSensitive]);\n\n return (\n <span ref={ref} className={cn('highlight', className)} {...props}>\n {chunks.map((chunk, index) =>\n chunk.highlighted ? (\n <HighlightComponent\n key={index}\n className={cn('highlight-mark', `highlight-mark--${color}`)}\n {...highlightProps}\n >\n {chunk.text}\n </HighlightComponent>\n ) : (\n <span key={index}>{chunk.text}</span>\n )\n )}\n </span>\n );\n }\n);\n\nHighlight.displayName = 'Highlight';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface IndicatorProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Position of the indicator */\n position?: 'top-start' | 'top-center' | 'top-end' | 'middle-start' | 'middle-center' | 'middle-end' | 'bottom-start' | 'bottom-center' | 'bottom-end';\n /** Color of the indicator */\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'gray';\n /** Size of the indicator */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Offset from the corner */\n offset?: number;\n /** Whether to show the indicator */\n disabled?: boolean;\n /** Whether to show a processing animation */\n processing?: boolean;\n /** Whether the indicator has a border */\n withBorder?: boolean;\n /** Label to show in the indicator */\n label?: React.ReactNode;\n /** Inline mode (no absolute positioning) */\n inline?: boolean;\n /** Z-index of the indicator */\n zIndex?: number;\n}\n\nexport const Indicator = forwardRef<HTMLDivElement, IndicatorProps>(\n (\n {\n className,\n position = 'top-end',\n color = 'primary',\n size = 'md',\n offset = 0,\n disabled,\n processing,\n withBorder = true,\n label,\n inline,\n zIndex = 100,\n children,\n style,\n ...props\n },\n ref\n ) => {\n if (disabled) {\n return <>{children}</>;\n }\n\n const [vertical, horizontal] = position.split('-') as [string, string];\n\n const getPositionStyles = (): React.CSSProperties => {\n const styles: React.CSSProperties = {};\n\n if (vertical === 'top') {\n styles.top = offset;\n } else if (vertical === 'bottom') {\n styles.bottom = offset;\n } else {\n styles.top = '50%';\n styles.transform = 'translateY(-50%)';\n }\n\n if (horizontal === 'start') {\n styles.left = offset;\n } else if (horizontal === 'end') {\n styles.right = offset;\n } else {\n styles.left = '50%';\n styles.transform = styles.transform\n ? `${styles.transform} translateX(-50%)`\n : 'translateX(-50%)';\n }\n\n return styles;\n };\n\n const indicatorElement = (\n <div\n className={cn(\n 'indicator-badge',\n `indicator-badge--${color}`,\n `indicator-badge--${size}`,\n processing && 'indicator-badge--processing',\n withBorder && 'indicator-badge--bordered',\n label && 'indicator-badge--with-label'\n )}\n style={{\n ...getPositionStyles(),\n zIndex,\n }}\n >\n {label}\n {processing && <span className=\"indicator-pulse\" />}\n </div>\n );\n\n if (inline) {\n return (\n <span\n ref={ref}\n className={cn('indicator', 'indicator-inline', className)}\n style={style}\n {...props}\n >\n {children}\n {indicatorElement}\n </span>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn('indicator', className)}\n style={style}\n {...props}\n >\n {children}\n {indicatorElement}\n </div>\n );\n }\n);\n\nIndicator.displayName = 'Indicator';\n","'use client';\n\nimport React, { forwardRef, useState, useRef, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SpoilerProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Maximum height when collapsed */\n maxHeight?: number;\n /** Label for show more button */\n showLabel?: React.ReactNode;\n /** Label for show less button */\n hideLabel?: React.ReactNode;\n /** Whether to hide the control button */\n hideControls?: boolean;\n /** Initial expanded state */\n initialExpanded?: boolean;\n /** Controlled expanded state */\n expanded?: boolean;\n /** Called when expanded state changes */\n onExpandedChange?: (expanded: boolean) => void;\n /** Transition duration in ms */\n transitionDuration?: number;\n}\n\nexport const Spoiler = forwardRef<HTMLDivElement, SpoilerProps>(\n (\n {\n className,\n maxHeight = 100,\n showLabel = 'Show more',\n hideLabel = 'Show less',\n hideControls,\n initialExpanded = false,\n expanded: controlledExpanded,\n onExpandedChange,\n transitionDuration = 300,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const [internalExpanded, setInternalExpanded] = useState(initialExpanded);\n const [showControl, setShowControl] = useState(false);\n const [contentHeight, setContentHeight] = useState(0);\n const contentRef = useRef<HTMLDivElement>(null);\n\n const isExpanded = controlledExpanded !== undefined ? controlledExpanded : internalExpanded;\n\n useEffect(() => {\n if (contentRef.current) {\n const height = contentRef.current.scrollHeight;\n setContentHeight(height);\n setShowControl(height > maxHeight);\n }\n }, [children, maxHeight]);\n\n const handleToggle = () => {\n const newExpanded = !isExpanded;\n setInternalExpanded(newExpanded);\n onExpandedChange?.(newExpanded);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-spoiler',\n isExpanded && 'zk-spoiler--expanded',\n className\n )}\n style={style}\n {...props}\n >\n <div\n ref={contentRef}\n className=\"zk-spoiler__content\"\n style={{\n maxHeight: isExpanded ? contentHeight : maxHeight,\n transitionDuration: `${transitionDuration}ms`,\n }}\n >\n {children}\n </div>\n {showControl && !hideControls && (\n <>\n {!isExpanded && <div className=\"zk-spoiler__fade\" />}\n <button\n type=\"button\"\n className=\"zk-spoiler__control\"\n onClick={handleToggle}\n aria-expanded={isExpanded}\n >\n {isExpanded ? hideLabel : showLabel}\n </button>\n </>\n )}\n </div>\n );\n }\n);\n\nSpoiler.displayName = 'Spoiler';\n","'use client';\n\nimport React, { forwardRef, createContext, useContext, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface StepperContextValue {\n activeStep: number;\n orientation: 'horizontal' | 'vertical';\n size: 'sm' | 'md' | 'lg';\n color: 'primary' | 'secondary' | 'success';\n}\n\nconst StepperContext = createContext<StepperContextValue | null>(null);\n\nexport const useStepper = () => {\n const context = useContext(StepperContext);\n if (!context) {\n throw new Error('useStepper must be used within a Stepper');\n }\n return context;\n};\n\nexport interface StepperProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current active step (0-indexed) */\n activeStep?: number;\n /** Called when step changes */\n onStepChange?: (step: number) => void;\n /** Orientation of the stepper */\n orientation?: 'horizontal' | 'vertical';\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Color variant */\n color?: 'primary' | 'secondary' | 'success';\n /** Whether to allow clicking on steps */\n allowStepClick?: boolean;\n /** Whether to show step numbers */\n showStepNumbers?: boolean;\n /** Icon for completed steps */\n completedIcon?: React.ReactNode;\n}\n\nexport const Stepper = forwardRef<HTMLDivElement, StepperProps>(\n (\n {\n className,\n activeStep = 0,\n onStepChange,\n orientation = 'horizontal',\n size = 'md',\n color = 'primary',\n allowStepClick = true,\n showStepNumbers = true,\n completedIcon = '✓',\n children,\n ...props\n },\n ref\n ) => {\n const steps = React.Children.toArray(children);\n\n const handleStepClick = useCallback(\n (index: number) => {\n if (allowStepClick) {\n onStepChange?.(index);\n }\n },\n [allowStepClick, onStepChange]\n );\n\n const contextValue: StepperContextValue = {\n activeStep,\n orientation,\n size,\n color,\n };\n\n return (\n <StepperContext.Provider value={contextValue}>\n <div\n ref={ref}\n className={cn(\n 'zk-stepper',\n `zk-stepper--${orientation}`,\n `zk-stepper--${size}`,\n `zk-stepper--${color}`,\n className\n )}\n role=\"navigation\"\n aria-label=\"Progress\"\n {...props}\n >\n {steps.map((step, index) => {\n const isCompleted = index < activeStep;\n const isActive = index === activeStep;\n\n return (\n <React.Fragment key={index}>\n <div\n className={cn(\n 'zk-stepper__step',\n isCompleted && 'zk-stepper__step--completed',\n isActive && 'zk-stepper__step--active',\n allowStepClick && 'zk-stepper__step--clickable'\n )}\n onClick={() => handleStepClick(index)}\n role={allowStepClick ? 'button' : undefined}\n tabIndex={allowStepClick ? 0 : undefined}\n aria-current={isActive ? 'step' : undefined}\n >\n <div className=\"zk-stepper__indicator\">\n {isCompleted ? completedIcon : showStepNumbers ? index + 1 : null}\n </div>\n <div className=\"zk-stepper__content\">{step}</div>\n </div>\n {index < steps.length - 1 && (\n <div\n className={cn(\n 'zk-stepper__separator',\n index < activeStep && 'zk-stepper__separator--completed'\n )}\n />\n )}\n </React.Fragment>\n );\n })}\n </div>\n </StepperContext.Provider>\n );\n }\n);\n\nStepper.displayName = 'Stepper';\n\n// Step component\nexport interface StepperStepProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Step label */\n label?: React.ReactNode;\n /** Step description */\n description?: React.ReactNode;\n /** Optional icon */\n icon?: React.ReactNode;\n /** Whether step has an error */\n error?: boolean;\n /** Whether step is loading */\n loading?: boolean;\n}\n\nexport const StepperStep = forwardRef<HTMLDivElement, StepperStepProps>(\n ({ className, label, description, icon, error, loading, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-stepper-step',\n error && 'zk-stepper-step--error',\n loading && 'zk-stepper-step--loading',\n className\n )}\n {...props}\n >\n {icon && <span className=\"zk-stepper-step__icon\">{icon}</span>}\n <div className=\"zk-stepper-step__text\">\n {label && <span className=\"zk-stepper-step__label\">{label}</span>}\n {description && <span className=\"zk-stepper-step__description\">{description}</span>}\n </div>\n {children}\n </div>\n );\n }\n);\n\nStepperStep.displayName = 'StepperStep';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface NavLinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Whether the link is active */\n active?: boolean;\n /** Label for the link */\n label?: React.ReactNode;\n /** Description text */\n description?: React.ReactNode;\n /** Left section (icon) */\n leftSection?: React.ReactNode;\n /** Right section (badge, arrow) */\n rightSection?: React.ReactNode;\n /** Whether the link is disabled */\n disabled?: boolean;\n /** Variant style */\n variant?: 'light' | 'filled' | 'subtle';\n /** Color when active */\n color?: 'primary' | 'secondary' | 'gray';\n /** Whether to show active indicator */\n noActiveIndicator?: boolean;\n /** Nested nav links */\n children?: React.ReactNode;\n /** Whether the nested links are open */\n opened?: boolean;\n /** Called when clicked */\n onClick?: (event: React.MouseEvent<HTMLAnchorElement>) => void;\n /** Component to render as */\n as?: React.ElementType;\n}\n\nexport const NavLink = forwardRef<HTMLAnchorElement, NavLinkProps>(\n (\n {\n className,\n active,\n label,\n description,\n leftSection,\n rightSection,\n disabled,\n variant = 'light',\n color = 'primary',\n noActiveIndicator,\n children,\n opened,\n onClick,\n as: Component = 'a',\n ...props\n },\n ref\n ) => {\n const hasChildren = React.Children.count(children) > 0;\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n return (\n <div className={cn('nav-link-wrapper', hasChildren && opened && 'nav-link-wrapper-opened')}>\n <Component\n ref={ref}\n className={cn(\n 'nav-link',\n `nav-link-${variant}`,\n `nav-link-${color}`,\n active && 'nav-link-active',\n disabled && 'nav-link-disabled',\n hasChildren && 'nav-link-has-children',\n !noActiveIndicator && active && 'nav-link-with-indicator',\n className\n )}\n onClick={handleClick}\n aria-disabled={disabled}\n aria-current={active ? 'page' : undefined}\n {...props}\n >\n {leftSection && (\n <span className=\"nav-link-left-section\">{leftSection}</span>\n )}\n <div className=\"nav-link-body\">\n {label && <span className=\"nav-link-label\">{label}</span>}\n {description && (\n <span className=\"nav-link-description\">{description}</span>\n )}\n </div>\n {(rightSection || hasChildren) && (\n <span className=\"nav-link-right-section\">\n {rightSection}\n {hasChildren && (\n <span className={cn('nav-link-chevron', opened && 'nav-link-chevron--opened')}>\n ▼\n </span>\n )}\n </span>\n )}\n </Component>\n {hasChildren && opened && (\n <div className=\"nav-link-children\">{children}</div>\n )}\n </div>\n );\n }\n);\n\nNavLink.displayName = 'NavLink';\n","'use client';\n\nimport React, { forwardRef, useMemo } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ChartDataPoint {\n label: string;\n value: number;\n color?: string;\n}\n\nexport interface ChartProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Chart data */\n data: ChartDataPoint[];\n /** Chart type */\n type?: 'bar' | 'line' | 'pie' | 'donut';\n /** Chart height */\n height?: number;\n /** Chart width */\n width?: number | string;\n /** Whether to show labels */\n showLabels?: boolean;\n /** Whether to show values */\n showValues?: boolean;\n /** Whether to show legend */\n showLegend?: boolean;\n /** Whether to show grid lines */\n showGrid?: boolean;\n /** Color palette */\n colors?: string[];\n /** Animation duration in ms */\n animationDuration?: number;\n /** Whether chart is loading */\n loading?: boolean;\n /** Empty state message */\n emptyMessage?: string;\n}\n\nconst defaultColors = [\n '#228be6', '#40c057', '#fab005', '#fa5252', '#7950f2',\n '#15aabf', '#82c91e', '#fd7e14', '#e64980', '#be4bdb',\n];\n\nexport const Chart = forwardRef<HTMLDivElement, ChartProps>(\n (\n {\n className,\n data,\n type = 'bar',\n height = 300,\n width = '100%',\n showLabels = true,\n showValues = false,\n showLegend = true,\n showGrid = true,\n colors = defaultColors,\n animationDuration = 500,\n loading,\n emptyMessage = 'No data available',\n style,\n ...props\n },\n ref\n ) => {\n const maxValue = useMemo(() => Math.max(...data.map((d) => d.value), 0), [data]);\n const total = useMemo(() => data.reduce((sum, d) => sum + d.value, 0), [data]);\n\n const getColor = (index: number) => colors[index % colors.length];\n\n const renderBarChart = () => {\n if (data.length === 0) {\n return <div className=\"zk-chart__empty\">{emptyMessage}</div>;\n }\n\n const barWidth = 100 / data.length;\n\n return (\n <div className=\"zk-chart__bar-container\">\n {showGrid && (\n <div className=\"zk-chart__grid\">\n {[0, 25, 50, 75, 100].map((percent) => (\n <div key={percent} className=\"zk-chart__grid-line\" style={{ bottom: `${percent}%` }}>\n <span className=\"zk-chart__grid-label\">\n {Math.round((maxValue * percent) / 100)}\n </span>\n </div>\n ))}\n </div>\n )}\n <div className=\"zk-chart__bars\">\n {data.map((item, index) => {\n const barHeight = maxValue > 0 ? (item.value / maxValue) * 100 : 0;\n return (\n <div\n key={index}\n className=\"zk-chart__bar-wrapper\"\n style={{ width: `${barWidth}%` }}\n >\n <div\n className=\"zk-chart__bar\"\n style={{\n height: `${barHeight}%`,\n backgroundColor: item.color || getColor(index),\n transitionDuration: `${animationDuration}ms`,\n }}\n >\n {showValues && (\n <span className=\"zk-chart__bar-value\">{item.value}</span>\n )}\n </div>\n {showLabels && (\n <span className=\"zk-chart__bar-label\">{item.label}</span>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n };\n\n const renderPieChart = () => {\n if (data.length === 0 || total === 0) {\n return <div className=\"zk-chart__empty\">{emptyMessage}</div>;\n }\n\n let cumulativePercent = 0;\n const isDonut = type === 'donut';\n\n return (\n <div className=\"zk-chart__pie-container\">\n <svg viewBox=\"0 0 100 100\" className=\"zk-chart__pie\">\n {data.map((item, index) => {\n const percent = (item.value / total) * 100;\n const startAngle = cumulativePercent * 3.6;\n cumulativePercent += percent;\n const endAngle = cumulativePercent * 3.6;\n\n const startX = 50 + 40 * Math.cos((Math.PI * (startAngle - 90)) / 180);\n const startY = 50 + 40 * Math.sin((Math.PI * (startAngle - 90)) / 180);\n const endX = 50 + 40 * Math.cos((Math.PI * (endAngle - 90)) / 180);\n const endY = 50 + 40 * Math.sin((Math.PI * (endAngle - 90)) / 180);\n\n const largeArc = percent > 50 ? 1 : 0;\n\n const pathD = isDonut\n ? `M ${startX} ${startY} A 40 40 0 ${largeArc} 1 ${endX} ${endY}`\n : `M 50 50 L ${startX} ${startY} A 40 40 0 ${largeArc} 1 ${endX} ${endY} Z`;\n\n return (\n <path\n key={index}\n d={pathD}\n fill={isDonut ? 'none' : item.color || getColor(index)}\n stroke={isDonut ? item.color || getColor(index) : 'white'}\n strokeWidth={isDonut ? 15 : 1}\n className=\"zk-chart__pie-slice\"\n style={{\n transitionDuration: `${animationDuration}ms`,\n }}\n >\n <title>{`${item.label}: ${item.value} (${percent.toFixed(1)}%)`}</title>\n </path>\n );\n })}\n </svg>\n </div>\n );\n };\n\n const renderLineChart = () => {\n if (data.length === 0) {\n return <div className=\"zk-chart__empty\">{emptyMessage}</div>;\n }\n\n const points = data.map((item, index) => {\n const x = (index / (data.length - 1 || 1)) * 100;\n const y = maxValue > 0 ? 100 - (item.value / maxValue) * 100 : 100;\n return { x, y, ...item };\n });\n\n const pathD = points.map((p, i) => `${i === 0 ? 'M' : 'L'} ${p.x} ${p.y}`).join(' ');\n\n return (\n <div className=\"zk-chart__line-container\">\n {showGrid && (\n <div className=\"zk-chart__grid\">\n {[0, 25, 50, 75, 100].map((percent) => (\n <div key={percent} className=\"zk-chart__grid-line\" style={{ bottom: `${percent}%` }} />\n ))}\n </div>\n )}\n <svg viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" className=\"zk-chart__line-svg\">\n <path\n d={pathD}\n fill=\"none\"\n stroke={colors[0]}\n strokeWidth=\"2\"\n vectorEffect=\"non-scaling-stroke\"\n className=\"zk-chart__line-path\"\n />\n {points.map((point, index) => (\n <circle\n key={index}\n cx={point.x}\n cy={point.y}\n r=\"3\"\n fill={colors[0]}\n className=\"zk-chart__line-point\"\n >\n <title>{`${point.label}: ${point.value}`}</title>\n </circle>\n ))}\n </svg>\n {showLabels && (\n <div className=\"zk-chart__line-labels\">\n {data.map((item, index) => (\n <span key={index} className=\"zk-chart__line-label\">\n {item.label}\n </span>\n ))}\n </div>\n )}\n </div>\n );\n };\n\n const renderChart = () => {\n switch (type) {\n case 'pie':\n case 'donut':\n return renderPieChart();\n case 'line':\n return renderLineChart();\n case 'bar':\n default:\n return renderBarChart();\n }\n };\n\n const renderLegend = () => {\n if (!showLegend || data.length === 0) return null;\n\n return (\n <div className=\"zk-chart__legend\">\n {data.map((item, index) => (\n <div key={index} className=\"zk-chart__legend-item\">\n <span\n className=\"zk-chart__legend-color\"\n style={{ backgroundColor: item.color || getColor(index) }}\n />\n <span className=\"zk-chart__legend-label\">{item.label}</span>\n {showValues && (\n <span className=\"zk-chart__legend-value\">{item.value}</span>\n )}\n </div>\n ))}\n </div>\n );\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-chart',\n `zk-chart--${type}`,\n loading && 'zk-chart--loading',\n className\n )}\n style={{\n height,\n width,\n ...style,\n }}\n {...props}\n >\n {loading ? (\n <div className=\"zk-chart__loading\">Loading...</div>\n ) : (\n <>\n {renderChart()}\n {renderLegend()}\n </>\n )}\n </div>\n );\n }\n);\n\nChart.displayName = 'Chart';\n","'use client';\n\nimport React, { forwardRef, useState, useCallback, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface JsonInputProps extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, 'value' | 'onChange'> {\n /** Current JSON value */\n value?: string;\n /** Default JSON value */\n defaultValue?: string;\n /** Called when value changes */\n onChange?: (value: string) => void;\n /** Called when JSON is valid/invalid */\n onValidationChange?: (isValid: boolean, error?: string) => void;\n /** Whether to validate on change */\n validateOnChange?: boolean;\n /** Whether to format on blur */\n formatOnBlur?: boolean;\n /** Indentation spaces */\n indentation?: number;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Minimum rows */\n minRows?: number;\n /** Maximum rows */\n maxRows?: number;\n /** Label */\n label?: React.ReactNode;\n /** Error message */\n error?: React.ReactNode;\n /** Whether to show line numbers */\n showLineNumbers?: boolean;\n}\n\nexport const JsonInput = forwardRef<HTMLTextAreaElement, JsonInputProps>(\n (\n {\n className,\n value,\n defaultValue = '',\n onChange,\n onValidationChange,\n validateOnChange = true,\n formatOnBlur = true,\n indentation = 2,\n size = 'md',\n minRows = 4,\n maxRows = 20,\n label,\n error,\n showLineNumbers,\n disabled,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [validationError, setValidationError] = useState<string | null>(null);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const validateJson = useCallback((jsonString: string): { isValid: boolean; error?: string } => {\n if (!jsonString.trim()) {\n return { isValid: true };\n }\n try {\n JSON.parse(jsonString);\n return { isValid: true };\n } catch (e) {\n return { isValid: false, error: (e as Error).message };\n }\n }, []);\n\n const formatJson = useCallback(\n (jsonString: string): string => {\n try {\n const parsed = JSON.parse(jsonString);\n return JSON.stringify(parsed, null, indentation);\n } catch {\n return jsonString;\n }\n },\n [indentation]\n );\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n setInternalValue(newValue);\n onChange?.(newValue);\n\n if (validateOnChange) {\n const result = validateJson(newValue);\n setValidationError(result.isValid ? null : result.error || 'Invalid JSON');\n onValidationChange?.(result.isValid, result.error);\n }\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLTextAreaElement>) => {\n if (formatOnBlur) {\n const result = validateJson(currentValue);\n if (result.isValid && currentValue.trim()) {\n const formatted = formatJson(currentValue);\n setInternalValue(formatted);\n onChange?.(formatted);\n }\n }\n props.onBlur?.(e);\n };\n\n useEffect(() => {\n if (validateOnChange && currentValue) {\n const result = validateJson(currentValue);\n setValidationError(result.isValid ? null : result.error || 'Invalid JSON');\n }\n }, [currentValue, validateOnChange, validateJson]);\n\n const lineCount = currentValue.split('\\n').length;\n const rows = Math.min(Math.max(lineCount, minRows), maxRows);\n\n const displayError = error || validationError;\n\n return (\n <div\n className={cn(\n 'zk-json-input',\n `zk-json-input--${size}`,\n displayError && 'zk-json-input--error',\n disabled && 'zk-json-input--disabled',\n className\n )}\n >\n {label && <label className=\"zk-json-input__label\">{label}</label>}\n <div className=\"zk-json-input__container\">\n {showLineNumbers && (\n <div className=\"zk-json-input__line-numbers\">\n {Array.from({ length: rows }).map((_, i) => (\n <span key={i} className=\"zk-json-input__line-number\">\n {i + 1}\n </span>\n ))}\n </div>\n )}\n <textarea\n ref={ref}\n className=\"zk-json-input__textarea\"\n value={currentValue}\n onChange={handleChange}\n onBlur={handleBlur}\n rows={rows}\n disabled={disabled}\n spellCheck={false}\n {...props}\n />\n </div>\n {displayError && (\n <div className=\"zk-json-input__error\">{displayError}</div>\n )}\n </div>\n );\n }\n);\n\nJsonInput.displayName = 'JsonInput';\n","'use client';\n\nimport React, { forwardRef, useState, useRef, useCallback, useEffect } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface AngleSliderProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Current angle value (0-360) */\n value?: number;\n /** Default angle value */\n defaultValue?: number;\n /** Called when angle changes */\n onChange?: (value: number) => void;\n /** Size of the slider */\n size?: number;\n /** Whether the slider is disabled */\n disabled?: boolean;\n /** Step increment */\n step?: number;\n /** Color of the track */\n trackColor?: string;\n /** Color of the thumb */\n thumbColor?: string;\n /** Whether to show the value label */\n showValue?: boolean;\n /** Format function for the value */\n formatValue?: (value: number) => string;\n /** Label */\n label?: React.ReactNode;\n}\n\nexport const AngleSlider = forwardRef<HTMLDivElement, AngleSliderProps>(\n (\n {\n className,\n value,\n defaultValue = 0,\n onChange,\n size = 100,\n disabled,\n step = 1,\n trackColor = '#e9ecef',\n thumbColor = '#228be6',\n showValue = true,\n formatValue = (v) => `${Math.round(v)}°`,\n label,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState(defaultValue);\n const [isDragging, setIsDragging] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const currentValue = value !== undefined ? value : internalValue;\n\n const getAngleFromPosition = useCallback(\n (clientX: number, clientY: number) => {\n if (!containerRef.current) return currentValue;\n\n const rect = containerRef.current.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const centerY = rect.top + rect.height / 2;\n\n const dx = clientX - centerX;\n const dy = clientY - centerY;\n\n let angle = Math.atan2(dy, dx) * (180 / Math.PI) + 90;\n if (angle < 0) angle += 360;\n\n // Apply step\n angle = Math.round(angle / step) * step;\n if (angle >= 360) angle = 0;\n\n return angle;\n },\n [currentValue, step]\n );\n\n const updateValue = useCallback(\n (newValue: number) => {\n setInternalValue(newValue);\n onChange?.(newValue);\n },\n [onChange]\n );\n\n const handleMouseDown = (e: React.MouseEvent) => {\n if (disabled) return;\n e.preventDefault();\n setIsDragging(true);\n const angle = getAngleFromPosition(e.clientX, e.clientY);\n updateValue(angle);\n };\n\n useEffect(() => {\n if (!isDragging) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const angle = getAngleFromPosition(e.clientX, e.clientY);\n updateValue(angle);\n };\n\n const handleMouseUp = () => {\n setIsDragging(false);\n };\n\n document.addEventListener('mousemove', handleMouseMove);\n document.addEventListener('mouseup', handleMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMouseMove);\n document.removeEventListener('mouseup', handleMouseUp);\n };\n }, [isDragging, getAngleFromPosition, updateValue]);\n\n const thumbX = Math.sin((currentValue * Math.PI) / 180) * (size / 2 - 10) + size / 2;\n const thumbY = -Math.cos((currentValue * Math.PI) / 180) * (size / 2 - 10) + size / 2;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-angle-slider',\n disabled && 'zk-angle-slider--disabled',\n isDragging && 'zk-angle-slider--dragging',\n className\n )}\n {...props}\n >\n {label && <div className=\"zk-angle-slider__label\">{label}</div>}\n <div\n ref={containerRef}\n className=\"zk-angle-slider__container\"\n style={{ width: size, height: size }}\n onMouseDown={handleMouseDown}\n >\n {/* Track */}\n <svg\n width={size}\n height={size}\n className=\"zk-angle-slider__track\"\n >\n <circle\n cx={size / 2}\n cy={size / 2}\n r={size / 2 - 10}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth=\"4\"\n />\n {/* Value arc */}\n <circle\n cx={size / 2}\n cy={size / 2}\n r={size / 2 - 10}\n fill=\"none\"\n stroke={thumbColor}\n strokeWidth=\"4\"\n strokeDasharray={`${(currentValue / 360) * 2 * Math.PI * (size / 2 - 10)} ${2 * Math.PI * (size / 2 - 10)}`}\n strokeDashoffset={2 * Math.PI * (size / 2 - 10) * 0.25}\n style={{ transform: 'rotate(-90deg)', transformOrigin: 'center' }}\n />\n </svg>\n {/* Thumb */}\n <div\n className=\"zk-angle-slider__thumb\"\n style={{\n left: thumbX,\n top: thumbY,\n backgroundColor: thumbColor,\n }}\n />\n {/* Center indicator */}\n <div className=\"zk-angle-slider__center\" />\n </div>\n {showValue && (\n <div className=\"zk-angle-slider__value\">{formatValue(currentValue)}</div>\n )}\n </div>\n );\n }\n);\n\nAngleSlider.displayName = 'AngleSlider';\n","'use client';\n\nimport React, { forwardRef, useState, useEffect, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface TableOfContentsItem {\n id: string;\n label: string;\n level: number;\n children?: TableOfContentsItem[];\n}\n\nexport interface TableOfContentsProps extends React.HTMLAttributes<HTMLElement> {\n /** Items to display */\n items?: TableOfContentsItem[];\n /** Active item ID */\n activeId?: string;\n /** Called when item is clicked */\n onItemClick?: (id: string) => void;\n /** Whether to highlight based on scroll position */\n highlightOnScroll?: boolean;\n /** Selector for heading elements to auto-generate items */\n headingSelector?: string;\n /** Offset for scroll spy */\n scrollOffset?: number;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Maximum heading level to include */\n maxLevel?: number;\n /** Whether to show line connector */\n withLine?: boolean;\n /** Label for the TOC */\n label?: React.ReactNode;\n}\n\nexport const TableOfContents = forwardRef<HTMLElement, TableOfContentsProps>(\n (\n {\n className,\n items: propItems,\n activeId: propActiveId,\n onItemClick,\n highlightOnScroll = true,\n headingSelector = 'h2, h3, h4',\n scrollOffset = 100,\n size = 'md',\n maxLevel = 3,\n withLine = true,\n label = 'Table of Contents',\n ...props\n },\n ref\n ) => {\n const [items, setItems] = useState<TableOfContentsItem[]>(propItems || []);\n const [activeId, setActiveId] = useState<string | undefined>(propActiveId);\n\n // Auto-generate items from headings\n useEffect(() => {\n if (propItems) {\n setItems(propItems);\n return;\n }\n\n const headings = document.querySelectorAll(headingSelector);\n const generatedItems: TableOfContentsItem[] = [];\n\n headings.forEach((heading) => {\n const level = parseInt(heading.tagName.charAt(1), 10);\n if (level <= maxLevel) {\n const id = heading.id || heading.textContent?.toLowerCase().replace(/\\s+/g, '-') || '';\n if (!heading.id) {\n heading.id = id;\n }\n generatedItems.push({\n id,\n label: heading.textContent || '',\n level,\n });\n }\n });\n\n setItems(generatedItems);\n }, [propItems, headingSelector, maxLevel]);\n\n // Scroll spy\n useEffect(() => {\n if (!highlightOnScroll || propActiveId !== undefined) return;\n\n const handleScroll = () => {\n const headings = items.map((item) => document.getElementById(item.id)).filter(Boolean);\n\n for (let i = headings.length - 1; i >= 0; i--) {\n const heading = headings[i];\n if (heading) {\n const rect = heading.getBoundingClientRect();\n if (rect.top <= scrollOffset) {\n setActiveId(items[i].id);\n return;\n }\n }\n }\n\n if (headings.length > 0) {\n setActiveId(items[0].id);\n }\n };\n\n window.addEventListener('scroll', handleScroll, { passive: true });\n handleScroll(); // Initial check\n\n return () => window.removeEventListener('scroll', handleScroll);\n }, [items, highlightOnScroll, propActiveId, scrollOffset]);\n\n useEffect(() => {\n if (propActiveId !== undefined) {\n setActiveId(propActiveId);\n }\n }, [propActiveId]);\n\n const handleClick = useCallback(\n (id: string) => {\n const element = document.getElementById(id);\n if (element) {\n const top = element.getBoundingClientRect().top + window.scrollY - scrollOffset;\n window.scrollTo({ top, behavior: 'smooth' });\n }\n setActiveId(id);\n onItemClick?.(id);\n },\n [scrollOffset, onItemClick]\n );\n\n const renderItems = (itemList: TableOfContentsItem[]) => {\n return (\n <ul className=\"zk-toc__list\">\n {itemList.map((item) => (\n <li\n key={item.id}\n className={cn(\n 'zk-toc__item',\n `zk-toc__item--level-${item.level}`,\n activeId === item.id && 'zk-toc__item--active'\n )}\n >\n <button\n type=\"button\"\n className=\"zk-toc__link\"\n onClick={() => handleClick(item.id)}\n >\n {item.label}\n </button>\n {item.children && item.children.length > 0 && renderItems(item.children)}\n </li>\n ))}\n </ul>\n );\n };\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <nav\n ref={ref}\n className={cn(\n 'zk-toc',\n `zk-toc--${size}`,\n withLine && 'zk-toc--with-line',\n className\n )}\n aria-label=\"Table of contents\"\n {...props}\n >\n {label && <div className=\"zk-toc__label\">{label}</div>}\n {renderItems(items)}\n </nav>\n );\n }\n);\n\nTableOfContents.displayName = 'TableOfContents';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SemiCircleProgressProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Progress value (0-100) */\n value?: number;\n /** Size of the component */\n size?: number;\n /** Thickness of the progress arc */\n thickness?: number;\n /** Color of the progress */\n color?: string;\n /** Color of the track */\n trackColor?: string;\n /** Label to show */\n label?: React.ReactNode;\n /** Whether to show percentage */\n showPercentage?: boolean;\n /** Format function for percentage */\n formatPercentage?: (value: number) => string;\n /** Orientation */\n orientation?: 'up' | 'down';\n /** Whether to animate */\n animate?: boolean;\n}\n\nexport const SemiCircleProgress = forwardRef<HTMLDivElement, SemiCircleProgressProps>(\n (\n {\n className,\n value = 0,\n size = 200,\n thickness = 20,\n color = '#228be6',\n trackColor = '#e9ecef',\n label,\n showPercentage = true,\n formatPercentage = (v) => `${Math.round(v)}%`,\n orientation = 'up',\n animate = true,\n style,\n ...props\n },\n ref\n ) => {\n const clampedValue = Math.max(0, Math.min(100, value));\n const radius = (size - thickness) / 2;\n const circumference = Math.PI * radius;\n const progress = (clampedValue / 100) * circumference;\n\n const isDown = orientation === 'down';\n const viewBox = isDown ? `0 0 ${size} ${size / 2 + thickness / 2}` : `0 ${size / 2 - thickness / 2} ${size} ${size / 2 + thickness / 2}`;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-semi-circle-progress',\n `zk-semi-circle-progress--${orientation}`,\n animate && 'zk-semi-circle-progress--animate',\n className\n )}\n style={{\n width: size,\n height: size / 2 + thickness / 2,\n ...style,\n }}\n {...props}\n >\n <svg\n width={size}\n height={size / 2 + thickness / 2}\n viewBox={viewBox}\n className=\"zk-semi-circle-progress__svg\"\n >\n {/* Track */}\n <path\n d={\n isDown\n ? `M ${thickness / 2} ${thickness / 2} A ${radius} ${radius} 0 0 1 ${size - thickness / 2} ${thickness / 2}`\n : `M ${thickness / 2} ${size / 2} A ${radius} ${radius} 0 0 1 ${size - thickness / 2} ${size / 2}`\n }\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n />\n {/* Progress */}\n <path\n d={\n isDown\n ? `M ${thickness / 2} ${thickness / 2} A ${radius} ${radius} 0 0 1 ${size - thickness / 2} ${thickness / 2}`\n : `M ${thickness / 2} ${size / 2} A ${radius} ${radius} 0 0 1 ${size - thickness / 2} ${size / 2}`\n }\n fill=\"none\"\n stroke={color}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n strokeDasharray={`${progress} ${circumference}`}\n className=\"zk-semi-circle-progress__progress\"\n />\n </svg>\n <div className=\"zk-semi-circle-progress__content\">\n {showPercentage && (\n <div className=\"zk-semi-circle-progress__value\">\n {formatPercentage(clampedValue)}\n </div>\n )}\n {label && <div className=\"zk-semi-circle-progress__label\">{label}</div>}\n </div>\n </div>\n );\n }\n);\n\nSemiCircleProgress.displayName = 'SemiCircleProgress';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface CheckboxCardProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n /** Card label/title */\n label?: React.ReactNode;\n /** Card description */\n description?: React.ReactNode;\n /** Icon or image to display */\n icon?: React.ReactNode;\n /** Whether the card is checked */\n checked?: boolean;\n /** Default checked state */\n defaultChecked?: boolean;\n /** Called when checked state changes */\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** Whether the checkbox is inside or overlaid */\n checkboxPosition?: 'top-start' | 'top-end' | 'hidden';\n /** Whether to show as radio instead of checkbox */\n radio?: boolean;\n /** Border radius */\n radius?: 'sm' | 'md' | 'lg';\n}\n\nexport const CheckboxCard = forwardRef<HTMLInputElement, CheckboxCardProps>(\n (\n {\n className,\n label,\n description,\n icon,\n checked,\n defaultChecked,\n onChange,\n size = 'md',\n checkboxPosition = 'top-end',\n radio,\n radius = 'md',\n disabled,\n name,\n value,\n ...props\n },\n ref\n ) => {\n return (\n <label\n className={cn(\n 'zk-checkbox-card',\n `zk-checkbox-card--${size}`,\n `zk-checkbox-card--radius-${radius}`,\n `zk-checkbox-card--checkbox-${checkboxPosition}`,\n checked && 'zk-checkbox-card--checked',\n disabled && 'zk-checkbox-card--disabled',\n className\n )}\n >\n <input\n ref={ref}\n type={radio ? 'radio' : 'checkbox'}\n className=\"zk-checkbox-card__input\"\n checked={checked}\n defaultChecked={defaultChecked}\n onChange={onChange}\n disabled={disabled}\n name={name}\n value={value}\n {...props}\n />\n {checkboxPosition !== 'hidden' && (\n <span className=\"zk-checkbox-card__checkbox\">\n {radio ? (\n <span className=\"zk-checkbox-card__radio-indicator\" />\n ) : (\n <span className=\"zk-checkbox-card__check-indicator\">✓</span>\n )}\n </span>\n )}\n <div className=\"zk-checkbox-card__content\">\n {icon && <div className=\"zk-checkbox-card__icon\">{icon}</div>}\n <div className=\"zk-checkbox-card__text\">\n {label && <div className=\"zk-checkbox-card__label\">{label}</div>}\n {description && (\n <div className=\"zk-checkbox-card__description\">{description}</div>\n )}\n </div>\n </div>\n </label>\n );\n }\n);\n\nCheckboxCard.displayName = 'CheckboxCard';\n","'use client';\n\nimport React, { forwardRef, useState, useRef, useEffect, useCallback } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ScrollShadowProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Orientation of scroll */\n orientation?: 'horizontal' | 'vertical' | 'both';\n /** Shadow size */\n shadowSize?: number;\n /** Shadow color */\n shadowColor?: string;\n /** Whether to hide scrollbar */\n hideScrollbar?: boolean;\n /** Offset before showing shadow */\n offset?: number;\n}\n\nexport const ScrollShadow = forwardRef<HTMLDivElement, ScrollShadowProps>(\n (\n {\n className,\n orientation = 'vertical',\n shadowSize = 40,\n shadowColor = 'rgba(0, 0, 0, 0.1)',\n hideScrollbar,\n offset = 0,\n children,\n style,\n onScroll,\n ...props\n },\n ref\n ) => {\n const [scrollState, setScrollState] = useState({\n top: false,\n bottom: false,\n left: false,\n right: false,\n });\n const containerRef = useRef<HTMLDivElement>(null);\n\n const updateShadows = useCallback(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const {\n scrollTop,\n scrollLeft,\n scrollHeight,\n scrollWidth,\n clientHeight,\n clientWidth,\n } = container;\n\n const canScrollVertical = scrollHeight > clientHeight;\n const canScrollHorizontal = scrollWidth > clientWidth;\n\n setScrollState({\n top: canScrollVertical && scrollTop > offset,\n bottom: canScrollVertical && scrollTop < scrollHeight - clientHeight - offset,\n left: canScrollHorizontal && scrollLeft > offset,\n right: canScrollHorizontal && scrollLeft < scrollWidth - clientWidth - offset,\n });\n }, [offset]);\n\n useEffect(() => {\n updateShadows();\n window.addEventListener('resize', updateShadows);\n return () => window.removeEventListener('resize', updateShadows);\n }, [updateShadows]);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n updateShadows();\n onScroll?.(e);\n };\n\n const showVertical = orientation === 'vertical' || orientation === 'both';\n const showHorizontal = orientation === 'horizontal' || orientation === 'both';\n\n return (\n <div\n className={cn(\n 'zk-scroll-shadow',\n `zk-scroll-shadow--${orientation}`,\n scrollState.top && showVertical && 'zk-scroll-shadow--top',\n scrollState.bottom && showVertical && 'zk-scroll-shadow--bottom',\n scrollState.left && showHorizontal && 'zk-scroll-shadow--left',\n scrollState.right && showHorizontal && 'zk-scroll-shadow--right',\n hideScrollbar && 'zk-scroll-shadow--hide-scrollbar',\n className\n )}\n style={{\n '--scroll-shadow-size': `${shadowSize}px`,\n '--scroll-shadow-color': shadowColor,\n ...style,\n } as React.CSSProperties}\n {...props}\n >\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n }}\n className=\"zk-scroll-shadow__content\"\n onScroll={handleScroll}\n >\n {children}\n </div>\n </div>\n );\n }\n);\n\nScrollShadow.displayName = 'ScrollShadow';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ColorSwatchProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Color to display */\n color: string;\n /** Size of the swatch */\n size?: number | 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n /** Border radius */\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full';\n /** Whether to show a border */\n withShadow?: boolean;\n /** Whether the swatch is selected */\n selected?: boolean;\n /** Children to render inside (e.g., checkmark) */\n children?: React.ReactNode;\n}\n\nexport const ColorSwatch = forwardRef<HTMLDivElement, ColorSwatchProps>(\n (\n {\n className,\n color,\n size = 'md',\n radius = 'md',\n withShadow,\n selected,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const sizeMap: Record<string, number> = {\n xs: 16,\n sm: 20,\n md: 28,\n lg: 36,\n xl: 48,\n };\n\n const numericSize = typeof size === 'number' ? size : sizeMap[size] || 28;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-color-swatch',\n `zk-color-swatch--radius-${radius}`,\n withShadow && 'zk-color-swatch--with-shadow',\n selected && 'zk-color-swatch--selected',\n className\n )}\n style={{\n backgroundColor: color,\n width: numericSize,\n height: numericSize,\n ...style,\n }}\n role=\"img\"\n aria-label={`Color: ${color}`}\n {...props}\n >\n {children}\n {/* Transparency pattern for transparent colors */}\n <div className=\"zk-color-swatch__pattern\" />\n {/* Color overlay */}\n <div\n className=\"zk-color-swatch__color\"\n style={{ backgroundColor: color }}\n />\n {/* Children (checkmark, etc.) */}\n {children && <div className=\"zk-color-swatch__content\">{children}</div>}\n </div>\n );\n }\n);\n\nColorSwatch.displayName = 'ColorSwatch';\n","'use client';\n\nimport React, { forwardRef } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ThemeIconProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Size of the icon container */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | number;\n /** Border radius */\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'full';\n /** Color variant */\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'error' | 'gray';\n /** Variant style */\n variant?: 'filled' | 'light' | 'outline' | 'gradient';\n /** Gradient (when variant is gradient) */\n gradient?: { from: string; to: string; deg?: number };\n /** Custom background color */\n bg?: string;\n /** Custom icon color */\n iconColor?: string;\n}\n\nexport const ThemeIcon = forwardRef<HTMLDivElement, ThemeIconProps>(\n (\n {\n className,\n size = 'md',\n radius = 'md',\n color = 'primary',\n variant = 'filled',\n gradient,\n bg,\n iconColor,\n children,\n style,\n ...props\n },\n ref\n ) => {\n const sizeMap: Record<string, number> = {\n xs: 24,\n sm: 32,\n md: 40,\n lg: 52,\n xl: 64,\n };\n\n const numericSize = typeof size === 'number' ? size : sizeMap[size] || 40;\n\n const gradientStyle = gradient\n ? {\n background: `linear-gradient(${gradient.deg || 45}deg, ${gradient.from}, ${gradient.to})`,\n }\n : undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-theme-icon',\n `zk-theme-icon--${variant}`,\n `zk-theme-icon--${color}`,\n `zk-theme-icon--radius-${radius}`,\n className\n )}\n style={{\n width: numericSize,\n height: numericSize,\n backgroundColor: bg,\n color: iconColor,\n ...gradientStyle,\n ...style,\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nThemeIcon.displayName = 'ThemeIcon';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface DateTimePickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'> {\n /** Selected date and time */\n value?: Date | null;\n /** On change callback */\n onChange?: (date: Date | null) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Date format */\n format?: string;\n /** Minimum date */\n minDate?: Date;\n /** Maximum date */\n maxDate?: Date;\n /** Clearable */\n clearable?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Time step in minutes */\n timeStep?: number;\n /** 12 or 24 hour format */\n hourFormat?: '12' | '24';\n}\n\nconst DAYS = ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\nconst MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nconst formatDateTime = (date: Date, format: string = 'MM/DD/YYYY HH:mm', hourFormat: '12' | '24' = '24'): string => {\n const day = date.getDate().toString().padStart(2, '0');\n const month = (date.getMonth() + 1).toString().padStart(2, '0');\n const year = date.getFullYear();\n let hours = date.getHours();\n const minutes = date.getMinutes().toString().padStart(2, '0');\n let period = '';\n\n if (hourFormat === '12') {\n period = hours >= 12 ? ' PM' : ' AM';\n hours = hours % 12 || 12;\n }\n\n const hoursStr = hours.toString().padStart(2, '0');\n return format\n .replace('DD', day)\n .replace('MM', month)\n .replace('YYYY', year.toString())\n .replace('HH', hoursStr)\n .replace('mm', minutes) + (hourFormat === '12' ? period : '');\n};\n\nexport const DateTimePicker = forwardRef<HTMLInputElement, DateTimePickerProps>(\n (\n {\n value,\n onChange,\n placeholder = 'Select date and time',\n format = 'MM/DD/YYYY HH:mm',\n minDate,\n maxDate,\n clearable = true,\n size = 'md',\n error = false,\n timeStep = 15,\n hourFormat = '24',\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [viewDate, setViewDate] = useState(value || new Date());\n const [selectedHour, setSelectedHour] = useState(value?.getHours() || 12);\n const [selectedMinute, setSelectedMinute] = useState(value?.getMinutes() || 0);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n useEffect(() => {\n if (value) {\n setSelectedHour(value.getHours());\n setSelectedMinute(value.getMinutes());\n }\n }, [value]);\n\n const getDaysInMonth = (date: Date) => {\n const year = date.getFullYear();\n const month = date.getMonth();\n const firstDay = new Date(year, month, 1).getDay();\n const daysInMonth = new Date(year, month + 1, 0).getDate();\n const daysInPrevMonth = new Date(year, month, 0).getDate();\n\n const days: { date: Date; isCurrentMonth: boolean }[] = [];\n\n for (let i = firstDay - 1; i >= 0; i--) {\n days.push({\n date: new Date(year, month - 1, daysInPrevMonth - i),\n isCurrentMonth: false,\n });\n }\n\n for (let i = 1; i <= daysInMonth; i++) {\n days.push({\n date: new Date(year, month, i),\n isCurrentMonth: true,\n });\n }\n\n const remaining = 42 - days.length;\n for (let i = 1; i <= remaining; i++) {\n days.push({\n date: new Date(year, month + 1, i),\n isCurrentMonth: false,\n });\n }\n\n return days;\n };\n\n const isDisabled = (date: Date) => {\n if (minDate && date < minDate) return true;\n if (maxDate && date > maxDate) return true;\n return false;\n };\n\n const isSelected = (date: Date) => {\n return value?.toDateString() === date.toDateString();\n };\n\n const isToday = (date: Date) => {\n return new Date().toDateString() === date.toDateString();\n };\n\n const handleSelect = (date: Date) => {\n if (isDisabled(date)) return;\n const newDate = new Date(date);\n newDate.setHours(selectedHour, selectedMinute, 0, 0);\n onChange?.(newDate);\n };\n\n const handleTimeChange = (hour: number, minute: number) => {\n setSelectedHour(hour);\n setSelectedMinute(minute);\n if (value) {\n const newDate = new Date(value);\n newDate.setHours(hour, minute, 0, 0);\n onChange?.(newDate);\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(null);\n };\n\n const navigateMonth = (delta: number) => {\n setViewDate(new Date(viewDate.getFullYear(), viewDate.getMonth() + delta, 1));\n };\n\n const hours = hourFormat === '12' ? Array.from({ length: 12 }, (_, i) => i + 1) : Array.from({ length: 24 }, (_, i) => i);\n const minutes = Array.from({ length: 60 / timeStep }, (_, i) => i * timeStep);\n\n return (\n <div ref={containerRef} className={cn('datetime-picker', `datetime-picker-${size}`, className)}>\n <div\n className={cn(\n 'datetime-picker-input',\n error && 'datetime-picker-input--error',\n disabled && 'datetime-picker-input--disabled',\n open && 'datetime-picker-input--open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <input\n ref={ref}\n type=\"text\"\n readOnly\n disabled={disabled}\n placeholder={placeholder}\n value={value ? formatDateTime(value, format, hourFormat) : ''}\n className=\"datetime-picker-field\"\n {...props}\n />\n <div className=\"datetime-picker-icons\">\n {clearable && value && !disabled && (\n <button type=\"button\" className=\"datetime-picker-clear\" onClick={handleClear}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n <svg className=\"datetime-picker-icon\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n <circle cx=\"17\" cy=\"17\" r=\"3\" />\n <line x1=\"17\" y1=\"15\" x2=\"17\" y2=\"17\" />\n <line x1=\"17\" y1=\"17\" x2=\"18.5\" y2=\"18\" />\n </svg>\n </div>\n </div>\n\n {open && (\n <div className=\"datetime-picker-dropdown\">\n <div className=\"datetime-picker-calendar\">\n <div className=\"datetime-picker-header\">\n <button type=\"button\" onClick={() => navigateMonth(-1)} className=\"datetime-picker-nav\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span className=\"datetime-picker-title\">\n {MONTHS[viewDate.getMonth()]} {viewDate.getFullYear()}\n </span>\n <button type=\"button\" onClick={() => navigateMonth(1)} className=\"datetime-picker-nav\">\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n <div className=\"datetime-picker-days-header\">\n {DAYS.map(day => <div key={day} className=\"datetime-picker-day-name\">{day}</div>)}\n </div>\n <div className=\"datetime-picker-days\">\n {getDaysInMonth(viewDate).map(({ date, isCurrentMonth }, i) => (\n <button\n key={i}\n type=\"button\"\n className={cn(\n 'datetime-picker-day',\n !isCurrentMonth && 'datetime-picker-day--outside',\n isSelected(date) && 'datetime-picker-day--selected',\n isToday(date) && 'datetime-picker-day--today',\n isDisabled(date) && 'datetime-picker-day--disabled'\n )}\n onClick={() => handleSelect(date)}\n disabled={isDisabled(date)}\n >\n {date.getDate()}\n </button>\n ))}\n </div>\n </div>\n\n <div className=\"datetime-picker-time\">\n <div className=\"datetime-picker-time-label\">Time</div>\n <div className=\"datetime-picker-time-selectors\">\n <select\n className=\"datetime-picker-time-select\"\n value={selectedHour}\n onChange={(e) => handleTimeChange(Number(e.target.value), selectedMinute)}\n >\n {hours.map(h => (\n <option key={h} value={hourFormat === '12' ? (h === 12 ? 12 : h) : h}>\n {h.toString().padStart(2, '0')}\n </option>\n ))}\n </select>\n <span className=\"datetime-picker-time-separator\">:</span>\n <select\n className=\"datetime-picker-time-select\"\n value={selectedMinute}\n onChange={(e) => handleTimeChange(selectedHour, Number(e.target.value))}\n >\n {minutes.map(m => (\n <option key={m} value={m}>{m.toString().padStart(2, '0')}</option>\n ))}\n </select>\n {hourFormat === '12' && (\n <select\n className=\"datetime-picker-time-select\"\n value={selectedHour >= 12 ? 'PM' : 'AM'}\n onChange={(e) => {\n const isPM = e.target.value === 'PM';\n const hour12 = selectedHour % 12 || 12;\n const newHour = isPM ? (hour12 === 12 ? 12 : hour12 + 12) : (hour12 === 12 ? 0 : hour12);\n handleTimeChange(newHour, selectedMinute);\n }}\n >\n <option value=\"AM\">AM</option>\n <option value=\"PM\">PM</option>\n </select>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nDateTimePicker.displayName = 'DateTimePicker';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface MonthPickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'> {\n /** Selected month (0-11) and year */\n value?: { month: number; year: number } | null;\n /** On change callback */\n onChange?: (value: { month: number; year: number } | null) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Format for display */\n format?: 'short' | 'long';\n /** Minimum year */\n minYear?: number;\n /** Maximum year */\n maxYear?: number;\n /** Clearable */\n clearable?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n}\n\nconst MONTHS_SHORT = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];\nconst MONTHS_LONG = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n\nexport const MonthPicker = forwardRef<HTMLInputElement, MonthPickerProps>(\n (\n {\n value,\n onChange,\n placeholder = 'Select month',\n format = 'long',\n minYear = 1900,\n maxYear = 2100,\n clearable = true,\n size = 'md',\n error = false,\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const [viewYear, setViewYear] = useState(value?.year || new Date().getFullYear());\n const containerRef = useRef<HTMLDivElement>(null);\n\n const months = format === 'short' ? MONTHS_SHORT : MONTHS_LONG;\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const handleSelect = (month: number) => {\n onChange?.({ month, year: viewYear });\n setOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(null);\n };\n\n const navigateYear = (delta: number) => {\n const newYear = viewYear + delta;\n if (newYear >= minYear && newYear <= maxYear) {\n setViewYear(newYear);\n }\n };\n\n const isSelected = (month: number) => {\n return value?.month === month && value?.year === viewYear;\n };\n\n const displayValue = value ? `${months[value.month]} ${value.year}` : '';\n\n return (\n <div ref={containerRef} className={cn('month-picker', `month-picker-${size}`, className)}>\n <div\n className={cn(\n 'month-picker-input',\n error && 'month-picker-input--error',\n disabled && 'month-picker-input--disabled',\n open && 'month-picker-input--open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <input\n ref={ref}\n type=\"text\"\n readOnly\n disabled={disabled}\n placeholder={placeholder}\n value={displayValue}\n className=\"month-picker-field\"\n {...props}\n />\n <div className=\"month-picker-icons\">\n {clearable && value && !disabled && (\n <button type=\"button\" className=\"month-picker-clear\" onClick={handleClear}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n <svg className=\"month-picker-icon\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </div>\n </div>\n\n {open && (\n <div className=\"month-picker-dropdown\">\n <div className=\"month-picker-header\">\n <button\n type=\"button\"\n onClick={() => navigateYear(-1)}\n className=\"month-picker-nav\"\n disabled={viewYear <= minYear}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span className=\"month-picker-title\">{viewYear}</span>\n <button\n type=\"button\"\n onClick={() => navigateYear(1)}\n className=\"month-picker-nav\"\n disabled={viewYear >= maxYear}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n <div className=\"month-picker-grid\">\n {MONTHS_SHORT.map((month, index) => (\n <button\n key={month}\n type=\"button\"\n className={cn(\n 'month-picker-month',\n isSelected(index) && 'month-picker-month--selected'\n )}\n onClick={() => handleSelect(index)}\n >\n {month}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nMonthPicker.displayName = 'MonthPicker';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type InputHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface YearPickerProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'value' | 'onChange' | 'size'> {\n /** Selected year */\n value?: number | null;\n /** On change callback */\n onChange?: (year: number | null) => void;\n /** Placeholder text */\n placeholder?: string;\n /** Minimum year */\n minYear?: number;\n /** Maximum year */\n maxYear?: number;\n /** Clearable */\n clearable?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Error state */\n error?: boolean;\n /** Number of years to show per page */\n yearsPerPage?: number;\n}\n\nexport const YearPicker = forwardRef<HTMLInputElement, YearPickerProps>(\n (\n {\n value,\n onChange,\n placeholder = 'Select year',\n minYear = 1900,\n maxYear = 2100,\n clearable = true,\n size = 'md',\n error = false,\n yearsPerPage = 12,\n disabled,\n className,\n ...props\n },\n ref\n ) => {\n const currentYear = new Date().getFullYear();\n const [open, setOpen] = useState(false);\n const [startYear, setStartYear] = useState(\n Math.floor((value || currentYear) / yearsPerPage) * yearsPerPage\n );\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const handleSelect = (year: number) => {\n onChange?.(year);\n setOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.(null);\n };\n\n const navigateYears = (delta: number) => {\n const newStart = startYear + delta * yearsPerPage;\n if (newStart >= minYear - yearsPerPage && newStart <= maxYear) {\n setStartYear(newStart);\n }\n };\n\n const years = Array.from({ length: yearsPerPage }, (_, i) => startYear + i).filter(\n y => y >= minYear && y <= maxYear\n );\n\n const rangeStart = Math.max(startYear, minYear);\n const rangeEnd = Math.min(startYear + yearsPerPage - 1, maxYear);\n\n return (\n <div ref={containerRef} className={cn('year-picker', `year-picker-${size}`, className)}>\n <div\n className={cn(\n 'year-picker-input',\n error && 'year-picker-input--error',\n disabled && 'year-picker-input--disabled',\n open && 'year-picker-input--open'\n )}\n onClick={() => !disabled && setOpen(!open)}\n >\n <input\n ref={ref}\n type=\"text\"\n readOnly\n disabled={disabled}\n placeholder={placeholder}\n value={value?.toString() || ''}\n className=\"year-picker-field\"\n {...props}\n />\n <div className=\"year-picker-icons\">\n {clearable && value && !disabled && (\n <button type=\"button\" className=\"year-picker-clear\" onClick={handleClear}>\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" /><line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n </button>\n )}\n <svg className=\"year-picker-icon\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" ry=\"2\" />\n <line x1=\"16\" y1=\"2\" x2=\"16\" y2=\"6\" />\n <line x1=\"8\" y1=\"2\" x2=\"8\" y2=\"6\" />\n <line x1=\"3\" y1=\"10\" x2=\"21\" y2=\"10\" />\n </svg>\n </div>\n </div>\n\n {open && (\n <div className=\"year-picker-dropdown\">\n <div className=\"year-picker-header\">\n <button\n type=\"button\"\n onClick={() => navigateYears(-1)}\n className=\"year-picker-nav\"\n disabled={startYear <= minYear}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </button>\n <span className=\"year-picker-title\">{rangeStart} - {rangeEnd}</span>\n <button\n type=\"button\"\n onClick={() => navigateYears(1)}\n className=\"year-picker-nav\"\n disabled={startYear + yearsPerPage > maxYear}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" stroke=\"currentColor\" strokeWidth=\"2\" fill=\"none\">\n <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </button>\n </div>\n <div className=\"year-picker-grid\">\n {years.map(year => (\n <button\n key={year}\n type=\"button\"\n className={cn(\n 'year-picker-year',\n value === year && 'year-picker-year--selected',\n year === currentYear && 'year-picker-year--current'\n )}\n onClick={() => handleSelect(year)}\n >\n {year}\n </button>\n ))}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nYearPicker.displayName = 'YearPicker';\n","'use client';\n\nimport { forwardRef, createContext, useContext, type InputHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\n// RadioCard Group Context\ninterface RadioCardGroupContextValue {\n name?: string;\n value?: string;\n onChange?: (value: string) => void;\n disabled?: boolean;\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst RadioCardGroupContext = createContext<RadioCardGroupContextValue>({});\n\n// RadioCard Group Component\nexport interface RadioCardGroupProps {\n /** Children */\n children: ReactNode;\n /** Group name */\n name?: string;\n /** Selected value */\n value?: string;\n /** Default value */\n defaultValue?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** Disabled state */\n disabled?: boolean;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Layout direction */\n direction?: 'horizontal' | 'vertical';\n /** Number of columns (when horizontal) */\n columns?: number;\n /** Gap between cards */\n gap?: 'sm' | 'md' | 'lg';\n /** Class name */\n className?: string;\n}\n\nexport const RadioCardGroup = ({\n children,\n name,\n value,\n onChange,\n disabled = false,\n size = 'md',\n direction = 'vertical',\n columns,\n gap = 'md',\n className,\n}: RadioCardGroupProps) => {\n const gapSizes = { sm: '0.5rem', md: '1rem', lg: '1.5rem' };\n\n return (\n <RadioCardGroupContext.Provider value={{ name, value, onChange, disabled, size }}>\n <div\n role=\"radiogroup\"\n className={cn('radio-card-group', className)}\n style={{\n display: direction === 'horizontal' || columns ? 'grid' : 'flex',\n flexDirection: direction === 'vertical' && !columns ? 'column' : undefined,\n gridTemplateColumns: columns ? `repeat(${columns}, 1fr)` : direction === 'horizontal' ? 'repeat(auto-fit, minmax(200px, 1fr))' : undefined,\n gap: gapSizes[gap],\n }}\n >\n {children}\n </div>\n </RadioCardGroupContext.Provider>\n );\n};\n\nRadioCardGroup.displayName = 'RadioCardGroup';\n\n// RadioCard Component\nexport interface RadioCardProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size' | 'type' | 'title'> {\n /** Card title */\n title?: ReactNode;\n /** Card description */\n description?: ReactNode;\n /** Card icon */\n icon?: ReactNode;\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** With border */\n withBorder?: boolean;\n /** With check indicator */\n withIndicator?: boolean;\n /** Custom content */\n children?: ReactNode;\n}\n\nexport const RadioCard = forwardRef<HTMLInputElement, RadioCardProps>(\n (\n {\n title,\n description,\n icon,\n size: sizeProp,\n withBorder = true,\n withIndicator = true,\n disabled: disabledProp,\n className,\n id,\n value,\n checked,\n onChange,\n children,\n ...props\n },\n ref\n ) => {\n const group = useContext(RadioCardGroupContext);\n\n const size = sizeProp ?? group.size ?? 'md';\n const disabled = disabledProp ?? group.disabled ?? false;\n const name = props.name ?? group.name;\n const isChecked = group.value !== undefined ? group.value === value : checked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (group.onChange && value !== undefined) {\n group.onChange(String(value));\n }\n onChange?.(e);\n };\n\n const radioId = id || `radio-card-${Math.random().toString(36).substr(2, 9)}`;\n\n const sizeClasses = {\n sm: 'radio-card-sm',\n md: 'radio-card-md',\n lg: 'radio-card-lg',\n };\n\n return (\n <label\n htmlFor={radioId}\n className={cn(\n 'radio-card',\n sizeClasses[size],\n withBorder && 'radio-card-bordered',\n isChecked && 'radio-card-checked',\n disabled && 'radio-card-disabled',\n className\n )}\n >\n <input\n ref={ref}\n type=\"radio\"\n id={radioId}\n name={name}\n value={value}\n checked={isChecked}\n disabled={disabled}\n onChange={handleChange}\n className=\"radio-card-input\"\n {...props}\n />\n\n <div className=\"radio-card-content\">\n {icon && <div className=\"radio-card-icon\">{icon}</div>}\n <div className=\"radio-card-body\">\n {title && <div className=\"radio-card-title\">{title}</div>}\n {description && <div className=\"radio-card-description\">{description}</div>}\n {children}\n </div>\n </div>\n\n {withIndicator && (\n <div className={cn('radio-card-indicator', isChecked && 'radio-card-indicator--checked')}>\n {isChecked && (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </div>\n )}\n </label>\n );\n }\n);\n\nRadioCard.displayName = 'RadioCard';\n\nexport const useRadioCardGroup = () => useContext(RadioCardGroupContext);\n","'use client';\n\nimport { forwardRef, createContext, useContext, type HTMLAttributes, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\n// Toolbar Context\ninterface ToolbarContextValue {\n orientation?: 'horizontal' | 'vertical';\n size?: 'sm' | 'md' | 'lg';\n}\n\nconst ToolbarContext = createContext<ToolbarContextValue>({});\n\n// Toolbar Root\nexport interface ToolbarProps extends HTMLAttributes<HTMLDivElement> {\n /** Orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Size */\n size?: 'sm' | 'md' | 'lg';\n /** Aria label */\n 'aria-label'?: string;\n}\n\nexport const Toolbar = forwardRef<HTMLDivElement, ToolbarProps>(\n ({ className, orientation = 'horizontal', size = 'md', children, ...props }, ref) => {\n return (\n <ToolbarContext.Provider value={{ orientation, size }}>\n <div\n ref={ref}\n role=\"toolbar\"\n aria-orientation={orientation}\n className={cn(\n 'toolbar',\n `toolbar-${orientation}`,\n `toolbar-${size}`,\n className\n )}\n {...props}\n >\n {children}\n </div>\n </ToolbarContext.Provider>\n );\n }\n);\n\nToolbar.displayName = 'Toolbar';\n\n// Toolbar Button\nexport interface ToolbarButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Is active/pressed */\n isActive?: boolean;\n /** Variant */\n variant?: 'default' | 'ghost' | 'outline';\n /** Tooltip text */\n tooltip?: string;\n}\n\nexport const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>(\n ({ className, isActive = false, variant = 'ghost', tooltip, children, ...props }, ref) => {\n const { size } = useContext(ToolbarContext);\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'toolbar-button',\n `toolbar-button--${variant}`,\n `toolbar-button--${size}`,\n isActive && 'toolbar-button--active',\n className\n )}\n aria-pressed={isActive}\n title={tooltip}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nToolbarButton.displayName = 'ToolbarButton';\n\n// Toolbar Separator\nexport interface ToolbarSeparatorProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport const ToolbarSeparator = forwardRef<HTMLDivElement, ToolbarSeparatorProps>(\n ({ className, ...props }, ref) => {\n const { orientation } = useContext(ToolbarContext);\n\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation === 'horizontal' ? 'vertical' : 'horizontal'}\n className={cn(\n 'toolbar-separator',\n orientation === 'horizontal' ? 'toolbar-separator--vertical' : 'toolbar-separator--horizontal',\n className\n )}\n {...props}\n />\n );\n }\n);\n\nToolbarSeparator.displayName = 'ToolbarSeparator';\n\n// Toolbar Group\nexport interface ToolbarGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Spacing between items */\n spacing?: 'none' | 'sm' | 'md';\n}\n\nexport const ToolbarGroup = forwardRef<HTMLDivElement, ToolbarGroupProps>(\n ({ className, spacing = 'sm', children, ...props }, ref) => {\n const { orientation } = useContext(ToolbarContext);\n const spacingValues = { none: '0', sm: '0.25rem', md: '0.5rem' };\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn('toolbar-group', className)}\n style={{\n display: 'flex',\n flexDirection: orientation === 'vertical' ? 'column' : 'row',\n gap: spacingValues[spacing],\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nToolbarGroup.displayName = 'ToolbarGroup';\n\n// Toolbar Toggle Group\nexport interface ToolbarToggleGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Type of selection */\n type?: 'single' | 'multiple';\n /** Selected value(s) */\n value?: string | string[];\n /** On value change */\n onValueChange?: (value: string | string[]) => void;\n}\n\nexport const ToolbarToggleGroup = forwardRef<HTMLDivElement, ToolbarToggleGroupProps>(\n ({ className, type = 'single', value, onValueChange, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"group\"\n className={cn('toolbar-toggle-group', className)}\n data-type={type}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nToolbarToggleGroup.displayName = 'ToolbarToggleGroup';\n\n// Toolbar Link\nexport interface ToolbarLinkProps extends HTMLAttributes<HTMLAnchorElement> {\n /** Link href */\n href?: string;\n /** Target */\n target?: string;\n}\n\nexport const ToolbarLink = forwardRef<HTMLAnchorElement, ToolbarLinkProps>(\n ({ className, children, ...props }, ref) => {\n const { size } = useContext(ToolbarContext);\n\n return (\n <a\n ref={ref}\n className={cn('toolbar-link', `toolbar-link--${size}`, className)}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\n\nToolbarLink.displayName = 'ToolbarLink';\n\nexport const useToolbar = () => useContext(ToolbarContext);\n","'use client';\n\nimport { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\ntype ResponsiveValue<T> = T | { base?: T; sm?: T; md?: T; lg?: T; xl?: T; '2xl'?: T };\n\nexport interface SimpleGridProps extends HTMLAttributes<HTMLDivElement> {\n /** Number of columns */\n cols?: ResponsiveValue<number>;\n /** Minimum child width (auto-fit) */\n minChildWidth?: string;\n /** Gap between items */\n spacing?: ResponsiveValue<string | number>;\n /** Horizontal spacing */\n spacingX?: ResponsiveValue<string | number>;\n /** Vertical spacing */\n spacingY?: ResponsiveValue<string | number>;\n}\n\nconst getSpacingValue = (value: string | number): string => {\n if (typeof value === 'number') return `${value * 0.25}rem`;\n return value;\n};\n\nexport const SimpleGrid = forwardRef<HTMLDivElement, SimpleGridProps>(\n (\n {\n className,\n cols = 1,\n minChildWidth,\n spacing,\n spacingX,\n spacingY,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const getResponsiveStyles = (): CSSProperties => {\n const styles: CSSProperties = {\n display: 'grid',\n };\n\n // Handle minChildWidth (auto-fit)\n if (minChildWidth) {\n styles.gridTemplateColumns = `repeat(auto-fit, minmax(${minChildWidth}, 1fr))`;\n } else if (typeof cols === 'number') {\n // Simple number columns\n styles.gridTemplateColumns = `repeat(${cols}, minmax(0, 1fr))`;\n }\n\n // Handle spacing\n const finalSpacingX = spacingX ?? spacing;\n const finalSpacingY = spacingY ?? spacing;\n\n if (finalSpacingX !== undefined && finalSpacingY !== undefined) {\n if (typeof finalSpacingX === 'number' || typeof finalSpacingX === 'string') {\n styles.columnGap = getSpacingValue(finalSpacingX as string | number);\n }\n if (typeof finalSpacingY === 'number' || typeof finalSpacingY === 'string') {\n styles.rowGap = getSpacingValue(finalSpacingY as string | number);\n }\n } else if (spacing !== undefined) {\n if (typeof spacing === 'number' || typeof spacing === 'string') {\n styles.gap = getSpacingValue(spacing as string | number);\n }\n } else {\n styles.gap = '1rem'; // Default gap\n }\n\n return { ...styles, ...style };\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-simple-grid',\n typeof cols === 'object' && !minChildWidth && 'zk-simple-grid--responsive',\n className\n )}\n style={getResponsiveStyles()}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nSimpleGrid.displayName = 'SimpleGrid';\n","'use client';\n\nimport { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface BlockquoteProps extends HTMLAttributes<HTMLQuoteElement> {\n /** Quote citation/source */\n cite?: string;\n /** Author name */\n author?: ReactNode;\n /** Author title/role */\n authorTitle?: ReactNode;\n /** Author avatar */\n avatar?: ReactNode;\n /** Color variant */\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'error';\n /** Border position */\n borderPosition?: 'left' | 'top' | 'none';\n /** Icon to show */\n icon?: ReactNode;\n /** Size variant */\n size?: 'sm' | 'md' | 'lg';\n /** With background */\n withBackground?: boolean;\n}\n\nexport const Blockquote = forwardRef<HTMLQuoteElement, BlockquoteProps>(\n (\n {\n className,\n cite,\n author,\n authorTitle,\n avatar,\n color = 'default',\n borderPosition = 'left',\n icon,\n size = 'md',\n withBackground = false,\n children,\n ...props\n },\n ref\n ) => {\n const defaultIcon = (\n <svg viewBox=\"0 0 24 24\" width=\"24\" height=\"24\" fill=\"currentColor\" opacity=\"0.3\">\n <path d=\"M4.583 17.321C3.553 16.227 3 15 3 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 01-3.5 3.5c-1.073 0-2.099-.49-2.748-1.179zm10 0C13.553 16.227 13 15 13 13.011c0-3.5 2.457-6.637 6.03-8.188l.893 1.378c-3.335 1.804-3.987 4.145-4.247 5.621.537-.278 1.24-.375 1.929-.311 1.804.167 3.226 1.648 3.226 3.489a3.5 3.5 0 01-3.5 3.5c-1.073 0-2.099-.49-2.748-1.179z\" />\n </svg>\n );\n\n return (\n <figure className={cn('blockquote-figure', className)}>\n <blockquote\n ref={ref}\n cite={cite}\n className={cn(\n 'blockquote',\n `blockquote-${color}`,\n `blockquote-${size}`,\n `blockquote-border-${borderPosition}`,\n withBackground && 'blockquote-with-bg'\n )}\n {...props}\n >\n {icon !== null && (\n <span className=\"blockquote-icon\">\n {icon || defaultIcon}\n </span>\n )}\n <div className=\"blockquote-content\">\n {children}\n </div>\n </blockquote>\n\n {(author || authorTitle) && (\n <figcaption className=\"blockquote-caption\">\n {avatar && <span className=\"blockquote-avatar\">{avatar}</span>}\n <div className=\"blockquote-author-info\">\n {author && <cite className=\"blockquote-author\">{author}</cite>}\n {authorTitle && <span className=\"blockquote-author-title\">{authorTitle}</span>}\n </div>\n </figcaption>\n )}\n </figure>\n );\n }\n);\n\nBlockquote.displayName = 'Blockquote';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, useCallback, type HTMLAttributes, type ReactNode, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface VirtualListProps<T> extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'onScroll'> {\n /** Data items to render */\n data: T[];\n /** Height of each item (or function for variable heights) */\n itemHeight: number | ((index: number, item: T) => number);\n /** Container height */\n height: number | string;\n /** Width of the container */\n width?: number | string;\n /** Render function for each item */\n renderItem: (item: T, index: number, style: CSSProperties) => ReactNode;\n /** Number of items to overscan */\n overscan?: number;\n /** On scroll callback with scroll position */\n onScrollChange?: (scrollTop: number) => void;\n /** Key extractor */\n getKey?: (item: T, index: number) => string | number;\n /** Loading state */\n loading?: boolean;\n /** Loading component */\n loadingComponent?: ReactNode;\n /** Empty state component */\n emptyComponent?: ReactNode;\n /** Gap between items */\n gap?: number;\n /** Scroll to index */\n scrollToIndex?: number;\n}\n\nexport const VirtualList = forwardRef<HTMLDivElement, VirtualListProps<unknown>>(\n <T,>(\n {\n className,\n data,\n itemHeight,\n height,\n width = '100%',\n renderItem,\n overscan = 3,\n onScrollChange,\n getKey,\n loading = false,\n loadingComponent,\n emptyComponent,\n gap = 0,\n scrollToIndex,\n ...props\n }: VirtualListProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const [scrollTop, setScrollTop] = useState(0);\n const [containerHeight, setContainerHeight] = useState(0);\n\n // Get item height at index\n const getItemHeight = useCallback((index: number): number => {\n if (typeof itemHeight === 'function') {\n return itemHeight(index, data[index] as T);\n }\n return itemHeight;\n }, [itemHeight, data]);\n\n // Calculate total height\n const getTotalHeight = useCallback((): number => {\n if (typeof itemHeight === 'number') {\n return data.length * itemHeight + (data.length - 1) * gap;\n }\n return data.reduce((acc, _, index) => acc + getItemHeight(index) + (index < data.length - 1 ? gap : 0), 0);\n }, [data, itemHeight, gap, getItemHeight]);\n\n // Get item offset\n const getItemOffset = useCallback((index: number): number => {\n if (typeof itemHeight === 'number') {\n return index * (itemHeight + gap);\n }\n let offset = 0;\n for (let i = 0; i < index; i++) {\n offset += getItemHeight(i) + gap;\n }\n return offset;\n }, [itemHeight, gap, getItemHeight]);\n\n // Get visible range\n const getVisibleRange = useCallback((): { start: number; end: number } => {\n if (typeof itemHeight === 'number') {\n const start = Math.max(0, Math.floor(scrollTop / (itemHeight + gap)) - overscan);\n const visibleCount = Math.ceil(containerHeight / (itemHeight + gap));\n const end = Math.min(data.length - 1, start + visibleCount + overscan * 2);\n return { start, end };\n }\n\n // Variable height calculation\n let start = 0;\n let offset = 0;\n\n while (offset < scrollTop && start < data.length) {\n offset += getItemHeight(start) + gap;\n start++;\n }\n start = Math.max(0, start - overscan - 1);\n\n let end = start;\n offset = getItemOffset(start);\n\n while (offset < scrollTop + containerHeight && end < data.length) {\n offset += getItemHeight(end) + gap;\n end++;\n }\n end = Math.min(data.length - 1, end + overscan);\n\n return { start, end };\n }, [scrollTop, containerHeight, data.length, itemHeight, gap, overscan, getItemHeight, getItemOffset]);\n\n // Handle scroll\n const handleScroll = useCallback((e: React.UIEvent<HTMLDivElement>) => {\n const newScrollTop = e.currentTarget.scrollTop;\n setScrollTop(newScrollTop);\n onScrollChange?.(newScrollTop);\n }, [onScrollChange]);\n\n // Update container height on mount/resize\n useEffect(() => {\n const container = containerRef.current;\n if (!container) return;\n\n const updateHeight = () => {\n setContainerHeight(container.clientHeight);\n };\n\n updateHeight();\n\n const observer = new ResizeObserver(updateHeight);\n observer.observe(container);\n\n return () => observer.disconnect();\n }, []);\n\n // Scroll to index\n useEffect(() => {\n if (scrollToIndex !== undefined && containerRef.current) {\n const offset = getItemOffset(scrollToIndex);\n containerRef.current.scrollTop = offset;\n }\n }, [scrollToIndex, getItemOffset]);\n\n // Set ref\n useEffect(() => {\n if (typeof ref === 'function') {\n ref(containerRef.current);\n } else if (ref) {\n ref.current = containerRef.current;\n }\n }, [ref]);\n\n if (loading) {\n return (\n <div className={cn('virtual-list', 'virtual-list-loading', className)} style={{ height, width }}>\n {loadingComponent || (\n <div className=\"virtual-list-loader\">Loading...</div>\n )}\n </div>\n );\n }\n\n if (data.length === 0) {\n return (\n <div className={cn('virtual-list', 'virtual-list-empty', className)} style={{ height, width }}>\n {emptyComponent || (\n <div className=\"virtual-list-empty-text\">No items</div>\n )}\n </div>\n );\n }\n\n const { start, end } = getVisibleRange();\n const totalHeight = getTotalHeight();\n\n const items: ReactNode[] = [];\n for (let i = start; i <= end; i++) {\n const item = data[i] as T;\n const key = getKey ? getKey(item, i) : i;\n const itemStyle: CSSProperties = {\n position: 'absolute',\n top: getItemOffset(i),\n left: 0,\n right: 0,\n height: getItemHeight(i),\n };\n items.push(\n <div key={key} style={itemStyle}>\n {renderItem(item, i, itemStyle)}\n </div>\n );\n }\n\n return (\n <div\n ref={containerRef}\n className={cn('virtual-list', className)}\n style={{ height, width, overflow: 'auto', position: 'relative' }}\n onScroll={handleScroll}\n {...props}\n >\n <div style={{ height: totalHeight, position: 'relative' }}>\n {items}\n </div>\n </div>\n );\n }\n) as <T>(props: VirtualListProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> }) => JSX.Element;\n\n(VirtualList as { displayName?: string }).displayName = 'VirtualList';\n","'use client';\n\nimport { forwardRef, useRef, useEffect, useCallback, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface InfiniteScrollProps extends HTMLAttributes<HTMLDivElement> {\n /** Children to render */\n children: ReactNode;\n /** Callback when more items should be loaded */\n onLoadMore: () => void | Promise<void>;\n /** Whether there are more items to load */\n hasMore: boolean;\n /** Whether currently loading */\n loading?: boolean;\n /** Loading indicator component */\n loader?: ReactNode;\n /** End message when no more items */\n endMessage?: ReactNode;\n /** Threshold in pixels before triggering load */\n threshold?: number;\n /** Scroll direction */\n direction?: 'down' | 'up';\n /** Use window scroll instead of container */\n useWindow?: boolean;\n /** Inverse scroll (for chat-like interfaces) */\n inverse?: boolean;\n /** Initial load */\n initialLoad?: boolean;\n /** Scroll container height */\n height?: number | string;\n}\n\nexport const InfiniteScroll = forwardRef<HTMLDivElement, InfiniteScrollProps>(\n (\n {\n className,\n children,\n onLoadMore,\n hasMore,\n loading = false,\n loader,\n endMessage,\n threshold = 100,\n direction = 'down',\n useWindow = false,\n inverse = false,\n initialLoad = true,\n height,\n ...props\n },\n ref\n ) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const loadingRef = useRef(false);\n const initialLoadDone = useRef(false);\n\n const handleLoadMore = useCallback(async () => {\n if (loadingRef.current || loading || !hasMore) return;\n\n loadingRef.current = true;\n try {\n await onLoadMore();\n } finally {\n loadingRef.current = false;\n }\n }, [onLoadMore, loading, hasMore]);\n\n const checkScrollPosition = useCallback(() => {\n if (!hasMore || loading || loadingRef.current) return;\n\n if (useWindow) {\n const scrollTop = window.scrollY;\n const scrollHeight = document.documentElement.scrollHeight;\n const clientHeight = window.innerHeight;\n\n if (direction === 'down' || !inverse) {\n if (scrollHeight - scrollTop - clientHeight <= threshold) {\n handleLoadMore();\n }\n } else {\n if (scrollTop <= threshold) {\n handleLoadMore();\n }\n }\n } else {\n const container = containerRef.current;\n if (!container) return;\n\n const { scrollTop, scrollHeight, clientHeight } = container;\n\n if (direction === 'down' && !inverse) {\n if (scrollHeight - scrollTop - clientHeight <= threshold) {\n handleLoadMore();\n }\n } else if (direction === 'up' || inverse) {\n if (scrollTop <= threshold) {\n handleLoadMore();\n }\n }\n }\n }, [hasMore, loading, useWindow, direction, inverse, threshold, handleLoadMore]);\n\n // Initial load\n useEffect(() => {\n if (initialLoad && !initialLoadDone.current && hasMore) {\n initialLoadDone.current = true;\n handleLoadMore();\n }\n }, [initialLoad, hasMore, handleLoadMore]);\n\n // Scroll listener\n useEffect(() => {\n const scrollElement = useWindow ? window : containerRef.current;\n if (!scrollElement) return;\n\n const handleScroll = () => {\n checkScrollPosition();\n };\n\n scrollElement.addEventListener('scroll', handleScroll, { passive: true });\n\n return () => {\n scrollElement.removeEventListener('scroll', handleScroll);\n };\n }, [useWindow, checkScrollPosition]);\n\n // Set ref\n useEffect(() => {\n if (typeof ref === 'function') {\n ref(containerRef.current);\n } else if (ref) {\n ref.current = containerRef.current;\n }\n }, [ref]);\n\n const defaultLoader = (\n <div className=\"infinite-scroll-loader\">\n <svg className=\"infinite-scroll-spinner\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeDasharray=\"31.4\" strokeLinecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 12 12;360 12 12\" dur=\"1s\" repeatCount=\"indefinite\" />\n </circle>\n </svg>\n <span>Loading...</span>\n </div>\n );\n\n const defaultEndMessage = (\n <div className=\"infinite-scroll-end\">\n No more items\n </div>\n );\n\n const loaderElement = loading && hasMore ? (loader || defaultLoader) : null;\n const endElement = !hasMore ? (endMessage || defaultEndMessage) : null;\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'infinite-scroll',\n inverse && 'infinite-scroll-inverse',\n className\n )}\n style={{\n height,\n overflow: height ? 'auto' : undefined,\n display: inverse ? 'flex' : undefined,\n flexDirection: inverse ? 'column-reverse' : undefined,\n }}\n {...props}\n >\n {inverse && loaderElement}\n {children}\n {!inverse && loaderElement}\n {endElement}\n </div>\n );\n }\n);\n\nInfiniteScroll.displayName = 'InfiniteScroll';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SplitButtonOption {\n /** Option label */\n label: ReactNode;\n /** Option value */\n value: string;\n /** Option icon */\n icon?: ReactNode;\n /** Disabled state */\n disabled?: boolean;\n /** On click handler */\n onClick?: () => void;\n}\n\nexport interface SplitButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick' | 'onSelect'> {\n /** Button variant */\n variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'danger';\n /** Button size */\n size?: 'sm' | 'md' | 'lg';\n /** Primary button content */\n children: ReactNode;\n /** Primary button click handler */\n onClick?: () => void;\n /** Dropdown options */\n options: SplitButtonOption[];\n /** Selected option value */\n selectedValue?: string;\n /** On option select */\n onSelect?: (value: string) => void;\n /** Loading state */\n loading?: boolean;\n /** Dropdown placement */\n placement?: 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';\n /** Icon for dropdown trigger */\n dropdownIcon?: ReactNode;\n}\n\nexport const SplitButton = forwardRef<HTMLButtonElement, SplitButtonProps>(\n (\n {\n className,\n variant = 'primary',\n size = 'md',\n children,\n onClick,\n options,\n selectedValue,\n onSelect,\n loading = false,\n placement = 'bottom-end',\n dropdownIcon,\n disabled,\n ...props\n },\n ref\n ) => {\n const [open, setOpen] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setOpen(false);\n }\n };\n\n if (open) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [open]);\n\n const handleOptionClick = (option: SplitButtonOption) => {\n if (option.disabled) return;\n option.onClick?.();\n onSelect?.(option.value);\n setOpen(false);\n };\n\n const defaultDropdownIcon = (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n );\n\n const loadingSpinner = (\n <svg className=\"split-button-spinner\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\">\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" strokeDasharray=\"31.4\" strokeLinecap=\"round\">\n <animateTransform attributeName=\"transform\" type=\"rotate\" values=\"0 12 12;360 12 12\" dur=\"1s\" repeatCount=\"indefinite\" />\n </circle>\n </svg>\n );\n\n const placementClasses = {\n 'bottom-start': 'split-button-dropdown--bottom-start',\n 'bottom-end': 'split-button-dropdown--bottom-end',\n 'top-start': 'split-button-dropdown--top-start',\n 'top-end': 'split-button-dropdown--top-end',\n };\n\n return (\n <div ref={containerRef} className={cn('split-button', className)}>\n <div className={cn('split-button-group', `split-button-group--${variant}`, `split-button-group--${size}`)}>\n <button\n ref={ref}\n type=\"button\"\n className=\"split-button-primary\"\n onClick={onClick}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? loadingSpinner : children}\n </button>\n <button\n type=\"button\"\n className=\"split-button-trigger\"\n onClick={() => setOpen(!open)}\n disabled={disabled || loading}\n aria-haspopup=\"true\"\n aria-expanded={open}\n >\n {dropdownIcon || defaultDropdownIcon}\n </button>\n </div>\n\n {open && (\n <div className={cn('split-button-dropdown', placementClasses[placement])}>\n <ul className=\"split-button-menu\" role=\"menu\">\n {options.map((option) => (\n <li key={option.value} role=\"none\">\n <button\n type=\"button\"\n role=\"menuitem\"\n className={cn(\n 'split-button-option',\n selectedValue === option.value && 'split-button-option--selected',\n option.disabled && 'split-button-option--disabled'\n )}\n onClick={() => handleOptionClick(option)}\n disabled={option.disabled}\n >\n {option.icon && <span className=\"split-button-option-icon\">{option.icon}</span>}\n <span className=\"split-button-option-label\">{option.label}</span>\n {selectedValue === option.value && (\n <svg className=\"split-button-check\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"2\">\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n )}\n </button>\n </li>\n ))}\n </ul>\n </div>\n )}\n </div>\n );\n }\n);\n\nSplitButton.displayName = 'SplitButton';\n","'use client';\n\nimport { forwardRef, useMemo, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface NumberFormatterProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {\n /** Number value to format */\n value: number;\n /** Number of decimal places */\n decimalPlaces?: number;\n /** Locale for formatting */\n locale?: string;\n /** Format style */\n formatStyle?: 'decimal' | 'currency' | 'percent' | 'unit';\n /** Currency code (for currency style) */\n currency?: string;\n /** Currency display type */\n currencyDisplay?: 'symbol' | 'narrowSymbol' | 'code' | 'name';\n /** Unit type (for unit style) */\n unit?: string;\n /** Unit display type */\n unitDisplay?: 'short' | 'long' | 'narrow';\n /** Notation style */\n notation?: 'standard' | 'scientific' | 'engineering' | 'compact';\n /** Compact display */\n compactDisplay?: 'short' | 'long';\n /** Sign display */\n signDisplay?: 'auto' | 'never' | 'always' | 'exceptZero';\n /** Use grouping separators */\n useGrouping?: boolean;\n /** Prefix text */\n prefix?: string;\n /** Suffix text */\n suffix?: string;\n /** Minimum integer digits */\n minimumIntegerDigits?: number;\n /** Minimum fraction digits */\n minimumFractionDigits?: number;\n /** Maximum fraction digits */\n maximumFractionDigits?: number;\n /** Minimum significant digits */\n minimumSignificantDigits?: number;\n /** Maximum significant digits */\n maximumSignificantDigits?: number;\n}\n\nexport const NumberFormatter = forwardRef<HTMLSpanElement, NumberFormatterProps>(\n (\n {\n className,\n value,\n decimalPlaces,\n locale = 'en-US',\n formatStyle = 'decimal',\n currency = 'USD',\n currencyDisplay = 'symbol',\n unit,\n unitDisplay = 'short',\n notation = 'standard',\n compactDisplay = 'short',\n signDisplay = 'auto',\n useGrouping = true,\n prefix = '',\n suffix = '',\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n minimumSignificantDigits,\n maximumSignificantDigits,\n ...props\n },\n ref\n ) => {\n const formattedValue = useMemo(() => {\n try {\n const options: Intl.NumberFormatOptions = {\n style: formatStyle,\n notation,\n compactDisplay: notation === 'compact' ? compactDisplay : undefined,\n signDisplay,\n useGrouping,\n minimumIntegerDigits,\n minimumFractionDigits: decimalPlaces ?? minimumFractionDigits,\n maximumFractionDigits: decimalPlaces ?? maximumFractionDigits,\n minimumSignificantDigits,\n maximumSignificantDigits,\n };\n\n if (formatStyle === 'currency') {\n options.currency = currency;\n options.currencyDisplay = currencyDisplay;\n }\n\n if (formatStyle === 'unit' && unit) {\n options.unit = unit;\n options.unitDisplay = unitDisplay;\n }\n\n const formatter = new Intl.NumberFormat(locale, options);\n return formatter.format(value);\n } catch {\n // Fallback for unsupported options\n return value.toLocaleString(locale);\n }\n }, [\n value,\n locale,\n formatStyle,\n currency,\n currencyDisplay,\n unit,\n unitDisplay,\n notation,\n compactDisplay,\n signDisplay,\n useGrouping,\n decimalPlaces,\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n minimumSignificantDigits,\n maximumSignificantDigits,\n ]);\n\n return (\n <span ref={ref} className={cn('number-formatter', className)} {...props}>\n {prefix}{formattedValue}{suffix}\n </span>\n );\n }\n);\n\nNumberFormatter.displayName = 'NumberFormatter';\n\n// Utility functions\nexport const formatNumber = (\n value: number,\n options?: Partial<Omit<NumberFormatterProps, 'className' | 'style' | 'id'>>\n): string => {\n const {\n locale = 'en-US',\n formatStyle = 'decimal',\n decimalPlaces,\n currency = 'USD',\n notation = 'standard',\n prefix = '',\n suffix = '',\n useGrouping,\n minimumIntegerDigits,\n minimumFractionDigits,\n maximumFractionDigits,\n minimumSignificantDigits,\n maximumSignificantDigits,\n } = options || {};\n\n try {\n const formatOptions: Intl.NumberFormatOptions = {\n style: formatStyle,\n notation,\n useGrouping,\n minimumIntegerDigits,\n minimumFractionDigits: decimalPlaces ?? minimumFractionDigits,\n maximumFractionDigits: decimalPlaces ?? maximumFractionDigits,\n minimumSignificantDigits,\n maximumSignificantDigits,\n };\n\n if (formatStyle === 'currency') {\n formatOptions.currency = currency;\n }\n\n const formatter = new Intl.NumberFormat(locale, formatOptions);\n return `${prefix}${formatter.format(value)}${suffix}`;\n } catch {\n return `${prefix}${value}${suffix}`;\n }\n};\n\nexport const formatCurrency = (\n value: number,\n currency = 'USD',\n locale = 'en-US'\n): string => {\n return formatNumber(value, { formatStyle: 'currency', currency, locale });\n};\n\nexport const formatPercent = (\n value: number,\n decimalPlaces = 0,\n locale = 'en-US'\n): string => {\n return formatNumber(value, { formatStyle: 'percent', decimalPlaces, locale });\n};\n\nexport const formatCompact = (\n value: number,\n locale = 'en-US'\n): string => {\n return formatNumber(value, { notation: 'compact', locale });\n};\n","'use client';\n\nimport { forwardRef, useState, useRef, useCallback, type HTMLAttributes, type ReactNode, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SortableItem {\n id: string | number;\n [key: string]: unknown;\n}\n\nexport interface SortableProps<T extends SortableItem> extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {\n /** Items to sort */\n items: T[];\n /** On items reorder */\n onReorder: (items: T[]) => void;\n /** Render item function */\n renderItem: (item: T, index: number, isDragging: boolean, dragHandleProps: DragHandleProps) => ReactNode;\n /** Direction of the list */\n direction?: 'vertical' | 'horizontal';\n /** Gap between items */\n gap?: number;\n /** Handle selector (if not provided, entire item is draggable) */\n handleSelector?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Animation duration in ms */\n animationDuration?: number;\n /** Lock axis during drag */\n lockAxis?: 'x' | 'y' | null;\n /** Placeholder style */\n placeholderStyle?: CSSProperties;\n}\n\nexport interface DragHandleProps {\n draggable: boolean;\n onDragStart: (e: React.DragEvent) => void;\n onDragEnd: (e: React.DragEvent) => void;\n 'data-drag-handle': boolean;\n style: CSSProperties;\n}\n\nexport const Sortable = forwardRef<HTMLDivElement, SortableProps<SortableItem>>(\n <T extends SortableItem>(\n {\n className,\n items,\n onReorder,\n renderItem,\n direction = 'vertical',\n gap = 8,\n disabled = false,\n animationDuration = 200,\n lockAxis = null,\n placeholderStyle,\n ...props\n }: SortableProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>\n ) => {\n const [draggedIndex, setDraggedIndex] = useState<number | null>(null);\n const [dragOverIndex, setDragOverIndex] = useState<number | null>(null);\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleDragStart = useCallback((index: number) => (e: React.DragEvent) => {\n if (disabled) {\n e.preventDefault();\n return;\n }\n\n e.dataTransfer.effectAllowed = 'move';\n e.dataTransfer.setData('text/plain', String(index));\n setDraggedIndex(index);\n\n // Set drag image\n if (e.currentTarget instanceof HTMLElement) {\n const rect = e.currentTarget.getBoundingClientRect();\n e.dataTransfer.setDragImage(e.currentTarget, rect.width / 2, rect.height / 2);\n }\n }, [disabled]);\n\n const handleDragEnd = useCallback(() => {\n setDraggedIndex(null);\n setDragOverIndex(null);\n }, []);\n\n const handleDragOver = useCallback((index: number) => (e: React.DragEvent) => {\n e.preventDefault();\n e.dataTransfer.dropEffect = 'move';\n\n if (draggedIndex === null || draggedIndex === index) return;\n\n setDragOverIndex(index);\n }, [draggedIndex]);\n\n const handleDrop = useCallback((index: number) => (e: React.DragEvent) => {\n e.preventDefault();\n\n if (draggedIndex === null || draggedIndex === index) return;\n\n const newItems = [...items];\n const [draggedItem] = newItems.splice(draggedIndex, 1);\n newItems.splice(index, 0, draggedItem);\n\n onReorder(newItems as T[]);\n setDraggedIndex(null);\n setDragOverIndex(null);\n }, [draggedIndex, items, onReorder]);\n\n const getDragHandleProps = useCallback((index: number): DragHandleProps => ({\n draggable: !disabled,\n onDragStart: handleDragStart(index),\n onDragEnd: handleDragEnd,\n 'data-drag-handle': true,\n style: { cursor: disabled ? 'default' : 'grab' },\n }), [disabled, handleDragStart, handleDragEnd]);\n\n // Set ref\n const setRefs = useCallback((el: HTMLDivElement | null) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = el;\n if (typeof ref === 'function') {\n ref(el);\n } else if (ref) {\n ref.current = el;\n }\n }, [ref]);\n\n return (\n <div\n ref={setRefs}\n className={cn(\n 'sortable',\n `sortable-${direction}`,\n disabled && 'sortable-disabled',\n className\n )}\n style={{\n display: 'flex',\n flexDirection: direction === 'vertical' ? 'column' : 'row',\n gap,\n }}\n {...props}\n >\n {items.map((item, index) => {\n const isDragging = draggedIndex === index;\n const isDragOver = dragOverIndex === index;\n\n return (\n <div\n key={item.id}\n className={cn(\n 'sortable-item',\n isDragging && 'sortable-item--dragging',\n isDragOver && 'sortable-item--drag-over'\n )}\n style={{\n transition: `transform ${animationDuration}ms ease`,\n opacity: isDragging ? 0.5 : 1,\n transform: isDragOver\n ? direction === 'vertical'\n ? `translateY(${draggedIndex !== null && draggedIndex < index ? '-' : ''}4px)`\n : `translateX(${draggedIndex !== null && draggedIndex < index ? '-' : ''}4px)`\n : undefined,\n }}\n onDragOver={handleDragOver(index)}\n onDrop={handleDrop(index)}\n >\n {renderItem(item as T, index, isDragging, getDragHandleProps(index))}\n </div>\n );\n })}\n </div>\n );\n }\n) as <T extends SortableItem>(props: SortableProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> }) => JSX.Element;\n\n(Sortable as { displayName?: string }).displayName = 'Sortable';\n\n// Sortable Handle component\nexport interface SortableHandleProps extends HTMLAttributes<HTMLDivElement> {\n /** Drag handle props from parent */\n dragHandleProps?: DragHandleProps;\n}\n\nexport const SortableHandle = forwardRef<HTMLDivElement, SortableHandleProps>(\n ({ className, dragHandleProps, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn('sortable-handle', className)}\n {...dragHandleProps}\n {...props}\n >\n {children || (\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"currentColor\">\n <circle cx=\"8\" cy=\"6\" r=\"1.5\" />\n <circle cx=\"16\" cy=\"6\" r=\"1.5\" />\n <circle cx=\"8\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"16\" cy=\"12\" r=\"1.5\" />\n <circle cx=\"8\" cy=\"18\" r=\"1.5\" />\n <circle cx=\"16\" cy=\"18\" r=\"1.5\" />\n </svg>\n )}\n </div>\n );\n }\n);\n\nSortableHandle.displayName = 'SortableHandle';\n","'use client';\n\nimport { Component, type ReactNode, type ErrorInfo } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface ErrorBoundaryProps {\n /** Children to render */\n children: ReactNode;\n /** Fallback UI when error occurs */\n fallback?: ReactNode | ((error: Error, resetError: () => void) => ReactNode);\n /** Error callback */\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\n /** Reset callback */\n onReset?: () => void;\n /** Reset keys - when these change, the error boundary resets */\n resetKeys?: unknown[];\n /** Class name */\n className?: string;\n}\n\ninterface ErrorBoundaryState {\n hasError: boolean;\n error: Error | null;\n}\n\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\n static displayName = 'ErrorBoundary';\n\n constructor(props: ErrorBoundaryProps) {\n super(props);\n this.state = { hasError: false, error: null };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return { hasError: true, error };\n }\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n this.props.onError?.(error, errorInfo);\n }\n\n componentDidUpdate(prevProps: ErrorBoundaryProps): void {\n const { resetKeys } = this.props;\n const { hasError } = this.state;\n\n if (hasError && prevProps.resetKeys !== resetKeys) {\n const hasResetKeyChanged = resetKeys?.some(\n (key, index) => key !== prevProps.resetKeys?.[index]\n );\n\n if (hasResetKeyChanged) {\n this.resetError();\n }\n }\n }\n\n resetError = (): void => {\n this.props.onReset?.();\n this.setState({ hasError: false, error: null });\n };\n\n render(): ReactNode {\n const { hasError, error } = this.state;\n const { children, fallback, className } = this.props;\n\n if (hasError && error) {\n if (typeof fallback === 'function') {\n return fallback(error, this.resetError);\n }\n\n if (fallback) {\n return fallback;\n }\n\n // Default fallback UI\n return (\n <div className={cn('error-boundary', className)}>\n <div className=\"error-boundary-content\">\n <svg\n className=\"error-boundary-icon\"\n viewBox=\"0 0 24 24\"\n width=\"48\"\n height=\"48\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <line x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\" />\n <line x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\" />\n </svg>\n <h2 className=\"error-boundary-title\">Something went wrong</h2>\n <p className=\"error-boundary-message\">{error.message}</p>\n <button\n type=\"button\"\n className=\"error-boundary-button\"\n onClick={this.resetError}\n >\n Try again\n </button>\n {process.env.NODE_ENV === 'development' && (\n <details className=\"error-boundary-details\">\n <summary>Error details</summary>\n <pre className=\"error-boundary-stack\">{error.stack}</pre>\n </details>\n )}\n </div>\n </div>\n );\n }\n\n return children;\n }\n}\n\n// Hook for using error boundary programmatically\nexport interface UseErrorBoundaryReturn {\n showBoundary: (error: Error) => void;\n}\n\n// Simple error boundary wrapper as a functional component\nexport interface ErrorBoundaryWrapperProps extends Omit<ErrorBoundaryProps, 'fallback'> {\n /** Fallback component */\n FallbackComponent?: React.ComponentType<{ error: Error; resetError: () => void }>;\n}\n\nexport const withErrorBoundary = <P extends object>(\n WrappedComponent: React.ComponentType<P>,\n errorBoundaryProps?: Omit<ErrorBoundaryProps, 'children'>\n): React.FC<P> => {\n const WithErrorBoundary: React.FC<P> = (props) => (\n <ErrorBoundary {...errorBoundaryProps}>\n <WrappedComponent {...props} />\n </ErrorBoundary>\n );\n\n WithErrorBoundary.displayName = `WithErrorBoundary(${WrappedComponent.displayName || WrappedComponent.name || 'Component'})`;\n\n return WithErrorBoundary;\n};\n\n// Default error fallback component\nexport interface ErrorFallbackProps {\n error: Error;\n resetError: () => void;\n title?: string;\n message?: string;\n showStack?: boolean;\n className?: string;\n}\n\nexport const ErrorFallback: React.FC<ErrorFallbackProps> = ({\n error,\n resetError,\n title = 'Something went wrong',\n message,\n showStack = false,\n className,\n}) => (\n <div className={cn('error-fallback', className)}>\n <div className=\"error-fallback-content\">\n <svg\n className=\"error-fallback-icon\"\n viewBox=\"0 0 24 24\"\n width=\"48\"\n height=\"48\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\" />\n <line x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n <h2 className=\"error-fallback-title\">{title}</h2>\n <p className=\"error-fallback-message\">{message || error.message}</p>\n <button\n type=\"button\"\n className=\"error-fallback-button\"\n onClick={resetError}\n >\n Try again\n </button>\n {showStack && (\n <details className=\"error-fallback-details\">\n <summary>Error details</summary>\n <pre className=\"error-fallback-stack\">{error.stack}</pre>\n </details>\n )}\n </div>\n </div>\n);\n\nErrorFallback.displayName = 'ErrorFallback';\n","'use client';\n\nimport { forwardRef, useState, useRef, useCallback, useEffect, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface RichTextEditorProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {\n /** Editor value (HTML string) */\n value?: string;\n /** Default value */\n defaultValue?: string;\n /** On change callback */\n onChange?: (value: string) => void;\n /** On blur callback */\n onBlur?: () => void;\n /** On focus callback */\n onFocus?: () => void;\n /** Placeholder text */\n placeholder?: string;\n /** Disabled state */\n disabled?: boolean;\n /** Read-only state */\n readOnly?: boolean;\n /** Error state */\n error?: boolean;\n /** Min height */\n minHeight?: number | string;\n /** Max height */\n maxHeight?: number | string;\n /** Toolbar options */\n toolbar?: ToolbarOption[];\n /** Hide toolbar */\n hideToolbar?: boolean;\n /** Sticky toolbar */\n stickyToolbar?: boolean;\n /** Auto focus */\n autoFocus?: boolean;\n}\n\ntype ToolbarOption =\n | 'bold'\n | 'italic'\n | 'underline'\n | 'strikethrough'\n | 'heading1'\n | 'heading2'\n | 'heading3'\n | 'bulletList'\n | 'orderedList'\n | 'blockquote'\n | 'code'\n | 'link'\n | 'image'\n | 'alignLeft'\n | 'alignCenter'\n | 'alignRight'\n | 'undo'\n | 'redo'\n | 'clear';\n\nconst DEFAULT_TOOLBAR: ToolbarOption[] = [\n 'bold',\n 'italic',\n 'underline',\n 'strikethrough',\n 'heading1',\n 'heading2',\n 'bulletList',\n 'orderedList',\n 'blockquote',\n 'code',\n 'link',\n 'alignLeft',\n 'alignCenter',\n 'alignRight',\n 'undo',\n 'redo',\n 'clear',\n];\n\nconst TOOLBAR_ICONS: Record<ToolbarOption, { icon: string; title: string; command: string; value?: string }> = {\n bold: { icon: 'B', title: 'Bold', command: 'bold' },\n italic: { icon: 'I', title: 'Italic', command: 'italic' },\n underline: { icon: 'U', title: 'Underline', command: 'underline' },\n strikethrough: { icon: 'S', title: 'Strikethrough', command: 'strikeThrough' },\n heading1: { icon: 'H1', title: 'Heading 1', command: 'formatBlock', value: 'h1' },\n heading2: { icon: 'H2', title: 'Heading 2', command: 'formatBlock', value: 'h2' },\n heading3: { icon: 'H3', title: 'Heading 3', command: 'formatBlock', value: 'h3' },\n bulletList: { icon: '•', title: 'Bullet List', command: 'insertUnorderedList' },\n orderedList: { icon: '1.', title: 'Ordered List', command: 'insertOrderedList' },\n blockquote: { icon: '\"', title: 'Blockquote', command: 'formatBlock', value: 'blockquote' },\n code: { icon: '<>', title: 'Code', command: 'formatBlock', value: 'pre' },\n link: { icon: '🔗', title: 'Link', command: 'createLink' },\n image: { icon: '🖼', title: 'Image', command: 'insertImage' },\n alignLeft: { icon: '⬅', title: 'Align Left', command: 'justifyLeft' },\n alignCenter: { icon: '⬛', title: 'Align Center', command: 'justifyCenter' },\n alignRight: { icon: '➡', title: 'Align Right', command: 'justifyRight' },\n undo: { icon: '↩', title: 'Undo', command: 'undo' },\n redo: { icon: '↪', title: 'Redo', command: 'redo' },\n clear: { icon: '✕', title: 'Clear Formatting', command: 'removeFormat' },\n};\n\nexport const RichTextEditor = forwardRef<HTMLDivElement, RichTextEditorProps>(\n (\n {\n className,\n value,\n defaultValue = '',\n onChange,\n onBlur,\n onFocus,\n placeholder = 'Start typing...',\n disabled = false,\n readOnly = false,\n error = false,\n minHeight = 200,\n maxHeight,\n toolbar = DEFAULT_TOOLBAR,\n hideToolbar = false,\n stickyToolbar = false,\n autoFocus = false,\n ...props\n },\n ref\n ) => {\n const editorRef = useRef<HTMLDivElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n const [isEmpty, setIsEmpty] = useState(true);\n\n // Initialize editor content\n useEffect(() => {\n if (editorRef.current && (value !== undefined || defaultValue)) {\n const content = value !== undefined ? value : defaultValue;\n if (editorRef.current.innerHTML !== content) {\n editorRef.current.innerHTML = content;\n setIsEmpty(!content || content === '<br>' || content === '<p><br></p>');\n }\n }\n }, [value, defaultValue]);\n\n // Auto focus\n useEffect(() => {\n if (autoFocus && editorRef.current) {\n editorRef.current.focus();\n }\n }, [autoFocus]);\n\n const execCommand = useCallback((command: string, value?: string) => {\n if (disabled || readOnly) return;\n\n if (command === 'createLink') {\n const url = prompt('Enter URL:');\n if (url) {\n document.execCommand(command, false, url);\n }\n } else if (command === 'insertImage') {\n const url = prompt('Enter image URL:');\n if (url) {\n document.execCommand(command, false, url);\n }\n } else if (command === 'formatBlock' && value) {\n document.execCommand(command, false, `<${value}>`);\n } else {\n document.execCommand(command, false, value);\n }\n\n // Trigger onChange after command\n if (editorRef.current) {\n const content = editorRef.current.innerHTML;\n onChange?.(content);\n setIsEmpty(!content || content === '<br>' || content === '<p><br></p>');\n }\n }, [disabled, readOnly, onChange]);\n\n const handleInput = useCallback(() => {\n if (editorRef.current) {\n const content = editorRef.current.innerHTML;\n onChange?.(content);\n setIsEmpty(!content || content === '<br>' || content === '<p><br></p>');\n }\n }, [onChange]);\n\n const handleFocus = useCallback(() => {\n setIsFocused(true);\n onFocus?.();\n }, [onFocus]);\n\n const handleBlur = useCallback(() => {\n setIsFocused(false);\n onBlur?.();\n }, [onBlur]);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n // Handle keyboard shortcuts\n if (e.ctrlKey || e.metaKey) {\n switch (e.key.toLowerCase()) {\n case 'b':\n e.preventDefault();\n execCommand('bold');\n break;\n case 'i':\n e.preventDefault();\n execCommand('italic');\n break;\n case 'u':\n e.preventDefault();\n execCommand('underline');\n break;\n case 'z':\n if (e.shiftKey) {\n e.preventDefault();\n execCommand('redo');\n } else {\n e.preventDefault();\n execCommand('undo');\n }\n break;\n }\n }\n }, [execCommand]);\n\n return (\n <div\n ref={ref}\n className={cn(\n 'zk-rich-text-editor',\n isFocused && 'zk-rich-text-editor--focused',\n disabled && 'zk-rich-text-editor--disabled',\n readOnly && 'zk-rich-text-editor--readonly',\n error && 'zk-rich-text-editor--error',\n className\n )}\n {...props}\n >\n {!hideToolbar && (\n <div\n className={cn(\n 'zk-rich-text-editor__toolbar',\n stickyToolbar && 'zk-rich-text-editor__toolbar--sticky'\n )}\n >\n {toolbar.map((option) => {\n const config = TOOLBAR_ICONS[option];\n return (\n <button\n key={option}\n type=\"button\"\n className=\"zk-rich-text-editor__button\"\n title={config.title}\n onClick={() => execCommand(config.command, config.value)}\n disabled={disabled || readOnly}\n >\n {config.icon}\n </button>\n );\n })}\n </div>\n )}\n\n <div className=\"zk-rich-text-editor__wrapper\" style={{ minHeight, maxHeight }}>\n <div\n ref={editorRef}\n className=\"zk-rich-text-editor__content\"\n contentEditable={!disabled && !readOnly}\n onInput={handleInput}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n suppressContentEditableWarning\n data-placeholder={placeholder}\n aria-placeholder={placeholder}\n aria-disabled={disabled}\n aria-readonly={readOnly}\n role=\"textbox\"\n aria-multiline=\"true\"\n />\n {isEmpty && !isFocused && (\n <div className=\"zk-rich-text-editor__placeholder\">{placeholder}</div>\n )}\n </div>\n </div>\n );\n }\n);\n\nRichTextEditor.displayName = 'RichTextEditor';\n","'use client';\n\nimport { forwardRef, useMemo, type SVGAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SparklineProps extends Omit<SVGAttributes<SVGSVGElement>, 'children'> {\n /** Data points */\n data: number[];\n /** Chart type */\n type?: 'line' | 'bar' | 'area';\n /** Width */\n width?: number;\n /** Height */\n height?: number;\n /** Stroke color */\n stroke?: string;\n /** Fill color (for area/bar) */\n fill?: string;\n /** Stroke width */\n strokeWidth?: number;\n /** Show dots on data points */\n showDots?: boolean;\n /** Dot radius */\n dotRadius?: number;\n /** Curved line */\n curved?: boolean;\n /** Highlight min/max */\n highlightMinMax?: boolean;\n /** Min color */\n minColor?: string;\n /** Max color */\n maxColor?: string;\n /** Bar gap ratio (0-1) */\n barGap?: number;\n /** Animation duration */\n animationDuration?: number;\n /** Reference line value */\n referenceLine?: number;\n /** Reference line color */\n referenceLineColor?: string;\n /** Tooltip formatter */\n tooltipFormatter?: (value: number, index: number) => string;\n}\n\nexport const Sparkline = forwardRef<SVGSVGElement, SparklineProps>(\n (\n {\n className,\n data,\n type = 'line',\n width = 100,\n height = 30,\n stroke = 'currentColor',\n fill = 'none',\n strokeWidth = 1.5,\n showDots = false,\n dotRadius = 2,\n curved = false,\n highlightMinMax = false,\n minColor = '#ef4444',\n maxColor = '#22c55e',\n barGap = 0.2,\n animationDuration = 0,\n referenceLine,\n referenceLineColor = '#9ca3af',\n ...props\n },\n ref\n ) => {\n const padding = showDots ? dotRadius + 2 : 2;\n\n const { minIndex, maxIndex, normalizedData } = useMemo(() => {\n if (data.length === 0) return { minIndex: -1, maxIndex: -1, normalizedData: [] };\n\n const min = Math.min(...data);\n const max = Math.max(...data);\n const range = max - min || 1;\n\n const normalized = data.map((value) => (value - min) / range);\n\n const chartWidth = width - padding * 2;\n const chartHeight = height - padding * 2;\n\n const pts = normalized.map((value, index) => {\n const x = padding + (index / (data.length - 1 || 1)) * chartWidth;\n const y = padding + (1 - value) * chartHeight;\n return { x, y, value: data[index] };\n });\n\n const minIdx = data.indexOf(min);\n const maxIdx = data.indexOf(max);\n\n return {\n minIndex: minIdx,\n maxIndex: maxIdx,\n normalizedData: pts,\n };\n }, [data, width, height, padding]);\n\n const linePath = useMemo(() => {\n if (normalizedData.length < 2) return '';\n\n if (curved) {\n // Catmull-Rom spline for smooth curves\n let path = `M ${normalizedData[0].x},${normalizedData[0].y}`;\n\n for (let i = 0; i < normalizedData.length - 1; i++) {\n const p0 = normalizedData[Math.max(0, i - 1)];\n const p1 = normalizedData[i];\n const p2 = normalizedData[i + 1];\n const p3 = normalizedData[Math.min(normalizedData.length - 1, i + 2)];\n\n const cp1x = p1.x + (p2.x - p0.x) / 6;\n const cp1y = p1.y + (p2.y - p0.y) / 6;\n const cp2x = p2.x - (p3.x - p1.x) / 6;\n const cp2y = p2.y - (p3.y - p1.y) / 6;\n\n path += ` C ${cp1x},${cp1y} ${cp2x},${cp2y} ${p2.x},${p2.y}`;\n }\n\n return path;\n }\n\n return `M ${normalizedData.map((p) => `${p.x},${p.y}`).join(' L ')}`;\n }, [normalizedData, curved]);\n\n const areaPath = useMemo(() => {\n if (normalizedData.length < 2 || type !== 'area') return '';\n\n const chartHeight = height - padding;\n return `${linePath} L ${normalizedData[normalizedData.length - 1].x},${chartHeight} L ${normalizedData[0].x},${chartHeight} Z`;\n }, [linePath, normalizedData, type, height, padding]);\n\n const referenceLineY = useMemo(() => {\n if (referenceLine === undefined || data.length === 0) return null;\n\n const min = Math.min(...data);\n const max = Math.max(...data);\n const range = max - min || 1;\n const normalized = (referenceLine - min) / range;\n const chartHeight = height - padding * 2;\n\n return padding + (1 - normalized) * chartHeight;\n }, [referenceLine, data, height, padding]);\n\n const bars = useMemo(() => {\n if (type !== 'bar' || data.length === 0) return [];\n\n const min = Math.min(...data, 0);\n const max = Math.max(...data);\n const range = max - min || 1;\n\n const chartWidth = width - padding * 2;\n const chartHeight = height - padding * 2;\n const barWidth = (chartWidth / data.length) * (1 - barGap);\n const gapWidth = (chartWidth / data.length) * barGap;\n const baseline = max > 0 && min < 0 ? padding + ((max - 0) / range) * chartHeight : height - padding;\n\n return data.map((value, index) => {\n const normalizedHeight = Math.abs(value - Math.min(min, 0)) / range;\n const barHeight = normalizedHeight * chartHeight;\n const x = padding + index * (barWidth + gapWidth);\n const y = value >= 0 ? baseline - barHeight : baseline;\n\n return {\n x,\n y,\n width: barWidth,\n height: Math.max(barHeight, 1),\n value,\n };\n });\n }, [type, data, width, height, padding, barGap]);\n\n if (data.length === 0) {\n return (\n <svg\n ref={ref}\n className={cn('sparkline', className)}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n {...props}\n >\n <text x={width / 2} y={height / 2} textAnchor=\"middle\" dominantBaseline=\"middle\" fontSize=\"10\" fill=\"#9ca3af\">\n No data\n </text>\n </svg>\n );\n }\n\n return (\n <svg\n ref={ref}\n className={cn('sparkline', `sparkline-${type}`, className)}\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n {...props}\n >\n {/* Reference line */}\n {referenceLineY !== null && (\n <line\n x1={padding}\n y1={referenceLineY}\n x2={width - padding}\n y2={referenceLineY}\n stroke={referenceLineColor}\n strokeWidth={1}\n strokeDasharray=\"3,3\"\n />\n )}\n\n {/* Area fill */}\n {type === 'area' && (\n <path\n d={areaPath}\n fill={fill !== 'none' ? fill : stroke}\n fillOpacity={0.2}\n stroke=\"none\"\n />\n )}\n\n {/* Line */}\n {(type === 'line' || type === 'area') && (\n <path\n d={linePath}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n style={{\n strokeDasharray: animationDuration ? '1000' : undefined,\n strokeDashoffset: animationDuration ? '1000' : undefined,\n animation: animationDuration ? `zk-sparkline-draw ${animationDuration}ms ease-out forwards` : undefined,\n }}\n />\n )}\n\n {/* Bars */}\n {type === 'bar' &&\n bars.map((bar, index) => (\n <rect\n key={index}\n x={bar.x}\n y={bar.y}\n width={bar.width}\n height={bar.height}\n fill={\n highlightMinMax && index === minIndex\n ? minColor\n : highlightMinMax && index === maxIndex\n ? maxColor\n : fill !== 'none'\n ? fill\n : stroke\n }\n rx={1}\n />\n ))}\n\n {/* Dots */}\n {showDots &&\n (type === 'line' || type === 'area') &&\n normalizedData.map((point, index) => (\n <circle\n key={index}\n cx={point.x}\n cy={point.y}\n r={dotRadius}\n fill={\n highlightMinMax && index === minIndex\n ? minColor\n : highlightMinMax && index === maxIndex\n ? maxColor\n : stroke\n }\n />\n ))}\n </svg>\n );\n }\n);\n\nSparkline.displayName = 'Sparkline';\n","'use client';\n\nimport { forwardRef, useMemo, type SVGAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface GaugeProps extends Omit<SVGAttributes<SVGSVGElement>, 'children'> {\n /** Current value */\n value: number;\n /** Minimum value */\n min?: number;\n /** Maximum value */\n max?: number;\n /** Size of the gauge */\n size?: number;\n /** Thickness of the arc */\n thickness?: number;\n /** Start angle in degrees (0 is top) */\n startAngle?: number;\n /** End angle in degrees */\n endAngle?: number;\n /** Color of the filled arc */\n color?: string;\n /** Background color of the arc */\n trackColor?: string;\n /** Show value label */\n showValue?: boolean;\n /** Value formatter */\n valueFormatter?: (value: number) => string;\n /** Value label */\n label?: ReactNode;\n /** Sub label */\n subLabel?: ReactNode;\n /** Gradient colors */\n gradient?: { offset: number; color: string }[];\n /** Color segments */\n segments?: { start: number; end: number; color: string }[];\n /** Show ticks */\n showTicks?: boolean;\n /** Number of ticks */\n tickCount?: number;\n /** Animated */\n animated?: boolean;\n /** Animation duration */\n animationDuration?: number;\n /** Needle style */\n needle?: boolean;\n /** Needle color */\n needleColor?: string;\n}\n\nexport const Gauge = forwardRef<SVGSVGElement, GaugeProps>(\n (\n {\n className,\n value,\n min = 0,\n max = 100,\n size = 120,\n thickness = 10,\n startAngle = -135,\n endAngle = 135,\n color = '#3b82f6',\n trackColor = '#e5e7eb',\n showValue = true,\n valueFormatter = (v) => `${Math.round(v)}`,\n label,\n subLabel,\n gradient,\n segments,\n showTicks = false,\n tickCount = 5,\n animated = true,\n animationDuration = 500,\n needle = false,\n needleColor = '#1f2937',\n ...props\n },\n ref\n ) => {\n const center = size / 2;\n const radius = center - thickness / 2;\n\n // Normalize value\n const normalizedValue = Math.max(min, Math.min(max, value));\n const percentage = (normalizedValue - min) / (max - min);\n\n // Convert angles to radians\n const startRad = (startAngle - 90) * (Math.PI / 180);\n const endRad = (endAngle - 90) * (Math.PI / 180);\n const totalAngle = endRad - startRad;\n const valueAngle = startRad + percentage * totalAngle;\n\n // Calculate arc paths\n const polarToCartesian = (angle: number) => ({\n x: center + radius * Math.cos(angle),\n y: center + radius * Math.sin(angle),\n });\n\n const createArc = (startA: number, endA: number) => {\n const start = polarToCartesian(startA);\n const end = polarToCartesian(endA);\n const largeArcFlag = Math.abs(endA - startA) > Math.PI ? 1 : 0;\n const sweepFlag = endA > startA ? 1 : 0;\n\n return `M ${start.x} ${start.y} A ${radius} ${radius} 0 ${largeArcFlag} ${sweepFlag} ${end.x} ${end.y}`;\n };\n\n // Track path\n const trackPath = createArc(startRad, endRad);\n\n // Value path\n const valuePath = percentage > 0 ? createArc(startRad, valueAngle) : '';\n\n // Gradient ID\n const gradientId = useMemo(() => `gauge-gradient-${Math.random().toString(36).substr(2, 9)}`, []);\n\n // Ticks\n const ticks = useMemo(() => {\n if (!showTicks) return [];\n\n return Array.from({ length: tickCount }, (_, i) => {\n const tickPercentage = i / (tickCount - 1);\n const tickAngle = startRad + tickPercentage * totalAngle;\n const innerRadius = radius - thickness / 2 - 4;\n const outerRadius = radius - thickness / 2 - 10;\n\n return {\n x1: center + innerRadius * Math.cos(tickAngle),\n y1: center + innerRadius * Math.sin(tickAngle),\n x2: center + outerRadius * Math.cos(tickAngle),\n y2: center + outerRadius * Math.sin(tickAngle),\n value: min + tickPercentage * (max - min),\n labelX: center + (outerRadius - 10) * Math.cos(tickAngle),\n labelY: center + (outerRadius - 10) * Math.sin(tickAngle),\n };\n });\n }, [showTicks, tickCount, startRad, totalAngle, radius, thickness, center, min, max]);\n\n // Needle\n const needlePoints = useMemo(() => {\n if (!needle) return null;\n\n const needleLength = radius - thickness - 5;\n const needleWidth = 6;\n\n const tipX = center + needleLength * Math.cos(valueAngle);\n const tipY = center + needleLength * Math.sin(valueAngle);\n\n const baseAngle1 = valueAngle + Math.PI / 2;\n const baseAngle2 = valueAngle - Math.PI / 2;\n\n const base1X = center + needleWidth * Math.cos(baseAngle1);\n const base1Y = center + needleWidth * Math.sin(baseAngle1);\n const base2X = center + needleWidth * Math.cos(baseAngle2);\n const base2Y = center + needleWidth * Math.sin(baseAngle2);\n\n return `${tipX},${tipY} ${base1X},${base1Y} ${base2X},${base2Y}`;\n }, [needle, radius, thickness, center, valueAngle]);\n\n // Segment paths\n const segmentPaths = useMemo(() => {\n if (!segments) return [];\n\n return segments.map((segment) => {\n const segStartPercentage = (segment.start - min) / (max - min);\n const segEndPercentage = (segment.end - min) / (max - min);\n const segStartAngle = startRad + segStartPercentage * totalAngle;\n const segEndAngle = startRad + segEndPercentage * totalAngle;\n\n return {\n path: createArc(segStartAngle, segEndAngle),\n color: segment.color,\n };\n });\n }, [segments, min, max, startRad, totalAngle]);\n\n return (\n <svg\n ref={ref}\n className={cn('gauge', className)}\n width={size}\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n {...props}\n >\n {/* Gradient definition */}\n {gradient && (\n <defs>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n {gradient.map((stop, i) => (\n <stop key={i} offset={`${stop.offset}%`} stopColor={stop.color} />\n ))}\n </linearGradient>\n </defs>\n )}\n\n {/* Track */}\n <path\n d={trackPath}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n />\n\n {/* Segments */}\n {segmentPaths.map((seg, i) => (\n <path\n key={i}\n d={seg.path}\n fill=\"none\"\n stroke={seg.color}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n />\n ))}\n\n {/* Value arc */}\n {!segments && valuePath && (\n <path\n d={valuePath}\n fill=\"none\"\n stroke={gradient ? `url(#${gradientId})` : color}\n strokeWidth={thickness}\n strokeLinecap=\"round\"\n style={{\n transition: animated ? `stroke-dashoffset ${animationDuration}ms ease-out` : undefined,\n }}\n />\n )}\n\n {/* Ticks */}\n {ticks.map((tick, i) => (\n <g key={i}>\n <line\n x1={tick.x1}\n y1={tick.y1}\n x2={tick.x2}\n y2={tick.y2}\n stroke={trackColor}\n strokeWidth={1}\n />\n </g>\n ))}\n\n {/* Needle */}\n {needle && needlePoints && (\n <>\n <polygon\n points={needlePoints}\n fill={needleColor}\n style={{\n transition: animated ? `transform ${animationDuration}ms ease-out` : undefined,\n }}\n />\n <circle cx={center} cy={center} r={8} fill={needleColor} />\n <circle cx={center} cy={center} r={4} fill=\"#fff\" />\n </>\n )}\n\n {/* Center content */}\n {(showValue || label || subLabel) && (\n <g>\n {showValue && (\n <text\n x={center}\n y={center + (label ? -8 : 0)}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n className=\"gauge-value\"\n fontSize={size / 5}\n fontWeight=\"600\"\n fill=\"currentColor\"\n >\n {valueFormatter(normalizedValue)}\n </text>\n )}\n {label && (\n <text\n x={center}\n y={center + (showValue ? 12 : 0)}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n className=\"gauge-label\"\n fontSize={size / 10}\n fill=\"currentColor\"\n opacity={0.7}\n >\n {label}\n </text>\n )}\n {subLabel && (\n <text\n x={center}\n y={center + 28}\n textAnchor=\"middle\"\n dominantBaseline=\"middle\"\n className=\"gauge-sublabel\"\n fontSize={size / 12}\n fill=\"currentColor\"\n opacity={0.5}\n >\n {subLabel}\n </text>\n )}\n </g>\n )}\n </svg>\n );\n }\n);\n\nGauge.displayName = 'Gauge';\n","'use client';\n\nimport { forwardRef, useState, useRef, useEffect, type HTMLAttributes, type ReactNode, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface LazyLoadProps extends HTMLAttributes<HTMLDivElement> {\n /** Children to lazy load */\n children: ReactNode;\n /** Placeholder content while loading */\n placeholder?: ReactNode;\n /** Height of the placeholder */\n height?: number | string;\n /** Width of the placeholder */\n width?: number | string;\n /** Offset from viewport to trigger load */\n offset?: number | string;\n /** Root margin for intersection observer */\n rootMargin?: string;\n /** Threshold for intersection observer */\n threshold?: number | number[];\n /** Once loaded, keep rendered */\n once?: boolean;\n /** Callback when element becomes visible */\n onVisible?: () => void;\n /** Callback when element is hidden */\n onHidden?: () => void;\n /** Animation when appearing */\n animation?: 'fade' | 'slide' | 'zoom' | 'none';\n /** Animation duration */\n animationDuration?: number;\n /** Disabled lazy loading */\n disabled?: boolean;\n /** Use skeleton placeholder */\n skeleton?: boolean;\n /** Skeleton animation */\n skeletonAnimation?: 'pulse' | 'wave' | 'none';\n}\n\nexport const LazyLoad = forwardRef<HTMLDivElement, LazyLoadProps>(\n (\n {\n className,\n children,\n placeholder,\n height,\n width,\n offset = 0,\n rootMargin,\n threshold = 0,\n once = true,\n onVisible,\n onHidden,\n animation = 'fade',\n animationDuration = 300,\n disabled = false,\n skeleton = false,\n skeletonAnimation = 'pulse',\n style,\n ...props\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = useState(disabled);\n const [hasLoaded, setHasLoaded] = useState(disabled);\n const containerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (disabled) {\n setIsVisible(true);\n setHasLoaded(true);\n return;\n }\n\n const element = containerRef.current;\n if (!element) return;\n\n // Calculate root margin\n const margin = rootMargin || (typeof offset === 'number' ? `${offset}px` : offset);\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n const visible = entry.isIntersecting;\n\n if (visible) {\n setIsVisible(true);\n setHasLoaded(true);\n onVisible?.();\n\n if (once) {\n observer.disconnect();\n }\n } else if (!once && hasLoaded) {\n setIsVisible(false);\n onHidden?.();\n }\n },\n {\n rootMargin: margin,\n threshold,\n }\n );\n\n observer.observe(element);\n\n return () => observer.disconnect();\n }, [disabled, offset, rootMargin, threshold, once, hasLoaded, onVisible, onHidden]);\n\n // Set ref\n useEffect(() => {\n if (typeof ref === 'function') {\n ref(containerRef.current);\n } else if (ref) {\n ref.current = containerRef.current;\n }\n }, [ref]);\n\n const animationStyles: CSSProperties = {\n transition: animation !== 'none' ? `opacity ${animationDuration}ms ease, transform ${animationDuration}ms ease` : undefined,\n opacity: isVisible ? 1 : 0,\n transform: isVisible\n ? 'none'\n : animation === 'slide'\n ? 'translateY(20px)'\n : animation === 'zoom'\n ? 'scale(0.95)'\n : undefined,\n };\n\n const placeholderStyles: CSSProperties = {\n height,\n width,\n minHeight: height,\n minWidth: width,\n };\n\n const defaultPlaceholder = skeleton ? (\n <div\n className={cn(\n 'zk-lazy-load__skeleton',\n skeletonAnimation === 'pulse' && 'zk-lazy-load__skeleton--pulse',\n skeletonAnimation === 'wave' && 'zk-lazy-load__skeleton--wave'\n )}\n style={placeholderStyles}\n />\n ) : (\n <div className=\"zk-lazy-load__placeholder\" style={placeholderStyles} />\n );\n\n return (\n <div\n ref={containerRef}\n className={cn(\n 'zk-lazy-load',\n isVisible && 'zk-lazy-load--visible',\n hasLoaded && 'zk-lazy-load--loaded',\n className\n )}\n style={{\n ...style,\n ...(hasLoaded ? {} : placeholderStyles),\n }}\n {...props}\n >\n {hasLoaded ? (\n <div style={animation !== 'none' ? animationStyles : undefined}>\n {children}\n </div>\n ) : (\n placeholder || defaultPlaceholder\n )}\n </div>\n );\n }\n);\n\nLazyLoad.displayName = 'LazyLoad';\n\n// Lazy Image component\nexport interface LazyImageProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, 'onLoad' | 'onError'> {\n /** Placeholder image src */\n placeholderSrc?: string;\n /** Blur placeholder data URL */\n blurDataURL?: string;\n /** On load callback */\n onLoad?: () => void;\n /** On error callback */\n onError?: () => void;\n /** Offset from viewport */\n offset?: number | string;\n /** Animation style */\n animation?: 'fade' | 'blur' | 'none';\n /** Animation duration */\n animationDuration?: number;\n}\n\nexport const LazyImage = forwardRef<HTMLImageElement, LazyImageProps>(\n (\n {\n className,\n src,\n alt,\n placeholderSrc,\n blurDataURL,\n onLoad,\n onError,\n offset = 100,\n animation = 'fade',\n animationDuration = 300,\n style,\n ...props\n },\n ref\n ) => {\n const [isLoaded, setIsLoaded] = useState(false);\n const [isVisible, setIsVisible] = useState(false);\n const [hasError, setHasError] = useState(false);\n const imgRef = useRef<HTMLImageElement>(null);\n\n useEffect(() => {\n const element = imgRef.current;\n if (!element) return;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setIsVisible(true);\n observer.disconnect();\n }\n },\n {\n rootMargin: typeof offset === 'number' ? `${offset}px` : offset,\n }\n );\n\n observer.observe(element);\n\n return () => observer.disconnect();\n }, [offset]);\n\n const handleLoad = () => {\n setIsLoaded(true);\n onLoad?.();\n };\n\n const handleError = () => {\n setHasError(true);\n onError?.();\n };\n\n // Set ref\n useEffect(() => {\n if (typeof ref === 'function') {\n ref(imgRef.current);\n } else if (ref) {\n ref.current = imgRef.current;\n }\n }, [ref]);\n\n const imageStyles: CSSProperties = {\n ...style,\n transition: animation !== 'none' ? `opacity ${animationDuration}ms ease, filter ${animationDuration}ms ease` : undefined,\n opacity: isLoaded ? 1 : animation === 'fade' ? 0 : 1,\n filter: !isLoaded && animation === 'blur' && blurDataURL ? 'blur(10px)' : 'none',\n };\n\n return (\n <img\n ref={imgRef}\n className={cn(\n 'zk-lazy-image',\n isLoaded && 'zk-lazy-image--loaded',\n hasError && 'zk-lazy-image--error',\n className\n )}\n src={isVisible ? (hasError && placeholderSrc ? placeholderSrc : src) : (blurDataURL || placeholderSrc || '')}\n alt={alt}\n onLoad={handleLoad}\n onError={handleError}\n style={imageStyles}\n {...props}\n />\n );\n }\n);\n\nLazyImage.displayName = 'LazyImage';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type GroupGap = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 0;\nexport type GroupJustify = 'left' | 'center' | 'right' | 'apart' | 'around' | 'evenly';\nexport type GroupAlign = 'start' | 'center' | 'end' | 'stretch' | 'baseline';\n\nexport interface GroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Gap between items */\n gap?: GroupGap;\n /** Horizontal alignment */\n justify?: GroupJustify;\n /** Vertical alignment */\n align?: GroupAlign;\n /** Prevent items from wrapping */\n nowrap?: boolean;\n /** Allow items to grow to fill space */\n grow?: boolean;\n /** Prevent items from growing */\n preventGrow?: boolean;\n}\n\nconst gapClasses: Record<GroupGap, string> = {\n 0: 'group-gap-0',\n xs: 'group-gap-xs',\n sm: 'group-gap-sm',\n md: 'group-gap-md',\n lg: 'group-gap-lg',\n xl: 'group-gap-xl',\n};\n\nconst justifyClasses: Record<GroupJustify, string> = {\n left: 'group-left',\n center: 'group-center',\n right: 'group-right',\n apart: 'group-apart',\n around: 'group-around',\n evenly: 'group-evenly',\n};\n\nconst alignClasses: Record<GroupAlign, string> = {\n start: 'group-align-start',\n center: 'group-align-center',\n end: 'group-align-end',\n stretch: 'group-align-stretch',\n baseline: 'group-align-baseline',\n};\n\nexport const Group = forwardRef<HTMLDivElement, GroupProps>(\n (\n {\n gap = 'md',\n justify = 'left',\n align = 'center',\n nowrap = false,\n grow = false,\n preventGrow = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'group',\n gapClasses[gap],\n justifyClasses[justify],\n alignClasses[align],\n nowrap && 'group-nowrap',\n grow && 'group-grow',\n preventGrow && 'group-prevent-grow',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nGroup.displayName = 'Group';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type FloatPlacement =\n | 'top-left'\n | 'top-center'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-center'\n | 'bottom-right'\n | 'left-center'\n | 'right-center'\n | 'center';\n\nexport type FloatOffset = 1 | 2 | 3 | 4;\n\nexport interface FloatProps extends HTMLAttributes<HTMLDivElement> {\n /** Position of the floating element */\n placement?: FloatPlacement;\n /** Offset from the edge */\n offset?: FloatOffset;\n /** Place element outside the container */\n outside?: boolean;\n}\n\nconst placementClasses: Record<FloatPlacement, string> = {\n 'top-left': 'float-top-left',\n 'top-center': 'float-top-center',\n 'top-right': 'float-top-right',\n 'bottom-left': 'float-bottom-left',\n 'bottom-center': 'float-bottom-center',\n 'bottom-right': 'float-bottom-right',\n 'left-center': 'float-left-center',\n 'right-center': 'float-right-center',\n center: 'float-center',\n};\n\nconst offsetClasses: Record<FloatOffset, string> = {\n 1: 'float-offset-1',\n 2: 'float-offset-2',\n 3: 'float-offset-3',\n 4: 'float-offset-4',\n};\n\nexport const Float = forwardRef<HTMLDivElement, FloatProps>(\n (\n {\n placement = 'top-right',\n offset,\n outside = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'float',\n placementClasses[placement],\n offset && offsetClasses[offset],\n outside && 'float-outside',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nFloat.displayName = 'Float';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type OverlayOpacity = 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90;\nexport type OverlayBlur = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type OverlayRadius = 'sm' | 'md' | 'lg';\n\nexport interface OverlayProps extends HTMLAttributes<HTMLDivElement> {\n /** Background opacity (10-90) */\n opacity?: OverlayOpacity;\n /** Backdrop blur level */\n blur?: OverlayBlur;\n /** Use fixed positioning instead of absolute */\n fixed?: boolean;\n /** Center content within overlay */\n center?: boolean;\n /** Use white background instead of black */\n white?: boolean;\n /** Use gradient background */\n gradient?: boolean;\n /** Border radius */\n radius?: OverlayRadius;\n /** Custom z-index */\n zIndex?: number;\n}\n\nconst opacityClasses: Record<OverlayOpacity, string> = {\n 10: 'overlay-opacity-10',\n 20: 'overlay-opacity-20',\n 30: 'overlay-opacity-30',\n 40: 'overlay-opacity-40',\n 50: 'overlay-opacity-50',\n 60: 'overlay-opacity-60',\n 70: 'overlay-opacity-70',\n 80: 'overlay-opacity-80',\n 90: 'overlay-opacity-90',\n};\n\nconst blurClasses: Record<OverlayBlur, string> = {\n xs: 'overlay-blur-xs',\n sm: 'overlay-blur-sm',\n md: 'overlay-blur-md',\n lg: 'overlay-blur-lg',\n xl: 'overlay-blur-xl',\n};\n\nconst radiusClasses: Record<OverlayRadius, string> = {\n sm: 'overlay-radius-sm',\n md: 'overlay-radius-md',\n lg: 'overlay-radius-lg',\n};\n\nexport const Overlay = forwardRef<HTMLDivElement, OverlayProps>(\n (\n {\n opacity,\n blur,\n fixed = false,\n center = false,\n white = false,\n gradient = false,\n radius,\n zIndex,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'overlay',\n opacity && opacityClasses[opacity],\n blur && blurClasses[blur],\n fixed && 'overlay-fixed',\n center && 'overlay-center',\n white && 'overlay-white',\n gradient && 'overlay-gradient',\n radius && radiusClasses[radius],\n className\n )}\n style={{ ...style, ...(zIndex !== undefined && { zIndex }) }}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nOverlay.displayName = 'Overlay';\n","import { forwardRef, type ButtonHTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type ActionIconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type ActionIconVariant = 'default' | 'filled' | 'light' | 'outline' | 'subtle' | 'transparent';\nexport type ActionIconColor = 'default' | 'primary' | 'success' | 'warning' | 'danger';\n\nexport interface ActionIconProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon size */\n size?: ActionIconSize;\n /** Visual variant */\n variant?: ActionIconVariant;\n /** Color theme */\n color?: ActionIconColor;\n /** Loading state */\n loading?: boolean;\n /** Custom loader element */\n loader?: ReactNode;\n}\n\nconst sizeClasses: Record<ActionIconSize, string> = {\n xs: 'action-icon-xs',\n sm: 'action-icon-sm',\n md: 'action-icon-md',\n lg: 'action-icon-lg',\n xl: 'action-icon-xl',\n};\n\nconst variantClasses: Record<ActionIconVariant, string> = {\n default: '',\n filled: 'action-icon-filled',\n light: 'action-icon-light',\n outline: 'action-icon-outline',\n subtle: 'action-icon-subtle',\n transparent: 'action-icon-transparent',\n};\n\nconst colorClasses: Record<ActionIconColor, string> = {\n default: '',\n primary: 'action-icon-primary',\n success: 'action-icon-success',\n warning: 'action-icon-warning',\n danger: 'action-icon-danger',\n};\n\nexport const ActionIcon = forwardRef<HTMLButtonElement, ActionIconProps>(\n (\n {\n size = 'md',\n variant = 'default',\n color = 'default',\n loading = false,\n loader,\n className,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'action-icon',\n sizeClasses[size],\n variantClasses[variant],\n colorClasses[color],\n loading && 'action-icon-loading',\n className\n )}\n disabled={disabled || loading}\n {...props}\n >\n {loading ? (\n loader || (\n <span className=\"action-icon-loader\">\n <svg\n width=\"70%\"\n height=\"70%\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M12 2v4M12 18v4M4.93 4.93l2.83 2.83M16.24 16.24l2.83 2.83M2 12h4M18 12h4M4.93 19.07l2.83-2.83M16.24 7.76l2.83-2.83\" />\n </svg>\n </span>\n )\n ) : (\n children\n )}\n </button>\n );\n }\n);\n\nActionIcon.displayName = 'ActionIcon';\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface UnstyledButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Make button full width */\n block?: boolean;\n}\n\nexport const UnstyledButton = forwardRef<HTMLButtonElement, UnstyledButtonProps>(\n ({ block = false, className, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'unstyled-button',\n block && 'unstyled-button-block',\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nUnstyledButton.displayName = 'UnstyledButton';\n","import {\n forwardRef,\n useRef,\n type ReactNode,\n type InputHTMLAttributes,\n useImperativeHandle,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface FileButtonProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'children' | 'onChange'> {\n /** Render function for the button */\n children: (props: { onClick: () => void }) => ReactNode;\n /** Callback when files are selected */\n onChange?: (files: File | File[] | null) => void;\n /** Allow multiple file selection */\n multiple?: boolean;\n /** Reset input value after each selection */\n resetRef?: React.RefObject<() => void>;\n}\n\nexport interface FileButtonRef {\n reset: () => void;\n}\n\nexport const FileButton = forwardRef<FileButtonRef, FileButtonProps>(\n (\n {\n children,\n onChange,\n multiple = false,\n accept,\n disabled = false,\n className,\n resetRef,\n ...props\n },\n ref\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n const reset = () => {\n if (inputRef.current) {\n inputRef.current.value = '';\n }\n };\n\n useImperativeHandle(ref, () => ({\n reset,\n }));\n\n // Also expose reset via resetRef for backwards compatibility\n if (resetRef) {\n (resetRef as React.MutableRefObject<() => void>).current = reset;\n }\n\n const handleClick = () => {\n inputRef.current?.click();\n };\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { files } = event.target;\n if (onChange && files) {\n if (multiple) {\n onChange(Array.from(files));\n } else {\n onChange(files[0] || null);\n }\n }\n };\n\n return (\n <div className={cn('file-button', disabled && 'file-button-disabled', className)}>\n <input\n ref={inputRef}\n type=\"file\"\n className=\"file-button-input\"\n onChange={handleChange}\n multiple={multiple}\n accept={accept}\n disabled={disabled}\n {...props}\n />\n <div className=\"file-button-content\">{children({ onClick: handleClick })}</div>\n </div>\n );\n }\n);\n\nFileButton.displayName = 'FileButton';\n","import { forwardRef, type HTMLAttributes, type CSSProperties } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type FloatingIndicatorVariant = 'default' | 'filled' | 'light' | 'outline';\n\nexport interface FloatingIndicatorProps extends HTMLAttributes<HTMLDivElement> {\n /** Visual variant */\n variant?: FloatingIndicatorVariant;\n /** Disable transition animation */\n noTransition?: boolean;\n /** Hide the indicator */\n hidden?: boolean;\n /** Target element dimensions and position */\n target?: {\n width: number;\n height: number;\n x: number;\n y: number;\n };\n}\n\nconst variantClasses: Record<FloatingIndicatorVariant, string> = {\n default: '',\n filled: 'floating-indicator-filled',\n light: 'floating-indicator-light',\n outline: 'floating-indicator-outline',\n};\n\nexport const FloatingIndicator = forwardRef<HTMLDivElement, FloatingIndicatorProps>(\n (\n {\n variant = 'default',\n noTransition = false,\n hidden = false,\n target,\n className,\n style,\n ...props\n },\n ref\n ) => {\n const indicatorStyle: CSSProperties = {\n ...style,\n ...(target && {\n width: target.width,\n height: target.height,\n transform: `translate(${target.x}px, ${target.y}px)`,\n }),\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'floating-indicator',\n variantClasses[variant],\n noTransition && 'floating-indicator-no-transition',\n hidden && 'floating-indicator-hidden',\n className\n )}\n style={indicatorStyle}\n {...props}\n />\n );\n }\n);\n\nFloatingIndicator.displayName = 'FloatingIndicator';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type PillSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type PillVariant = 'default' | 'filled' | 'outline';\n\nexport interface PillProps extends HTMLAttributes<HTMLSpanElement> {\n /** Size variant */\n size?: PillSize;\n /** Visual variant */\n variant?: PillVariant;\n /** Show remove button */\n withRemoveButton?: boolean;\n /** Callback when remove button clicked */\n onRemove?: () => void;\n /** Disabled state */\n disabled?: boolean;\n /** Icon displayed before label */\n leftSection?: ReactNode;\n}\n\nconst sizeClasses: Record<PillSize, string> = {\n xs: 'pill-xs',\n sm: 'pill-sm',\n md: 'pill-md',\n lg: 'pill-lg',\n xl: 'pill-xl',\n};\n\nconst variantClasses: Record<PillVariant, string> = {\n default: '',\n filled: 'pill-filled',\n outline: 'pill-outline',\n};\n\nexport const Pill = forwardRef<HTMLSpanElement, PillProps>(\n (\n {\n size = 'md',\n variant = 'default',\n withRemoveButton = false,\n onRemove,\n disabled = false,\n leftSection,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <span\n ref={ref}\n className={cn(\n 'pill',\n sizeClasses[size],\n variantClasses[variant],\n leftSection && 'pill-with-icon',\n disabled && 'pill-disabled',\n className\n )}\n {...props}\n >\n {leftSection}\n <span className=\"pill-label\">{children}</span>\n {withRemoveButton && (\n <button\n type=\"button\"\n className=\"pill-remove\"\n onClick={onRemove}\n disabled={disabled}\n aria-label=\"Remove\"\n >\n <svg\n width=\"10\"\n height=\"10\"\n viewBox=\"0 0 10 10\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n >\n <path d=\"M1 1l8 8M9 1l-8 8\" />\n </svg>\n </button>\n )}\n </span>\n );\n }\n);\n\nPill.displayName = 'Pill';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type MarkColor =\n | 'yellow'\n | 'blue'\n | 'cyan'\n | 'green'\n | 'lime'\n | 'orange'\n | 'pink'\n | 'red'\n | 'grape'\n | 'violet'\n | 'indigo'\n | 'teal'\n | 'dark'\n | 'light';\n\nexport interface MarkProps extends HTMLAttributes<HTMLElement> {\n /** Highlight color */\n color?: MarkColor;\n}\n\nconst colorClasses: Record<MarkColor, string> = {\n yellow: 'mark-yellow',\n blue: 'mark-blue',\n cyan: 'mark-cyan',\n green: 'mark-green',\n lime: 'mark-lime',\n orange: 'mark-orange',\n pink: 'mark-pink',\n red: 'mark-red',\n grape: 'mark-grape',\n violet: 'mark-violet',\n indigo: 'mark-indigo',\n teal: 'mark-teal',\n dark: 'mark-dark',\n light: 'mark-light',\n};\n\nexport const Mark = forwardRef<HTMLElement, MarkProps>(\n ({ color, className, children, ...props }, ref) => {\n return (\n <mark\n ref={ref}\n className={cn('mark', color && colorClasses[color], className)}\n {...props}\n >\n {children}\n </mark>\n );\n }\n);\n\nMark.displayName = 'Mark';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type UserSize = 'xs' | 'sm' | 'md' | 'lg';\n\nexport interface UserProps extends HTMLAttributes<HTMLDivElement> {\n /** User's display name */\n name: string;\n /** Description or subtitle */\n description?: string;\n /** Avatar element */\n avatar?: ReactNode;\n /** Size variant */\n size?: UserSize;\n /** Show border around avatar */\n bordered?: boolean;\n /** Make user card interactive/clickable */\n interactive?: boolean;\n /** Use squared avatar instead of circular */\n squared?: boolean;\n /** Vertical layout */\n vertical?: boolean;\n}\n\nconst sizeClasses: Record<UserSize, string> = {\n xs: 'user-xs',\n sm: 'user-sm',\n md: 'user-md',\n lg: 'user-lg',\n};\n\nexport const User = forwardRef<HTMLDivElement, UserProps>(\n (\n {\n name,\n description,\n avatar,\n size = 'md',\n bordered = false,\n interactive = false,\n squared = false,\n vertical = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'user',\n sizeClasses[size],\n bordered && 'user-bordered',\n interactive && 'user-interactive',\n squared && 'user-squared',\n vertical && 'user-vertical',\n className\n )}\n {...props}\n >\n {avatar && <div className=\"user-avatar\">{avatar}</div>}\n <div className=\"user-info\">\n <span className=\"user-name\">{name}</span>\n {description && <span className=\"user-description\">{description}</span>}\n </div>\n </div>\n );\n }\n);\n\nUser.displayName = 'User';\n","import { forwardRef, type HTMLAttributes, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type DataListSize = 'sm' | 'md' | 'lg';\nexport type DataListOrientation = 'vertical' | 'horizontal';\n\nexport interface DataListItemProps {\n /** Label for the data item */\n label: string;\n /** Value to display */\n value: ReactNode;\n}\n\nexport interface DataListProps extends HTMLAttributes<HTMLDListElement> {\n /** Data items to display */\n items: DataListItemProps[];\n /** Size variant */\n size?: DataListSize;\n /** Layout orientation */\n orientation?: DataListOrientation;\n /** Display items inline (label and value on same line) */\n inline?: boolean;\n /** Add dividers between items */\n divided?: boolean;\n /** Striped background */\n striped?: boolean;\n}\n\nconst sizeClasses: Record<DataListSize, string> = {\n sm: 'data-list-dense',\n md: '',\n lg: 'data-list-lg',\n};\n\nexport const DataList = forwardRef<HTMLDListElement, DataListProps>(\n (\n {\n items,\n size = 'md',\n orientation = 'vertical',\n inline = false,\n divided = false,\n striped = false,\n className,\n ...props\n },\n ref\n ) => {\n return (\n <dl\n ref={ref}\n className={cn(\n 'data-list',\n sizeClasses[size],\n orientation === 'horizontal' && 'data-list-horizontal',\n inline && 'data-list-inline',\n divided && 'data-list-divided',\n striped && 'data-list-striped',\n className\n )}\n {...props}\n >\n {items.map((item, index) => (\n <div key={index} className=\"data-list-item\">\n <dt className=\"data-list-label\">{item.label}</dt>\n <dd className=\"data-list-value\">{item.value}</dd>\n </div>\n ))}\n </dl>\n );\n }\n);\n\nDataList.displayName = 'DataList';\n","import { forwardRef, type HTMLAttributes, type CSSProperties, type ReactNode } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type BackgroundImageRadius = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type BackgroundImageRatio = '16-9' | '4-3' | '1-1' | '21-9';\nexport type BackgroundImageOverlay = 'dark' | 'light' | 'gradient';\n\nexport interface BackgroundImageProps extends HTMLAttributes<HTMLDivElement> {\n /** Image source URL */\n src: string;\n /** Border radius */\n radius?: BackgroundImageRadius;\n /** Aspect ratio */\n ratio?: BackgroundImageRatio;\n /** Fill container (width and height 100%) */\n fill?: boolean;\n /** Fixed background attachment (parallax effect) */\n fixed?: boolean;\n /** Overlay type */\n overlay?: BackgroundImageOverlay;\n /** Content to render on top of the image */\n children?: ReactNode;\n}\n\nconst radiusClasses: Record<BackgroundImageRadius, string> = {\n xs: 'background-image-radius-xs',\n sm: 'background-image-radius-sm',\n md: 'background-image-radius-md',\n lg: 'background-image-radius-lg',\n xl: 'background-image-radius-xl',\n};\n\nconst ratioClasses: Record<BackgroundImageRatio, string> = {\n '16-9': 'background-image-ratio-16-9',\n '4-3': 'background-image-ratio-4-3',\n '1-1': 'background-image-ratio-1-1',\n '21-9': 'background-image-ratio-21-9',\n};\n\nconst overlayClasses: Record<BackgroundImageOverlay, string> = {\n dark: 'background-image-overlay',\n light: 'background-image-overlay background-image-overlay-light',\n gradient: 'background-image-overlay background-image-overlay-gradient',\n};\n\nexport const BackgroundImage = forwardRef<HTMLDivElement, BackgroundImageProps>(\n (\n {\n src,\n radius,\n ratio,\n fill = false,\n fixed = false,\n overlay,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const imageStyle: CSSProperties = {\n ...style,\n backgroundImage: `url(${src})`,\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n 'background-image',\n radius && radiusClasses[radius],\n ratio && ratioClasses[ratio],\n fill && 'background-image-fill',\n fixed && 'background-image-fixed',\n className\n )}\n style={imageStyle}\n {...props}\n >\n {overlay && <div className={overlayClasses[overlay]} />}\n {children && <div className=\"background-image-content\">{children}</div>}\n </div>\n );\n }\n);\n\nBackgroundImage.displayName = 'BackgroundImage';\n","import { forwardRef, type AnchorHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface SkipNavLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Target content ID (without #) */\n contentId?: string;\n /** Position in center of screen instead of top-left */\n center?: boolean;\n}\n\nexport const SkipNavLink = forwardRef<HTMLAnchorElement, SkipNavLinkProps>(\n (\n {\n contentId = 'main-content',\n center = false,\n className,\n children = 'Skip to main content',\n ...props\n },\n ref\n ) => {\n return (\n <a\n ref={ref}\n href={`#${contentId}`}\n className={cn('skip-nav-link', center && 'skip-nav-link-center', className)}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\n\nSkipNavLink.displayName = 'SkipNavLink';\n\nexport interface SkipNavContentProps extends React.HTMLAttributes<HTMLDivElement> {\n /** Content ID (must match SkipNavLink's contentId) */\n id?: string;\n}\n\nexport const SkipNavContent = forwardRef<HTMLDivElement, SkipNavContentProps>(\n ({ id = 'main-content', className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n id={id}\n tabIndex={-1}\n className={cn('skip-nav-content', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nSkipNavContent.displayName = 'SkipNavContent';\n","import { forwardRef, type HTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type AbsoluteCenterAxis = 'both' | 'horizontal' | 'vertical';\n\nexport interface AbsoluteCenterProps extends HTMLAttributes<HTMLDivElement> {\n /** Axis to center on */\n axis?: AbsoluteCenterAxis;\n}\n\nconst axisClasses: Record<AbsoluteCenterAxis, string> = {\n both: 'absolute-center',\n horizontal: 'absolute-center-horizontal',\n vertical: 'absolute-center-vertical',\n};\n\nexport const AbsoluteCenter = forwardRef<HTMLDivElement, AbsoluteCenterProps>(\n ({ axis = 'both', className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(axisClasses[axis], className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nAbsoluteCenter.displayName = 'AbsoluteCenter';\n","import {\n forwardRef,\n type InputHTMLAttributes,\n type ReactNode,\n type KeyboardEvent,\n useRef,\n useImperativeHandle,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type PillsInputSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\nexport type PillsInputVariant = 'default' | 'filled' | 'unstyled';\n\nexport interface PillsInputProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\n /** Pills to display */\n children?: ReactNode;\n /** Size variant */\n size?: PillsInputSize;\n /** Visual variant */\n variant?: PillsInputVariant;\n /** Error state */\n error?: boolean;\n /** Callback when wrapper is clicked */\n onWrapperClick?: () => void;\n}\n\nexport interface PillsInputFieldProps\n extends InputHTMLAttributes<HTMLInputElement> {\n /** Callback when Enter is pressed */\n onEnter?: (value: string) => void;\n}\n\nconst sizeClasses: Record<PillsInputSize, string> = {\n xs: 'pills-input-xs',\n sm: 'pills-input-sm',\n md: 'pills-input-md',\n lg: 'pills-input-lg',\n xl: 'pills-input-xl',\n};\n\nconst variantClasses: Record<PillsInputVariant, string> = {\n default: '',\n filled: 'pills-input-filled',\n unstyled: 'pills-input-unstyled',\n};\n\nexport const PillsInput = forwardRef<HTMLDivElement, PillsInputProps>(\n (\n {\n children,\n size = 'md',\n variant = 'default',\n error = false,\n disabled = false,\n readOnly = false,\n className,\n onWrapperClick,\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n className={cn(\n 'pills-input',\n sizeClasses[size],\n variantClasses[variant],\n error && 'pills-input-error',\n disabled && 'pills-input-disabled',\n readOnly && 'pills-input-readonly',\n className\n )}\n onClick={onWrapperClick}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nPillsInput.displayName = 'PillsInput';\n\nexport const PillsInputField = forwardRef<HTMLInputElement, PillsInputFieldProps>(\n ({ onEnter, onKeyDown, className, ...props }, ref) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === 'Enter' && onEnter && inputRef.current) {\n e.preventDefault();\n onEnter(inputRef.current.value);\n }\n onKeyDown?.(e);\n };\n\n return (\n <input\n ref={inputRef}\n type=\"text\"\n className={cn('pills-input-field', className)}\n onKeyDown={handleKeyDown}\n {...props}\n />\n );\n }\n);\n\nPillsInputField.displayName = 'PillsInputField';\n","import { forwardRef, type ButtonHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type BurgerSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport interface BurgerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Whether the burger is in opened state */\n opened: boolean;\n /** Size variant */\n size?: BurgerSize;\n /** Accessible label */\n 'aria-label'?: string;\n}\n\nconst sizeClasses: Record<BurgerSize, string> = {\n xs: 'burger-xs',\n sm: 'burger-sm',\n md: 'burger-md',\n lg: 'burger-lg',\n xl: 'burger-xl',\n};\n\nexport const Burger = forwardRef<HTMLButtonElement, BurgerProps>(\n (\n {\n opened,\n size = 'md',\n disabled = false,\n className,\n 'aria-label': ariaLabel = 'Toggle navigation',\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n 'burger',\n sizeClasses[size],\n opened && 'burger-opened',\n disabled && 'burger-disabled',\n className\n )}\n aria-expanded={opened}\n aria-label={ariaLabel}\n disabled={disabled}\n {...props}\n >\n <div className=\"burger-inner\">\n <span className=\"burger-line\" />\n <span className=\"burger-line\" />\n <span className=\"burger-line\" />\n </div>\n </button>\n );\n }\n);\n\nBurger.displayName = 'Burger';\n","import {\n forwardRef,\n createContext,\n type HTMLAttributes,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type ListboxSize = 'sm' | 'md' | 'lg';\n\ninterface ListboxContextValue {\n size: ListboxSize;\n multiple: boolean;\n}\n\nconst ListboxContext = createContext<ListboxContextValue>({\n size: 'md',\n multiple: false,\n});\n\nexport interface ListboxProps extends HTMLAttributes<HTMLDivElement> {\n /** Size variant */\n size?: ListboxSize;\n /** Allow multiple selection */\n multiple?: boolean;\n}\n\nexport interface ListboxButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Placeholder text when no selection */\n placeholder?: string;\n /** Icon to show */\n icon?: ReactNode;\n}\n\nexport interface ListboxOptionsProps extends HTMLAttributes<HTMLUListElement> {}\n\nexport interface ListboxOptionProps extends HTMLAttributes<HTMLLIElement> {\n /** Option value */\n value: string;\n /** Whether option is selected */\n selected?: boolean;\n /** Whether option is disabled */\n disabled?: boolean;\n /** Whether option is currently active/focused */\n active?: boolean;\n /** Icon to display */\n icon?: ReactNode;\n /** Description text */\n description?: string;\n}\n\nexport interface ListboxGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Group label */\n label: string;\n}\n\nconst sizeClasses: Record<ListboxSize, string> = {\n sm: 'listbox-sm',\n md: '',\n lg: 'listbox-lg',\n};\n\nexport const Listbox = forwardRef<HTMLDivElement, ListboxProps>(\n ({ size = 'md', multiple = false, className, children, ...props }, ref) => {\n return (\n <ListboxContext.Provider value={{ size, multiple }}>\n <div\n ref={ref}\n className={cn('listbox', sizeClasses[size], multiple && 'listbox-multiple', className)}\n role=\"listbox\"\n aria-multiselectable={multiple}\n {...props}\n >\n {children}\n </div>\n </ListboxContext.Provider>\n );\n }\n);\n\nListbox.displayName = 'Listbox';\n\nexport const ListboxButton = forwardRef<HTMLButtonElement, ListboxButtonProps>(\n ({ placeholder, icon, className, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('listbox-button', className)}\n {...props}\n >\n <span>{children || placeholder}</span>\n {icon && <span className=\"listbox-button-icon\">{icon}</span>}\n </button>\n );\n }\n);\n\nListboxButton.displayName = 'ListboxButton';\n\nexport const ListboxOptions = forwardRef<HTMLUListElement, ListboxOptionsProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <ul\n ref={ref}\n className={cn('listbox-options', className)}\n role=\"listbox\"\n {...props}\n >\n {children}\n </ul>\n );\n }\n);\n\nListboxOptions.displayName = 'ListboxOptions';\n\nexport const ListboxOption = forwardRef<HTMLLIElement, ListboxOptionProps>(\n (\n {\n value,\n selected = false,\n disabled = false,\n active = false,\n icon,\n description,\n className,\n children,\n ...props\n },\n ref\n ) => {\n return (\n <li\n ref={ref}\n role=\"option\"\n aria-selected={selected}\n aria-disabled={disabled}\n data-value={value}\n className={cn(\n 'listbox-option',\n selected && 'listbox-option-selected',\n disabled && 'listbox-option-disabled',\n active && 'listbox-option-active',\n className\n )}\n {...props}\n >\n {selected && (\n <span className=\"listbox-option-check\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z\" />\n </svg>\n </span>\n )}\n {icon && <span className=\"listbox-option-icon\">{icon}</span>}\n <span className=\"listbox-option-content\">\n <span className=\"listbox-option-label\">{children}</span>\n {description && <span className=\"listbox-option-description\">{description}</span>}\n </span>\n </li>\n );\n }\n);\n\nListboxOption.displayName = 'ListboxOption';\n\nexport const ListboxGroup = forwardRef<HTMLDivElement, ListboxGroupProps>(\n ({ label, className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('listbox-group', className)} role=\"group\" {...props}>\n <div className=\"listbox-group-label\">{label}</div>\n {children}\n </div>\n );\n }\n);\n\nListboxGroup.displayName = 'ListboxGroup';\n\nexport const ListboxDivider = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n return <div ref={ref} className={cn('listbox-divider', className)} role=\"separator\" {...props} />;\n }\n);\n\nListboxDivider.displayName = 'ListboxDivider';\n\nexport const ListboxEmpty = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, children = 'No options', ...props }, ref) => {\n return (\n <div ref={ref} className={cn('listbox-empty', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nListboxEmpty.displayName = 'ListboxEmpty';\n","import { forwardRef, type HTMLAttributes, type AnchorHTMLAttributes } from 'react';\nimport { cn } from '../../utils/cn';\n\nexport interface LinkBoxProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport interface LinkOverlayProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Remove default link styling */\n unstyled?: boolean;\n}\n\n/**\n * LinkBox - Container that makes its child LinkOverlay cover the entire box.\n * Use this to make entire cards or sections clickable while keeping other\n * interactive elements accessible.\n */\nexport const LinkBox = forwardRef<HTMLDivElement, LinkBoxProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div ref={ref} className={cn('link-box', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nLinkBox.displayName = 'LinkBox';\n\n/**\n * LinkOverlay - A link that stretches to cover its nearest LinkBox parent.\n * Place this inside a LinkBox to make the entire box clickable.\n */\nexport const LinkOverlay = forwardRef<HTMLAnchorElement, LinkOverlayProps>(\n ({ unstyled = false, className, children, ...props }, ref) => {\n return (\n <a\n ref={ref}\n className={cn('link-overlay', unstyled && 'link-overlay-unstyled', className)}\n {...props}\n >\n {children}\n </a>\n );\n }\n);\n\nLinkOverlay.displayName = 'LinkOverlay';\n","import {\n forwardRef,\n useState,\n useRef,\n useEffect,\n type HTMLAttributes,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type ToggletipPlacement = 'top' | 'bottom' | 'left' | 'right';\n\nexport interface ToggletipProps extends HTMLAttributes<HTMLDivElement> {\n /** Controlled open state */\n open?: boolean;\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Placement of the content */\n placement?: ToggletipPlacement;\n /** Show close button in content */\n withCloseButton?: boolean;\n}\n\nexport interface ToggletipTriggerProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display */\n icon?: ReactNode;\n}\n\nexport interface ToggletipContentProps extends HTMLAttributes<HTMLDivElement> {}\n\nconst placementClasses: Record<ToggletipPlacement, string> = {\n top: 'toggletip-top',\n bottom: 'toggletip-bottom',\n left: 'toggletip-left',\n right: 'toggletip-right',\n};\n\nexport const Toggletip = forwardRef<HTMLDivElement, ToggletipProps>(\n (\n {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n placement = 'top',\n withCloseButton = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n const containerRef = useRef<HTMLDivElement>(null);\n\n const setOpen = (value: boolean) => {\n if (!isControlled) {\n setUncontrolledOpen(value);\n }\n onOpenChange?.(value);\n };\n\n // Close on click outside\n useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\n setOpen(false);\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => document.removeEventListener('mousedown', handleClickOutside);\n }, [isOpen]);\n\n // Close on escape\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setOpen(false);\n }\n };\n\n document.addEventListener('keydown', handleEscape);\n return () => document.removeEventListener('keydown', handleEscape);\n }, [isOpen]);\n\n return (\n <div\n ref={(node) => {\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n }}\n className={cn(\n 'toggletip',\n placementClasses[placement],\n isOpen && 'toggletip-open',\n withCloseButton && 'toggletip-with-close',\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nToggletip.displayName = 'Toggletip';\n\nexport const ToggletipTrigger = forwardRef<HTMLButtonElement, ToggletipTriggerProps>(\n ({ icon, className, children, onClick, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('toggletip-trigger', className)}\n onClick={onClick}\n aria-haspopup=\"true\"\n {...props}\n >\n {icon && <span className=\"toggletip-trigger-icon\">{icon}</span>}\n {children}\n </button>\n );\n }\n);\n\nToggletipTrigger.displayName = 'ToggletipTrigger';\n\nexport const ToggletipContent = forwardRef<HTMLDivElement, ToggletipContentProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n role=\"status\"\n className={cn('toggletip-content', className)}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nToggletipContent.displayName = 'ToggletipContent';\n\nexport interface ToggletipCloseProps extends ButtonHTMLAttributes<HTMLButtonElement> {}\n\nexport const ToggletipClose = forwardRef<HTMLButtonElement, ToggletipCloseProps>(\n ({ className, children, ...props }, ref) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('toggletip-close', className)}\n aria-label=\"Close\"\n {...props}\n >\n {children || (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"currentColor\">\n <path d=\"M2.22 2.22a.75.75 0 011.06 0L6 4.94l2.72-2.72a.75.75 0 111.06 1.06L7.06 6l2.72 2.72a.75.75 0 11-1.06 1.06L6 7.06 3.28 9.78a.75.75 0 01-1.06-1.06L4.94 6 2.22 3.28a.75.75 0 010-1.06z\" />\n </svg>\n )}\n </button>\n );\n }\n);\n\nToggletipClose.displayName = 'ToggletipClose';\n","import {\n forwardRef,\n createContext,\n useContext,\n useState,\n type HTMLAttributes,\n type ButtonHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type DisclosureSize = 'sm' | 'md' | 'lg';\nexport type DisclosureVariant = 'default' | 'flush' | 'card';\n\ninterface DisclosureContextValue {\n open: boolean;\n toggle: () => void;\n}\n\nconst DisclosureContext = createContext<DisclosureContextValue | null>(null);\n\nconst useDisclosure = () => {\n const context = useContext(DisclosureContext);\n if (!context) {\n throw new Error('Disclosure components must be used within a Disclosure');\n }\n return context;\n};\n\nexport interface DisclosureProps extends HTMLAttributes<HTMLDivElement> {\n /** Controlled open state */\n open?: boolean;\n /** Default open state (uncontrolled) */\n defaultOpen?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Size variant */\n size?: DisclosureSize;\n /** Visual variant */\n variant?: DisclosureVariant;\n /** Disabled state */\n disabled?: boolean;\n}\n\nexport interface DisclosureButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {\n /** Icon to display */\n icon?: ReactNode;\n}\n\nexport interface DisclosurePanelProps extends HTMLAttributes<HTMLDivElement> {}\n\nexport interface DisclosureGroupProps extends HTMLAttributes<HTMLDivElement> {\n /** Whether only one item can be open at a time */\n accordion?: boolean;\n /** Separated items (with gap) */\n separated?: boolean;\n}\n\nconst sizeClasses: Record<DisclosureSize, string> = {\n sm: 'disclosure-sm',\n md: '',\n lg: 'disclosure-lg',\n};\n\nconst variantClasses: Record<DisclosureVariant, string> = {\n default: '',\n flush: 'disclosure-flush',\n card: 'disclosure-card',\n};\n\nexport const Disclosure = forwardRef<HTMLDivElement, DisclosureProps>(\n (\n {\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n size = 'md',\n variant = 'default',\n disabled = false,\n className,\n children,\n ...props\n },\n ref\n ) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : uncontrolledOpen;\n\n const toggle = () => {\n if (disabled) return;\n const newValue = !isOpen;\n if (!isControlled) {\n setUncontrolledOpen(newValue);\n }\n onOpenChange?.(newValue);\n };\n\n return (\n <DisclosureContext.Provider value={{ open: isOpen, toggle }}>\n <div\n ref={ref}\n className={cn(\n 'disclosure',\n sizeClasses[size],\n variantClasses[variant],\n isOpen && 'disclosure-open',\n disabled && 'disclosure-disabled',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </DisclosureContext.Provider>\n );\n }\n);\n\nDisclosure.displayName = 'Disclosure';\n\nexport const DisclosureButton = forwardRef<HTMLButtonElement, DisclosureButtonProps>(\n ({ icon, className, children, ...props }, ref) => {\n const { open, toggle } = useDisclosure();\n\n const defaultIcon = (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"disclosure-button-icon\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n );\n\n return (\n <button\n ref={ref}\n type=\"button\"\n className={cn('disclosure-button', className)}\n onClick={toggle}\n aria-expanded={open}\n {...props}\n >\n <span>{children}</span>\n {icon !== undefined ? icon : defaultIcon}\n </button>\n );\n }\n);\n\nDisclosureButton.displayName = 'DisclosureButton';\n\nexport const DisclosurePanel = forwardRef<HTMLDivElement, DisclosurePanelProps>(\n ({ className, children, ...props }, ref) => {\n const { open } = useDisclosure();\n\n if (!open) return null;\n\n return (\n <div ref={ref} className={cn('disclosure-panel', className)} {...props}>\n {children}\n </div>\n );\n }\n);\n\nDisclosurePanel.displayName = 'DisclosurePanel';\n\nexport const DisclosureGroup = forwardRef<HTMLDivElement, DisclosureGroupProps>(\n ({ accordion = false, separated = false, className, children, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n separated ? 'disclosure-group-separated' : 'disclosure-group',\n className\n )}\n data-accordion={accordion || undefined}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nDisclosureGroup.displayName = 'DisclosureGroup';\n","import {\n forwardRef,\n useState,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cn } from '../../utils/cn';\n\nexport type RangeCalendarSize = 'sm' | 'md' | 'lg';\n\nexport interface CalendarDateRange {\n start: Date | null;\n end: Date | null;\n}\n\nexport interface RangeCalendarProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange' | 'defaultValue'> {\n /** Selected date range */\n value?: CalendarDateRange;\n /** Default date range (uncontrolled) */\n defaultValue?: CalendarDateRange;\n /** Callback when range changes */\n onChange?: (range: CalendarDateRange) => void;\n /** Minimum selectable date */\n minDate?: Date;\n /** Maximum selectable date */\n maxDate?: Date;\n /** Size variant */\n size?: RangeCalendarSize;\n /** Show two months side by side */\n dual?: boolean;\n /** Locale for formatting */\n locale?: string;\n /** Week starts on (0 = Sunday, 1 = Monday) */\n weekStartsOn?: 0 | 1;\n /** Preset ranges */\n presets?: Array<{\n label: string;\n value: CalendarDateRange;\n }>;\n}\n\nconst sizeClasses: Record<RangeCalendarSize, string> = {\n sm: 'range-calendar-sm',\n md: '',\n lg: 'range-calendar-lg',\n};\n\nconst WEEKDAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];\n\nconst getDaysInMonth = (year: number, month: number) => {\n return new Date(year, month + 1, 0).getDate();\n};\n\nconst getFirstDayOfMonth = (year: number, month: number) => {\n return new Date(year, month, 1).getDay();\n};\n\nconst isSameDay = (date1: Date | null, date2: Date | null) => {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nconst isInRange = (date: Date, start: Date | null, end: Date | null) => {\n if (!start || !end) return false;\n return date > start && date < end;\n};\n\nconst isToday = (date: Date) => {\n const today = new Date();\n return isSameDay(date, today);\n};\n\nexport const RangeCalendar = forwardRef<HTMLDivElement, RangeCalendarProps>(\n (\n {\n value,\n defaultValue = { start: null, end: null },\n onChange,\n minDate,\n maxDate,\n size = 'md',\n dual = false,\n locale = 'en-US',\n weekStartsOn = 0,\n presets,\n className,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = useState<CalendarDateRange>(defaultValue);\n const [currentMonth, setCurrentMonth] = useState(new Date());\n const [selecting, setSelecting] = useState<'start' | 'end' | null>(null);\n\n const range = value ?? internalValue;\n\n const setRange = (newRange: CalendarDateRange) => {\n if (!value) {\n setInternalValue(newRange);\n }\n onChange?.(newRange);\n };\n\n const handleDayClick = (date: Date) => {\n if (!selecting || selecting === 'start') {\n setRange({ start: date, end: null });\n setSelecting('end');\n } else {\n if (range.start && date < range.start) {\n setRange({ start: date, end: range.start });\n } else {\n setRange({ ...range, end: date });\n }\n setSelecting(null);\n }\n };\n\n const handlePresetClick = (preset: CalendarDateRange) => {\n setRange(preset);\n setSelecting(null);\n };\n\n const navigateMonth = (direction: number) => {\n setCurrentMonth(\n new Date(currentMonth.getFullYear(), currentMonth.getMonth() + direction, 1)\n );\n };\n\n const renderMonth = (monthDate: Date) => {\n const year = monthDate.getFullYear();\n const month = monthDate.getMonth();\n const daysInMonth = getDaysInMonth(year, month);\n const firstDay = getFirstDayOfMonth(year, month);\n const days: ReactNode[] = [];\n\n // Empty cells for days before the first day of the month\n for (let i = 0; i < firstDay; i++) {\n days.push(<div key={`empty-${i}`} className=\"range-calendar-day range-calendar-day-outside\" />);\n }\n\n // Days of the month\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month, day);\n const isDisabled =\n (minDate && date < minDate) || (maxDate && date > maxDate);\n const isStart = isSameDay(date, range.start);\n const isEnd = isSameDay(date, range.end);\n const inRange = isInRange(date, range.start, range.end);\n\n days.push(\n <button\n key={day}\n type=\"button\"\n className={cn(\n 'range-calendar-day',\n isToday(date) && 'range-calendar-day-today',\n isDisabled && 'range-calendar-day-disabled',\n isStart && 'range-calendar-day-range-start',\n isEnd && 'range-calendar-day-range-end',\n inRange && 'range-calendar-day-in-range'\n )}\n onClick={() => !isDisabled && handleDayClick(date)}\n disabled={isDisabled}\n >\n {day}\n </button>\n );\n }\n\n return (\n <div className=\"range-calendar-month\">\n <div className=\"range-calendar-header\">\n <span className=\"range-calendar-title\">\n {monthDate.toLocaleDateString(locale, { month: 'long', year: 'numeric' })}\n </span>\n </div>\n <div className=\"range-calendar-weekdays\">\n {WEEKDAYS.map((day) => (\n <div key={day} className=\"range-calendar-weekday\">\n {day}\n </div>\n ))}\n </div>\n <div className=\"range-calendar-days\">{days}</div>\n </div>\n );\n };\n\n const secondMonth = useMemo(\n () => new Date(currentMonth.getFullYear(), currentMonth.getMonth() + 1, 1),\n [currentMonth]\n );\n\n return (\n <div\n ref={ref}\n className={cn(\n 'range-calendar',\n sizeClasses[size],\n dual && 'range-calendar-dual',\n presets && 'range-calendar-with-presets',\n className\n )}\n {...props}\n >\n {presets && (\n <div className=\"range-calendar-presets\">\n {presets.map((preset, index) => (\n <button\n key={index}\n type=\"button\"\n className={cn(\n 'range-calendar-preset',\n isSameDay(preset.value.start, range.start) &&\n isSameDay(preset.value.end, range.end) &&\n 'range-calendar-preset-active'\n )}\n onClick={() => handlePresetClick(preset.value)}\n >\n {preset.label}\n </button>\n ))}\n </div>\n )}\n\n <div className=\"range-calendar-nav\">\n <button\n type=\"button\"\n className=\"range-calendar-nav-btn\"\n onClick={() => navigateMonth(-1)}\n aria-label=\"Previous month\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M10.354 3.646a.5.5 0 010 .708L6.707 8l3.647 3.646a.5.5 0 01-.708.708l-4-4a.5.5 0 010-.708l4-4a.5.5 0 01.708 0z\" />\n </svg>\n </button>\n <button\n type=\"button\"\n className=\"range-calendar-nav-btn\"\n onClick={() => navigateMonth(1)}\n aria-label=\"Next month\"\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"currentColor\">\n <path d=\"M5.646 3.646a.5.5 0 01.708 0l4 4a.5.5 0 010 .708l-4 4a.5.5 0 01-.708-.708L9.293 8 5.646 4.354a.5.5 0 010-.708z\" />\n </svg>\n </button>\n </div>\n\n {renderMonth(currentMonth)}\n {dual && (\n <>\n <div className=\"range-calendar-divider\" />\n {renderMonth(secondMonth)}\n </>\n )}\n\n {(range.start || range.end) && (\n <div className=\"range-calendar-footer\">\n <span className=\"range-calendar-selected-range\">\n {range.start?.toLocaleDateString(locale)}\n {range.start && range.end && ' - '}\n {range.end?.toLocaleDateString(locale)}\n </span>\n </div>\n )}\n </div>\n );\n }\n);\n\nRangeCalendar.displayName = 'RangeCalendar';\n","import { useState, useEffect, type ReactNode } from 'react';\n\nexport interface ClientOnlyProps {\n /** Content to render only on client */\n children: ReactNode;\n /** Fallback to show during SSR */\n fallback?: ReactNode;\n}\n\n/**\n * ClientOnly - Renders children only on the client side.\n * Useful for components that depend on browser APIs or need to avoid hydration mismatches.\n */\nexport function ClientOnly({ children, fallback = null }: ClientOnlyProps) {\n const [hasMounted, setHasMounted] = useState(false);\n\n useEffect(() => {\n setHasMounted(true);\n }, []);\n\n if (!hasMounted) {\n return <>{fallback}</>;\n }\n\n return <>{children}</>;\n}\n\nClientOnly.displayName = 'ClientOnly';\n"]}
|