ssovee-os-web-ui 0.1.21 → 0.1.23

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/helpers.ts","../src/components/Button.tsx","../src/components/Typography.tsx","../src/components/Input.tsx","../src/components/TextArea.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Dropdown.tsx","../src/components/ImageWithPlaceholder.tsx","../src/components/Loading.tsx","../src/components/Toast.tsx","../src/components/Alert.tsx","../src/components/Modal.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/Avatar.tsx","../src/components/Divider.tsx","../src/components/Tooltip.tsx","../src/hooks/useShortcutFormatter.ts","../src/components/SearchInput.tsx","../src/components/FileUpload.tsx","../src/components/Progress.tsx","../src/components/Pagination.tsx","../src/components/Radio.tsx","../src/components/Accordion.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx"],"names":["React","jsxs","jsx","ArrowCircleRightIcon","CaretDownIcon","CheckIcon","useState","useRef","useEffect","WarningIcon","CheckCircleIcon","InfoIcon","XIcon","useCallback","useImperativeHandle","MagnifyingGlassIcon","UploadIcon","CaretLeftIcon","CaretRightIcon","CaretUpIcon","React20"],"mappings":"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","file":"index.cjs","sourcesContent":["export function cn(...inputs: Array<string | false | null | undefined | 0>): string {\n return inputs.filter(Boolean).join(\" \");\n}\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"filled\"\n | \"text\";\n tone?: \"primary\" | \"neutral\" | \"success\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n tone = \"primary\",\n size = \"md\",\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n rounded = \"lg\",\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"inline-flex items-center justify-center font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\";\n \n const variantClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n secondary: \"bg-surface-3 text-neutral-500 hover:bg-surface-4 active:bg-surface-4 focus-visible:ring-surface-3/50 border border-surface-4 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n outline: \"bg-transparent text-neutral-400 border border-surface-1 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n ghost: \"bg-transparent text-neutral-400 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n filled: \"\",\n text: \"\",\n } as Record<Required<ButtonProps>[\"variant\"], string>;\n\n const filledToneClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n neutral: \"bg-surface-3 text-neutral-100 hover:bg-surface-4 active:bg-surface-4 focus-visible:ring-surface-3/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n } as const;\n\n const textToneClasses = {\n primary: \"bg-transparent text-brand-color hover:text-brand-color/90 active:text-brand-color/80 hover:underline underline-offset-2 focus-visible:ring-brand-color/30\",\n neutral: \"bg-transparent text-neutral-400 hover:text-neutral-300 active:text-neutral-300 focus-visible:ring-surface-1/50\",\n success: \"bg-transparent text-green-600 hover:text-green-700 active:text-green-700 focus-visible:ring-green-500/30\",\n danger: \"bg-transparent text-red-600 hover:text-red-700 active:text-red-700 focus-visible:ring-red-500/30\",\n } as const;\n\n const sizeClasses = {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-base\",\n lg: \"h-12 px-5 text-lg\",\n xl: \"h-14 px-6 text-xl\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <button\n ref={ref}\n className={cn(\n baseClasses,\n variant === \"filled\"\n ? filledToneClasses[tone]\n : variant === \"text\"\n ? textToneClasses[tone]\n : variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n widthClasses,\n className\n )}\n data-variant={variant}\n data-tone={tone}\n disabled={disabled || loading}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n )}\n {!loading && leftIcon && <span className=\"mr-2\">{leftIcon}</span>}\n {children}\n {!loading && rightIcon && <span className=\"ml-2\">{rightIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\ntype Variant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\";\ntype Weight = \"thin\" | \"extralight\" | \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\" | \"extrabold\" | \"black\";\ntype Color = \"neutral-100\" | \"neutral-200\" | \"neutral-300\" | \"neutral-400\" | \"neutral-500\" | \"neutral-600\" | \"neutral-700\" | \"neutral-800\" | \"neutral-900\" | \"brand-color\" | \"red-500\" | \"green-500\" | \"blue-500\" | \"yellow-500\";\n\nexport interface TypographyProps {\n as?: Variant;\n variant?: Variant;\n size?: Size;\n weight?: Weight;\n color?: Color;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Typography: React.FC<TypographyProps> = ({\n as,\n variant = \"p\",\n size,\n weight,\n color,\n className,\n children,\n}) => {\n const Component = as || variant;\n\n const sizeClasses: Record<Size, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n \"4xl\": \"text-4xl\",\n \"5xl\": \"text-5xl\",\n };\n\n const weightClasses: Record<Weight, string> = {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n };\n\n const colorClasses: Record<Color, string> = {\n \"neutral-100\": \"text-neutral-100\",\n \"neutral-200\": \"text-neutral-200\",\n \"neutral-300\": \"text-neutral-300\",\n \"neutral-400\": \"text-neutral-400\",\n \"neutral-500\": \"text-neutral-500\",\n \"neutral-600\": \"text-neutral-600\",\n \"neutral-700\": \"text-neutral-700\",\n \"neutral-800\": \"text-neutral-800\",\n \"neutral-900\": \"text-neutral-900\",\n \"brand-color\": \"text-brand-color\",\n \"red-500\": \"text-red-500\",\n \"green-500\": \"text-green-500\",\n \"blue-500\": \"text-blue-500\",\n \"yellow-500\": \"text-yellow-500\",\n };\n\n const classes = cn(\n size && sizeClasses[size],\n weight && weightClasses[weight],\n color && colorClasses[color],\n className\n );\n\n return <Component className={classes}>{children}</Component>;\n};\n\nexport default Typography;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { ArrowCircleRightIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n showSubmitButton?: boolean;\n onSubmit?: () => void;\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n leftIcon,\n rightIcon,\n showSubmitButton = false,\n onSubmit,\n error,\n label,\n helperText,\n fullWidth = false,\n onKeyUp,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none placeholder:text-neutral-300 rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && onSubmit) {\n onSubmit();\n }\n onKeyUp?.(e);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {leftIcon}\n </div>\n )}\n \n <input\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n leftIcon ? \"pl-10\" : \"\",\n (rightIcon || showSubmitButton) ? \"pr-10\" : \"\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n onKeyUp={handleKeyUp}\n {...props}\n />\n \n {rightIcon && !showSubmitButton && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {rightIcon}\n </div>\n )}\n \n {showSubmitButton && (\n <button\n type=\"button\"\n onClick={onSubmit}\n disabled={props.disabled || props.readOnly || !onSubmit}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-300 transition-colors hover:text-neutral-400 disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Submit input\"\n >\n <ArrowCircleRightIcon size={20} />\n </button>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n resize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n resize = \"vertical\",\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none placeholder:text-neutral-300 rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n };\n\n const resizeClasses = {\n none: \"resize-none\",\n vertical: \"resize-y\",\n horizontal: \"resize-x\",\n both: \"resize\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 mb-1\">\n {label}\n </label>\n )}\n \n <textarea\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n resizeClasses[resize],\n widthClasses,\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n {...props}\n />\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport default TextArea;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'size'> {\n options: SelectOption[];\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n onChange?: (value: string) => void;\n placeholder?: string;\n}\n\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n className,\n options,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n onChange,\n placeholder,\n value,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none appearance-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(e.target.value);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n \"pr-10\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n value={value}\n onChange={handleChange}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n \n <CaretDownIcon\n size={16}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400 pointer-events-none\"\n />\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport default Select;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n variant?: \"default\" | \"filled\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: React.ReactNode;\n helperText?: string;\n indeterminate?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n indeterminate = false,\n checked,\n onChange,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n defaultChecked={checked}\n onChange={onChange}\n disabled={disabled}\n {...props}\n />\n \n {(checked || indeterminate) && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <CheckIcon\n size={size === \"sm\" ? 12 : size === \"md\" ? 16 : 20}\n className=\"text-white\"\n weight={indeterminate ? \"bold\" : \"regular\"}\n />\n </div>\n )}\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface ToggleProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n checked,\n onChange,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n label,\n helperText,\n fullWidth = false,\n },\n ref\n ) => {\n const baseClasses = \"flex items-center rounded-full cursor-pointer transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2\";\n \n const variantClasses = {\n default: \"focus:ring-brand-color/50\",\n success: \"focus:ring-green-500/50\",\n warning: \"focus:ring-yellow-500/50\",\n danger: \"focus:ring-red-500/50\",\n };\n\n const toggleClasses = {\n default: checked ? \"bg-brand-color\" : \"bg-gray-500\",\n success: checked ? \"bg-green-500\" : \"bg-gray-500\",\n warning: checked ? \"bg-yellow-500\" : \"bg-gray-500\",\n danger: checked ? \"bg-red-500\" : \"bg-gray-500\",\n };\n\n const sizeClasses = {\n sm: \"w-8 h-4 px-0.5\",\n md: \"w-10 h-5 px-0.5\",\n lg: \"w-12 h-6 px-1\",\n };\n\n const thumbSizeClasses = {\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n };\n\n const thumbTransformClasses = {\n sm: checked ? \"translate-x-4\" : \"translate-x-0\",\n md: checked ? \"translate-x-5\" : \"translate-x-0\",\n lg: checked ? \"translate-x-6\" : \"translate-x-0\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleClick = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n <div className={cn(\"flex items-center gap-2\", fullWidth && \"w-full\")}>\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n toggleClasses[variant],\n sizeClasses[size],\n widthClasses,\n disabled && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={handleClick}\n disabled={disabled}\n role=\"switch\"\n aria-checked={checked}\n >\n <div\n className={cn(\n \"bg-white rounded-full shadow-md transform transition-transform duration-300\",\n thumbSizeClasses[size],\n thumbTransformClasses[size]\n )}\n />\n </button>\n \n {label && (\n <span\n className={cn(\n \"text-sm text-neutral-500 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n onClick={disabled ? undefined : handleClick}\n aria-disabled={disabled}\n >\n {label}\n </span>\n )}\n </div>\n \n {helperText && (\n <div className=\"mt-1 ml-12\">\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n </div>\n )}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n\nexport default Toggle;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\n\nexport interface DropdownOption {\n value: string;\n label: string;\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n options: DropdownOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n trigger?: React.ReactNode;\n}\n\nconst Dropdown: React.FC<DropdownProps> = ({\n options,\n value,\n onChange,\n placeholder = \"Select an option\",\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n trigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const selectedOption = options.find(option => option.value === value);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleSelect = (option: DropdownOption) => {\n if (!option.disabled) {\n onChange?.(option.value);\n setIsOpen(false);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n return (\n <div ref={dropdownRef} className=\"\">\n {trigger ? (\n <div\n onClick={handleToggle}\n className={cn(disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\")}\n aria-disabled={disabled}\n >\n {trigger}\n </div>\n ) : (\n <button\n onClick={handleToggle}\n disabled={disabled}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full flex items-center justify-between pr-8\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <span className={selectedOption ? \"text-neutral-500\" : \"text-neutral-300\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <CaretDownIcon\n size={16}\n className={cn(\n \"text-neutral-400 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n )}\n\n {isOpen && (\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-secondary border border-surface-1 rounded-[6px] shadow-lg z-50 max-h-60 overflow-y-auto\">\n {options.map((option) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"px-3 py-2 cursor-pointer transition-colors duration-200 flex items-center gap-2\",\n option.value === value && \"bg-brand-color text-neutral-500\",\n !option.disabled && \"hover:bg-surface-3\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {option.icon && <span>{option.icon}</span>}\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React, { useState, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\ntype ImageSource = string | { src: string };\n\nexport interface ImageWithPlaceholderProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\n src?: ImageSource;\n fallbackSrc?: string;\n}\n\nconst ImageWithPlaceholder: React.FC<ImageWithPlaceholderProps> = ({\n src,\n alt,\n fallbackSrc = \"\",\n className,\n onError,\n ...props\n}) => {\n const resolveSrc = (s: ImageSource | undefined | null) => {\n if (s && typeof s === \"object\" && \"src\" in s && typeof s.src === \"string\") {\n return s.src;\n }\n return typeof s === \"string\" ? s : undefined;\n };\n\n const isValidSrc = (s: string | undefined | null) => {\n if (!s) return false;\n const trimmed = s.trim();\n if (trimmed === \"\") return false;\n if (trimmed.startsWith(\"data:\")) return true;\n if (trimmed.startsWith(\"/\") || trimmed.startsWith(\"./\") || trimmed.startsWith(\"../\")) return true;\n try {\n new URL(trimmed);\n return true;\n } catch {\n return false;\n }\n };\n\n const resolvedSrc = resolveSrc(src);\n const initialSrc = isValidSrc(resolvedSrc) ? resolvedSrc : fallbackSrc;\n const [imgSrc, setImgSrc] = useState(initialSrc);\n const [hasError, setHasError] = useState(!isValidSrc(resolvedSrc));\n\n useEffect(() => {\n const nextResolvedSrc = resolveSrc(src);\n if (isValidSrc(nextResolvedSrc)) {\n setImgSrc(nextResolvedSrc);\n setHasError(false);\n } else {\n setImgSrc(fallbackSrc);\n setHasError(true);\n }\n }, [src, fallbackSrc]);\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (!hasError) {\n setHasError(true);\n setImgSrc(fallbackSrc);\n }\n if (onError) {\n onError(e);\n }\n };\n\n return (\n <img\n {...props}\n src={typeof imgSrc === \"string\" ? imgSrc : undefined}\n alt={alt}\n className={cn(className)}\n onError={handleError}\n />\n );\n};\n\nexport default ImageWithPlaceholder;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport ImageWithPlaceholder from \"./ImageWithPlaceholder\";\n\nexport interface LoadingProps {\n variant?: \"spinner\" | \"dots\" | \"pulse\" | \"image\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n text?: string;\n fullScreen?: boolean;\n className?: string;\n}\n\nconst Loading: React.FC<LoadingProps> = ({\n variant = \"image\",\n size = \"md\",\n text = \"Loading...\",\n fullScreen = false,\n className,\n}) => {\n const sizeClasses = {\n sm: \"w-6 h-6\",\n md: \"w-8 h-8\",\n lg: \"w-12 h-12\",\n xl: \"w-16 h-16\",\n };\n\n const textSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-lg\",\n };\n\n const renderSpinner = () => (\n <div className={cn(\"animate-spin rounded-full border-2 border-current border-t-transparent\", sizeClasses[size])} />\n );\n\n const renderDots = () => (\n <div className=\"flex space-x-1\">\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"0ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"150ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"300ms\" }} />\n </div>\n );\n\n const renderPulse = () => (\n <div className={cn(\"animate-pulse rounded-full bg-current\", sizeClasses[size])} />\n );\n\n const imageSizes = {\n sm: 24,\n md: 32,\n lg: 48,\n xl: 64,\n };\n\n const renderImage = () => (\n <ImageWithPlaceholder\n src=\"/app-assets/Loader.gif\"\n alt=\"Loader\"\n width={imageSizes[size]}\n height={imageSizes[size]}\n className={sizeClasses[size]}\n />\n );\n\n const renderLoader = () => {\n switch (variant) {\n case \"spinner\":\n return renderSpinner();\n case \"dots\":\n return renderDots();\n case \"pulse\":\n return renderPulse();\n case \"image\":\n default:\n return renderImage();\n }\n };\n\n const content = (\n <div className={cn(\"flex flex-col justify-center items-center\", className)}>\n {renderLoader()}\n {text && (\n <div className={cn(\"mt-2 text-neutral-500\", textSizeClasses[size])}>\n {text}\n </div>\n )}\n </div>\n );\n\n if (fullScreen) {\n return (\n <div className=\"fixed inset-0 flex items-center justify-center bg-primary/50 backdrop-blur-sm z-50\">\n {content}\n </div>\n );\n }\n\n return content;\n};\n\nexport default Loading;\n","import React, { useEffect, useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface ToastProps {\n heading?: string;\n message: string;\n type: \"error\" | \"success\" | \"info\" | \"warning\";\n isVisible: boolean;\n onClose: () => void;\n duration?: number;\n position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"top-center\" | \"bottom-center\";\n showCloseButton?: boolean;\n className?: string;\n}\n\nconst Toast: React.FC<ToastProps> = ({\n heading,\n message,\n type,\n isVisible,\n onClose,\n duration = 5000,\n position = \"bottom-left\",\n showCloseButton = true,\n className,\n}) => {\n const [isShowing, setIsShowing] = useState(false);\n\n useEffect(() => {\n if (isVisible) {\n setIsShowing(true);\n let timer: ReturnType<typeof setTimeout> | null = null;\n if (type !== \"error\" && duration > 0) {\n timer = setTimeout(() => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n }, duration);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }\n }, [isVisible, type, duration, onClose]);\n\n if (!isVisible) return null;\n\n const getIcon = () => {\n switch (type) {\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"error\":\n return \"border-l-red-500 bg-red-50\";\n case \"success\":\n return \"border-l-green-500 bg-green-50\";\n case \"warning\":\n return \"border-l-yellow-500 bg-yellow-50\";\n case \"info\":\n return \"border-l-blue-500 bg-blue-50\";\n default:\n return \"border-l-blue-500 bg-blue-50\";\n }\n };\n\n const getPositionClasses = () => {\n switch (position) {\n case \"top-left\":\n return \"top-4 left-4\";\n case \"top-right\":\n return \"top-4 right-4\";\n case \"bottom-left\":\n return \"bottom-4 left-4\";\n case \"bottom-right\":\n return \"bottom-4 right-4\";\n case \"top-center\":\n return \"top-4 left-1/2 transform -translate-x-1/2\";\n case \"bottom-center\":\n return \"bottom-4 left-1/2 transform -translate-x-1/2\";\n default:\n return \"bottom-4 left-4\";\n }\n };\n\n const handleClose = () => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n };\n\n return (\n <div\n className={cn(\n \"fixed z-50 transform transition-all duration-300\",\n getPositionClasses(),\n isShowing ? \"translate-x-0 opacity-100\" : \"-translate-x-full opacity-0\"\n )}\n >\n <div\n className={cn(\n \"w-80 max-w-sm bg-secondary rounded-[6px] shadow-lg border-l-4 p-4\",\n getTypeClasses(),\n className\n )}\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {heading && (\n <Typography variant=\"h4\" className=\"text-sm font-medium text-neutral-700 mb-1\">\n {heading}\n </Typography>\n )}\n <Typography variant=\"p\" className=\"text-sm text-neutral-600 leading-relaxed\">\n {message}\n </Typography>\n </div>\n\n {/* Close Button */}\n {showCloseButton && (\n <button\n onClick={handleClose}\n className=\"flex-shrink-0 ml-2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Toast;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface AlertProps {\n type: \"success\" | \"error\" | \"warning\" | \"info\";\n title?: string;\n message?: string;\n onClose?: () => void;\n showCloseButton?: boolean;\n variant?: \"default\" | \"filled\" | \"outline\";\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps> = ({\n type,\n title,\n message,\n onClose,\n showCloseButton = false,\n variant = \"default\",\n className,\n children,\n}) => {\n const getIcon = () => {\n switch (type) {\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"success\":\n return {\n default: \"bg-green-50 border-green-200 text-green-800\",\n filled: \"bg-green-500 text-white\",\n outline: \"bg-transparent border-green-500 text-green-700\",\n };\n case \"error\":\n return {\n default: \"bg-red-50 border-red-200 text-red-800\",\n filled: \"bg-red-500 text-white\",\n outline: \"bg-transparent border-red-500 text-red-700\",\n };\n case \"warning\":\n return {\n default: \"bg-yellow-50 border-yellow-200 text-yellow-800\",\n filled: \"bg-yellow-500 text-white\",\n outline: \"bg-transparent border-yellow-500 text-yellow-700\",\n };\n case \"info\":\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n default:\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n }\n };\n\n const typeClasses = getTypeClasses()[variant];\n\n return (\n <div\n className={cn(\n \"rounded-[6px] border p-4\",\n typeClasses,\n className\n )}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography variant=\"h4\" className=\"text-sm font-medium mb-1\">\n {title}\n </Typography>\n )}\n {message && (\n <Typography variant=\"p\" className=\"text-sm leading-relaxed\">\n {message}\n </Typography>\n )}\n {children}\n </div>\n\n {/* Close Button */}\n {showCloseButton && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 ml-2 text-current opacity-70 hover:opacity-100 transition-opacity\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Alert;\n","import React, { useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\nimport { XIcon } from \"@phosphor-icons/react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n showCloseButton?: boolean;\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n className?: string;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n size = \"md\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n}) => {\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && closeOnEscape) {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose, closeOnEscape]);\n\n if (!isOpen) return null;\n\n const sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n full: \"max-w-full mx-4\",\n };\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n onClose();\n }\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n >\n <div\n className={cn(\n \"bg-secondary rounded-[6px] shadow-xl w-full mx-4 max-h-[90vh] overflow-hidden\",\n sizeClasses[size],\n className\n )}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between px-4 py-2 border-b border-surface-1\">\n {title && (\n <Typography\n variant=\"h2\"\n className=\"text-lg font-semibold text-neutral-500\"\n >\n {title}\n </Typography>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"p-1 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={20} />\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"px-4 py-2 overflow-y-auto max-h-[calc(90vh-120px)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"elevated\" | \"outlined\" | \"filled\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n children: React.ReactNode;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n padding = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-secondary border border-surface-1\",\n elevated: \"bg-secondary border border-surface-1 shadow-lg\",\n outlined: \"bg-transparent border border-surface-1\",\n filled: \"bg-surface-4 border border-surface-4\",\n };\n\n const paddingClasses = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-[6px] transition-all duration-200\",\n variantClasses[variant],\n paddingClasses[padding],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\nexport default Card;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n children: React.ReactNode;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n rounded = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-surface-3 text-neutral-400\",\n primary: \"bg-brand-color text-neutral-500\",\n success: \"bg-green-500 text-white\",\n warning: \"bg-yellow-500 text-white\",\n danger: \"bg-red-500 text-white\",\n info: \"bg-blue-500 text-white\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-1 text-sm\",\n lg: \"px-3 py-1.5 text-base\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center font-medium\",\n variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport default Badge;\n","import React, { useState, useCallback } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n fallback?: string;\n className?: string;\n onClick?: () => void;\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"Avatar\",\n size = \"md\",\n fallback,\n className,\n onClick,\n}) => {\n const [imgError, setImgError] = useState(false);\n\n const sizeClasses = {\n sm: \"w-8 h-8 text-xs\",\n md: \"w-10 h-10 text-sm\",\n lg: \"w-12 h-12 text-base\",\n xl: \"w-16 h-16 text-lg\",\n };\n\n const getInitials = (name: string) => {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n };\n\n const renderFallback = () => {\n if (fallback) {\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400 font-medium\">\n {getInitials(fallback)}\n </div>\n );\n }\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400\">\n <svg className=\"w-1/2 h-1/2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n );\n };\n\n // Use a callback to avoid unnecessary re-renders\n const handleImgError = useCallback(() => {\n setImgError(true);\n }, []);\n\n // Check if src is a non-empty string\n const isSrcAvailable = typeof src === \"string\" && src.trim() !== \"\";\n\n return (\n <div\n className={cn(\n \"relative rounded-full overflow-hidden bg-surface-3\",\n sizeClasses[size],\n className\n )}\n onClick={onClick}\n style={onClick ? { cursor: \"pointer\" } : undefined}\n >\n {isSrcAvailable && !imgError ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={src as string}\n alt={alt}\n className=\"object-cover\"\n sizes={\n size === \"sm\"\n ? \"32px\"\n : size === \"md\"\n ? \"40px\"\n : size === \"lg\"\n ? \"48px\"\n : \"64px\"\n }\n onError={handleImgError}\n />\n ) : (\n renderFallback()\n )}\n </div>\n );\n};\n\nexport default Avatar;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface DividerProps {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"solid\" | \"dashed\" | \"dotted\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n variant = \"solid\",\n size = \"md\",\n className,\n}) => {\n const variantClasses = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n\n const sizeClasses = {\n sm: orientation === \"horizontal\" ? \"border-t\" : \"border-l\",\n md: orientation === \"horizontal\" ? \"border-t-2\" : \"border-l-2\",\n lg: orientation === \"horizontal\" ? \"border-t-4\" : \"border-l-4\",\n };\n\n const orientationClasses = {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n };\n\n return (\n <div\n className={cn(\n \"border-surface-1\",\n variantClasses[variant],\n sizeClasses[size],\n orientationClasses[orientation],\n className\n )}\n />\n );\n};\n\nexport default Divider;\n","import React, { useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n delay?: number;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"top\",\n delay = 200,\n className,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null);\n\n const showTooltip = () => {\n const id = setTimeout(() => setIsVisible(true), delay);\n setTimeoutId(id);\n };\n\n const hideTooltip = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n setIsVisible(false);\n };\n\n const positionClasses = {\n top: \"bottom-full left-1/2 transform -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 transform -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 transform -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 transform -translate-y-1/2 ml-2\",\n };\n\n const arrowClasses = {\n top: \"top-full left-1/2 transform -translate-x-1/2 border-t-surface-1\",\n bottom: \"bottom-full left-1/2 transform -translate-x-1/2 border-b-surface-1\",\n left: \"left-full top-1/2 transform -translate-y-1/2 border-l-surface-1\",\n right: \"right-full top-1/2 transform -translate-y-1/2 border-r-surface-1\",\n };\n\n return (\n <div\n className=\"relative inline-block\"\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n >\n {children}\n {isVisible && (\n <div\n className={cn(\n \"absolute z-50 px-2 py-1 text-xs text-white bg-surface-1 rounded shadow-lg whitespace-nowrap\",\n positionClasses[position],\n className\n )}\n >\n {content}\n <div\n className={cn(\n \"absolute w-0 h-0 border-4 border-transparent\",\n arrowClasses[position]\n )}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","import { useEffect, useRef, useState } from \"react\";\n\nexport type OS = \"windows\" | \"mac\" | \"linux\";\n\nexport interface UseShortcutFormatterReturn {\n formatKeys: (keys?: string[]) => string;\n getShortcutByCommand: (command: string) => string[];\n addShortcutListener: (command: string, listener: (e: KeyboardEvent) => void) => void;\n removeShortcutListener: (command: string, listener: (e: KeyboardEvent) => void) => void;\n}\n\ninterface ShortcutDefinition {\n command: string;\n shortcut: string[];\n}\n\nconst globalKeyboardShortcuts: ShortcutDefinition[] = [\n { command: \"focus_search\", shortcut: [\"ctrl\", \"k\"] },\n { command: \"escape_button_action\", shortcut: [\"escape\"] },\n];\n\nconst keyMap: Record<OS, Record<string, string>> = {\n windows: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n meta: \"Win\",\n escape: \"Esc\",\n enter: \"Enter\",\n k: \"K\",\n },\n mac: {\n ctrl: \"Ctrl\",\n alt: \"⌥\",\n shift: \"⇧\",\n meta: \"⌘\",\n escape: \"Esc\",\n enter: \"Enter\",\n k: \"K\",\n },\n linux: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n meta: \"Meta\",\n escape: \"Esc\",\n enter: \"Enter\",\n k: \"K\",\n },\n};\n\nconst detectOS = (): OS => {\n if (typeof navigator === \"undefined\") {\n return \"windows\";\n }\n\n const userAgent = navigator.userAgent.toLowerCase();\n\n if (userAgent.includes(\"mac\")) return \"mac\";\n if (userAgent.includes(\"win\")) return \"windows\";\n\n return \"linux\";\n};\n\nconst matchShortcut = (event: KeyboardEvent, shortcut: string[], os: OS): boolean => {\n const normalizedShortcut = shortcut.map((key) => key.toLowerCase());\n\n const hasModifier = normalizedShortcut.includes(\"ctrl\")\n ? event.ctrlKey\n : normalizedShortcut.includes(\"meta\")\n ? event.metaKey\n : normalizedShortcut.includes(\"alt\")\n ? event.altKey\n : true;\n\n if (!hasModifier) return false;\n\n const primaryKey = normalizedShortcut.find((key) => ![\"ctrl\", \"meta\", \"alt\", \"shift\"].includes(key));\n\n if (!primaryKey) return normalizedShortcut.every((key) => {\n if (key === \"ctrl\") return event.ctrlKey;\n if (key === \"meta\") return event.metaKey;\n if (key === \"alt\") return event.altKey;\n if (key === \"shift\") return event.shiftKey;\n return false;\n });\n\n const matchesPrimaryKey = event.key.toLowerCase() === primaryKey;\n const shiftRequired = normalizedShortcut.includes(\"shift\");\n const shiftMatches = shiftRequired ? event.shiftKey : true;\n\n return matchesPrimaryKey && shiftMatches;\n};\n\nconst useShortcutFormatter = (): UseShortcutFormatterReturn => {\n const [os, setOS] = useState<OS>(\"windows\");\n const listenersRef = useRef<Map<string, Set<(e: KeyboardEvent) => void>>>(new Map());\n\n useEffect(() => {\n setOS(detectOS());\n }, []);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n for (const shortcut of globalKeyboardShortcuts) {\n if (matchShortcut(event, shortcut.shortcut, os)) {\n const listeners = listenersRef.current.get(shortcut.command);\n if (listeners) {\n event.preventDefault();\n listeners.forEach((cb) => cb(event));\n }\n }\n }\n };\n\n window.addEventListener(\"keydown\", handleKeyDown);\n\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [os]);\n\n const formatKeys = (keys: string[] = []): string => {\n return keys\n .map((key) => keyMap[os][key.toLowerCase()] || key.toUpperCase())\n .join(\" + \");\n };\n\n const getShortcutByCommand = (command: string): string[] => {\n const found = globalKeyboardShortcuts.find((shortcut) => shortcut.command === command);\n return found ? found.shortcut : [\"\"];\n };\n\n const addShortcutListener = (command: string, listener: (e: KeyboardEvent) => void) => {\n if (!listenersRef.current.has(command)) {\n listenersRef.current.set(command, new Set());\n }\n\n listenersRef.current.get(command)!.add(listener);\n };\n\n const removeShortcutListener = (command: string, listener: (e: KeyboardEvent) => void) => {\n if (listenersRef.current.has(command)) {\n listenersRef.current.get(command)!.delete(listener);\n }\n };\n\n return {\n formatKeys,\n getShortcutByCommand,\n addShortcutListener,\n removeShortcutListener,\n };\n};\n\nexport default useShortcutFormatter;\n","import React, { useImperativeHandle, useRef, useCallback, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { MagnifyingGlassIcon } from \"@phosphor-icons/react\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\n\nexport interface SearchInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n onSearch?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n showClearButton?: boolean;\n className?: string;\n enableKeyboardShortcuts?: boolean;\n isActive?: boolean;\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n onSearch,\n placeholder = \"Search...\",\n variant = \"default\",\n size = \"md\",\n showClearButton = true,\n className,\n value,\n onChange,\n enableKeyboardShortcuts = false,\n isActive = true,\n ...props\n },\n ref\n ) => {\n const [searchValue, setSearchValue] = React.useState(value || \"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n const { addShortcutListener, removeShortcutListener, formatKeys, getShortcutByCommand } = useShortcutFormatter();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setSearchValue(newValue);\n onChange?.(e);\n onSearch?.(newValue);\n };\n\n const handleClear = useCallback(() => {\n setSearchValue(\"\");\n onSearch?.(\"\");\n // Create a synthetic event for onChange\n const syntheticEvent = {\n target: { value: \"\" }\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n }, [onChange, onSearch]);\n\n useEffect(() => {\n if (!enableKeyboardShortcuts || !isActive) return;\n\n const handleFocusSearch = (e?: KeyboardEvent) => {\n e?.preventDefault();\n inputRef.current?.focus();\n };\n\n const handleClearShortcut = (e?: KeyboardEvent) => {\n e?.preventDefault();\n handleClear();\n inputRef.current?.blur();\n };\n\n addShortcutListener(\"focus_search\", handleFocusSearch);\n addShortcutListener(\"escape_button_action\", handleClearShortcut);\n\n return () => {\n removeShortcutListener(\"focus_search\", handleFocusSearch);\n removeShortcutListener(\"escape_button_action\", handleClearShortcut);\n };\n }, [enableKeyboardShortcuts, isActive, handleClear, addShortcutListener, removeShortcutListener]);\n\n const displayPlaceholder = enableKeyboardShortcuts\n ? `${placeholder} (${formatKeys(getShortcutByCommand(\"focus_search\"))})`\n : placeholder;\n\n const baseClasses = \"transition-all duration-200 focus:outline-none placeholder:text-neutral-300 rounded-[6px]\";\n\n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 pl-8 text-sm\",\n md: \"h-10 px-3 pl-10 text-base\",\n lg: \"h-12 px-4 pl-12 text-lg\",\n };\n\n const iconSizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"relative\">\n {/* Search Icon */}\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n <MagnifyingGlassIcon className={iconSizeClasses[size]} />\n </div>\n\n <input\n ref={inputRef}\n type=\"text\"\n placeholder={displayPlaceholder}\n value={searchValue}\n onChange={handleChange}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n showClearButton && searchValue ? \"pr-10\" : \"\",\n className\n )}\n {...props}\n />\n\n {/* Clear Button */}\n {showClearButton && searchValue && (\n <button\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <svg className={iconSizeClasses[size]} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n }\n);\n\nSearchInput.displayName = \"SearchInput\";\n\nexport default SearchInput;\n","import React, { useRef } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { UploadIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface FileUploadProps {\n onFileSelect?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n dragAndDrop?: boolean;\n}\n\nconst FileUpload: React.FC<FileUploadProps> = ({\n onFileSelect,\n accept,\n multiple = false,\n maxSize,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n children,\n dragAndDrop = false,\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n\n const handleFileSelect = (files: FileList | null) => {\n if (!files) return;\n\n const fileArray = Array.from(files);\n \n // Validate file size\n if (maxSize) {\n const validFiles = fileArray.filter(file => file.size <= maxSize);\n if (validFiles.length !== fileArray.length) {\n console.warn(\"Some files were too large and were skipped\");\n }\n onFileSelect?.(validFiles);\n } else {\n onFileSelect?.(fileArray);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFileSelect(e.target.files);\n };\n\n const handleClick = () => {\n if (!disabled) {\n fileInputRef.current?.click();\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (dragAndDrop && !disabled) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n if (dragAndDrop && !disabled) {\n handleFileSelect(e.dataTransfer.files);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-20 px-3 text-sm\",\n md: \"h-24 px-4 text-base\",\n lg: \"h-32 px-6 text-lg\",\n };\n\n const defaultContent = (\n <div className=\"flex flex-col items-center justify-center h-full text-center\">\n <UploadIcon size={24} className=\"text-neutral-400 mb-2\" />\n <Typography variant=\"p\" className=\"text-sm text-neutral-400\">\n {dragAndDrop ? \"Drag and drop files here\" : \"Click to upload files\"}\n </Typography>\n {accept && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-300 mt-1\">\n Accepted: {accept}\n </Typography>\n )}\n </div>\n );\n\n return (\n <div\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full rounded-[6px] border-2 border-dashed flex items-center justify-center\",\n isDragOver && \"border-brand-color bg-brand-color/10\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n className=\"hidden\"\n disabled={disabled}\n />\n {children || defaultContent}\n </div>\n );\n};\n\nexport default FileUpload;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ProgressProps {\n value: number; // 0-100\n max?: number;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n animated?: boolean;\n className?: string;\n}\n\nconst Progress: React.FC<ProgressProps> = ({\n value,\n max = 100,\n variant = \"default\",\n size = \"md\",\n showLabel = false,\n animated = false,\n className,\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n const variantClasses = {\n default: \"bg-brand-color\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n };\n\n const sizeClasses = {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const labelSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1\">\n <div\n className={cn(\n \"w-full bg-surface-3 rounded-[6px] overflow-hidden\",\n sizeClasses[size]\n )}\n >\n <div\n className={cn(\n \"h-full rounded-[6px] transition-all duration-300\",\n variantClasses[variant],\n animated && \"animate-pulse\"\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n {showLabel && (\n <span className={cn(\"text-neutral-400 font-medium\", labelSizeClasses[size])}>\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretLeftIcon, CaretRightIcon } from \"@phosphor-icons/react\";\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n showFirstLast?: boolean;\n showPrevNext?: boolean;\n maxVisiblePages?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"outline\";\n className?: string;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n showFirstLast = true,\n showPrevNext = true,\n maxVisiblePages = 5,\n size = \"md\",\n variant = \"default\",\n className,\n}) => {\n const getVisiblePages = () => {\n const pages: (number | string)[] = [];\n const halfVisible = Math.floor(maxVisiblePages / 2);\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n let start = Math.max(1, currentPage - halfVisible);\n const end = Math.min(totalPages, start + maxVisiblePages - 1);\n\n if (end - start + 1 < maxVisiblePages) {\n start = Math.max(1, end - maxVisiblePages + 1);\n }\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(\"...\");\n }\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n const handlePageClick = (page: number | string) => {\n if (typeof page === \"number\") {\n onPageChange(page);\n }\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const variantClasses = {\n default: \"bg-primary border border-surface-1 hover:bg-surface-3\",\n outline: \"bg-transparent border border-surface-1 hover:bg-surface-3\",\n };\n\n const activeClasses = {\n default: \"bg-brand-color text-neutral-500 border-brand-color\",\n outline: \"bg-brand-color text-neutral-500 border-brand-color\",\n };\n\n const renderPageButton = (page: number | string, index: number) => {\n if (page === \"...\") {\n return (\n <span\n key={`ellipsis-${index}`}\n className={cn(\n \"flex items-center justify-center\",\n sizeClasses[size],\n \"text-neutral-400\"\n )}\n >\n ...\n </span>\n );\n }\n\n const isActive = page === currentPage;\n\n return (\n <button\n key={page}\n onClick={() => handlePageClick(page)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n isActive ? activeClasses[variant] : \"text-neutral-400\",\n !isActive && \"hover:text-neutral-500\"\n )}\n >\n {page}\n </button>\n );\n };\n\n return (\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\n {/* First Page */}\n {showFirstLast && currentPage > 1 && (\n <button\n onClick={() => onPageChange(1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n First\n </button>\n )}\n\n {/* Previous Page */}\n {showPrevNext && currentPage > 1 && (\n <button\n onClick={() => onPageChange(currentPage - 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretLeftIcon size={16} />\n </button>\n )}\n\n {/* Page Numbers */}\n {getVisiblePages().map((page, index) => renderPageButton(page, index))}\n\n {/* Next Page */}\n {showPrevNext && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(currentPage + 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretRightIcon size={16} />\n </button>\n )}\n\n {/* Last Page */}\n {showFirstLast && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(totalPages)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n Last\n </button>\n )}\n </div>\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"filled\";\n error?: string;\n helperText?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n className,\n label,\n size = \"md\",\n variant = \"default\",\n error,\n helperText,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"radio\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n disabled={disabled}\n {...props}\n />\n \n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"w-1/2 h-1/2 bg-white rounded-full opacity-0 checked:opacity-100\" />\n </div>\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport { CaretUpIcon, CaretDownIcon } from \"@phosphor-icons/react\";\n\ninterface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\ninterface AccordionProps {\n items: AccordionItem[];\n active?: number;\n}\n\nconst Accordion: React.FC<AccordionProps> = ({ items, active = -1 }) => {\n const [activeIndex, setActiveIndex] = useState<number | null>(active);\n\n const toggleAccordion = (index: number) => {\n setActiveIndex(activeIndex === index ? null : index);\n };\n\n return (\n <div className=\"w-full space-y-[12px]\">\n {items.map((item, index) => (\n <div\n key={index}\n className=\"border border-surface-1 mx-[10px] rounded-[6px]\"\n >\n <button\n onClick={() => toggleAccordion(index)}\n className=\"w-full text-left px-[12px] py-[10px] bg-surface-4 flex justify-between items-center focus:outline-none\"\n >\n <span className=\"font-medium text-neutral-400 text-[13px]\">\n {item.title}\n </span>\n <span className=\"flex flex-row gap-[16px]\">\n {activeIndex === index ? (\n <CaretUpIcon size={18} />\n ) : (\n <CaretDownIcon size={18} />\n )}\n </span>\n </button>\n <div\n className={`overflow-hidden transition-all duration-300 ${\n activeIndex === index ? \"px-[12px] py-[12px]\" : \"max-h-0\"\n }`}\n >\n {item.content}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default Accordion;\n","import React, { useState, useEffect } from 'react';\n\ninterface TabItem {\n label: string;\n content: React.ReactNode;\n icon?: React.ReactNode;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActiveTab?: number;\n onTabChange?: (index: number) => void;\n containerClassName?: string;\n buttonClassName?: string;\n activeButtonClassName?: string;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActiveTab = 0,\n onTabChange,\n containerClassName = \"flex w-full border border-border-1 rounded-[6px] mt-[16px]\",\n buttonClassName = \"flex items-center gap-1 px-[8px] py-[2px] text-[13px] cursor-pointer transition-all duration-300 text-neutral-300 rounded-[6px] m-[8px]\",\n activeButtonClassName = \"bg-surface-3 text-neutral-400\",\n}) => {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n if (onTabChange) {\n onTabChange(index);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className={containerClassName}>\n {tabs.map((tab, index) => (\n <div\n key={index}\n className={`${buttonClassName} ${\n activeTab === index ? activeButtonClassName : \"\"\n }`}\n onClick={() => handleTabClick(index)}\n >\n {tab.icon}\n <span>{tab.label}</span>\n </div>\n ))}\n </div>\n <div className=\"w-full mt-4 flex flex-col gap-4\">\n {tabs[activeTab].content}\n </div>\n </div>\n );\n};\n\nexport default Tabs;","import { cn } from \"../utils/helpers\"\nimport * as React from \"react\"\n\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-[13px]\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b text-neutral-400 bg-surface-2\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0 text-neutral-300\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, onClick, ...props }, ref) => {\n const isInteractive = typeof onClick === \"function\";\n\n return (\n <tr\n ref={ref}\n onClick={onClick}\n className={cn(\n \"border-t border-surface-1 group hover:bg-surface-4 hover:text-neutral-500\",\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n className\n )}\n {...props}\n />\n );\n})\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"py-[4px] px-[8px] font-medium\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"py-[6px] px-[8px]\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}"]}
1
+ {"version":3,"sources":["../src/utils/helpers.ts","../src/components/Button.tsx","../src/components/Typography.tsx","../src/components/Input.tsx","../src/components/TextArea.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Dropdown.tsx","../src/components/ImageWithPlaceholder.tsx","../src/components/Loading.tsx","../src/components/Toast.tsx","../src/components/Alert.tsx","../src/components/Modal.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/Avatar.tsx","../src/components/Divider.tsx","../src/components/Tooltip.tsx","../src/utils/constants.ts","../src/hooks/useShortcutFormatter.tsx","../src/components/SearchInput.tsx","../src/components/FileUpload.tsx","../src/components/Progress.tsx","../src/components/Pagination.tsx","../src/components/Radio.tsx","../src/components/Accordion.tsx","../src/components/Tabs.tsx","../src/components/Table.tsx","../src/hooks/useGridClasses.tsx","../src/hooks/useDeviceSupport.tsx","../src/hooks/useSound.tsx"],"names":["React","jsxs","jsx","ArrowCircleRightIcon","CaretDownIcon","CheckIcon","useState","useRef","useEffect","WarningIcon","CheckCircleIcon","InfoIcon","XIcon","useCallback","UAParser","useImperativeHandle","MagnifyingGlassIcon","UploadIcon","CaretLeftIcon","CaretRightIcon","CaretUpIcon","React20","useMemo"],"mappings":"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","file":"index.cjs","sourcesContent":["export function cn(...inputs: Array<string | false | null | undefined | 0>): string {\n return inputs.filter(Boolean).join(\" \");\n}\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"filled\"\n | \"text\";\n tone?: \"primary\" | \"neutral\" | \"success\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n tone = \"primary\",\n size = \"md\",\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n rounded = \"lg\",\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"inline-flex items-center justify-center font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\";\n \n const variantClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n secondary: \"bg-surface-3 text-neutral-500 hover:bg-surface-4 active:bg-surface-4 focus-visible:ring-surface-3/50 border border-surface-4 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n outline: \"bg-transparent text-neutral-400 border border-surface-1 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n ghost: \"bg-transparent text-neutral-400 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n filled: \"\",\n text: \"\",\n } as Record<Required<ButtonProps>[\"variant\"], string>;\n\n const filledToneClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n neutral: \"bg-surface-3 text-neutral-100 hover:bg-surface-4 active:bg-surface-4 focus-visible:ring-surface-3/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n } as const;\n\n const textToneClasses = {\n primary: \"bg-transparent text-brand-color hover:text-brand-color/90 active:text-brand-color/80 hover:underline underline-offset-2 focus-visible:ring-brand-color/30\",\n neutral: \"bg-transparent text-neutral-400 hover:text-neutral-300 active:text-neutral-300 focus-visible:ring-surface-1/50\",\n success: \"bg-transparent text-green-600 hover:text-green-700 active:text-green-700 focus-visible:ring-green-500/30\",\n danger: \"bg-transparent text-red-600 hover:text-red-700 active:text-red-700 focus-visible:ring-red-500/30\",\n } as const;\n\n const sizeClasses = {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-base\",\n lg: \"h-12 px-5 text-lg\",\n xl: \"h-14 px-6 text-xl\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <button\n ref={ref}\n className={cn(\n baseClasses,\n variant === \"filled\"\n ? filledToneClasses[tone]\n : variant === \"text\"\n ? textToneClasses[tone]\n : variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n widthClasses,\n className\n )}\n data-variant={variant}\n data-tone={tone}\n disabled={disabled || loading}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n )}\n {!loading && leftIcon && <span className=\"mr-2\">{leftIcon}</span>}\n {children}\n {!loading && rightIcon && <span className=\"ml-2\">{rightIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\ntype Variant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\";\ntype Weight = \"thin\" | \"extralight\" | \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\" | \"extrabold\" | \"black\";\ntype Color = \"neutral-100\" | \"neutral-200\" | \"neutral-300\" | \"neutral-400\" | \"neutral-500\" | \"neutral-600\" | \"neutral-700\" | \"neutral-800\" | \"neutral-900\" | \"brand-color\" | \"red-500\" | \"green-500\" | \"blue-500\" | \"yellow-500\";\n\nexport interface TypographyProps {\n as?: Variant;\n variant?: Variant;\n size?: Size;\n weight?: Weight;\n color?: Color;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Typography: React.FC<TypographyProps> = ({\n as,\n variant = \"p\",\n size,\n weight,\n color,\n className,\n children,\n}) => {\n const Component = as || variant;\n\n const sizeClasses: Record<Size, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n \"4xl\": \"text-4xl\",\n \"5xl\": \"text-5xl\",\n };\n\n const weightClasses: Record<Weight, string> = {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n };\n\n const colorClasses: Record<Color, string> = {\n \"neutral-100\": \"text-neutral-100\",\n \"neutral-200\": \"text-neutral-200\",\n \"neutral-300\": \"text-neutral-300\",\n \"neutral-400\": \"text-neutral-400\",\n \"neutral-500\": \"text-neutral-500\",\n \"neutral-600\": \"text-neutral-600\",\n \"neutral-700\": \"text-neutral-700\",\n \"neutral-800\": \"text-neutral-800\",\n \"neutral-900\": \"text-neutral-900\",\n \"brand-color\": \"text-brand-color\",\n \"red-500\": \"text-red-500\",\n \"green-500\": \"text-green-500\",\n \"blue-500\": \"text-blue-500\",\n \"yellow-500\": \"text-yellow-500\",\n };\n\n const classes = cn(\n size && sizeClasses[size],\n weight && weightClasses[weight],\n color && colorClasses[color],\n className\n );\n\n return <Component className={classes}>{children}</Component>;\n};\n\nexport default Typography;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { ArrowCircleRightIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n showSubmitButton?: boolean;\n onSubmit?: () => void;\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n leftIcon,\n rightIcon,\n showSubmitButton = false,\n onSubmit,\n error,\n label,\n helperText,\n fullWidth = false,\n onKeyUp,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none placeholder:text-neutral-300 rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && onSubmit) {\n onSubmit();\n }\n onKeyUp?.(e);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {leftIcon}\n </div>\n )}\n \n <input\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n leftIcon ? \"pl-10\" : \"\",\n (rightIcon || showSubmitButton) ? \"pr-10\" : \"\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n onKeyUp={handleKeyUp}\n {...props}\n />\n \n {rightIcon && !showSubmitButton && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {rightIcon}\n </div>\n )}\n \n {showSubmitButton && (\n <button\n type=\"button\"\n onClick={onSubmit}\n disabled={props.disabled || props.readOnly || !onSubmit}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-300 transition-colors hover:text-neutral-400 disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Submit input\"\n >\n <ArrowCircleRightIcon size={20} />\n </button>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n resize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n resize = \"vertical\",\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none placeholder:text-neutral-300 rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n };\n\n const resizeClasses = {\n none: \"resize-none\",\n vertical: \"resize-y\",\n horizontal: \"resize-x\",\n both: \"resize\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 mb-1\">\n {label}\n </label>\n )}\n \n <textarea\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n resizeClasses[resize],\n widthClasses,\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n {...props}\n />\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport default TextArea;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'size'> {\n options: SelectOption[];\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n onChange?: (value: string) => void;\n placeholder?: string;\n}\n\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n className,\n options,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n onChange,\n placeholder,\n value,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none appearance-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(e.target.value);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n \"pr-10\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n value={value}\n onChange={handleChange}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n \n <CaretDownIcon\n size={16}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400 pointer-events-none\"\n />\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport default Select;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n variant?: \"default\" | \"filled\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: React.ReactNode;\n helperText?: string;\n indeterminate?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n indeterminate = false,\n checked,\n onChange,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n defaultChecked={checked}\n onChange={onChange}\n disabled={disabled}\n {...props}\n />\n \n {(checked || indeterminate) && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <CheckIcon\n size={size === \"sm\" ? 12 : size === \"md\" ? 16 : 20}\n className=\"text-white\"\n weight={indeterminate ? \"bold\" : \"regular\"}\n />\n </div>\n )}\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface ToggleProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n checked,\n onChange,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n label,\n helperText,\n fullWidth = false,\n },\n ref\n ) => {\n const baseClasses = \"flex items-center rounded-full cursor-pointer transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2\";\n \n const variantClasses = {\n default: \"focus:ring-brand-color/50\",\n success: \"focus:ring-green-500/50\",\n warning: \"focus:ring-yellow-500/50\",\n danger: \"focus:ring-red-500/50\",\n };\n\n const toggleClasses = {\n default: checked ? \"bg-brand-color\" : \"bg-gray-500\",\n success: checked ? \"bg-green-500\" : \"bg-gray-500\",\n warning: checked ? \"bg-yellow-500\" : \"bg-gray-500\",\n danger: checked ? \"bg-red-500\" : \"bg-gray-500\",\n };\n\n const sizeClasses = {\n sm: \"w-8 h-4 px-0.5\",\n md: \"w-10 h-5 px-0.5\",\n lg: \"w-12 h-6 px-1\",\n };\n\n const thumbSizeClasses = {\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n };\n\n const thumbTransformClasses = {\n sm: checked ? \"translate-x-4\" : \"translate-x-0\",\n md: checked ? \"translate-x-5\" : \"translate-x-0\",\n lg: checked ? \"translate-x-6\" : \"translate-x-0\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleClick = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n <div className={cn(\"flex items-center gap-2\", fullWidth && \"w-full\")}>\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n toggleClasses[variant],\n sizeClasses[size],\n widthClasses,\n disabled && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={handleClick}\n disabled={disabled}\n role=\"switch\"\n aria-checked={checked}\n >\n <div\n className={cn(\n \"bg-white rounded-full shadow-md transform transition-transform duration-300\",\n thumbSizeClasses[size],\n thumbTransformClasses[size]\n )}\n />\n </button>\n \n {label && (\n <span\n className={cn(\n \"text-sm text-neutral-500 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n onClick={disabled ? undefined : handleClick}\n aria-disabled={disabled}\n >\n {label}\n </span>\n )}\n </div>\n \n {helperText && (\n <div className=\"mt-1 ml-12\">\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n </div>\n )}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n\nexport default Toggle;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\n\nexport interface DropdownOption {\n value: string;\n label: string;\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n options: DropdownOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n trigger?: React.ReactNode;\n}\n\nconst Dropdown: React.FC<DropdownProps> = ({\n options,\n value,\n onChange,\n placeholder = \"Select an option\",\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n trigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const selectedOption = options.find(option => option.value === value);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleSelect = (option: DropdownOption) => {\n if (!option.disabled) {\n onChange?.(option.value);\n setIsOpen(false);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n return (\n <div ref={dropdownRef} className=\"\">\n {trigger ? (\n <div\n onClick={handleToggle}\n className={cn(disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\")}\n aria-disabled={disabled}\n >\n {trigger}\n </div>\n ) : (\n <button\n onClick={handleToggle}\n disabled={disabled}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full flex items-center justify-between pr-8\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <span className={selectedOption ? \"text-neutral-500\" : \"text-neutral-300\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <CaretDownIcon\n size={16}\n className={cn(\n \"text-neutral-400 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n )}\n\n {isOpen && (\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-secondary border border-surface-1 rounded-[6px] shadow-lg z-50 max-h-60 overflow-y-auto\">\n {options.map((option) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"px-3 py-2 cursor-pointer transition-colors duration-200 flex items-center gap-2\",\n option.value === value && \"bg-brand-color text-neutral-500\",\n !option.disabled && \"hover:bg-surface-3\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {option.icon && <span>{option.icon}</span>}\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React, { useState, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\ntype ImageSource = string | { src: string };\n\nexport interface ImageWithPlaceholderProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\n src?: ImageSource;\n fallbackSrc?: string;\n}\n\nconst ImageWithPlaceholder: React.FC<ImageWithPlaceholderProps> = ({\n src,\n alt,\n fallbackSrc = \"\",\n className,\n onError,\n ...props\n}) => {\n const resolveSrc = (s: ImageSource | undefined | null) => {\n if (s && typeof s === \"object\" && \"src\" in s && typeof s.src === \"string\") {\n return s.src;\n }\n return typeof s === \"string\" ? s : undefined;\n };\n\n const isValidSrc = (s: string | undefined | null) => {\n if (!s) return false;\n const trimmed = s.trim();\n if (trimmed === \"\") return false;\n if (trimmed.startsWith(\"data:\")) return true;\n if (trimmed.startsWith(\"/\") || trimmed.startsWith(\"./\") || trimmed.startsWith(\"../\")) return true;\n try {\n new URL(trimmed);\n return true;\n } catch {\n return false;\n }\n };\n\n const resolvedSrc = resolveSrc(src);\n const initialSrc = isValidSrc(resolvedSrc) ? resolvedSrc : fallbackSrc;\n const [imgSrc, setImgSrc] = useState(initialSrc);\n const [hasError, setHasError] = useState(!isValidSrc(resolvedSrc));\n\n useEffect(() => {\n const nextResolvedSrc = resolveSrc(src);\n if (isValidSrc(nextResolvedSrc)) {\n setImgSrc(nextResolvedSrc);\n setHasError(false);\n } else {\n setImgSrc(fallbackSrc);\n setHasError(true);\n }\n }, [src, fallbackSrc]);\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (!hasError) {\n setHasError(true);\n setImgSrc(fallbackSrc);\n }\n if (onError) {\n onError(e);\n }\n };\n\n return (\n <img\n {...props}\n src={typeof imgSrc === \"string\" ? imgSrc : undefined}\n alt={alt}\n className={cn(className)}\n onError={handleError}\n />\n );\n};\n\nexport default ImageWithPlaceholder;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport ImageWithPlaceholder from \"./ImageWithPlaceholder\";\n\nexport interface LoadingProps {\n variant?: \"spinner\" | \"dots\" | \"pulse\" | \"image\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n text?: string;\n fullScreen?: boolean;\n className?: string;\n}\n\nconst Loading: React.FC<LoadingProps> = ({\n variant = \"image\",\n size = \"md\",\n text = \"Loading...\",\n fullScreen = false,\n className,\n}) => {\n const sizeClasses = {\n sm: \"w-6 h-6\",\n md: \"w-8 h-8\",\n lg: \"w-12 h-12\",\n xl: \"w-16 h-16\",\n };\n\n const textSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-lg\",\n };\n\n const renderSpinner = () => (\n <div className={cn(\"animate-spin rounded-full border-2 border-current border-t-transparent\", sizeClasses[size])} />\n );\n\n const renderDots = () => (\n <div className=\"flex space-x-1\">\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"0ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"150ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"300ms\" }} />\n </div>\n );\n\n const renderPulse = () => (\n <div className={cn(\"animate-pulse rounded-full bg-current\", sizeClasses[size])} />\n );\n\n const imageSizes = {\n sm: 24,\n md: 32,\n lg: 48,\n xl: 64,\n };\n\n const renderImage = () => (\n <ImageWithPlaceholder\n src=\"/app-assets/Loader.gif\"\n alt=\"Loader\"\n width={imageSizes[size]}\n height={imageSizes[size]}\n className={sizeClasses[size]}\n />\n );\n\n const renderLoader = () => {\n switch (variant) {\n case \"spinner\":\n return renderSpinner();\n case \"dots\":\n return renderDots();\n case \"pulse\":\n return renderPulse();\n case \"image\":\n default:\n return renderImage();\n }\n };\n\n const content = (\n <div className={cn(\"flex flex-col justify-center items-center\", className)}>\n {renderLoader()}\n {text && (\n <div className={cn(\"mt-2 text-neutral-500\", textSizeClasses[size])}>\n {text}\n </div>\n )}\n </div>\n );\n\n if (fullScreen) {\n return (\n <div className=\"fixed inset-0 flex items-center justify-center bg-primary/50 backdrop-blur-sm z-50\">\n {content}\n </div>\n );\n }\n\n return content;\n};\n\nexport default Loading;\n","import React, { useEffect, useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface ToastProps {\n heading?: string;\n message: string;\n type: \"error\" | \"success\" | \"info\" | \"warning\";\n isVisible: boolean;\n onClose: () => void;\n duration?: number;\n position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"top-center\" | \"bottom-center\";\n showCloseButton?: boolean;\n className?: string;\n}\n\nconst Toast: React.FC<ToastProps> = ({\n heading,\n message,\n type,\n isVisible,\n onClose,\n duration = 5000,\n position = \"bottom-left\",\n showCloseButton = true,\n className,\n}) => {\n const [isShowing, setIsShowing] = useState(false);\n\n useEffect(() => {\n if (isVisible) {\n setIsShowing(true);\n let timer: ReturnType<typeof setTimeout> | null = null;\n if (type !== \"error\" && duration > 0) {\n timer = setTimeout(() => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n }, duration);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }\n }, [isVisible, type, duration, onClose]);\n\n if (!isVisible) return null;\n\n const getIcon = () => {\n switch (type) {\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"error\":\n return \"border-l-red-500 bg-red-50\";\n case \"success\":\n return \"border-l-green-500 bg-green-50\";\n case \"warning\":\n return \"border-l-yellow-500 bg-yellow-50\";\n case \"info\":\n return \"border-l-blue-500 bg-blue-50\";\n default:\n return \"border-l-blue-500 bg-blue-50\";\n }\n };\n\n const getPositionClasses = () => {\n switch (position) {\n case \"top-left\":\n return \"top-4 left-4\";\n case \"top-right\":\n return \"top-4 right-4\";\n case \"bottom-left\":\n return \"bottom-4 left-4\";\n case \"bottom-right\":\n return \"bottom-4 right-4\";\n case \"top-center\":\n return \"top-4 left-1/2 transform -translate-x-1/2\";\n case \"bottom-center\":\n return \"bottom-4 left-1/2 transform -translate-x-1/2\";\n default:\n return \"bottom-4 left-4\";\n }\n };\n\n const handleClose = () => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n };\n\n return (\n <div\n className={cn(\n \"fixed z-50 transform transition-all duration-300\",\n getPositionClasses(),\n isShowing ? \"translate-x-0 opacity-100\" : \"-translate-x-full opacity-0\"\n )}\n >\n <div\n className={cn(\n \"w-80 max-w-sm bg-secondary rounded-[6px] shadow-lg border-l-4 p-4\",\n getTypeClasses(),\n className\n )}\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {heading && (\n <Typography variant=\"h4\" className=\"text-sm font-medium text-neutral-700 mb-1\">\n {heading}\n </Typography>\n )}\n <Typography variant=\"p\" className=\"text-sm text-neutral-600 leading-relaxed\">\n {message}\n </Typography>\n </div>\n\n {/* Close Button */}\n {showCloseButton && (\n <button\n onClick={handleClose}\n className=\"flex-shrink-0 ml-2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Toast;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface AlertProps {\n type: \"success\" | \"error\" | \"warning\" | \"info\";\n title?: string;\n message?: string;\n onClose?: () => void;\n showCloseButton?: boolean;\n variant?: \"default\" | \"filled\" | \"outline\";\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps> = ({\n type,\n title,\n message,\n onClose,\n showCloseButton = false,\n variant = \"default\",\n className,\n children,\n}) => {\n const getIcon = () => {\n switch (type) {\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"success\":\n return {\n default: \"bg-green-50 border-green-200 text-green-800\",\n filled: \"bg-green-500 text-white\",\n outline: \"bg-transparent border-green-500 text-green-700\",\n };\n case \"error\":\n return {\n default: \"bg-red-50 border-red-200 text-red-800\",\n filled: \"bg-red-500 text-white\",\n outline: \"bg-transparent border-red-500 text-red-700\",\n };\n case \"warning\":\n return {\n default: \"bg-yellow-50 border-yellow-200 text-yellow-800\",\n filled: \"bg-yellow-500 text-white\",\n outline: \"bg-transparent border-yellow-500 text-yellow-700\",\n };\n case \"info\":\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n default:\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n }\n };\n\n const typeClasses = getTypeClasses()[variant];\n\n return (\n <div\n className={cn(\n \"rounded-[6px] border p-4\",\n typeClasses,\n className\n )}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography variant=\"h4\" className=\"text-sm font-medium mb-1\">\n {title}\n </Typography>\n )}\n {message && (\n <Typography variant=\"p\" className=\"text-sm leading-relaxed\">\n {message}\n </Typography>\n )}\n {children}\n </div>\n\n {/* Close Button */}\n {showCloseButton && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 ml-2 text-current opacity-70 hover:opacity-100 transition-opacity\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Alert;\n","import React, { useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\nimport { XIcon } from \"@phosphor-icons/react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n showCloseButton?: boolean;\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n className?: string;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n size = \"md\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n}) => {\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && closeOnEscape) {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose, closeOnEscape]);\n\n if (!isOpen) return null;\n\n const sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n full: \"max-w-full mx-4\",\n };\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n onClose();\n }\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n >\n <div\n className={cn(\n \"bg-secondary rounded-[6px] shadow-xl w-full mx-4 max-h-[90vh] overflow-hidden\",\n sizeClasses[size],\n className\n )}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between px-4 py-2 border-b border-surface-1\">\n {title && (\n <Typography\n variant=\"h2\"\n className=\"text-lg font-semibold text-neutral-500\"\n >\n {title}\n </Typography>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"p-1 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={20} />\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"px-4 py-2 overflow-y-auto max-h-[calc(90vh-120px)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"elevated\" | \"outlined\" | \"filled\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n children: React.ReactNode;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n padding = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-secondary border border-surface-1\",\n elevated: \"bg-secondary border border-surface-1 shadow-lg\",\n outlined: \"bg-transparent border border-surface-1\",\n filled: \"bg-surface-4 border border-surface-4\",\n };\n\n const paddingClasses = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-[6px] transition-all duration-200\",\n variantClasses[variant],\n paddingClasses[padding],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\nexport default Card;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n children: React.ReactNode;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n rounded = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-surface-3 text-neutral-400\",\n primary: \"bg-brand-color text-neutral-500\",\n success: \"bg-green-500 text-white\",\n warning: \"bg-yellow-500 text-white\",\n danger: \"bg-red-500 text-white\",\n info: \"bg-blue-500 text-white\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-1 text-sm\",\n lg: \"px-3 py-1.5 text-base\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center font-medium\",\n variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport default Badge;\n","import React, { useState, useCallback } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n fallback?: string;\n className?: string;\n onClick?: () => void;\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"Avatar\",\n size = \"md\",\n fallback,\n className,\n onClick,\n}) => {\n const [imgError, setImgError] = useState(false);\n\n const sizeClasses = {\n sm: \"w-8 h-8 text-xs\",\n md: \"w-10 h-10 text-sm\",\n lg: \"w-12 h-12 text-base\",\n xl: \"w-16 h-16 text-lg\",\n };\n\n const getInitials = (name: string) => {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n };\n\n const renderFallback = () => {\n if (fallback) {\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400 font-medium\">\n {getInitials(fallback)}\n </div>\n );\n }\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400\">\n <svg className=\"w-1/2 h-1/2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n );\n };\n\n // Use a callback to avoid unnecessary re-renders\n const handleImgError = useCallback(() => {\n setImgError(true);\n }, []);\n\n // Check if src is a non-empty string\n const isSrcAvailable = typeof src === \"string\" && src.trim() !== \"\";\n\n return (\n <div\n className={cn(\n \"relative rounded-full overflow-hidden bg-surface-3\",\n sizeClasses[size],\n className\n )}\n onClick={onClick}\n style={onClick ? { cursor: \"pointer\" } : undefined}\n >\n {isSrcAvailable && !imgError ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={src as string}\n alt={alt}\n className=\"object-cover\"\n sizes={\n size === \"sm\"\n ? \"32px\"\n : size === \"md\"\n ? \"40px\"\n : size === \"lg\"\n ? \"48px\"\n : \"64px\"\n }\n onError={handleImgError}\n />\n ) : (\n renderFallback()\n )}\n </div>\n );\n};\n\nexport default Avatar;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface DividerProps {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"solid\" | \"dashed\" | \"dotted\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n variant = \"solid\",\n size = \"md\",\n className,\n}) => {\n const variantClasses = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n\n const sizeClasses = {\n sm: orientation === \"horizontal\" ? \"border-t\" : \"border-l\",\n md: orientation === \"horizontal\" ? \"border-t-2\" : \"border-l-2\",\n lg: orientation === \"horizontal\" ? \"border-t-4\" : \"border-l-4\",\n };\n\n const orientationClasses = {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n };\n\n return (\n <div\n className={cn(\n \"border-surface-1\",\n variantClasses[variant],\n sizeClasses[size],\n orientationClasses[orientation],\n className\n )}\n />\n );\n};\n\nexport default Divider;\n","import React, { useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n delay?: number;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"top\",\n delay = 200,\n className,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null);\n\n const showTooltip = () => {\n const id = setTimeout(() => setIsVisible(true), delay);\n setTimeoutId(id);\n };\n\n const hideTooltip = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n setIsVisible(false);\n };\n\n const positionClasses = {\n top: \"bottom-full left-1/2 transform -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 transform -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 transform -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 transform -translate-y-1/2 ml-2\",\n };\n\n const arrowClasses = {\n top: \"top-full left-1/2 transform -translate-x-1/2 border-t-surface-1\",\n bottom: \"bottom-full left-1/2 transform -translate-x-1/2 border-b-surface-1\",\n left: \"left-full top-1/2 transform -translate-y-1/2 border-l-surface-1\",\n right: \"right-full top-1/2 transform -translate-y-1/2 border-r-surface-1\",\n };\n\n return (\n <div\n className=\"relative inline-block\"\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n >\n {children}\n {isVisible && (\n <div\n className={cn(\n \"absolute z-50 px-2 py-1 text-xs text-white bg-surface-1 rounded shadow-lg whitespace-nowrap\",\n positionClasses[position],\n className\n )}\n >\n {content}\n <div\n className={cn(\n \"absolute w-0 h-0 border-4 border-transparent\",\n arrowClasses[position]\n )}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","export type Shortcut = {\n command: string;\n shortcut: string[];\n usage: string;\n};\n\nexport const globalKeyboardShortcuts: Shortcut[] = [\n {\n command: \"toggle_theme\",\n shortcut: [\"Ctrl\", \"Shift\", \"M\"],\n usage: \"Toggle between light and dark theme\",\n },\n {\n command: \"app_switcher\",\n shortcut: [\"Ctrl\", \"Shift\", \"S\"],\n usage: \"Switch between open apps\",\n },\n {\n command: \"exit_app\",\n shortcut: [\"Ctrl\", \"E\"],\n usage: \"Exit or quit the application\",\n },\n {\n command: \"maximize_app\",\n shortcut: [\"Ctrl\", \"ArrowUp\"],\n usage: \"Maximize the application window\",\n },\n {\n command: \"minimize_app\",\n shortcut: [\"Ctrl\", \"ArrowDown\"],\n usage: \"Minimize the application window\",\n },\n {\n command: \"global_search\",\n shortcut: [\"Ctrl\", \"Shift\", \"K\"],\n usage: \"Open global search\",\n },\n {\n command: \"toggle_search_mode\",\n shortcut: [\"Ctrl\", \"Shift\", \"L\"],\n usage: \"Enable AI and Voice command (start/stop voice input in search)\",\n },\n {\n command: \"toggle_control_center\",\n shortcut: [\"Ctrl\", \"Shift\", \"O\"],\n usage: \"Toggle control center panel or drawer\",\n },\n {\n command: \"arrow_up\",\n shortcut: [\"ArrowUp\"],\n usage: \"Navigate up in lists, menus and options\",\n },\n {\n command: \"arrow_down\",\n shortcut: [\"ArrowDown\"],\n usage: \"Navigate down in lists, menus and options\",\n },\n {\n command: \"escape_button_action\",\n shortcut: [\"Escape\"],\n usage: \"Close or go back from any open alert, popup, search, or control center\",\n },\n {\n command: \"enter_button_action\",\n shortcut: [\"Enter\"],\n usage: \"Select or confirm the currently focused item\",\n },\n {\n command: \"toggle_filters\",\n shortcut: [\"Ctrl\", \"Shift\", \"U\"],\n usage: \"To open or close filters of any current active app\",\n },\n {\n command: \"focus_search\",\n shortcut: [\"Ctrl\", \"k\"],\n usage: \"Focus on current app search\",\n },\n {\n command: \"toggle_all_apps\",\n shortcut: [\"Ctrl\", \"Shift\", \"A\"],\n usage: \"Toggle showing all available apps and plugins\",\n },\n];","import { globalKeyboardShortcuts } from \"../utils/constants\";\nimport { useState, useEffect, useRef } from \"react\";\nimport { UAParser } from \"ua-parser-js\";\n\ntype OS = \"mac\" | \"windows\" | \"linux\";\n\ntype KeyMap = {\n [key in OS]: {\n [key: string]: string;\n };\n};\n\nconst keyMap: KeyMap = {\n mac: {\n ctrl: \"⌘\",\n alt: \"⌥\",\n shift: \"⇧\",\n enter: \"⏎\",\n backspace: \"⌫\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n windows: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n enter: \"Enter\",\n backspace: \"Backspace\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n linux: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n enter: \"Enter\",\n backspace: \"Backspace\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n};\n\nconst detectOS = (): OS => {\n const parser = new UAParser();\n const osName = parser.getOS().name?.toLowerCase() || \"\";\n\n if (osName.includes(\"mac\")) return \"mac\";\n if (osName.includes(\"windows\")) return \"windows\";\n if (osName.includes(\"linux\")) return \"linux\";\n return \"windows\"; // fallback\n};\n\ntype UseShortcutFormatterReturn = {\n formatKeys: (keys: string[]) => string;\n getShortcutByCommand: (command: string) => string[];\n addShortcutListener: (\n command: string,\n listener: (e: KeyboardEvent) => void\n ) => void;\n removeShortcutListener: (\n command: string,\n listener: (e: KeyboardEvent) => void\n ) => void;\n};\n\nconst normalizeKey = (key: string) => key.toLowerCase();\n\nconst matchShortcut = (event: KeyboardEvent, shortcut: string[], os: OS) => {\n // Normalize keys for comparison\n const keySet = new Set(shortcut.map(normalizeKey));\n // Map event to normalized keys\n const pressed: string[] = [];\n if (os === \"mac\") {\n if (event.metaKey) pressed.push(\"ctrl\");\n } else {\n if (event.ctrlKey) pressed.push(\"ctrl\");\n }\n if (event.altKey) pressed.push(\"alt\");\n if (event.shiftKey) pressed.push(\"shift\");\n // The main key\n if (event.key && ![\"Control\", \"Meta\", \"Alt\", \"Shift\"].includes(event.key)) {\n pressed.push(normalizeKey(event.key));\n }\n // Compare sets\n if (pressed.length !== shortcut.length) return false;\n return pressed.every((k) => keySet.has(k));\n};\n\nconst useShortcutFormatter = (): UseShortcutFormatterReturn => {\n const [os, setOS] = useState<OS>(\"windows\");\n const listenersRef = useRef<Map<string, Set<(e: KeyboardEvent) => void>>>(new Map());\n\n useEffect(() => {\n setOS(detectOS());\n }, []);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n for (const shortcut of globalKeyboardShortcuts) {\n if (matchShortcut(event, shortcut.shortcut, os)) {\n const listeners = listenersRef.current.get(shortcut.command);\n if (listeners) {\n event.preventDefault(); // Prevent browser defaults for matched shortcuts\n listeners.forEach((cb) => cb(event));\n }\n }\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [os]);\n\n const formatKeys = (keys: string[] = []): string => {\n return keys\n .map((key) => keyMap[os][key.toLowerCase()] || key.toUpperCase())\n .join(\" + \");\n };\n\n const getShortcutByCommand = (command: string): string[] => {\n const found = globalKeyboardShortcuts.find((s) => s.command === command);\n return found ? found.shortcut : [\"\"];\n };\n\n const addShortcutListener = (command: string, listener: (e: KeyboardEvent) => void) => {\n if (!listenersRef.current.has(command)) {\n listenersRef.current.set(command, new Set());\n }\n listenersRef.current.get(command)!.add(listener);\n };\n\n const removeShortcutListener = (command: string, listener: (e: KeyboardEvent) => void) => {\n if (listenersRef.current.has(command)) {\n listenersRef.current.get(command)!.delete(listener);\n }\n };\n\n return {\n formatKeys,\n getShortcutByCommand,\n addShortcutListener,\n removeShortcutListener,\n };\n};\n\nexport default useShortcutFormatter;\n","import React, { useImperativeHandle, useRef, useCallback, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { MagnifyingGlassIcon } from \"@phosphor-icons/react\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\n\nexport interface SearchInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n onSearch?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n showClearButton?: boolean;\n className?: string;\n enableKeyboardShortcuts?: boolean;\n isActive?: boolean;\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n onSearch,\n placeholder = \"Search...\",\n variant = \"default\",\n size = \"md\",\n showClearButton = true,\n className,\n value,\n onChange,\n enableKeyboardShortcuts = false,\n isActive = true,\n ...props\n },\n ref\n ) => {\n const [searchValue, setSearchValue] = React.useState(value || \"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n const { addShortcutListener, removeShortcutListener, formatKeys, getShortcutByCommand } = useShortcutFormatter();\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setSearchValue(newValue);\n onChange?.(e);\n onSearch?.(newValue);\n };\n\n const handleClear = useCallback(() => {\n setSearchValue(\"\");\n onSearch?.(\"\");\n // Create a synthetic event for onChange\n const syntheticEvent = {\n target: { value: \"\" }\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n }, [onChange, onSearch]);\n\n useEffect(() => {\n if (!enableKeyboardShortcuts || !isActive) return;\n\n const handleFocusSearch = (e?: KeyboardEvent) => {\n e?.preventDefault();\n inputRef.current?.focus();\n };\n\n const handleClearShortcut = (e?: KeyboardEvent) => {\n e?.preventDefault();\n handleClear();\n inputRef.current?.blur();\n };\n\n addShortcutListener(\"focus_search\", handleFocusSearch);\n addShortcutListener(\"escape_button_action\", handleClearShortcut);\n\n return () => {\n removeShortcutListener(\"focus_search\", handleFocusSearch);\n removeShortcutListener(\"escape_button_action\", handleClearShortcut);\n };\n }, [enableKeyboardShortcuts, isActive, handleClear, addShortcutListener, removeShortcutListener]);\n\n const displayPlaceholder = enableKeyboardShortcuts\n ? `${placeholder} (${formatKeys(getShortcutByCommand(\"focus_search\"))})`\n : placeholder;\n\n const baseClasses = \"transition-all duration-200 focus:outline-none placeholder:text-neutral-300 rounded-[6px]\";\n\n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 pl-8 text-sm\",\n md: \"h-10 px-3 pl-10 text-base\",\n lg: \"h-12 px-4 pl-12 text-lg\",\n };\n\n const iconSizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"relative\">\n {/* Search Icon */}\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n <MagnifyingGlassIcon className={iconSizeClasses[size]} />\n </div>\n\n <input\n ref={inputRef}\n type=\"text\"\n placeholder={displayPlaceholder}\n value={searchValue}\n onChange={handleChange}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n showClearButton && searchValue ? \"pr-10\" : \"\",\n className\n )}\n {...props}\n />\n\n {/* Clear Button */}\n {showClearButton && searchValue && (\n <button\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <svg className={iconSizeClasses[size]} fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\">\n <path strokeLinecap=\"round\" strokeLinejoin=\"round\" strokeWidth={2} d=\"M6 18L18 6M6 6l12 12\" />\n </svg>\n </button>\n )}\n </div>\n );\n }\n);\n\nSearchInput.displayName = \"SearchInput\";\n\nexport default SearchInput;\n","import React, { useRef } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { UploadIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface FileUploadProps {\n onFileSelect?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n dragAndDrop?: boolean;\n}\n\nconst FileUpload: React.FC<FileUploadProps> = ({\n onFileSelect,\n accept,\n multiple = false,\n maxSize,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n children,\n dragAndDrop = false,\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n\n const handleFileSelect = (files: FileList | null) => {\n if (!files) return;\n\n const fileArray = Array.from(files);\n \n // Validate file size\n if (maxSize) {\n const validFiles = fileArray.filter(file => file.size <= maxSize);\n if (validFiles.length !== fileArray.length) {\n console.warn(\"Some files were too large and were skipped\");\n }\n onFileSelect?.(validFiles);\n } else {\n onFileSelect?.(fileArray);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFileSelect(e.target.files);\n };\n\n const handleClick = () => {\n if (!disabled) {\n fileInputRef.current?.click();\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (dragAndDrop && !disabled) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n if (dragAndDrop && !disabled) {\n handleFileSelect(e.dataTransfer.files);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-20 px-3 text-sm\",\n md: \"h-24 px-4 text-base\",\n lg: \"h-32 px-6 text-lg\",\n };\n\n const defaultContent = (\n <div className=\"flex flex-col items-center justify-center h-full text-center\">\n <UploadIcon size={24} className=\"text-neutral-400 mb-2\" />\n <Typography variant=\"p\" className=\"text-sm text-neutral-400\">\n {dragAndDrop ? \"Drag and drop files here\" : \"Click to upload files\"}\n </Typography>\n {accept && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-300 mt-1\">\n Accepted: {accept}\n </Typography>\n )}\n </div>\n );\n\n return (\n <div\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full rounded-[6px] border-2 border-dashed flex items-center justify-center\",\n isDragOver && \"border-brand-color bg-brand-color/10\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n className=\"hidden\"\n disabled={disabled}\n />\n {children || defaultContent}\n </div>\n );\n};\n\nexport default FileUpload;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ProgressProps {\n value: number; // 0-100\n max?: number;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n animated?: boolean;\n className?: string;\n}\n\nconst Progress: React.FC<ProgressProps> = ({\n value,\n max = 100,\n variant = \"default\",\n size = \"md\",\n showLabel = false,\n animated = false,\n className,\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n const variantClasses = {\n default: \"bg-brand-color\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n };\n\n const sizeClasses = {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const labelSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1\">\n <div\n className={cn(\n \"w-full bg-surface-3 rounded-[6px] overflow-hidden\",\n sizeClasses[size]\n )}\n >\n <div\n className={cn(\n \"h-full rounded-[6px] transition-all duration-300\",\n variantClasses[variant],\n animated && \"animate-pulse\"\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n {showLabel && (\n <span className={cn(\"text-neutral-400 font-medium\", labelSizeClasses[size])}>\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretLeftIcon, CaretRightIcon } from \"@phosphor-icons/react\";\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n showFirstLast?: boolean;\n showPrevNext?: boolean;\n maxVisiblePages?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"outline\";\n className?: string;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n showFirstLast = true,\n showPrevNext = true,\n maxVisiblePages = 5,\n size = \"md\",\n variant = \"default\",\n className,\n}) => {\n const getVisiblePages = () => {\n const pages: (number | string)[] = [];\n const halfVisible = Math.floor(maxVisiblePages / 2);\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n let start = Math.max(1, currentPage - halfVisible);\n const end = Math.min(totalPages, start + maxVisiblePages - 1);\n\n if (end - start + 1 < maxVisiblePages) {\n start = Math.max(1, end - maxVisiblePages + 1);\n }\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(\"...\");\n }\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n const handlePageClick = (page: number | string) => {\n if (typeof page === \"number\") {\n onPageChange(page);\n }\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const variantClasses = {\n default: \"bg-primary border border-surface-1 hover:bg-surface-3\",\n outline: \"bg-transparent border border-surface-1 hover:bg-surface-3\",\n };\n\n const activeClasses = {\n default: \"bg-brand-color text-neutral-500 border-brand-color\",\n outline: \"bg-brand-color text-neutral-500 border-brand-color\",\n };\n\n const renderPageButton = (page: number | string, index: number) => {\n if (page === \"...\") {\n return (\n <span\n key={`ellipsis-${index}`}\n className={cn(\n \"flex items-center justify-center\",\n sizeClasses[size],\n \"text-neutral-400\"\n )}\n >\n ...\n </span>\n );\n }\n\n const isActive = page === currentPage;\n\n return (\n <button\n key={page}\n onClick={() => handlePageClick(page)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n isActive ? activeClasses[variant] : \"text-neutral-400\",\n !isActive && \"hover:text-neutral-500\"\n )}\n >\n {page}\n </button>\n );\n };\n\n return (\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\n {/* First Page */}\n {showFirstLast && currentPage > 1 && (\n <button\n onClick={() => onPageChange(1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n First\n </button>\n )}\n\n {/* Previous Page */}\n {showPrevNext && currentPage > 1 && (\n <button\n onClick={() => onPageChange(currentPage - 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretLeftIcon size={16} />\n </button>\n )}\n\n {/* Page Numbers */}\n {getVisiblePages().map((page, index) => renderPageButton(page, index))}\n\n {/* Next Page */}\n {showPrevNext && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(currentPage + 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretRightIcon size={16} />\n </button>\n )}\n\n {/* Last Page */}\n {showFirstLast && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(totalPages)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n Last\n </button>\n )}\n </div>\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"filled\";\n error?: string;\n helperText?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n className,\n label,\n size = \"md\",\n variant = \"default\",\n error,\n helperText,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"radio\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n disabled={disabled}\n {...props}\n />\n \n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"w-1/2 h-1/2 bg-white rounded-full opacity-0 checked:opacity-100\" />\n </div>\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport { CaretUpIcon, CaretDownIcon } from \"@phosphor-icons/react\";\n\ninterface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\ninterface AccordionProps {\n items: AccordionItem[];\n active?: number;\n}\n\nconst Accordion: React.FC<AccordionProps> = ({ items, active = -1 }) => {\n const [activeIndex, setActiveIndex] = useState<number | null>(active);\n\n const toggleAccordion = (index: number) => {\n setActiveIndex(activeIndex === index ? null : index);\n };\n\n return (\n <div className=\"w-full space-y-[12px]\">\n {items.map((item, index) => (\n <div\n key={index}\n className=\"border border-surface-1 mx-[10px] rounded-[6px]\"\n >\n <button\n onClick={() => toggleAccordion(index)}\n className=\"w-full text-left px-[12px] py-[10px] bg-surface-4 flex justify-between items-center focus:outline-none\"\n >\n <span className=\"font-medium text-neutral-400 text-[13px]\">\n {item.title}\n </span>\n <span className=\"flex flex-row gap-[16px]\">\n {activeIndex === index ? (\n <CaretUpIcon size={18} />\n ) : (\n <CaretDownIcon size={18} />\n )}\n </span>\n </button>\n <div\n className={`overflow-hidden transition-all duration-300 ${\n activeIndex === index ? \"px-[12px] py-[12px]\" : \"max-h-0\"\n }`}\n >\n {item.content}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default Accordion;\n","import React, { useState, useEffect } from 'react';\n\ninterface TabItem {\n label: string;\n content: React.ReactNode;\n icon?: React.ReactNode;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActiveTab?: number;\n onTabChange?: (index: number) => void;\n containerClassName?: string;\n buttonClassName?: string;\n activeButtonClassName?: string;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActiveTab = 0,\n onTabChange,\n containerClassName = \"flex w-full border border-border-1 rounded-[6px] mt-[16px]\",\n buttonClassName = \"flex items-center gap-1 px-[8px] py-[2px] text-[13px] cursor-pointer transition-all duration-300 text-neutral-300 rounded-[6px] m-[8px]\",\n activeButtonClassName = \"bg-surface-3 text-neutral-400\",\n}) => {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n if (onTabChange) {\n onTabChange(index);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className={containerClassName}>\n {tabs.map((tab, index) => (\n <div\n key={index}\n className={`${buttonClassName} ${\n activeTab === index ? activeButtonClassName : \"\"\n }`}\n onClick={() => handleTabClick(index)}\n >\n {tab.icon}\n <span>{tab.label}</span>\n </div>\n ))}\n </div>\n <div className=\"w-full mt-4 flex flex-col gap-4\">\n {tabs[activeTab].content}\n </div>\n </div>\n );\n};\n\nexport default Tabs;","import { cn } from \"../utils/helpers\"\nimport * as React from \"react\"\n\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-[13px]\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b text-neutral-400 bg-surface-2\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0 text-neutral-300\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, onClick, ...props }, ref) => {\n const isInteractive = typeof onClick === \"function\";\n\n return (\n <tr\n ref={ref}\n onClick={onClick}\n className={cn(\n \"border-t border-surface-1 group hover:bg-surface-4 hover:text-neutral-500\",\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n className\n )}\n {...props}\n />\n );\n})\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"py-[4px] px-[8px] font-medium\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"py-[6px] px-[8px]\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}","import { useMemo } from \"react\";\n\nconst useGridClasses = (\n windowSize: { width: number; height: number },\n gridRules: Record<string, Record<string, Record<string, string>>>\n) => {\n const deviceType: \"mobile\" | \"tablet\" | \"desktop\" = useMemo(() => {\n if (windowSize.width <= 640) return \"mobile\"; // For mobile (width <= 640px)\n if (windowSize.width <= 1024) return \"tablet\"; // For tablet (width <= 1024px)\n return \"desktop\"; // For desktop (width > 1024px)\n }, [windowSize]);\n\n const gridClasses: Record<string, string> = useMemo(() => {\n const classes: Record<string, string> = {};\n for (const element in gridRules) {\n const classRules = gridRules[element];\n // Check for device-specific class (col-span-{deviceType}-{col-span})\n const colSpan = classRules[\"col-span\"][deviceType];\n classes[element] = `col-span-${deviceType}-${colSpan}`;\n }\n return classes;\n }, [deviceType, gridRules]);\n\n return { gridClasses, deviceType };\n};\n\nexport default useGridClasses;\n","import { useEffect, useState } from \"react\";\n\n// Helper function to detect device type and orientation\nexport const useDeviceSupport = () => {\n const [isSupported, setIsSupported] = useState(true);\n\n useEffect(() => {\n function checkSupport() {\n // Get user agent and screen info\n const ua =\n typeof window !== \"undefined\" ? window.navigator.userAgent : \"\";\n const width = typeof window !== \"undefined\" ? window.innerWidth : 1920;\n const height = typeof window !== \"undefined\" ? window.innerHeight : 1080;\n const isTouch =\n typeof window !== \"undefined\" ? \"ontouchstart\" in window : false;\n\n // Mobile detection (iOS/Android phones)\n const isMobile = /Mobi|Android|iPhone|iPod/.test(ua) && width <= 767;\n\n // Tablet detection (portrait/landscape)\n const isTablet =\n (/iPad|Tablet|Android/.test(ua) && !/Mobile/.test(ua)) ||\n (isTouch && width >= 600 && width <= 1024);\n // Tablet portrait: width < height, width <= 1024, height > width\n const isTabletPortrait = isTablet && width < height;\n // Tablet landscape: width > height, width <= 1366, width >= 1024\n const isTabletLandscape =\n isTablet && width > height && width >= 1024 && width <= 1366;\n\n // Laptop: width >= 1024 (landscape), not touch or not tablet\n const isLaptop =\n width >= 1024 && !isMobile && (!isTablet || isTabletLandscape);\n\n // Support logic:\n // - Mobile: Not supported\n // - Tablet portrait: Not supported\n // - Tablet landscape: Supported\n // - Laptop: Supported\n\n if (isMobile) {\n setIsSupported(false);\n } else if (isTabletPortrait) {\n setIsSupported(false);\n } else if (isTabletLandscape) {\n setIsSupported(true);\n } else if (isLaptop) {\n setIsSupported(true);\n } else {\n // Default: allow desktop\n setIsSupported(true);\n }\n }\n\n checkSupport();\n window.addEventListener(\"resize\", checkSupport);\n return () => window.removeEventListener(\"resize\", checkSupport);\n }, []);\n\n return isSupported;\n};\n","import { useCallback } from \"react\";\n\ntype SoundType =\n | \"click\"\n | \"error\"\n | \"success\"\n | \"alert\"\n | \"notification\"\n | \"swipe\";\n\nconst soundMap: Record<SoundType, string> = {\n click: \"/sounds/click-tone.wav\",\n alert: \"/sounds/error-tone.wav\",\n notification: \"/sounds/notification-tone.wav\",\n error: \"/sounds/error-tone.wav\",\n success: \"/sounds/success-tone.wav\",\n swipe: \"/sounds/swipe-tone.wav\",\n};\n\nexport const useSound = () => {\n const playSound = useCallback((type: SoundType) => {\n if (typeof window === \"undefined\" || typeof window.Audio === \"undefined\") {\n return;\n }\n\n const soundSrc = soundMap[type];\n const audio = new window.Audio(soundSrc);\n audio.play().catch((err) => {\n console.error(\"Sound playback failed:\", err);\n });\n }, []);\n\n return { playSound };\n};\n"]}