@andreagiugni/tailwind-dashboard-ui 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/lib/styleOverride.ts","../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Ribbon/Ribbon.tsx","../src/components/Alert/icons.tsx","../src/components/Alert/Alert.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/AvatarText.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/DropdownItem.tsx","../src/components/Dropzone/Dropzone.tsx","../src/components/Table/Table.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Form/Input.tsx","../src/components/DataTable/DataTable.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/ThemeToggleButton/ThemeToggleButton.tsx","../src/components/Card/Card.tsx","../src/components/Toast/icons.tsx","../src/components/Toast/Toast.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Popover/Popover.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Chip/Chip.tsx","../src/components/Progress/Progress.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Code/Code.tsx","../src/components/Snippet/Snippet.tsx","../src/components/Form/Label.tsx","../src/components/Form/TextArea.tsx","../src/components/Form/Checkbox.tsx","../src/components/Form/Radio.tsx","../src/components/Form/RadioSm.tsx","../src/components/Form/Switch.tsx","../src/components/Form/Select.tsx","../src/components/Form/MultiSelect.tsx","../src/components/Form/FileInput.tsx","../src/components/Form/DatePicker.tsx","../src/components/Form/DateTimePicker.tsx","../src/components/Form/PasswordInput.tsx","../src/components/Form/Form.tsx","../src/components/Slider/Slider.tsx"],"names":["jsxs","jsx","variantClasses","sizeClasses","name","useRef","useState","React","ChevronIcon","placementClasses","useEffect","sizeStyles","variants","Fragment","colorClasses","flatpickr","fillColors"],"mappings":"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","file":"index.js","sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport interface ColorOverrideProps {\n /** Inline background color override (any CSS color). */\n bgColor?: string;\n /** Inline text color override (any CSS color). */\n textColor?: string;\n /** Inline border color override (any CSS color). */\n borderColor?: string;\n}\n\nexport function styleOverride({\n bgColor,\n textColor,\n borderColor,\n}: ColorOverrideProps): CSSProperties {\n const style: CSSProperties = {};\n if (bgColor !== undefined) style.backgroundColor = bgColor;\n if (textColor !== undefined) style.color = textColor;\n if (borderColor !== undefined) style.borderColor = borderColor;\n return style;\n}\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">,\n ColorOverrideProps {\n size?: \"sm\" | \"md\";\n variant?: \"primary\" | \"outline\";\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n}\n\nconst sizeClasses: Record<NonNullable<ButtonProps[\"size\"]>, string> = {\n sm: \"px-4 py-3 text-sm\",\n md: \"px-5 py-3.5 text-sm\",\n};\n\nconst variantClasses: Record<NonNullable<ButtonProps[\"variant\"]>, string> = {\n primary:\n \"bg-brand-500 text-white shadow-theme-xs hover:bg-brand-600 disabled:bg-brand-300\",\n outline:\n \"bg-white text-gray-700 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 dark:bg-gray-800 dark:text-gray-400 dark:ring-gray-700 dark:hover:bg-white/[0.03] dark:hover:text-gray-300\",\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n size = \"md\",\n variant = \"primary\",\n startIcon,\n endIcon,\n className,\n disabled = false,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center font-medium gap-2 rounded-lg transition\",\n sizeClasses[size],\n variantClasses[variant],\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n disabled={disabled}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {startIcon && <span className=\"flex items-center\">{startIcon}</span>}\n {children}\n {endIcon && <span className=\"flex items-center\">{endIcon}</span>}\n </button>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type BadgeVariant = \"light\" | \"solid\";\nexport type BadgeSize = \"sm\" | \"md\";\nexport type BadgeColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\n\nexport interface BadgeProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n variant?: BadgeVariant;\n size?: BadgeSize;\n color?: BadgeColor;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n}\n\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: \"text-theme-xs\",\n md: \"text-sm\",\n};\n\nconst variants: Record<BadgeVariant, Record<BadgeColor, string>> = {\n light: {\n primary: \"bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400\",\n success: \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n error: \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n warning: \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n info: \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n light: \"bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80\",\n dark: \"bg-gray-500 text-white dark:bg-white/5 dark:text-white\",\n },\n solid: {\n primary: \"bg-brand-500 text-white dark:text-white\",\n success: \"bg-success-500 text-white dark:text-white\",\n error: \"bg-error-500 text-white dark:text-white\",\n warning: \"bg-warning-500 text-white dark:text-white\",\n info: \"bg-blue-light-500 text-white dark:text-white\",\n light: \"bg-gray-400 dark:bg-white/5 text-white dark:text-white/80\",\n dark: \"bg-gray-700 text-white dark:text-white\",\n },\n};\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"light\",\n color = \"primary\",\n size = \"md\",\n startIcon,\n endIcon,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <span\n className={cn(\n \"inline-flex items-center px-2.5 py-0.5 justify-center gap-1 rounded-full font-medium\",\n sizeStyles[size],\n variants[variant][color],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {startIcon && <span className=\"flex items-center\">{startIcon}</span>}\n {children}\n {endIcon && <span className=\"flex items-center\">{endIcon}</span>}\n </span>\n );\n};\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type RibbonVariant = \"corner\" | \"rounded\" | \"flag\";\nexport type RibbonColor =\n | \"primary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"dark\";\nexport type RibbonPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface RibbonProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n /** Visual style of the ribbon. */\n variant?: RibbonVariant;\n /** Brand color. Defaults to `primary`. */\n color?: RibbonColor;\n /** Which corner/side the ribbon attaches to. Defaults to `top-right`. */\n position?: RibbonPosition;\n}\n\nconst colorClasses: Record<RibbonColor, string> = {\n primary: \"bg-brand-500 text-white\",\n success: \"bg-success-500 text-white\",\n error: \"bg-error-500 text-white\",\n warning: \"bg-warning-500 text-white\",\n info: \"bg-blue-light-500 text-white\",\n dark: \"bg-gray-800 text-white dark:bg-gray-700\",\n};\n\n// Diagonal band tucked across a corner. Needs a `relative overflow-hidden` host.\nconst cornerClasses: Record<RibbonPosition, string> = {\n \"top-left\": \"left-[-36px] top-[16px] w-[130px] -rotate-45\",\n \"top-right\": \"right-[-36px] top-[16px] w-[130px] rotate-45\",\n \"bottom-left\": \"bottom-[16px] left-[-36px] w-[130px] rotate-45\",\n \"bottom-right\": \"bottom-[16px] right-[-36px] w-[130px] -rotate-45\",\n};\n\n// Tag hugging a corner, inner edge rounded. Needs `relative` host.\nconst roundedClasses: Record<RibbonPosition, string> = {\n \"top-left\": \"left-0 top-0 rounded-tl-xl rounded-br-lg\",\n \"top-right\": \"right-0 top-0 rounded-tr-xl rounded-bl-lg\",\n \"bottom-left\": \"bottom-0 left-0 rounded-bl-xl rounded-tr-lg\",\n \"bottom-right\": \"bottom-0 right-0 rounded-br-xl rounded-tl-lg\",\n};\n\n// Horizontal banner with a swallowtail notch. Needs `relative` host.\nconst flagClasses: Record<RibbonPosition, string> = {\n \"top-left\": \"left-0 top-4 rounded-r-sm pl-3 pr-5\",\n \"bottom-left\": \"bottom-4 left-0 rounded-r-sm pl-3 pr-5\",\n \"top-right\": \"right-0 top-4 rounded-l-sm pl-5 pr-3\",\n \"bottom-right\": \"bottom-4 right-0 rounded-l-sm pl-5 pr-3\",\n};\n\n// Swallowtail cut into the trailing end of the flag (right end for left-anchored,\n// left end for right-anchored).\nconst flagClipPath: Record<RibbonPosition, string> = {\n \"top-left\": \"polygon(0 0, 100% 0, calc(100% - 9px) 50%, 100% 100%, 0 100%)\",\n \"bottom-left\": \"polygon(0 0, 100% 0, calc(100% - 9px) 50%, 100% 100%, 0 100%)\",\n \"top-right\": \"polygon(0 0, 100% 0, 100% 100%, 0 100%, 9px 50%)\",\n \"bottom-right\": \"polygon(0 0, 100% 0, 100% 100%, 0 100%, 9px 50%)\",\n};\n\nexport const Ribbon: React.FC<RibbonProps> = ({\n variant = \"corner\",\n color = \"primary\",\n position = \"top-right\",\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const variantClass =\n variant === \"corner\"\n ? cornerClasses[position]\n : variant === \"rounded\"\n ? roundedClasses[position]\n : flagClasses[position];\n\n return (\n <span\n className={cn(\n \"absolute z-10 inline-flex items-center justify-center whitespace-nowrap py-1 text-center text-theme-xs font-semibold shadow-theme-xs\",\n variant === \"corner\" && \"px-10\",\n variant === \"rounded\" && \"px-3\",\n colorClasses[color],\n variantClass,\n className\n )}\n style={{\n ...(variant === \"flag\"\n ? { clipPath: flagClipPath[position] }\n : undefined),\n ...styleOverride({ bgColor, textColor, borderColor }),\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n};\n","import React from \"react\";\n\nexport const alertIcons: Record<\n \"success\" | \"error\" | \"warning\" | \"info\",\n React.ReactNode\n> = {\n success: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.70186 12.0001C3.70186 7.41711 7.41711 3.70186 12.0001 3.70186C16.5831 3.70186 20.2984 7.41711 20.2984 12.0001C20.2984 16.5831 16.5831 20.2984 12.0001 20.2984C7.41711 20.2984 3.70186 16.5831 3.70186 12.0001ZM12.0001 1.90186C6.423 1.90186 1.90186 6.423 1.90186 12.0001C1.90186 17.5772 6.423 22.0984 12.0001 22.0984C17.5772 22.0984 22.0984 17.5772 22.0984 12.0001C22.0984 6.423 17.5772 1.90186 12.0001 1.90186ZM15.6197 10.7395C15.9712 10.388 15.9712 9.81819 15.6197 9.46672C15.2683 9.11525 14.6984 9.11525 14.347 9.46672L11.1894 12.6243L9.6533 11.0883C9.30183 10.7368 8.73198 10.7368 8.38051 11.0883C8.02904 11.4397 8.02904 12.0096 8.38051 12.3611L10.553 14.5335C10.7217 14.7023 10.9507 14.7971 11.1894 14.7971C11.428 14.7971 11.657 14.7023 11.8257 14.5335L15.6197 10.7395Z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20.3499 12.0004C20.3499 16.612 16.6115 20.3504 11.9999 20.3504C7.38832 20.3504 3.6499 16.612 3.6499 12.0004C3.6499 7.38881 7.38833 3.65039 11.9999 3.65039C16.6115 3.65039 20.3499 7.38881 20.3499 12.0004ZM11.9999 22.1504C17.6056 22.1504 22.1499 17.6061 22.1499 12.0004C22.1499 6.3947 17.6056 1.85039 11.9999 1.85039C6.39421 1.85039 1.8499 6.3947 1.8499 12.0004C1.8499 17.6061 6.39421 22.1504 11.9999 22.1504ZM13.0008 16.4753C13.0008 15.923 12.5531 15.4753 12.0008 15.4753L11.9998 15.4753C11.4475 15.4753 10.9998 15.923 10.9998 16.4753C10.9998 17.0276 11.4475 17.4753 11.9998 17.4753L12.0008 17.4753C12.5531 17.4753 13.0008 17.0276 13.0008 16.4753ZM11.9998 6.62898C12.414 6.62898 12.7498 6.96476 12.7498 7.37898L12.7498 13.0555C12.7498 13.4697 12.414 13.8055 11.9998 13.8055C11.5856 13.8055 11.2498 13.4697 11.2498 13.0555L11.2498 7.37898C11.2498 6.96476 11.5856 6.62898 11.9998 6.62898Z\"\n fill=\"#F04438\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 12.0001C3.6501 7.38852 7.38852 3.6501 12.0001 3.6501C16.6117 3.6501 20.3501 7.38852 20.3501 12.0001C20.3501 16.6117 16.6117 20.3501 12.0001 20.3501C7.38852 20.3501 3.6501 16.6117 3.6501 12.0001ZM12.0001 1.8501C6.39441 1.8501 1.8501 6.39441 1.8501 12.0001C1.8501 17.6058 6.39441 22.1501 12.0001 22.1501C17.6058 22.1501 22.1501 17.6058 22.1501 12.0001C22.1501 6.39441 17.6058 1.8501 12.0001 1.8501ZM10.9992 7.52517C10.9992 8.07746 11.4469 8.52517 11.9992 8.52517H12.0002C12.5525 8.52517 13.0002 8.07746 13.0002 7.52517C13.0002 6.97289 12.5525 6.52517 12.0002 6.52517H11.9992C11.4469 6.52517 10.9992 6.97289 10.9992 7.52517ZM12.0002 17.3715C11.586 17.3715 11.2502 17.0357 11.2502 16.6215V10.945C11.2502 10.5308 11.586 10.195 12.0002 10.195C12.4144 10.195 12.7502 10.5308 12.7502 10.945V16.6215C12.7502 17.0357 12.4144 17.3715 12.0002 17.3715Z\"\n fill=\"\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 11.9996C3.6501 7.38803 7.38852 3.64961 12.0001 3.64961C16.6117 3.64961 20.3501 7.38803 20.3501 11.9996C20.3501 16.6112 16.6117 20.3496 12.0001 20.3496C7.38852 20.3496 3.6501 16.6112 3.6501 11.9996ZM12.0001 1.84961C6.39441 1.84961 1.8501 6.39392 1.8501 11.9996C1.8501 17.6053 6.39441 22.1496 12.0001 22.1496C17.6058 22.1496 22.1501 17.6053 22.1501 11.9996C22.1501 6.39392 17.6058 1.84961 12.0001 1.84961ZM10.9992 7.52468C10.9992 8.07697 11.4469 8.52468 11.9992 8.52468H12.0002C12.5525 8.52468 13.0002 8.07697 13.0002 7.52468C13.0002 6.9724 12.5525 6.52468 12.0002 6.52468H11.9992C11.4469 6.52468 10.9992 6.9724 10.9992 7.52468ZM12.0002 17.371C11.586 17.371 11.2502 17.0352 11.2502 16.621V10.9445C11.2502 10.5303 11.586 10.1945 12.0002 10.1945C12.4144 10.1945 12.7502 10.5303 12.7502 10.9445V16.621C12.7502 17.0352 12.4144 17.371 12.0002 17.371Z\"\n fill=\"\"\n />\n </svg>\n ),\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { alertIcons } from \"./icons\";\n\nexport type AlertVariant = \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement> {\n variant: AlertVariant;\n title: string;\n message: string;\n showLink?: boolean;\n linkHref?: string;\n linkText?: string;\n /** Override the default variant icon. */\n icon?: React.ReactNode;\n}\n\nconst variantClasses: Record<AlertVariant, { container: string; icon: string }> = {\n success: {\n container: \"border-success-500 bg-success-50 dark:border-success-500/30 dark:bg-success-500/15\",\n icon: \"text-success-500\",\n },\n error: {\n container: \"border-error-500 bg-error-50 dark:border-error-500/30 dark:bg-error-500/15\",\n icon: \"text-error-500\",\n },\n warning: {\n container: \"border-warning-500 bg-warning-50 dark:border-warning-500/30 dark:bg-warning-500/15\",\n icon: \"text-warning-500\",\n },\n info: {\n container: \"border-blue-light-500 bg-blue-light-50 dark:border-blue-light-500/30 dark:bg-blue-light-500/15\",\n icon: \"text-blue-light-500\",\n },\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n variant,\n title,\n message,\n showLink = false,\n linkHref = \"#\",\n linkText = \"Learn more\",\n icon,\n className,\n ...rest\n}) => {\n return (\n <div\n className={cn(\"rounded-xl border p-4\", variantClasses[variant].container, className)}\n {...rest}\n >\n <div className=\"flex items-start gap-3\">\n <div className={cn(\"-mt-0.5\", variantClasses[variant].icon)}>\n {icon ?? alertIcons[variant]}\n </div>\n <div>\n <h4 className=\"mb-1 text-sm font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </h4>\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">{message}</p>\n {showLink && (\n <a\n href={linkHref}\n className=\"inline-block mt-3 text-sm font-medium text-gray-500 underline dark:text-gray-400\"\n >\n {linkText}\n </a>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type AvatarSize = \"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\" | \"xxlarge\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"none\";\n\nexport interface AvatarProps\n extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"size\"> {\n src: string;\n alt?: string;\n size?: AvatarSize;\n status?: AvatarStatus;\n /** Override the status indicator color. */\n statusColor?: string;\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n xsmall: \"h-6 w-6 max-w-6\",\n small: \"h-8 w-8 max-w-8\",\n medium: \"h-10 w-10 max-w-10\",\n large: \"h-12 w-12 max-w-12\",\n xlarge: \"h-14 w-14 max-w-14\",\n xxlarge: \"h-16 w-16 max-w-16\",\n};\n\nconst statusSizeClasses: Record<AvatarSize, string> = {\n xsmall: \"h-1.5 w-1.5 max-w-1.5\",\n small: \"h-2 w-2 max-w-2\",\n medium: \"h-2.5 w-2.5 max-w-2.5\",\n large: \"h-3 w-3 max-w-3\",\n xlarge: \"h-3.5 w-3.5 max-w-3.5\",\n xxlarge: \"h-4 w-4 max-w-4\",\n};\n\nconst statusColorClasses: Record<Exclude<AvatarStatus, \"none\">, string> = {\n online: \"bg-success-500\",\n offline: \"bg-error-400\",\n busy: \"bg-warning-500\",\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User Avatar\",\n size = \"medium\",\n status = \"none\",\n statusColor,\n className,\n ...rest\n}) => {\n return (\n <div className={cn(\"relative rounded-full\", sizeClasses[size], className)}>\n <img\n src={src}\n alt={alt}\n className=\"object-cover w-full rounded-full\"\n {...rest}\n />\n {status !== \"none\" && (\n <span\n className={cn(\n \"absolute bottom-0 right-0 rounded-full border-[1.5px] border-white dark:border-gray-900\",\n statusSizeClasses[size],\n !statusColor && statusColorClasses[status]\n )}\n style={statusColor ? { backgroundColor: statusColor } : undefined}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface AvatarTextProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n}\n\nexport const AvatarText: React.FC<AvatarTextProps> = ({\n name,\n className,\n ...rest\n}) => {\n // Generate initials from name\n const initials = name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n // Generate a consistent pastel color based on the name\n const getColorClass = (name: string) => {\n const colors = [\n \"bg-brand-100 text-brand-600\",\n \"bg-pink-100 text-pink-600\",\n \"bg-cyan-100 text-cyan-600\",\n \"bg-orange-100 text-orange-600\",\n \"bg-green-100 text-green-600\",\n \"bg-purple-100 text-purple-600\",\n \"bg-yellow-100 text-yellow-600\",\n \"bg-error-100 text-error-600\",\n ];\n\n const index = name\n .split(\"\")\n .reduce((acc, char) => acc + char.charCodeAt(0), 0);\n return colors[index % colors.length];\n };\n\n return (\n <div\n className={cn(\n \"flex h-10 w-10 items-center justify-center rounded-full\",\n getColorClass(name),\n className\n )}\n {...rest}\n >\n <span className=\"text-sm font-medium\">{initials}</span>\n </div>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n isOpen,\n onClose,\n children,\n className,\n ...rest\n}) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n !(event.target as HTMLElement).closest(\".dropdown-toggle\")\n ) {\n onClose();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n ref={dropdownRef}\n className={cn(\n \"absolute z-40 right-0 mt-2 rounded-xl border border-gray-200 bg-white shadow-theme-lg dark:border-gray-800 dark:bg-gray-dark\",\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type DropdownItemVariant = \"default\" | \"primary\" | \"outline\";\n\nexport interface DropdownItemProps extends ColorOverrideProps {\n tag?: \"a\" | \"button\";\n href?: string;\n onClick?: () => void;\n onItemClick?: () => void;\n /** Visual style, mirroring Button: a plain menu row, a filled brand item, or an outlined one. */\n variant?: DropdownItemVariant;\n /** Full class override (escape hatch). When set, it replaces the variant styling. */\n baseClassName?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nconst variantBase =\n \"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm font-medium transition\";\n\nconst variantClasses: Record<DropdownItemVariant, string> = {\n default:\n \"text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-white/5 dark:hover:text-white\",\n primary:\n \"bg-brand-500 text-white shadow-theme-xs hover:bg-brand-600\",\n outline:\n \"text-gray-700 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 dark:text-gray-400 dark:ring-gray-700 dark:hover:bg-white/[0.03] dark:hover:text-gray-300\",\n};\n\nexport const DropdownItem: React.FC<DropdownItemProps> = ({\n tag = \"button\",\n href,\n onClick,\n onItemClick,\n variant = \"default\",\n baseClassName,\n className,\n bgColor,\n textColor,\n borderColor,\n children,\n}) => {\n const combinedClasses =\n baseClassName != null\n ? cn(baseClassName, className)\n : cn(variantBase, variantClasses[variant], className);\n\n const style = styleOverride({ bgColor, textColor, borderColor });\n\n const handleClick = (event: React.MouseEvent) => {\n if (tag === \"button\") {\n event.preventDefault();\n }\n if (onClick) onClick();\n if (onItemClick) onItemClick();\n };\n\n if (tag === \"a\" && href) {\n return (\n <a href={href} className={combinedClasses} style={style} onClick={handleClick}>\n {children}\n </a>\n );\n }\n\n return (\n <button onClick={handleClick} className={combinedClasses} style={style}>\n {children}\n </button>\n );\n};\n","\"use client\";\nimport React, { useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface DropzoneProps {\n /** Called with the dropped/selected files. */\n onDrop?: (files: File[]) => void;\n /** Accepted file types, e.g. \"image/png,image/jpeg\" (native input `accept`). */\n accept?: string;\n /** Allow selecting multiple files. Default: true. */\n multiple?: boolean;\n /** Heading text. Default: \"Drag & Drop Files Here\". */\n title?: string;\n /** Helper text under the heading. */\n description?: string;\n /** \"Browse\" call-to-action label. Default: \"Browse File\". */\n browseLabel?: string;\n /** Extra classes for the outer wrapper. */\n className?: string;\n}\n\n/** Drag-and-drop file upload area — dependency-free (native HTML5 drag/drop). */\nexport const Dropzone: React.FC<DropzoneProps> = ({\n onDrop,\n accept,\n multiple = true,\n title,\n description = \"Drag and drop your PNG, JPG, WebP, SVG images here or browse\",\n browseLabel = \"Browse File\",\n className,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragActive, setIsDragActive] = useState(false);\n\n const handleFiles = (list: FileList | null) => {\n if (list && list.length) onDrop?.(Array.from(list));\n };\n\n return (\n <div\n className={cn(\n \"cursor-pointer rounded-xl border border-dashed border-gray-300 transition hover:border-brand-500 dark:border-gray-700 dark:hover:border-brand-500\",\n className\n )}\n >\n <div\n onClick={() => inputRef.current?.click()}\n onDragOver={(e) => {\n e.preventDefault();\n setIsDragActive(true);\n }}\n onDragLeave={(e) => {\n e.preventDefault();\n setIsDragActive(false);\n }}\n onDrop={(e) => {\n e.preventDefault();\n setIsDragActive(false);\n handleFiles(e.dataTransfer.files);\n }}\n className={cn(\n \"rounded-xl border-dashed p-7 lg:p-10\",\n isDragActive\n ? \"border-brand-500 bg-gray-100 dark:bg-gray-800\"\n : \"border-gray-300 bg-gray-50 dark:border-gray-700 dark:bg-gray-900\"\n )}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n className=\"hidden\"\n onChange={(e) => handleFiles(e.target.files)}\n />\n\n <div className=\"flex flex-col items-center\">\n <div className=\"mb-[22px] flex justify-center\">\n <div className=\"flex h-[68px] w-[68px] items-center justify-center rounded-full bg-gray-200 text-gray-700 dark:bg-gray-800 dark:text-gray-400\">\n <svg className=\"fill-current\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.5019 3.91699C14.2852 3.91699 14.0899 4.00891 13.953 4.15589L8.57363 9.53186C8.28065 9.82466 8.2805 10.2995 8.5733 10.5925C8.8661 10.8855 9.34097 10.8857 9.63396 10.5929L13.7519 6.47752V18.667C13.7519 19.0812 14.0877 19.417 14.5019 19.417C14.9161 19.417 15.2519 19.0812 15.2519 18.667V6.48234L19.3653 10.5929C19.6583 10.8857 20.1332 10.8855 20.426 10.5925C20.7188 10.2995 20.7186 9.82463 20.4256 9.53184L15.0838 4.19378C14.9463 4.02488 14.7367 3.91699 14.5019 3.91699ZM5.91626 18.667C5.91626 18.2528 5.58047 17.917 5.16626 17.917C4.75205 17.917 4.41626 18.2528 4.41626 18.667V21.8337C4.41626 23.0763 5.42362 24.0837 6.66626 24.0837H22.3339C23.5766 24.0837 24.5839 23.0763 24.5839 21.8337V18.667C24.5839 18.2528 24.2482 17.917 23.8339 17.917C23.4197 17.917 23.0839 18.2528 23.0839 18.667V21.8337C23.0839 22.2479 22.7482 22.5837 22.3339 22.5837H6.66626C6.25205 22.5837 5.91626 22.2479 5.91626 21.8337V18.667Z\"\n />\n </svg>\n </div>\n </div>\n\n <h4 className=\"mb-3 text-theme-xl font-semibold text-gray-800 dark:text-white/90\">\n {title ?? (isDragActive ? \"Drop Files Here\" : \"Drag & Drop Files Here\")}\n </h4>\n\n <span className=\"mb-5 block w-full max-w-[290px] text-center text-sm text-gray-700 dark:text-gray-400\">\n {description}\n </span>\n\n <span className=\"text-theme-sm font-medium text-brand-500 underline\">\n {browseLabel}\n </span>\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface TableProps extends React.TableHTMLAttributes<HTMLTableElement> {}\nexport const Table: React.FC<TableProps> = ({ children, className, ...rest }) => (\n <table className={cn(\"min-w-full\", className)} {...rest}>{children}</table>\n);\n\nexport interface TableSectionProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\nexport const TableHeader: React.FC<TableSectionProps> = ({ children, className, ...rest }) => (\n <thead className={className} {...rest}>{children}</thead>\n);\nexport const TableBody: React.FC<TableSectionProps> = ({ children, className, ...rest }) => (\n <tbody className={className} {...rest}>{children}</tbody>\n);\n\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {}\nexport const TableRow: React.FC<TableRowProps> = ({ children, className, ...rest }) => (\n <tr className={className} {...rest}>{children}</tr>\n);\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n isHeader?: boolean;\n}\nexport const TableCell: React.FC<TableCellProps> = ({\n children,\n isHeader = false,\n className,\n ...rest\n}) => {\n const Tag = isHeader ? \"th\" : \"td\";\n return <Tag className={className} {...rest}>{children}</Tag>;\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n}) => {\n const pagesAroundCurrent = Array.from(\n { length: Math.min(3, totalPages) },\n (_, i) => i + Math.max(currentPage - 1, 1)\n );\n\n return (\n <div className=\"flex items-center \">\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n aria-label=\"Previous\"\n className={cn(\n \"mr-2.5 flex items-center h-10 justify-center rounded-lg border border-gray-300 bg-white px-3.5 py-2.5 text-gray-700 shadow-theme-xs hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-white/[0.03] text-sm\"\n )}\n >\n Previous\n </button>\n <div className=\"flex items-center gap-2\">\n {currentPage > 3 && <span className=\"px-2\">...</span>}\n {pagesAroundCurrent.map((page) => (\n <button\n key={page}\n onClick={() => onPageChange(page)}\n aria-current={currentPage === page ? \"page\" : undefined}\n className={cn(\n \"flex w-10 items-center justify-center h-10 rounded-lg text-sm font-medium\",\n currentPage === page\n ? // active page keeps its color on hover (no hover restyle)\n \"bg-brand-500 text-white\"\n : // hover effect applies only to non-active page indices\n \"text-gray-700 hover:bg-blue-500/[0.08] hover:text-brand-500 dark:text-gray-400 dark:hover:text-brand-500\"\n )}\n >\n {page}\n </button>\n ))}\n {currentPage < totalPages - 2 && <span className=\"px-2\">...</span>}\n </div>\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n aria-label=\"Next\"\n className={cn(\n \"ml-2.5 flex items-center justify-center rounded-lg border border-gray-300 bg-white px-3.5 py-2.5 text-gray-700 shadow-theme-xs text-sm hover:bg-gray-50 h-10 disabled:opacity-50 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-white/[0.03]\"\n )}\n >\n Next\n </button>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"color\">,\n ColorOverrideProps {\n success?: boolean;\n error?: boolean;\n hint?: string;\n}\n\nexport const Input: React.FC<InputProps> = ({\n className,\n disabled = false,\n success = false,\n error = false,\n hint,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const stateClass = disabled\n ? \"text-gray-500 border-gray-300 cursor-not-allowed dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700\"\n : error\n ? \"text-error-800 border-error-500 focus:ring-3 focus:ring-error-500/10 dark:text-error-400 dark:border-error-500\"\n : success\n ? \"text-success-500 border-success-400 focus:ring-success-500/10 focus:border-success-300 dark:text-success-400 dark:border-success-500\"\n : \"bg-transparent text-gray-800 border-gray-300 focus:border-brand-300 focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus:border-brand-800\";\n\n return (\n <div className=\"relative\">\n <input\n disabled={disabled}\n className={cn(\n \"h-11 w-full rounded-lg border appearance-none px-4 py-2.5 text-sm shadow-theme-xs placeholder:text-gray-400 focus:outline-hidden focus:ring-3 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\",\n stateClass,\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n />\n {hint && (\n <p className={cn(\"mt-1.5 text-xs\", error ? \"text-error-500\" : success ? \"text-success-500\" : \"text-gray-500\")}>\n {hint}\n </p>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useMemo, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport {\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n} from \"../Table/Table\";\nimport { Pagination } from \"../Pagination/Pagination\";\nimport { Input } from \"../Form/Input\";\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport interface DataTableColumn<T> {\n /** Key into the row object — also the value used for sorting/searching. */\n key: Extract<keyof T, string>;\n /** Column header label. */\n header: React.ReactNode;\n /** Allow click-to-sort on this column. Default: false. */\n sortable?: boolean;\n /** Cell + header text alignment. Default: \"left\". */\n align?: \"left\" | \"center\" | \"right\";\n /** Custom cell renderer. Falls back to `String(row[key])`. */\n render?: (row: T, rowIndex: number) => React.ReactNode;\n /** Extra classes applied to this column's header and body cells. */\n className?: string;\n}\n\nexport interface DataTableProps<T> {\n /** The array of row objects to display. */\n data: T[];\n /** Column definitions (label, sortable, custom render, …). */\n columns: DataTableColumn<T>[];\n /** Rows shown per page. Default: 10. */\n rowsPerPage?: number;\n /** Options for the \"Show N entries\" selector. Default: [5, 10, 25, 50]. Pass [] to hide it. */\n rowsPerPageOptions?: number[];\n /** Render pagination controls + the entry counter. Default: true. */\n pagination?: boolean;\n /** Render the \"Show N entries\" selector (only when pagination is on). Default: true. */\n showSizeSelector?: boolean;\n /** Render the search field. Default: true. */\n searchable?: boolean;\n /** Placeholder for the search field. Default: \"Search...\". */\n searchPlaceholder?: string;\n /** Keys matched when searching. Defaults to every column key. */\n searchKeys?: Extract<keyof T, string>[];\n /** Column sorted on first render. */\n defaultSortKey?: Extract<keyof T, string>;\n /** Initial sort direction. Default: \"asc\". */\n defaultSortDirection?: SortDirection;\n /** Stable key for a row. Defaults to the row index. */\n getRowId?: (row: T, index: number) => string | number;\n /** Fires when a row is clicked (also makes rows hoverable/clickable). */\n onRowClick?: (row: T, index: number) => void;\n /** Shown when no rows match. Default: \"No matching records\". */\n emptyContent?: React.ReactNode;\n /** Extra classes for the outer wrapper. */\n className?: string;\n}\n\nconst alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n} as const;\n\nfunction SortIcon({\n active,\n direction,\n}: {\n active: boolean;\n direction: SortDirection;\n}) {\n const on = \"text-brand-500\";\n const off = \"text-gray-400 dark:text-gray-600\";\n return (\n <span className=\"inline-flex flex-col leading-none\">\n <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"currentColor\" aria-hidden=\"true\" className={active && direction === \"asc\" ? on : off}>\n <path d=\"M5 0 9 5H1z\" />\n </svg>\n <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"currentColor\" aria-hidden=\"true\" className={active && direction === \"desc\" ? on : off}>\n <path d=\"M5 6 1 1h8z\" />\n </svg>\n </span>\n );\n}\n\nexport function DataTable<T extends Record<string, unknown>>({\n data,\n columns,\n rowsPerPage = 10,\n rowsPerPageOptions = [5, 10, 25, 50],\n pagination = true,\n showSizeSelector = true,\n searchable = true,\n searchPlaceholder = \"Search...\",\n searchKeys,\n defaultSortKey,\n defaultSortDirection = \"asc\",\n getRowId,\n onRowClick,\n emptyContent = \"No matching records\",\n className,\n}: DataTableProps<T>) {\n const [search, setSearch] = useState(\"\");\n const [pageSize, setPageSize] = useState(rowsPerPage);\n const [sortKey, setSortKey] = useState<Extract<keyof T, string> | undefined>(defaultSortKey);\n const [sortDir, setSortDir] = useState<SortDirection>(defaultSortDirection);\n const [page, setPage] = useState(1);\n\n const filtered = useMemo(() => {\n const keys = searchKeys ?? columns.map((c) => c.key);\n const q = search.trim().toLowerCase();\n let rows = data;\n if (searchable && q) {\n rows = rows.filter((row) =>\n keys.some((k) => String(row[k] ?? \"\").toLowerCase().includes(q))\n );\n }\n if (sortKey) {\n rows = [...rows].sort((a, b) => {\n const av = a[sortKey];\n const bv = b[sortKey];\n const cmp =\n typeof av === \"number\" && typeof bv === \"number\"\n ? av - bv\n : String(av ?? \"\").localeCompare(String(bv ?? \"\"));\n return sortDir === \"asc\" ? cmp : -cmp;\n });\n }\n return rows;\n }, [data, columns, search, searchable, searchKeys, sortKey, sortDir]);\n\n const total = filtered.length;\n const totalPages = pagination ? Math.max(1, Math.ceil(total / pageSize)) : 1;\n const current = Math.min(page, totalPages);\n const start = pagination ? (current - 1) * pageSize : 0;\n const pageRows = pagination ? filtered.slice(start, start + pageSize) : filtered;\n\n const toggleSort = (col: DataTableColumn<T>) => {\n if (!col.sortable) return;\n if (sortKey === col.key) setSortDir((d) => (d === \"asc\" ? \"desc\" : \"asc\"));\n else {\n setSortKey(col.key);\n setSortDir(\"asc\");\n }\n setPage(1);\n };\n\n const sizeOptions = rowsPerPageOptions.length ? rowsPerPageOptions : [];\n const showSelector = pagination && showSizeSelector && sizeOptions.length > 1;\n const showControls = searchable || showSelector;\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-gray-200 bg-white dark:border-white/[0.05] dark:bg-white/[0.03]\",\n className\n )}\n >\n {showControls && (\n <div className=\"flex flex-wrap items-center justify-between gap-3 p-4\">\n {showSelector ? (\n <label className=\"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400\">\n Show\n <select\n aria-label=\"Rows per page\"\n value={pageSize}\n onChange={(e) => {\n setPageSize(Number(e.target.value));\n setPage(1);\n }}\n className=\"rounded-lg border border-gray-200 bg-transparent px-2 py-1.5 text-sm text-gray-700 dark:border-white/[0.08] dark:text-white/90\"\n >\n {sizeOptions.map((n) => (\n <option key={n} value={n}>\n {n}\n </option>\n ))}\n </select>\n entries\n </label>\n ) : (\n <span />\n )}\n {searchable && (\n <Input\n type=\"search\"\n aria-label=\"Search\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setPage(1);\n }}\n className=\"max-w-[220px]\"\n />\n )}\n </div>\n )}\n\n <div className=\"overflow-x-auto border-y border-gray-100 dark:border-white/[0.05]\">\n <Table>\n <TableHeader className=\"border-b border-gray-100 bg-gray-50 dark:border-white/[0.05] dark:bg-white/[0.06]\">\n <TableRow>\n {columns.map((col) => {\n const isActive = sortKey === col.key;\n return (\n <TableCell\n key={col.key}\n isHeader\n className={cn(\n \"whitespace-nowrap px-5 py-3 text-xs font-semibold text-gray-700 dark:text-gray-300\",\n alignClass[col.align ?? \"left\"],\n col.className\n )}\n >\n {col.sortable ? (\n <button\n type=\"button\"\n onClick={() => toggleSort(col)}\n aria-label={`Sort by ${typeof col.header === \"string\" ? col.header : col.key}`}\n className=\"inline-flex select-none items-center gap-1.5 hover:text-gray-900 dark:hover:text-white\"\n >\n {col.header}\n <SortIcon active={isActive} direction={isActive ? sortDir : \"asc\"} />\n </button>\n ) : (\n col.header\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody className=\"divide-y divide-gray-100 dark:divide-white/[0.05]\">\n {pageRows.map((row, i) => {\n const index = start + i;\n const id = getRowId ? getRowId(row, index) : index;\n return (\n <TableRow\n key={id}\n onClick={onRowClick ? () => onRowClick(row, index) : undefined}\n className={cn(onRowClick && \"cursor-pointer hover:bg-gray-50 dark:hover:bg-white/[0.03]\")}\n >\n {columns.map((col) => (\n <TableCell\n key={col.key}\n className={cn(\n \"whitespace-nowrap px-5 py-3.5 text-sm text-gray-700 dark:text-gray-300\",\n alignClass[col.align ?? \"left\"],\n col.className\n )}\n >\n {col.render ? col.render(row, index) : String(row[col.key] ?? \"\")}\n </TableCell>\n ))}\n </TableRow>\n );\n })}\n {pageRows.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"px-5 py-6 text-center text-sm text-gray-400\">\n {emptyContent}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n </div>\n\n {pagination && (\n <div className=\"flex flex-wrap items-center justify-between gap-3 p-4\">\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\n {total === 0\n ? \"Showing 0 entries\"\n : `Showing ${start + 1} to ${Math.min(start + pageSize, total)} of ${total} entries`}\n </p>\n {totalPages > 1 && (\n <Pagination currentPage={current} totalPages={totalPages} onPageChange={setPage} />\n )}\n </div>\n )}\n </div>\n );\n}\n","import React from \"react\";\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport interface BreadcrumbProps {\n pageTitle: string;\n items?: BreadcrumbItem[];\n}\n\nconst ChevronIcon: React.FC = () => (\n <svg\n className=\"stroke-current\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.0765 12.667L10.2432 8.50033L6.0765 4.33366\"\n stroke=\"\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({ pageTitle, items }) => {\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-3 mb-6\">\n <h2\n className=\"text-xl font-semibold text-gray-800 dark:text-white/90\"\n x-text=\"pageName\"\n >\n {pageTitle}\n </h2>\n <nav>\n <ol className=\"flex items-center gap-1.5\">\n <li>\n <a\n className=\"inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-gray-400\"\n href=\"/\"\n >\n Home\n <ChevronIcon />\n </a>\n </li>\n {items?.map((item, index) => (\n <li key={index}>\n {item.href ? (\n <a\n className=\"inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-gray-400\"\n href={item.href}\n >\n {item.label}\n <ChevronIcon />\n </a>\n ) : (\n <span className=\"inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-gray-400\">\n {item.label}\n <ChevronIcon />\n </span>\n )}\n </li>\n ))}\n <li className=\"text-sm text-gray-800 dark:text-white/90\">\n {pageTitle}\n </li>\n </ol>\n </nav>\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface ThemeToggleButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n theme?: \"light\" | \"dark\";\n onToggle?: () => void;\n}\n\nexport const ThemeToggleButton: React.FC<ThemeToggleButtonProps> = ({\n theme,\n onToggle,\n className,\n onClick,\n ...rest\n}) => {\n const [internalTheme, setInternalTheme] = useState<\"light\" | \"dark\">(\"light\");\n const isControlled = theme !== undefined;\n const currentTheme = isControlled ? theme : internalTheme;\n\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n if (onToggle) {\n onToggle();\n } else if (!isControlled) {\n setInternalTheme((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n }\n onClick?.(e);\n };\n\n return (\n <button\n onClick={handleClick}\n data-theme={currentTheme}\n className={cn(\n \"relative flex items-center justify-center text-gray-500 transition-colors bg-white border border-gray-200 rounded-full hover:text-dark-900 h-11 w-11 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-white\",\n className\n )}\n {...rest}\n >\n <svg\n className=\"hidden dark:block\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.99998 1.5415C10.4142 1.5415 10.75 1.87729 10.75 2.2915V3.5415C10.75 3.95572 10.4142 4.2915 9.99998 4.2915C9.58577 4.2915 9.24998 3.95572 9.24998 3.5415V2.2915C9.24998 1.87729 9.58577 1.5415 9.99998 1.5415ZM10.0009 6.79327C8.22978 6.79327 6.79402 8.22904 6.79402 10.0001C6.79402 11.7712 8.22978 13.207 10.0009 13.207C11.772 13.207 13.2078 11.7712 13.2078 10.0001C13.2078 8.22904 11.772 6.79327 10.0009 6.79327ZM5.29402 10.0001C5.29402 7.40061 7.40135 5.29327 10.0009 5.29327C12.6004 5.29327 14.7078 7.40061 14.7078 10.0001C14.7078 12.5997 12.6004 14.707 10.0009 14.707C7.40135 14.707 5.29402 12.5997 5.29402 10.0001ZM15.9813 5.08035C16.2742 4.78746 16.2742 4.31258 15.9813 4.01969C15.6884 3.7268 15.2135 3.7268 14.9207 4.01969L14.0368 4.90357C13.7439 5.19647 13.7439 5.67134 14.0368 5.96423C14.3297 6.25713 14.8045 6.25713 15.0974 5.96423L15.9813 5.08035ZM18.4577 10.0001C18.4577 10.4143 18.1219 10.7501 17.7077 10.7501H16.4577C16.0435 10.7501 15.7077 10.4143 15.7077 10.0001C15.7077 9.58592 16.0435 9.25013 16.4577 9.25013H17.7077C18.1219 9.25013 18.4577 9.58592 18.4577 10.0001ZM14.9207 15.9806C15.2135 16.2735 15.6884 16.2735 15.9813 15.9806C16.2742 15.6877 16.2742 15.2128 15.9813 14.9199L15.0974 14.036C14.8045 13.7431 14.3297 13.7431 14.0368 14.036C13.7439 14.3289 13.7439 14.8038 14.0368 15.0967L14.9207 15.9806ZM9.99998 15.7088C10.4142 15.7088 10.75 16.0445 10.75 16.4588V17.7088C10.75 18.123 10.4142 18.4588 9.99998 18.4588C9.58577 18.4588 9.24998 18.123 9.24998 17.7088V16.4588C9.24998 16.0445 9.58577 15.7088 9.99998 15.7088ZM5.96356 15.0972C6.25646 14.8043 6.25646 14.3295 5.96356 14.0366C5.67067 13.7437 5.1958 13.7437 4.9029 14.0366L4.01902 14.9204C3.72613 15.2133 3.72613 15.6882 4.01902 15.9811C4.31191 16.274 4.78679 16.274 5.07968 15.9811L5.96356 15.0972ZM4.29224 10.0001C4.29224 10.4143 3.95645 10.7501 3.54224 10.7501H2.29224C1.87802 10.7501 1.54224 10.4143 1.54224 10.0001C1.54224 9.58592 1.87802 9.25013 2.29224 9.25013H3.54224C3.95645 9.25013 4.29224 9.58592 4.29224 10.0001ZM4.9029 5.9637C5.1958 6.25659 5.67067 6.25659 5.96356 5.9637C6.25646 5.6708 6.25646 5.19593 5.96356 4.90303L5.07968 4.01915C4.78679 3.72626 4.31191 3.72626 4.01902 4.01915C3.72613 4.31204 3.72613 4.78692 4.01902 5.07981L4.9029 5.9637Z\"\n fill=\"currentColor\"\n />\n </svg>\n <svg\n className=\"dark:hidden\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17.4547 11.97L18.1799 12.1611C18.265 11.8383 18.1265 11.4982 17.8401 11.3266C17.5538 11.1551 17.1885 11.1934 16.944 11.4207L17.4547 11.97ZM8.0306 2.5459L8.57989 3.05657C8.80718 2.81209 8.84554 2.44682 8.67398 2.16046C8.50243 1.8741 8.16227 1.73559 7.83948 1.82066L8.0306 2.5459ZM12.9154 13.0035C9.64678 13.0035 6.99707 10.3538 6.99707 7.08524H5.49707C5.49707 11.1823 8.81835 14.5035 12.9154 14.5035V13.0035ZM16.944 11.4207C15.8869 12.4035 14.4721 13.0035 12.9154 13.0035V14.5035C14.8657 14.5035 16.6418 13.7499 17.9654 12.5193L16.944 11.4207ZM16.7295 11.7789C15.9437 14.7607 13.2277 16.9586 10.0003 16.9586V18.4586C13.9257 18.4586 17.2249 15.7853 18.1799 12.1611L16.7295 11.7789ZM10.0003 16.9586C6.15734 16.9586 3.04199 13.8433 3.04199 10.0003H1.54199C1.54199 14.6717 5.32892 18.4586 10.0003 18.4586V16.9586ZM3.04199 10.0003C3.04199 6.77289 5.23988 4.05695 8.22173 3.27114L7.83948 1.82066C4.21532 2.77574 1.54199 6.07486 1.54199 10.0003H3.04199ZM6.99707 7.08524C6.99707 5.52854 7.5971 4.11366 8.57989 3.05657L7.48132 2.03522C6.25073 3.35885 5.49707 5.13487 5.49707 7.08524H6.99707Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport interface CardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n ColorOverrideProps {\n /** Heading shown above the description. */\n title?: React.ReactNode;\n /** Supporting text rendered under the title. */\n description?: React.ReactNode;\n /** Icon rendered in a rounded square above the title. */\n icon?: React.ReactNode;\n /** Optional cover image source. Rendered on top (or alongside when `horizontal`). */\n image?: string;\n /** Alt text for the cover image. */\n imageAlt?: string;\n /** Lay the image alongside the content instead of on top. */\n horizontal?: boolean;\n /** Footer area, e.g. a link or a `Button` call-to-action. */\n footer?: React.ReactNode;\n /** Custom body content, rendered after the description. */\n children?: React.ReactNode;\n}\n\nexport const Card: React.FC<CardProps> = ({\n title,\n description,\n icon,\n image,\n imageAlt = \"\",\n horizontal = false,\n footer,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const cover = image ? (\n <img\n src={image}\n alt={imageAlt}\n className={cn(\n \"object-cover\",\n horizontal\n ? \"h-full w-full sm:w-2/5 sm:max-w-[16rem]\"\n : \"h-48 w-full\"\n )}\n />\n ) : null;\n\n return (\n <div\n className={cn(\n \"overflow-hidden rounded-2xl border border-gray-200 bg-white dark:border-gray-800 dark:bg-white/[0.03]\",\n horizontal && image && \"flex flex-col sm:flex-row\",\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {cover}\n <div className=\"flex-1 p-5 sm:p-6\">\n {icon && (\n <div className=\"mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400\">\n {icon}\n </div>\n )}\n {title && (\n <h3 className=\"text-lg font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">\n {description}\n </p>\n )}\n {children}\n {footer && <div className=\"mt-4\">{footer}</div>}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport type { ToastVariant } from \"./Toast\";\n\nexport const toastIcons: Record<ToastVariant, React.ReactNode> = {\n success: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.70186 12.0001C3.70186 7.41711 7.41711 3.70186 12.0001 3.70186C16.5831 3.70186 20.2984 7.41711 20.2984 12.0001C20.2984 16.5831 16.5831 20.2984 12.0001 20.2984C7.41711 20.2984 3.70186 16.5831 3.70186 12.0001ZM12.0001 1.90186C6.423 1.90186 1.90186 6.423 1.90186 12.0001C1.90186 17.5772 6.423 22.0984 12.0001 22.0984C17.5772 22.0984 22.0984 17.5772 22.0984 12.0001C22.0984 6.423 17.5772 1.90186 12.0001 1.90186ZM15.6197 10.7395C15.9712 10.388 15.9712 9.81819 15.6197 9.46672C15.2683 9.11525 14.6984 9.11525 14.347 9.46672L11.1894 12.6243L9.6533 11.0883C9.30183 10.7368 8.73198 10.7368 8.38051 11.0883C8.02904 11.4397 8.02904 12.0096 8.38051 12.3611L10.553 14.5335C10.7217 14.7023 10.9507 14.7971 11.1894 14.7971C11.428 14.7971 11.657 14.7023 11.8257 14.5335L15.6197 10.7395Z\"\n />\n </svg>\n ),\n danger: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20.3499 12.0004C20.3499 16.612 16.6115 20.3504 11.9999 20.3504C7.38832 20.3504 3.6499 16.612 3.6499 12.0004C3.6499 7.38881 7.38833 3.65039 11.9999 3.65039C16.6115 3.65039 20.3499 7.38881 20.3499 12.0004ZM11.9999 22.1504C17.6056 22.1504 22.1499 17.6061 22.1499 12.0004C22.1499 6.3947 17.6056 1.85039 11.9999 1.85039C6.39421 1.85039 1.8499 6.3947 1.8499 12.0004C1.8499 17.6061 6.39421 22.1504 11.9999 22.1504ZM13.0008 16.4753C13.0008 15.923 12.5531 15.4753 12.0008 15.4753L11.9998 15.4753C11.4475 15.4753 10.9998 15.923 10.9998 16.4753C10.9998 17.0276 11.4475 17.4753 11.9998 17.4753L12.0008 17.4753C12.5531 17.4753 13.0008 17.0276 13.0008 16.4753ZM11.9998 6.62898C12.414 6.62898 12.7498 6.96476 12.7498 7.37898L12.7498 13.0555C12.7498 13.4697 12.414 13.8055 11.9998 13.8055C11.5856 13.8055 11.2498 13.4697 11.2498 13.0555L11.2498 7.37898C11.2498 6.96476 11.5856 6.62898 11.9998 6.62898Z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 12.0001C3.6501 7.38852 7.38852 3.6501 12.0001 3.6501C16.6117 3.6501 20.3501 7.38852 20.3501 12.0001C20.3501 16.6117 16.6117 20.3501 12.0001 20.3501C7.38852 20.3501 3.6501 16.6117 3.6501 12.0001ZM12.0001 1.8501C6.39441 1.8501 1.8501 6.39441 1.8501 12.0001C1.8501 17.6058 6.39441 22.1501 12.0001 22.1501C17.6058 22.1501 22.1501 17.6058 22.1501 12.0001C22.1501 6.39441 17.6058 1.8501 12.0001 1.8501ZM10.9992 7.52517C10.9992 8.07746 11.4469 8.52517 11.9992 8.52517H12.0002C12.5525 8.52517 13.0002 8.07746 13.0002 7.52517C13.0002 6.97289 12.5525 6.52517 12.0002 6.52517H11.9992C11.4469 6.52517 10.9992 6.97289 10.9992 7.52517ZM12.0002 17.3715C11.586 17.3715 11.2502 17.0357 11.2502 16.6215V10.945C11.2502 10.5308 11.586 10.195 12.0002 10.195C12.4144 10.195 12.7502 10.5308 12.7502 10.945V16.6215C12.7502 17.0357 12.4144 17.3715 12.0002 17.3715Z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 11.9996C3.6501 7.38803 7.38852 3.64961 12.0001 3.64961C16.6117 3.64961 20.3501 7.38803 20.3501 11.9996C20.3501 16.6112 16.6117 20.3496 12.0001 20.3496C7.38852 20.3496 3.6501 16.6112 3.6501 11.9996ZM12.0001 1.84961C6.39441 1.84961 1.8501 6.39392 1.8501 11.9996C1.8501 17.6053 6.39441 22.1496 12.0001 22.1496C17.6058 22.1496 22.1501 17.6053 22.1501 11.9996C22.1501 6.39392 17.6058 1.84961 12.0001 1.84961ZM10.9992 7.52468C10.9992 8.07697 11.4469 8.52468 11.9992 8.52468H12.0002C12.5525 8.52468 13.0002 8.07697 13.0002 7.52468C13.0002 6.9724 12.5525 6.52468 12.0002 6.52468H11.9992C11.4469 6.52468 10.9992 6.9724 10.9992 7.52468ZM12.0002 17.371C11.586 17.371 11.2502 17.0352 11.2502 16.621V10.9445C11.2502 10.5303 11.586 10.1945 12.0002 10.1945C12.4144 10.1945 12.7502 10.5303 12.7502 10.9445V16.621C12.7502 17.0352 12.4144 17.371 12.0002 17.371Z\"\n />\n </svg>\n ),\n};\n\nexport const ToastCloseIcon: React.ReactNode = (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.04 16.54a.9.9 0 0 0 1.27 1.27L12 13.14l4.69 4.67a.9.9 0 1 0 1.27-1.27L13.27 11.87l4.69-4.68a.9.9 0 1 0-1.27-1.27L12 10.6 7.31 5.92a.9.9 0 0 0-1.27 1.27l4.69 4.68-4.69 4.67Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\nimport { toastIcons, ToastCloseIcon } from \"./icons\";\n\nexport type ToastVariant = \"success\" | \"danger\" | \"warning\" | \"info\";\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n ColorOverrideProps {\n /** Color/severity variant. */\n variant?: ToastVariant;\n title: React.ReactNode;\n message?: React.ReactNode;\n /** Override the default variant icon. */\n icon?: React.ReactNode;\n /** Hide the leading icon entirely. */\n hideIcon?: boolean;\n /** Render the dismiss button (default `true`). */\n showCloseButton?: boolean;\n /** Called when the close button is clicked. */\n onClose?: () => void;\n /** Hide the colored accent bar at the bottom. */\n hideAccentBar?: boolean;\n}\n\nconst variantStyles: Record<ToastVariant, { iconWrap: string; bar: string }> = {\n success: {\n iconWrap:\n \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n bar: \"bg-success-500\",\n },\n danger: {\n iconWrap:\n \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n bar: \"bg-error-500\",\n },\n warning: {\n iconWrap:\n \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n bar: \"bg-warning-500\",\n },\n info: {\n iconWrap:\n \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n bar: \"bg-blue-light-500\",\n },\n};\n\nexport const Toast: React.FC<ToastProps> = ({\n variant = \"success\",\n title,\n message,\n icon,\n hideIcon = false,\n showCloseButton = true,\n onClose,\n hideAccentBar = false,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const styles = variantStyles[variant];\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative flex items-center gap-3 overflow-hidden rounded-xl border border-gray-200 bg-white px-4 py-3.5 pr-10 shadow-theme-sm dark:border-gray-800 dark:bg-white/[0.03]\",\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {!hideIcon && (\n <span\n className={cn(\n \"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg\",\n styles.iconWrap\n )}\n >\n {icon ?? toastIcons[variant]}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </p>\n {message && (\n <p className=\"mt-0.5 text-sm text-gray-500 dark:text-gray-400\">\n {message}\n </p>\n )}\n </div>\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 transition hover:text-gray-700 dark:hover:text-gray-200\"\n >\n {ToastCloseIcon}\n </button>\n )}\n {!hideAccentBar && (\n <span\n className={cn(\"absolute inset-x-0 bottom-0 h-1\", styles.bar)}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useState, useCallback } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type AccordionSelectionMode = \"single\" | \"multiple\";\n\nexport interface AccordionItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Unique key identifying this item. */\n itemKey: string;\n /** Header content. */\n title: React.ReactNode;\n /** Optional content rendered before the title (e.g. an icon). */\n startContent?: React.ReactNode;\n /** Disable expand/collapse for this item. */\n disabled?: boolean;\n}\n\ninterface AccordionContextValue {\n expanded: string[];\n toggle: (key: string) => void;\n}\n\nconst AccordionContext = React.createContext<AccordionContextValue | null>(null);\n\nconst ChevronIcon: React.FC<{ open: boolean }> = ({ open }) => (\n <svg\n className={cn(\n \"h-5 w-5 shrink-0 text-gray-500 transition-transform duration-200 dark:text-gray-400\",\n open && \"rotate-180\"\n )}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 7.5L10 12.5L15 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n itemKey,\n title,\n startContent,\n disabled = false,\n children,\n className,\n ...rest\n}) => {\n const ctx = React.useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"AccordionItem must be used within an Accordion\");\n }\n const open = ctx.expanded.includes(itemKey);\n const panelId = `accordion-panel-${itemKey}`;\n const buttonId = `accordion-button-${itemKey}`;\n\n return (\n <div\n className={cn(\n \"border-b border-gray-200 last:border-b-0 dark:border-gray-800\",\n className\n )}\n {...rest}\n >\n <h3>\n <button\n type=\"button\"\n id={buttonId}\n aria-expanded={open}\n aria-controls={panelId}\n disabled={disabled}\n onClick={() => !disabled && ctx.toggle(itemKey)}\n className={cn(\n \"flex w-full items-center gap-3 px-4 py-4 text-left text-sm font-medium text-gray-800 transition dark:text-white/90\",\n disabled\n ? \"cursor-not-allowed opacity-50\"\n : \"hover:bg-gray-50 dark:hover:bg-white/[0.03]\"\n )}\n >\n {startContent && (\n <span className=\"flex items-center\">{startContent}</span>\n )}\n <span className=\"flex-1\">{title}</span>\n <ChevronIcon open={open} />\n </button>\n </h3>\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={buttonId}\n hidden={!open}\n className={cn(\n \"grid transition-all duration-200 ease-in-out\",\n open ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\"\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"px-4 pb-4 text-sm text-gray-500 dark:text-gray-400\">\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \"single\" allows one open item, \"multiple\" allows many. */\n selectionMode?: AccordionSelectionMode;\n /** Uncontrolled initial expanded keys. */\n defaultExpandedKeys?: string[];\n /** Controlled expanded keys. */\n expandedKeys?: string[];\n /** Called with the new set of expanded keys when it changes. */\n onExpandedChange?: (keys: string[]) => void;\n}\n\nexport const Accordion: React.FC<AccordionProps> = ({\n selectionMode = \"single\",\n defaultExpandedKeys = [],\n expandedKeys,\n onExpandedChange,\n children,\n className,\n ...rest\n}) => {\n const isControlled = expandedKeys !== undefined;\n const [internal, setInternal] = useState<string[]>(defaultExpandedKeys);\n const expanded = isControlled ? expandedKeys! : internal;\n\n const toggle = useCallback(\n (key: string) => {\n const isOpen = expanded.includes(key);\n let next: string[];\n if (selectionMode === \"single\") {\n next = isOpen ? [] : [key];\n } else {\n next = isOpen\n ? expanded.filter((k) => k !== key)\n : [...expanded, key];\n }\n if (!isControlled) setInternal(next);\n onExpandedChange?.(next);\n },\n [expanded, selectionMode, isControlled, onExpandedChange]\n );\n\n return (\n <AccordionContext.Provider value={{ expanded, toggle }}>\n <div\n className={cn(\n \"divide-y divide-gray-200 overflow-hidden rounded-xl border border-gray-200 bg-white dark:divide-gray-800 dark:border-gray-800 dark:bg-white/[0.03]\",\n className\n )}\n {...rest}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n};\n","\"use client\";\nimport React, { useState, useRef } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type TabsVariant = \"underline\" | \"solid\" | \"pill\";\n\nexport interface TabProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Unique key identifying this tab. */\n tabKey: string;\n /** Tab label (may include an icon). */\n title: React.ReactNode;\n /** Disable selection of this tab. */\n disabled?: boolean;\n}\n\n/** Tab is a configuration element consumed by Tabs; it renders its children as the panel. */\nexport const Tab: React.FC<TabProps> = ({\n children,\n tabKey,\n title,\n disabled,\n ...rest\n}) => {\n return <div {...rest}>{children}</div>;\n};\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n variant?: TabsVariant;\n /** Controlled selected key. */\n selectedKey?: string;\n /** Uncontrolled initial selected key. */\n defaultSelectedKey?: string;\n /** Called with the newly selected key. */\n onSelectionChange?: (key: string) => void;\n /** Accent color for the active tab (any CSS color). Defaults to the brand color. */\n color?: string;\n children?: React.ReactNode;\n}\n\ntype TabElement = React.ReactElement<TabProps>;\n\nexport const Tabs: React.FC<TabsProps> = ({\n variant = \"underline\",\n selectedKey,\n defaultSelectedKey,\n onSelectionChange,\n color,\n children,\n className,\n ...rest\n}) => {\n const tabs = React.Children.toArray(children).filter(\n React.isValidElement\n ) as TabElement[];\n\n const firstKey = tabs[0]?.props.tabKey;\n const isControlled = selectedKey !== undefined;\n const [internal, setInternal] = useState<string>(\n defaultSelectedKey ?? firstKey\n );\n const active = isControlled ? selectedKey! : internal;\n\n const tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n const select = (key: string) => {\n if (!isControlled) setInternal(key);\n onSelectionChange?.(key);\n };\n\n const onKeyDown = (e: React.KeyboardEvent, index: number) => {\n if (e.key !== \"ArrowRight\" && e.key !== \"ArrowLeft\") return;\n e.preventDefault();\n const dir = e.key === \"ArrowRight\" ? 1 : -1;\n const count = tabs.length;\n let next = index;\n for (let i = 0; i < count; i++) {\n next = (next + dir + count) % count;\n if (!tabs[next].props.disabled) break;\n }\n const nextKey = tabs[next].props.tabKey;\n tabRefs.current[nextKey]?.focus();\n select(nextKey);\n };\n\n const listClasses: Record<TabsVariant, string> = {\n underline: \"flex gap-2 border-b border-gray-200 dark:border-gray-800\",\n solid:\n \"inline-flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-white/[0.03]\",\n pill: \"inline-flex gap-2\",\n };\n\n const tabClasses = (isActive: boolean): string => {\n const base =\n \"inline-flex items-center gap-2 text-sm font-medium transition focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50\";\n switch (variant) {\n case \"solid\":\n return cn(\n base,\n \"rounded-md px-4 py-2\",\n isActive\n ? \"bg-white text-gray-900 shadow-theme-xs dark:bg-gray-800 dark:text-white/90\"\n : \"text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-white/90\"\n );\n case \"pill\":\n return cn(\n base,\n \"rounded-full px-4 py-2\",\n isActive\n ? \"bg-brand-500 text-white\"\n : \"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-white/[0.03] dark:text-gray-400 dark:hover:bg-white/[0.06]\"\n );\n case \"underline\":\n default:\n return cn(\n base,\n \"border-b-2 px-4 py-3\",\n isActive\n ? \"border-brand-500 text-brand-500\"\n : \"border-transparent text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-white/90\"\n );\n }\n };\n\n const activeColorStyle = (isActive: boolean): React.CSSProperties => {\n if (!color || !isActive) return {};\n if (variant === \"underline\") return { borderColor: color, color };\n if (variant === \"pill\") return { backgroundColor: color };\n return { color };\n };\n\n const activePanel = tabs.find((t) => t.props.tabKey === active);\n\n return (\n <div className={cn(\"w-full\", className)} {...rest}>\n <div role=\"tablist\" className={listClasses[variant]}>\n {tabs.map((tab, index) => {\n const { tabKey, title, disabled = false } = tab.props;\n const isActive = tabKey === active;\n return (\n <button\n key={tabKey}\n ref={(el) => {\n tabRefs.current[tabKey] = el;\n }}\n role=\"tab\"\n type=\"button\"\n id={`tab-${tabKey}`}\n aria-selected={isActive}\n aria-controls={`tabpanel-${tabKey}`}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n onClick={() => !disabled && select(tabKey)}\n onKeyDown={(e) => onKeyDown(e, index)}\n className={tabClasses(isActive)}\n style={activeColorStyle(isActive)}\n >\n {title}\n </button>\n );\n })}\n </div>\n {activePanel && (\n <div\n role=\"tabpanel\"\n id={`tabpanel-${active}`}\n aria-labelledby={`tab-${active}`}\n className=\"pt-4 text-sm text-gray-600 dark:text-gray-300\"\n >\n {activePanel.props.children}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useId, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type TooltipPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport interface TooltipProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\" | \"content\">,\n ColorOverrideProps {\n /** The content rendered inside the tooltip bubble. */\n content: React.ReactNode;\n /** Which side of the trigger the tooltip appears on. */\n placement?: TooltipPlacement;\n /** Delay in milliseconds before showing the tooltip. */\n delay?: number;\n /** When true the tooltip never opens. */\n disabled?: boolean;\n /** The trigger element. */\n children: React.ReactNode;\n}\n\nconst placementClasses: Record<TooltipPlacement, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n};\n\nconst arrowClasses: Record<TooltipPlacement, string> = {\n top: \"top-full left-1/2 -translate-x-1/2 -mt-1\",\n right: \"right-full top-1/2 -translate-y-1/2 -mr-1\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 -mb-1\",\n left: \"left-full top-1/2 -translate-y-1/2 -ml-1\",\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n placement = \"top\",\n delay = 0,\n disabled = false,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const [visible, setVisible] = useState(false);\n const tooltipId = useId();\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const show = () => {\n if (disabled) return;\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => setVisible(true), delay);\n } else {\n setVisible(true);\n }\n };\n\n const hide = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setVisible(false);\n };\n\n return (\n <span\n className={cn(\"relative inline-flex\", className)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={visible ? tooltipId : undefined}\n {...rest}\n >\n {children}\n {!disabled && visible && (\n <span\n id={tooltipId}\n role=\"tooltip\"\n className={cn(\n \"pointer-events-none absolute z-50 whitespace-nowrap rounded-lg bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-theme-lg dark:bg-gray-700 dark:text-white/90\",\n placementClasses[placement]\n )}\n style={{\n ...styleOverride({ bgColor, textColor, borderColor }),\n ...style,\n }}\n >\n {content}\n <span\n className={cn(\n \"absolute h-2 w-2 rotate-45 bg-gray-900 dark:bg-gray-700\",\n arrowClasses[placement]\n )}\n style={bgColor ? { backgroundColor: bgColor } : undefined}\n aria-hidden=\"true\"\n />\n </span>\n )}\n </span>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type PopoverPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport interface PopoverProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"content\"> {\n /** The clickable trigger element. */\n trigger: React.ReactNode;\n /** Which side of the trigger the panel appears on. */\n placement?: PopoverPlacement;\n /** Controlled open state. Omit for uncontrolled behavior. */\n isOpen?: boolean;\n /** Called when the open state should change (controlled or uncontrolled). */\n onOpenChange?: (open: boolean) => void;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean;\n /** Close when clicking outside the popover. */\n closeOnOutsideClick?: boolean;\n /** Close when pressing Escape. */\n closeOnEsc?: boolean;\n /** Panel content. */\n children: React.ReactNode;\n}\n\nconst placementClasses: Record<PopoverPlacement, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n trigger,\n placement = \"bottom\",\n isOpen: controlledOpen,\n onOpenChange,\n defaultOpen = false,\n closeOnOutsideClick = true,\n closeOnEsc = true,\n children,\n className,\n ...rest\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const setOpen = (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n };\n\n useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n closeOnOutsideClick &&\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (closeOnEsc && event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, closeOnOutsideClick, closeOnEsc]);\n\n return (\n <div ref={wrapperRef} className=\"relative inline-block\">\n {/* The trigger is rendered as-is inside a non-interactive wrapper so a\n caller can pass their own <button>/<a> without nesting interactive\n elements (which is invalid HTML). The click bubbles up from it. */}\n <span\n className=\"inline-flex cursor-pointer\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n >\n {trigger}\n </span>\n {open && (\n <div\n role=\"dialog\"\n className={cn(\n \"absolute z-50 min-w-[12rem] rounded-xl border border-gray-200 bg-white p-4 shadow-theme-lg dark:border-gray-700 dark:bg-gray-900 dark:text-white/90\",\n placementClasses[placement],\n className\n )}\n {...rest}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useEffect } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type DrawerPlacement = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n /** Side the drawer slides in from. */\n placement?: DrawerPlacement;\n showCloseButton?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n /** Tailwind size class for the panel (width for left/right, height for top/bottom). */\n size?: string;\n}\n\nconst panelBaseByPlacement: Record<DrawerPlacement, string> = {\n left: \"top-0 left-0 h-full\",\n right: \"top-0 right-0 h-full\",\n top: \"top-0 left-0 w-full\",\n bottom: \"bottom-0 left-0 w-full\",\n};\n\nconst openTransform: Record<DrawerPlacement, string> = {\n left: \"translate-x-0\",\n right: \"translate-x-0\",\n top: \"translate-y-0\",\n bottom: \"translate-y-0\",\n};\n\nconst closedTransform: Record<DrawerPlacement, string> = {\n left: \"-translate-x-full\",\n right: \"translate-x-full\",\n top: \"-translate-y-full\",\n bottom: \"translate-y-full\",\n};\n\nconst defaultSize: Record<DrawerPlacement, string> = {\n left: \"w-80 max-w-full\",\n right: \"w-80 max-w-full\",\n top: \"h-80 max-h-full\",\n bottom: \"h-80 max-h-full\",\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n children,\n className,\n placement = \"right\",\n showCloseButton = true,\n closeOnBackdrop = true,\n closeOnEsc = true,\n size,\n ...rest\n}) => {\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n };\n\n if (isOpen && closeOnEsc) {\n document.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose, closeOnEsc]);\n\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"unset\";\n }\n\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n return (\n <div className=\"fixed inset-0 z-99999 drawer\">\n <div\n className=\"fixed inset-0 h-full w-full bg-black/50 backdrop-blur-sm\"\n onClick={closeOnBackdrop ? onClose : undefined}\n ></div>\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cn(\n \"fixed flex flex-col overflow-y-auto bg-white shadow-theme-lg transition-transform duration-300 ease-in-out dark:bg-gray-900 dark:text-white/90\",\n panelBaseByPlacement[placement],\n size ?? defaultSize[placement],\n isOpen ? openTransform[placement] : closedTransform[placement],\n className\n )}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n aria-label=\"Close drawer\"\n className=\"absolute right-3 top-3 z-999 flex h-9.5 w-9.5 items-center justify-center rounded-full bg-gray-100 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.04289 16.5413C5.65237 16.9318 5.65237 17.565 6.04289 17.9555C6.43342 18.346 7.06658 18.346 7.45711 17.9555L11.9987 13.4139L16.5408 17.956C16.9313 18.3466 17.5645 18.3466 17.955 17.956C18.3455 17.5655 18.3455 16.9323 17.955 16.5418L13.4129 11.9997L17.955 7.4576C18.3455 7.06707 18.3455 6.43391 17.955 6.04338C17.5645 5.65286 16.9313 5.65286 16.5408 6.04338L11.9987 10.5855L7.45711 6.0439C7.06658 5.65338 6.43342 5.65338 6.04289 6.0439C5.65237 6.43442 5.65237 7.06759 6.04289 7.45811L10.5845 11.9997L6.04289 16.5413Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n )}\n {children}\n </div>\n </div>\n );\n};\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type ChipVariant = \"light\" | \"solid\";\nexport type ChipSize = \"sm\" | \"md\";\nexport type ChipColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\n\nexport interface ChipProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n variant?: ChipVariant;\n size?: ChipSize;\n color?: ChipColor;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n /** Rendered at the start of the chip, e.g. a small Avatar. */\n avatar?: React.ReactNode;\n /** When provided, renders a small close button that fires this callback. */\n onClose?: () => void;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n sm: \"text-theme-xs\",\n md: \"text-sm\",\n};\n\nconst variants: Record<ChipVariant, Record<ChipColor, string>> = {\n light: {\n primary: \"bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400\",\n success: \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n error: \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n warning: \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n info: \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n light: \"bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80\",\n dark: \"bg-gray-500 text-white dark:bg-white/5 dark:text-white\",\n },\n solid: {\n primary: \"bg-brand-500 text-white dark:text-white\",\n success: \"bg-success-500 text-white dark:text-white\",\n error: \"bg-error-500 text-white dark:text-white\",\n warning: \"bg-warning-500 text-white dark:text-white\",\n info: \"bg-blue-light-500 text-white dark:text-white\",\n light: \"bg-gray-400 dark:bg-white/5 text-white dark:text-white/80\",\n dark: \"bg-gray-700 text-white dark:text-white\",\n },\n};\n\nexport const Chip: React.FC<ChipProps> = ({\n variant = \"light\",\n color = \"primary\",\n size = \"md\",\n startIcon,\n endIcon,\n avatar,\n onClose,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <span\n className={cn(\n \"inline-flex items-center justify-center gap-1 rounded-full font-medium\",\n avatar ? \"py-0.5 pl-0.5 pr-2.5\" : \"px-2.5 py-0.5\",\n sizeStyles[size],\n variants[variant][color],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {avatar && <span className=\"flex items-center\">{avatar}</span>}\n {startIcon && <span className=\"flex items-center\">{startIcon}</span>}\n {children}\n {endIcon && <span className=\"flex items-center\">{endIcon}</span>}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Remove\"\n onClick={onClose}\n className=\"ml-0.5 flex h-4 w-4 items-center justify-center rounded-full text-current opacity-70 transition hover:opacity-100 focus:outline-none\"\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M9 3L3 9M3 3L9 9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </span>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type ProgressColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n ColorOverrideProps {\n /** Current value (clamped between 0 and maxValue). */\n value?: number;\n /** Maximum value. Defaults to 100. */\n maxValue?: number;\n color?: ProgressColor;\n size?: ProgressSize;\n /** Optional label shown above the track. */\n label?: React.ReactNode;\n /** When true, shows the percentage (e.g. \"75%\") next to the label. */\n showValueLabel?: boolean;\n /** Animated, value-less progress. */\n isIndeterminate?: boolean;\n}\n\nconst sizeStyles: Record<ProgressSize, string> = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\nconst fillColors: Record<ProgressColor, string> = {\n primary: \"bg-brand-500\",\n success: \"bg-success-500\",\n error: \"bg-error-500\",\n warning: \"bg-warning-500\",\n info: \"bg-blue-light-500\",\n light: \"bg-gray-400\",\n dark: \"bg-gray-700 dark:bg-gray-300\",\n};\n\nconst indeterminateKeyframes = `@keyframes tdui-progress-indeterminate {\n 0% { left: -40%; width: 40%; }\n 50% { left: 30%; width: 60%; }\n 100% { left: 100%; width: 40%; }\n}`;\n\nexport const Progress: React.FC<ProgressProps> = ({\n value = 0,\n maxValue = 100,\n color = \"primary\",\n size = \"md\",\n label,\n showValueLabel = false,\n isIndeterminate = false,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const safeMax = maxValue <= 0 ? 100 : maxValue;\n const clamped = Math.min(Math.max(value, 0), safeMax);\n const percent = Math.round((clamped / safeMax) * 100);\n\n return (\n <div className={cn(\"w-full\", className)} {...rest}>\n {(label || showValueLabel) && (\n <div className=\"mb-1.5 flex items-center justify-between\">\n {label && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label}\n </span>\n )}\n {showValueLabel && !isIndeterminate && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-400\">\n {percent}%\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={safeMax}\n aria-valuenow={isIndeterminate ? undefined : clamped}\n className={cn(\n \"relative w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-800\",\n sizeStyles[size]\n )}\n style={styleOverride({ bgColor, borderColor })}\n >\n {isIndeterminate ? (\n <>\n <style>{indeterminateKeyframes}</style>\n <div\n className={cn(\"absolute top-0 h-full rounded-full\", fillColors[color])}\n style={{\n animation:\n \"tdui-progress-indeterminate 1.5s ease-in-out infinite\",\n ...(textColor ? { backgroundColor: textColor } : {}),\n ...style,\n }}\n />\n </>\n ) : (\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-300\",\n fillColors[color]\n )}\n style={{\n width: `${percent}%`,\n ...(textColor ? { backgroundColor: textColor } : {}),\n ...style,\n }}\n />\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type SpinnerColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SpinnerProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n size?: SpinnerSize;\n color?: SpinnerColor;\n /** Optional text rendered beside the spinner (also used as aria-label). */\n label?: React.ReactNode;\n}\n\nconst sizeStyles: Record<SpinnerSize, string> = {\n sm: \"h-4 w-4 border-2\",\n md: \"h-6 w-6 border-2\",\n lg: \"h-8 w-8 border-[3px]\",\n};\n\nconst colorStyles: Record<SpinnerColor, string> = {\n primary: \"text-brand-500\",\n success: \"text-success-500\",\n error: \"text-error-500\",\n warning: \"text-warning-500\",\n info: \"text-blue-light-500\",\n light: \"text-gray-400\",\n dark: \"text-gray-700 dark:text-gray-300\",\n};\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n size = \"md\",\n color = \"primary\",\n label,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const accessibleLabel = typeof label === \"string\" ? label : \"Loading\";\n return (\n <span\n role=\"status\"\n aria-label={accessibleLabel}\n className={cn(\"inline-flex items-center gap-2\", className)}\n style={{ ...styleOverride({ bgColor, borderColor }), ...style }}\n {...rest}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"inline-block animate-spin rounded-full border-current border-t-transparent\",\n sizeStyles[size],\n !textColor && colorStyles[color]\n )}\n style={textColor ? { color: textColor } : undefined}\n />\n {label && (\n <span className=\"text-sm font-medium text-gray-500 dark:text-gray-400\">\n {label}\n </span>\n )}\n </span>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, renders children normally with no shimmer. */\n isLoaded?: boolean;\n /** Convenience sizing (any CSS length). Falls back to className. */\n width?: string | number;\n height?: string | number;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n isLoaded = false,\n width,\n height,\n className,\n children,\n style,\n ...rest\n}) => {\n if (isLoaded) {\n return <>{children}</>;\n }\n\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n \"animate-pulse rounded-lg bg-gray-200 dark:bg-gray-800\",\n className\n )}\n style={{ width, height, ...style }}\n {...rest}\n >\n {/* Keep children in the tree (invisible) so layout can be reserved. */}\n <span className=\"invisible\">{children}</span>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type CodeColor =\n | \"primary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"default\";\n\nexport type CodeSize = \"sm\" | \"md\";\n\nexport interface CodeProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\">,\n ColorOverrideProps {\n color?: CodeColor;\n size?: CodeSize;\n}\n\nconst sizeClasses: Record<CodeSize, string> = {\n sm: \"text-xs px-1 py-0.5\",\n md: \"text-sm px-1.5 py-0.5\",\n};\n\nconst colorClasses: Record<CodeColor, string> = {\n primary: \"bg-brand-50 text-brand-600 dark:bg-brand-500/15 dark:text-brand-400\",\n success:\n \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n error: \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n warning:\n \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n info: \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n default: \"bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80\",\n};\n\nexport const Code: React.FC<CodeProps> = ({\n color = \"default\",\n size = \"md\",\n className,\n children,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <code\n className={cn(\n \"inline-flex items-center rounded-md font-mono font-normal\",\n sizeClasses[size],\n colorClasses[color],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {children}\n </code>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type SnippetSize = \"sm\" | \"md\";\n\nexport interface SnippetProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\" | \"children\">,\n ColorOverrideProps {\n /** Code content as a string (supports \"\\n\") or an array of lines. */\n code?: string | string[];\n /** Alternative to `code`. */\n children?: string | string[];\n /** Prefix rendered before each line (e.g. \"$ \"). */\n symbol?: string;\n /** Hide the copy-to-clipboard button. */\n hideCopyButton?: boolean;\n /** Hide the line prefix symbol. */\n hideSymbol?: boolean;\n size?: SnippetSize;\n}\n\nconst sizeClasses: Record<SnippetSize, string> = {\n sm: \"text-xs p-3\",\n md: \"text-sm p-4\",\n};\n\nconst CopyIcon: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n);\n\nconst CheckIcon: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n);\n\nexport const Snippet: React.FC<SnippetProps> = ({\n code,\n children,\n symbol = \"\",\n hideCopyButton = false,\n hideSymbol = false,\n size = \"md\",\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const [copied, setCopied] = useState(false);\n\n const raw = code ?? children ?? \"\";\n const lines = Array.isArray(raw) ? raw : raw.split(\"\\n\");\n const text = lines.join(\"\\n\");\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n } catch {\n // clipboard not available — silently ignore\n }\n };\n\n return (\n <div\n className={cn(\n \"relative rounded-xl border border-gray-200 bg-gray-50 font-mono text-gray-800 dark:border-gray-800 dark:bg-white/[0.03] dark:text-white/90\",\n sizeClasses[size],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n <pre className={cn(\"overflow-x-auto\", !hideCopyButton && \"pr-8\")}>\n <code>\n {lines.map((line, i) => (\n <span key={i} className=\"block whitespace-pre\">\n {!hideSymbol && symbol && (\n <span className=\"select-none text-gray-400 dark:text-gray-500\">\n {symbol}\n </span>\n )}\n {line}\n </span>\n ))}\n </code>\n </pre>\n {!hideCopyButton && (\n <button\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n className={cn(\n \"absolute right-2 top-2 inline-flex h-7 w-7 items-center justify-center rounded-lg text-gray-500 transition hover:bg-gray-200 hover:text-gray-700 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:text-gray-400 dark:hover:bg-white/10 dark:hover:text-white/90\",\n copied && \"text-success-500 dark:text-success-500\"\n )}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nexport const Label: React.FC<LabelProps> = ({ children, className, ...rest }) => {\n return (\n <label\n className={cn(\n \"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\",\n className\n )}\n {...rest}\n >\n {children}\n </label>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface TextAreaProps {\n placeholder?: string;\n rows?: number;\n value?: string;\n onChange?: (value: string) => void;\n className?: string;\n disabled?: boolean;\n error?: boolean;\n hint?: string;\n}\n\nexport const TextArea: React.FC<TextAreaProps> = ({\n placeholder = \"Enter your message\",\n rows = 3,\n value = \"\",\n onChange,\n className,\n disabled = false,\n error = false,\n hint = \"\",\n}) => {\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) {\n onChange(e.target.value);\n }\n };\n\n const stateClass = disabled\n ? \"bg-gray-100 opacity-50 text-gray-500 border-gray-300 cursor-not-allowed dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700\"\n : error\n ? \"bg-transparent text-gray-400 border-gray-300 focus:border-error-300 focus:ring-3 focus:ring-error-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus:border-error-800\"\n : \"bg-transparent text-gray-400 border-gray-300 focus:border-brand-300 focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus:border-brand-800\";\n\n return (\n <div className=\"relative\">\n <textarea\n placeholder={placeholder}\n rows={rows}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n \"w-full rounded-lg border px-4 py-2.5 text-sm shadow-theme-xs focus:outline-hidden\",\n stateClass,\n className\n )}\n />\n {hint && (\n <p\n className={cn(\n \"mt-2 text-sm\",\n error ? \"text-error-500\" : \"text-gray-500 dark:text-gray-400\"\n )}\n >\n {hint}\n </p>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface CheckboxProps {\n label?: string;\n checked: boolean;\n className?: string;\n id?: string;\n onChange: (checked: boolean) => void;\n disabled?: boolean;\n /** Override the checked accent color (maps to inline accentColor). */\n checkedColor?: string;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n checked,\n id,\n onChange,\n className,\n disabled = false,\n checkedColor,\n}) => {\n return (\n <label\n className={cn(\n \"flex items-center space-x-3 group cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-60\"\n )}\n >\n <div className=\"relative w-5 h-5\">\n <input\n id={id}\n type=\"checkbox\"\n className={cn(\n \"w-5 h-5 appearance-none cursor-pointer dark:border-gray-700 border border-gray-300 checked:border-transparent rounded-md checked:bg-brand-500 disabled:opacity-60\",\n className\n )}\n checked={checked}\n onChange={(e) => onChange(e.target.checked)}\n disabled={disabled}\n style={checkedColor ? { accentColor: checkedColor } : undefined}\n />\n {checked && (\n <svg\n className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"white\"\n strokeWidth=\"1.94437\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n {disabled && (\n <svg\n className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"#E4E7EC\"\n strokeWidth=\"2.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n {label && (\n <span className=\"text-sm font-medium text-gray-800 dark:text-gray-200\">\n {label}\n </span>\n )}\n </label>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface RadioProps {\n id: string;\n name: string;\n value: string;\n checked: boolean;\n label: string;\n onChange: (value: string) => void;\n className?: string;\n disabled?: boolean;\n}\n\nexport const Radio: React.FC<RadioProps> = ({\n id,\n name,\n value,\n checked,\n label,\n onChange,\n className,\n disabled = false,\n}) => {\n return (\n <label\n htmlFor={id}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-3 text-sm font-medium\",\n disabled\n ? \"text-gray-300 dark:text-gray-600 cursor-not-allowed\"\n : \"text-gray-700 dark:text-gray-400\",\n className\n )}\n >\n <input\n id={id}\n name={name}\n type=\"radio\"\n value={value}\n checked={checked}\n onChange={() => !disabled && onChange(value)}\n className=\"sr-only\"\n disabled={disabled}\n />\n <span\n className={cn(\n \"flex h-5 w-5 items-center justify-center rounded-full border-[1.25px]\",\n checked\n ? \"border-brand-500 bg-brand-500\"\n : \"bg-transparent border-gray-300 dark:border-gray-700\",\n disabled &&\n \"bg-gray-100 dark:bg-gray-700 border-gray-200 dark:border-gray-700\"\n )}\n >\n <span\n className={cn(\n \"h-2 w-2 rounded-full bg-white\",\n checked ? \"block\" : \"hidden\"\n )}\n ></span>\n </span>\n {label}\n </label>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface RadioSmProps {\n id: string;\n name: string;\n value: string;\n checked: boolean;\n label: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport const RadioSm: React.FC<RadioSmProps> = ({\n id,\n name,\n value,\n checked,\n label,\n onChange,\n className,\n}) => {\n return (\n <label\n htmlFor={id}\n className={cn(\n \"flex cursor-pointer select-none items-center text-sm text-gray-500 dark:text-gray-400\",\n className\n )}\n >\n <span className=\"relative\">\n {/* Hidden Input */}\n <input\n type=\"radio\"\n id={id}\n name={name}\n value={value}\n checked={checked}\n onChange={() => onChange(value)}\n className=\"sr-only\"\n />\n {/* Styled Radio Circle */}\n <span\n className={cn(\n \"mr-2 flex h-4 w-4 items-center justify-center rounded-full border\",\n checked\n ? \"border-brand-500 bg-brand-500\"\n : \"bg-transparent border-gray-300 dark:border-gray-700\"\n )}\n >\n {/* Inner Dot */}\n <span\n className={cn(\n \"h-1.5 w-1.5 rounded-full\",\n checked ? \"bg-white\" : \"bg-white dark:bg-[#1e2636]\"\n )}\n ></span>\n </span>\n </span>\n {label}\n </label>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface SwitchProps {\n label: string;\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n color?: \"blue\" | \"gray\";\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n label,\n checked,\n defaultChecked = false,\n disabled = false,\n onChange,\n color = \"blue\",\n}) => {\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isChecked = isControlled ? checked : internalChecked;\n\n const handleToggle = () => {\n if (disabled) return;\n const newCheckedState = !isChecked;\n if (!isControlled) {\n setInternalChecked(newCheckedState);\n }\n if (onChange) {\n onChange(newCheckedState);\n }\n };\n\n const switchColors =\n color === \"blue\"\n ? {\n background: isChecked\n ? \"bg-brand-500 \"\n : \"bg-gray-200 dark:bg-white/10\", // Blue version\n knob: isChecked\n ? \"translate-x-full bg-white\"\n : \"translate-x-0 bg-white\",\n }\n : {\n background: isChecked\n ? \"bg-gray-800 dark:bg-white/10\"\n : \"bg-gray-200 dark:bg-white/10\", // Gray version\n knob: isChecked\n ? \"translate-x-full bg-white\"\n : \"translate-x-0 bg-white\",\n };\n\n return (\n <label\n className={cn(\n \"flex cursor-pointer select-none items-center gap-3 text-sm font-medium\",\n disabled ? \"text-gray-400\" : \"text-gray-700 dark:text-gray-400\"\n )}\n onClick={handleToggle}\n >\n <div className=\"relative\">\n <div\n className={cn(\n \"block transition duration-150 ease-linear h-6 w-11 rounded-full\",\n disabled\n ? \"bg-gray-100 pointer-events-none dark:bg-gray-800\"\n : switchColors.background\n )}\n ></div>\n <div\n className={cn(\n \"absolute left-0.5 top-0.5 h-5 w-5 rounded-full shadow-theme-sm duration-150 ease-linear transform\",\n switchColors.knob\n )}\n ></div>\n </div>\n {label}\n </label>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\ninterface Option {\n value: string;\n label: string;\n}\n\nexport interface SelectProps {\n options: Option[];\n placeholder?: string;\n onChange: (value: string) => void;\n className?: string;\n defaultValue?: string;\n disabled?: boolean;\n}\n\n/**\n * A custom single-select dropdown (no native `<select>`), so the menu is fully\n * styleable and theme-aware. The selected option shows a check mark.\n */\nexport const Select: React.FC<SelectProps> = ({\n options,\n placeholder = \"Select an option\",\n onChange,\n className,\n defaultValue = \"\",\n disabled = false,\n}) => {\n const [selectedValue, setSelectedValue] = useState<string>(defaultValue);\n const [isOpen, setIsOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click and on Escape.\n useEffect(() => {\n if (!isOpen) return;\n const onPointerDown = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [isOpen]);\n\n const toggleOpen = () => {\n if (!disabled) setIsOpen((prev) => !prev);\n };\n\n const handleSelect = (value: string) => {\n setSelectedValue(value);\n onChange(value);\n setIsOpen(false);\n };\n\n const selectedLabel = options.find((o) => o.value === selectedValue)?.label;\n\n return (\n <div ref={rootRef} className={cn(\"relative w-full\", className)}>\n <button\n type=\"button\"\n onClick={toggleOpen}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n className={cn(\n \"flex h-11 w-full items-center justify-between rounded-lg border border-gray-300 px-4 py-2.5 text-left text-sm shadow-theme-xs transition focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:focus:border-brand-800\",\n disabled && \"cursor-not-allowed opacity-50\",\n selectedLabel\n ? \"text-gray-800 dark:text-white/90\"\n : \"text-gray-400 dark:text-gray-400\"\n )}\n >\n <span className=\"truncate\">{selectedLabel ?? placeholder}</span>\n <svg\n className={cn(\n \"ml-2 h-5 w-5 shrink-0 stroke-current text-gray-500 transition-transform dark:text-gray-400\",\n isOpen && \"rotate-180\"\n )}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.79175 7.39551L10.0001 12.6038L15.2084 7.39551\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {isOpen && (\n <ul\n role=\"listbox\"\n className=\"absolute left-0 top-full z-40 mt-1.5 max-h-60 w-full overflow-y-auto rounded-lg border border-gray-200 bg-white py-1 shadow-theme-lg dark:border-gray-800 dark:bg-gray-900\"\n >\n {options.map((option) => {\n const isSelected = option.value === selectedValue;\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => handleSelect(option.value)}\n className={cn(\n \"flex cursor-pointer items-center justify-between px-4 py-2 text-sm transition hover:bg-gray-50 dark:hover:bg-white/5\",\n isSelected\n ? \"bg-brand-50 font-medium text-brand-600 dark:bg-brand-500/15 dark:text-brand-400\"\n : \"text-gray-700 dark:text-gray-300\"\n )}\n >\n <span className=\"truncate\">{option.label}</span>\n {isSelected && (\n <svg\n className=\"ml-2 h-4 w-4 shrink-0 stroke-current\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3334 4L6.00008 11.3333L2.66675 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\n\ninterface Option {\n value: string;\n text: string;\n selected: boolean;\n}\n\nexport interface MultiSelectProps {\n label: string;\n options: Option[];\n defaultSelected?: string[];\n onChange?: (selected: string[]) => void;\n disabled?: boolean;\n}\n\nexport const MultiSelect: React.FC<MultiSelectProps> = ({\n label,\n options,\n defaultSelected = [],\n onChange,\n disabled = false,\n}) => {\n const [selectedOptions, setSelectedOptions] =\n useState<string[]>(defaultSelected);\n const [isOpen, setIsOpen] = useState(false);\n\n const toggleDropdown = () => {\n if (disabled) return;\n setIsOpen((prev) => !prev);\n };\n\n const handleSelect = (optionValue: string) => {\n const newSelectedOptions = selectedOptions.includes(optionValue)\n ? selectedOptions.filter((value) => value !== optionValue)\n : [...selectedOptions, optionValue];\n\n setSelectedOptions(newSelectedOptions);\n if (onChange) onChange(newSelectedOptions);\n };\n\n const removeOption = (_index: number, value: string) => {\n const newSelectedOptions = selectedOptions.filter((opt) => opt !== value);\n setSelectedOptions(newSelectedOptions);\n if (onChange) onChange(newSelectedOptions);\n };\n\n const selectedValuesText = selectedOptions.map(\n (value) => options.find((option) => option.value === value)?.text || \"\"\n );\n\n return (\n <div className=\"w-full\">\n <label className=\"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label}\n </label>\n\n <div className=\"relative z-20 inline-block w-full\">\n <div className=\"relative flex flex-col items-center\">\n <div onClick={toggleDropdown} className=\"w-full\">\n <div className=\"mb-2 flex h-11 rounded-lg border border-gray-300 py-1.5 px-4 shadow-theme-xs outline-hidden transition focus:border-brand-300 focus:shadow-focus-ring dark:border-gray-700 dark:bg-gray-900 dark:focus:border-brand-300\">\n <div className=\"flex flex-wrap flex-auto gap-2\">\n {selectedValuesText.length > 0 ? (\n selectedValuesText.map((text, index) => (\n <div\n key={index}\n className=\"group flex items-center justify-center rounded-full border-[0.7px] border-transparent bg-gray-100 py-1 pl-2.5 pr-2 text-sm text-gray-800 hover:border-gray-200 dark:bg-gray-800 dark:text-white/90 dark:hover:border-gray-800\"\n >\n <span className=\"flex-initial max-w-full\">{text}</span>\n <div className=\"flex flex-row-reverse flex-auto\">\n <div\n onClick={() =>\n removeOption(index, selectedOptions[index])\n }\n className=\"pl-2 text-gray-500 cursor-pointer group-hover:text-gray-400 dark:text-gray-400\"\n >\n <svg\n className=\"fill-current\"\n role=\"button\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.40717 4.46881C3.11428 4.17591 3.11428 3.70104 3.40717 3.40815C3.70006 3.11525 4.17494 3.11525 4.46783 3.40815L6.99943 5.93975L9.53095 3.40822C9.82385 3.11533 10.2987 3.11533 10.5916 3.40822C10.8845 3.70112 10.8845 4.17599 10.5916 4.46888L8.06009 7.00041L10.5916 9.53193C10.8845 9.82482 10.8845 10.2997 10.5916 10.5926C10.2987 10.8855 9.82385 10.8855 9.53095 10.5926L6.99943 8.06107L4.46783 10.5927C4.17494 10.8856 3.70006 10.8856 3.40717 10.5927C3.11428 10.2998 3.11428 9.8249 3.40717 9.53201L5.93877 7.00041L3.40717 4.46881Z\"\n />\n </svg>\n </div>\n </div>\n </div>\n ))\n ) : (\n <input\n placeholder=\"Select option\"\n className=\"w-full h-full p-1 pr-2 text-sm bg-transparent border-0 outline-hidden appearance-none placeholder:text-gray-800 focus:border-0 focus:outline-hidden focus:ring-0 dark:placeholder:text-white/90\"\n readOnly\n value=\"Select option\"\n />\n )}\n </div>\n <div className=\"flex items-center py-1 pl-1 pr-1 w-7\">\n <button\n type=\"button\"\n onClick={toggleDropdown}\n className=\"w-5 h-5 text-gray-700 outline-hidden cursor-pointer focus:outline-hidden dark:text-gray-400\"\n >\n <svg\n className={`stroke-current ${isOpen ? \"rotate-180\" : \"\"}`}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.79175 7.39551L10.0001 12.6038L15.2084 7.39551\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n\n {isOpen && (\n <div\n className=\"absolute left-0 z-40 w-full overflow-y-auto bg-white rounded-lg shadow-sm top-full max-h-select dark:bg-gray-900\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex flex-col\">\n {options.map((option, index) => {\n const isSelected = selectedOptions.includes(option.value);\n return (\n <div key={index}>\n <div\n className={`w-full cursor-pointer rounded-t border-b border-gray-200 hover:bg-brand-500/5 dark:border-gray-800`}\n onClick={() => handleSelect(option.value)}\n >\n <div\n className={`relative flex w-full items-center justify-between p-2 pl-2 ${\n isSelected ? \"bg-brand-500/10\" : \"\"\n }`}\n >\n <div\n className={`mx-2 leading-6 ${\n isSelected\n ? \"font-medium text-brand-600 dark:text-brand-400\"\n : \"text-gray-800 dark:text-white/90\"\n }`}\n >\n {option.text}\n </div>\n {isSelected && (\n <svg\n className=\"mr-2 h-4 w-4 shrink-0 stroke-current text-brand-500\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3334 4L6.00008 11.3333L2.66675 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface FileInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nexport const FileInput: React.FC<FileInputProps> = ({ className, ...rest }) => {\n return (\n <input\n type=\"file\"\n className={cn(\n \"focus:border-ring-brand-300 h-11 w-full overflow-hidden rounded-lg border border-gray-300 bg-transparent text-sm text-gray-500 shadow-theme-xs transition-colors file:mr-5 file:border-collapse file:cursor-pointer file:rounded-l-lg file:border-0 file:border-r file:border-solid file:border-gray-200 file:bg-gray-50 file:py-3 file:pl-3.5 file:pr-3 file:text-sm file:text-gray-700 placeholder:text-gray-400 hover:file:bg-gray-100 focus:outline-hidden focus:file:ring-brand-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-400 dark:text-white/90 dark:file:border-gray-800 dark:file:bg-white/[0.03] dark:file:text-gray-400 dark:placeholder:text-gray-400\",\n className\n )}\n {...rest}\n />\n );\n};\n","\"use client\";\nimport React, { useEffect } from \"react\";\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { Label } from \"./Label\";\n\ntype Hook = flatpickr.Options.Hook;\ntype DateOption = flatpickr.Options.DateOption;\n\nexport interface DatePickerProps {\n id: string;\n mode?: \"single\" | \"multiple\" | \"range\" | \"time\";\n onChange?: Hook | Hook[];\n defaultDate?: DateOption;\n label?: string;\n placeholder?: string;\n}\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n id,\n mode,\n onChange,\n label,\n defaultDate,\n placeholder,\n}) => {\n useEffect(() => {\n const flatPickr = flatpickr(`#${id}`, {\n mode: mode || \"single\",\n static: true,\n monthSelectorType: \"static\",\n dateFormat: \"Y-m-d\",\n defaultDate,\n onChange,\n });\n\n return () => {\n if (!Array.isArray(flatPickr)) {\n flatPickr.destroy();\n }\n };\n }, [mode, onChange, id, defaultDate]);\n\n return (\n <div>\n {label && <Label htmlFor={id}>{label}</Label>}\n\n <div className=\"relative\">\n <input\n id={id}\n placeholder={placeholder}\n className=\"h-11 w-full rounded-lg border appearance-none pl-4 pr-11 py-2.5 text-sm shadow-theme-xs placeholder:text-gray-400 focus:outline-hidden focus:ring-3 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 bg-transparent text-gray-800 border-gray-300 focus:border-brand-300 focus:ring-brand-500/20 dark:border-gray-700 dark:focus:border-brand-800\"\n />\n\n <span className=\"absolute text-gray-500 -translate-y-1/2 pointer-events-none right-3 top-1/2 dark:text-gray-400\">\n <svg\n className=\"size-6\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8 2C8.41421 2 8.75 2.33579 8.75 2.75V3.75H15.25V2.75C15.25 2.33579 15.5858 2 16 2C16.4142 2 16.75 2.33579 16.75 2.75V3.75H18.5C19.7426 3.75 20.75 4.75736 20.75 6V9V19C20.75 20.2426 19.7426 21.25 18.5 21.25H5.5C4.25736 21.25 3.25 20.2426 3.25 19V9V6C3.25 4.75736 4.25736 3.75 5.5 3.75H7.25V2.75C7.25 2.33579 7.58579 2 8 2ZM8 5.25H5.5C5.08579 5.25 4.75 5.58579 4.75 6V8.25H19.25V6C19.25 5.58579 18.9142 5.25 18.5 5.25H16H8ZM19.25 9.75H4.75V19C4.75 19.4142 5.08579 19.75 5.5 19.75H18.5C18.9142 19.75 19.25 19.4142 19.25 19V9.75Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </div>\n </div>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { Label } from \"./Label\";\n\ntype DateOption = flatpickr.Options.DateOption;\n\nexport interface DateTimePickerProps {\n id: string;\n /** Optional field label rendered above the controls. */\n label?: string;\n /** Placeholder for the date input. */\n placeholder?: string;\n /** Initial date for the calendar. */\n defaultDate?: DateOption;\n /** Initial time as \"HH:MM\". */\n defaultTime?: string;\n /** Fires whenever the date or time changes. */\n onChange?: (value: { date: Date | undefined; time: string }) => void;\n}\n\n/** Keep only up to 2 digits and clamp to [0, max]. */\nconst clampNum = (raw: string, max: number) => {\n const digits = raw.replace(/\\D/g, \"\").slice(0, 2);\n if (digits === \"\") return \"\";\n return String(Math.min(parseInt(digits, 10), max));\n};\n\n/**\n * Date + time field: a flatpickr calendar for the date (same look as DatePicker)\n * paired with a compact HH:MM time input (two fields separated by a \":\").\n */\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n id,\n label,\n placeholder,\n defaultDate,\n defaultTime = \"\",\n onChange,\n}) => {\n const dateRef = useRef<Date | undefined>(undefined);\n const [hh, setHh] = useState(defaultTime.split(\":\")[0] ?? \"\");\n const [mm, setMm] = useState(defaultTime.split(\":\")[1] ?? \"\");\n const hhRef = useRef(hh);\n const mmRef = useRef(mm);\n hhRef.current = hh;\n mmRef.current = mm;\n\n const emit = () => {\n onChange?.({\n date: dateRef.current,\n time: `${(hhRef.current || \"0\").padStart(2, \"0\")}:${(mmRef.current || \"0\").padStart(2, \"0\")}`,\n });\n };\n\n useEffect(() => {\n const flatPickr = flatpickr(`#${id}-date`, {\n mode: \"single\",\n static: true,\n monthSelectorType: \"static\",\n dateFormat: \"Y-m-d\",\n defaultDate,\n onChange: (dates) => {\n dateRef.current = dates[0];\n emit();\n },\n });\n\n return () => {\n if (!Array.isArray(flatPickr)) {\n flatPickr.destroy();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, defaultDate]);\n\n const handleHh = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = clampNum(e.target.value, 23);\n setHh(v);\n hhRef.current = v;\n emit();\n };\n const handleMm = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = clampNum(e.target.value, 59);\n setMm(v);\n mmRef.current = v;\n emit();\n };\n const padOnBlur =\n (value: string, setter: (v: string) => void) =>\n () => {\n if (value !== \"\") setter(value.padStart(2, \"0\"));\n };\n\n const timeFieldClass =\n \"w-7 bg-transparent text-center tabular-nums placeholder:text-gray-400 focus:outline-hidden dark:placeholder:text-white/30\";\n\n return (\n <div>\n {label && <Label htmlFor={`${id}-date`}>{label}</Label>}\n\n <div className=\"flex items-start gap-3\">\n {/* Date — flatpickr, same look as DatePicker */}\n <div className=\"relative flex-1\">\n <input\n id={`${id}-date`}\n placeholder={placeholder}\n className=\"h-11 w-full appearance-none rounded-lg border border-gray-300 bg-transparent py-2.5 pl-4 pr-11 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/20 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\"\n />\n <span className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400\">\n <svg className=\"size-6\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8 2C8.41421 2 8.75 2.33579 8.75 2.75V3.75H15.25V2.75C15.25 2.33579 15.5858 2 16 2C16.4142 2 16.75 2.33579 16.75 2.75V3.75H18.5C19.7426 3.75 20.75 4.75736 20.75 6V9V19C20.75 20.2426 19.7426 21.25 18.5 21.25H5.5C4.25736 21.25 3.25 20.2426 3.25 19V9V6C3.25 4.75736 4.25736 3.75 5.5 3.75H7.25V2.75C7.25 2.33579 7.58579 2 8 2ZM8 5.25H5.5C5.08579 5.25 4.75 5.58579 4.75 6V8.25H19.25V6C19.25 5.58579 18.9142 5.25 18.5 5.25H16H8ZM19.25 9.75H4.75V19C4.75 19.4142 5.08579 19.75 5.5 19.75H18.5C18.9142 19.75 19.25 19.4142 19.25 19V9.75Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </div>\n\n {/* Time — HH : MM */}\n <div className=\"flex h-11 items-center rounded-lg border border-gray-300 bg-transparent px-3 text-sm text-gray-800 shadow-theme-xs focus-within:border-brand-300 focus-within:ring-3 focus-within:ring-brand-500/20 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus-within:border-brand-800\">\n <input\n aria-label=\"Hours\"\n inputMode=\"numeric\"\n placeholder=\"00\"\n maxLength={2}\n value={hh}\n onChange={handleHh}\n onBlur={padOnBlur(hh, (v) => setHh(v))}\n className={timeFieldClass}\n />\n <span className=\"px-0.5 text-gray-400 dark:text-gray-500\">:</span>\n <input\n aria-label=\"Minutes\"\n inputMode=\"numeric\"\n placeholder=\"00\"\n maxLength={2}\n value={mm}\n onChange={handleMm}\n onBlur={padOnBlur(mm, (v) => setMm(v))}\n className={timeFieldClass}\n />\n <span className=\"ml-1 text-gray-500 dark:text-gray-400\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.04175 9.99984C3.04175 6.15686 6.1571 3.0415 10.0001 3.0415C13.8431 3.0415 16.9584 6.15686 16.9584 9.99984C16.9584 13.8428 13.8431 16.9582 10.0001 16.9582C6.1571 16.9582 3.04175 13.8428 3.04175 9.99984ZM10.0001 1.5415C5.32867 1.5415 1.54175 5.32843 1.54175 9.99984C1.54175 14.6712 5.32867 18.4582 10.0001 18.4582C14.6715 18.4582 18.4584 14.6712 18.4584 9.99984C18.4584 5.32843 14.6715 1.5415 10.0001 1.5415ZM9.99998 10.7498C9.58577 10.7498 9.24998 10.4141 9.24998 9.99984V5.4165C9.24998 5.00229 9.58577 4.6665 9.99998 4.6665C10.4142 4.6665 10.75 5.00229 10.75 5.4165V9.24984H13.3334C13.7476 9.24984 14.0834 9.58562 14.0834 9.99984C14.0834 10.4141 13.7476 10.7498 13.3334 10.7498H10.0001H9.99998Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface PasswordInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {}\n\n/** Password field with a show/hide toggle (eye icon), matching the template's \"Password Input\". */\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n className,\n ...rest\n}) => {\n const [show, setShow] = useState(false);\n\n return (\n <div className=\"relative\">\n <input\n type={show ? \"text\" : \"password\"}\n className={cn(\n \"h-11 w-full appearance-none rounded-lg border border-gray-300 bg-transparent py-2.5 pl-4 pr-11 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\",\n className\n )}\n {...rest}\n />\n <button\n type=\"button\"\n onClick={() => setShow((s) => !s)}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n className=\"absolute right-4 top-1/2 z-30 -translate-y-1/2 cursor-pointer text-gray-500 dark:text-gray-400\"\n >\n {show ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.0002 13.8619C7.23361 13.8619 4.86803 12.1372 3.92328 9.70241C4.86804 7.26761 7.23361 5.54297 10.0002 5.54297C12.7667 5.54297 15.1323 7.26762 16.0771 9.70243C15.1323 12.1372 12.7667 13.8619 10.0002 13.8619ZM10.0002 4.04297C6.48191 4.04297 3.49489 6.30917 2.4155 9.4593C2.3615 9.61687 2.3615 9.78794 2.41549 9.94552C3.49488 13.0957 6.48191 15.3619 10.0002 15.3619C13.5184 15.3619 16.5055 13.0957 17.5849 9.94555C17.6389 9.78797 17.6389 9.6169 17.5849 9.45932C16.5055 6.30919 13.5184 4.04297 10.0002 4.04297ZM9.99151 7.84413C8.96527 7.84413 8.13333 8.67606 8.13333 9.70231C8.13333 10.7286 8.96527 11.5605 9.99151 11.5605H10.0064C11.0326 11.5605 11.8646 10.7286 11.8646 9.70231C11.8646 8.67606 11.0326 7.84413 10.0064 7.84413H9.99151Z\"\n />\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.63803 3.57709C4.34513 3.2842 3.87026 3.2842 3.57737 3.57709C3.28447 3.86999 3.28447 4.34486 3.57737 4.63775L4.85323 5.91362C3.74609 6.84199 2.89363 8.06395 2.4155 9.45936C2.3615 9.61694 2.3615 9.78801 2.41549 9.94558C3.49488 13.0957 6.48191 15.3619 10.0002 15.3619C11.255 15.3619 12.4422 15.0737 13.4994 14.5598L15.3625 16.4229C15.6554 16.7158 16.1302 16.7158 16.4231 16.4229C16.716 16.13 16.716 15.6551 16.4231 15.3622L4.63803 3.57709ZM12.3608 13.4212L10.4475 11.5079C10.3061 11.5423 10.1584 11.5606 10.0064 11.5606H9.99151C8.96527 11.5606 8.13333 10.7286 8.13333 9.70237C8.13333 9.5461 8.15262 9.39434 8.18895 9.24933L5.91885 6.97923C5.03505 7.69015 4.34057 8.62704 3.92328 9.70247C4.86803 12.1373 7.23361 13.8619 10.0002 13.8619C10.8326 13.8619 11.6287 13.7058 12.3608 13.4212ZM16.0771 9.70249C15.7843 10.4569 15.3552 11.1432 14.8199 11.7311L15.8813 12.7925C16.6329 11.9813 17.2187 11.0143 17.5849 9.94561C17.6389 9.78803 17.6389 9.61696 17.5849 9.45938C16.5055 6.30925 13.5184 4.04303 10.0002 4.04303C9.13525 4.04303 8.30244 4.17999 7.52218 4.43338L8.75139 5.66259C9.1556 5.58413 9.57311 5.54303 10.0002 5.54303C12.7667 5.54303 15.1323 7.26768 16.0771 9.70249Z\"\n />\n </svg>\n )}\n </button>\n </div>\n );\n};\n","import React, { FormEvent } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface FormProps\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, \"onSubmit\"> {\n onSubmit?: (event: FormEvent<HTMLFormElement>) => void;\n}\n\nexport const Form: React.FC<FormProps> = ({\n onSubmit,\n children,\n className,\n ...rest\n}) => {\n return (\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmit?.(event);\n }}\n className={cn(className)}\n {...rest}\n >\n {children}\n </form>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type SliderColor =\n | \"brand\"\n | \"primary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\";\n\nexport interface SliderProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"color\" | \"value\" | \"defaultValue\" | \"onChange\" | \"type\"\n >,\n ColorOverrideProps {\n /** Controlled value. */\n value?: number;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Fires with the new numeric value on change. */\n onChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n /** Accent color of the track + thumb. */\n color?: SliderColor;\n /** Optional label rendered above the slider. */\n label?: React.ReactNode;\n /** Show the current value next to the label. */\n showValue?: boolean;\n}\n\nconst accentClasses: Record<SliderColor, string> = {\n brand: \"accent-brand-500\",\n primary: \"accent-brand-500\",\n success: \"accent-success-500\",\n error: \"accent-error-500\",\n warning: \"accent-warning-500\",\n info: \"accent-blue-light-500\",\n};\n\nconst fillColors: Record<SliderColor, string> = {\n brand: \"#465fff\",\n primary: \"#465fff\",\n success: \"#12b76a\",\n error: \"#f04438\",\n warning: \"#f79009\",\n info: \"#0ba5ec\",\n};\n\nexport const Slider: React.FC<SliderProps> = ({\n value,\n defaultValue = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n color = \"brand\",\n label,\n showValue = false,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = isControlled ? (value as number) : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = Number(e.target.value);\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n };\n\n const percent =\n max === min ? 0 : ((currentValue - min) / (max - min)) * 100;\n const fill = fillColors[color];\n const trackBg = `linear-gradient(to right, ${fill} 0%, ${fill} ${percent}%, var(--slider-track, #e4e7ec) ${percent}%, var(--slider-track, #e4e7ec) 100%)`;\n\n return (\n <div className={cn(\"w-full\", disabled && \"opacity-50\")}>\n {(label || showValue) && (\n <div className=\"mb-1.5 flex items-center justify-between text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label && <span>{label}</span>}\n {showValue && (\n <span className=\"text-gray-500 dark:text-gray-400\">\n {currentValue}\n </span>\n )}\n </div>\n )}\n <input\n type=\"range\"\n role=\"slider\"\n min={min}\n max={max}\n step={step}\n value={currentValue}\n disabled={disabled}\n onChange={handleChange}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n className={cn(\n \"h-2 w-full cursor-pointer appearance-none rounded-lg focus:outline-hidden focus:ring-3 focus:ring-brand-500/10\",\n accentClasses[color],\n disabled && \"cursor-not-allowed\",\n className\n )}\n style={{\n background: trackBg,\n ...styleOverride({ bgColor, textColor, borderColor }),\n ...style,\n }}\n {...rest}\n />\n </div>\n );\n};\n"]}
1
+ {"version":3,"sources":["../src/lib/styleOverride.ts","../src/components/Button/Button.tsx","../src/components/Badge/Badge.tsx","../src/components/Ribbon/Ribbon.tsx","../src/components/Alert/icons.tsx","../src/components/Alert/Alert.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Avatar/AvatarText.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Dropdown/DropdownItem.tsx","../src/components/Dropzone/Dropzone.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Form/Input.tsx","../src/components/Table/Table.tsx","../src/components/Breadcrumb/Breadcrumb.tsx","../src/components/ThemeToggleButton/ThemeToggleButton.tsx","../src/components/Card/Card.tsx","../src/components/Toast/icons.tsx","../src/components/Toast/Toast.tsx","../src/components/Accordion/Accordion.tsx","../src/components/Tabs/Tabs.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Popover/Popover.tsx","../src/components/Drawer/Drawer.tsx","../src/components/Chip/Chip.tsx","../src/components/Progress/Progress.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Code/Code.tsx","../src/components/Snippet/Snippet.tsx","../src/components/Form/Label.tsx","../src/components/Form/TextArea.tsx","../src/components/Form/Checkbox.tsx","../src/components/Form/Radio.tsx","../src/components/Form/RadioSm.tsx","../src/components/Form/Switch.tsx","../src/components/Form/Select.tsx","../src/components/Form/MultiSelect.tsx","../src/components/Form/FileInput.tsx","../src/components/Form/DatePicker.tsx","../src/components/Form/DateTimePicker.tsx","../src/components/Form/PasswordInput.tsx","../src/components/Form/Form.tsx","../src/components/Slider/Slider.tsx"],"names":["jsxs","jsx","variantClasses","sizeClasses","name","useRef","useState","React","ChevronIcon","placementClasses","useEffect","sizeStyles","variants","Fragment","colorClasses","flatpickr","fillColors"],"mappings":"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","file":"index.js","sourcesContent":["import type { CSSProperties } from \"react\";\n\nexport interface ColorOverrideProps {\n /** Inline background color override (any CSS color). */\n bgColor?: string;\n /** Inline text color override (any CSS color). */\n textColor?: string;\n /** Inline border color override (any CSS color). */\n borderColor?: string;\n}\n\nexport function styleOverride({\n bgColor,\n textColor,\n borderColor,\n}: ColorOverrideProps): CSSProperties {\n const style: CSSProperties = {};\n if (bgColor !== undefined) style.backgroundColor = bgColor;\n if (textColor !== undefined) style.color = textColor;\n if (borderColor !== undefined) style.borderColor = borderColor;\n return style;\n}\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\">,\n ColorOverrideProps {\n size?: \"sm\" | \"md\";\n variant?: \"primary\" | \"outline\";\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n}\n\nconst sizeClasses: Record<NonNullable<ButtonProps[\"size\"]>, string> = {\n sm: \"px-4 py-3 text-sm\",\n md: \"px-5 py-3.5 text-sm\",\n};\n\nconst variantClasses: Record<NonNullable<ButtonProps[\"variant\"]>, string> = {\n primary:\n \"bg-brand-500 text-white shadow-theme-xs hover:bg-brand-600 disabled:bg-brand-300\",\n outline:\n \"bg-white text-gray-700 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 dark:bg-gray-800 dark:text-gray-400 dark:ring-gray-700 dark:hover:bg-white/[0.03] dark:hover:text-gray-300\",\n};\n\nexport const Button: React.FC<ButtonProps> = ({\n children,\n size = \"md\",\n variant = \"primary\",\n startIcon,\n endIcon,\n className,\n disabled = false,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <button\n className={cn(\n \"inline-flex items-center justify-center font-medium gap-2 rounded-lg transition\",\n sizeClasses[size],\n variantClasses[variant],\n disabled && \"cursor-not-allowed opacity-50\",\n className\n )}\n disabled={disabled}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {startIcon && <span className=\"flex items-center\">{startIcon}</span>}\n {children}\n {endIcon && <span className=\"flex items-center\">{endIcon}</span>}\n </button>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type BadgeVariant = \"light\" | \"solid\";\nexport type BadgeSize = \"sm\" | \"md\";\nexport type BadgeColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\n\nexport interface BadgeProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n variant?: BadgeVariant;\n size?: BadgeSize;\n color?: BadgeColor;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n}\n\nconst sizeStyles: Record<BadgeSize, string> = {\n sm: \"text-theme-xs\",\n md: \"text-sm\",\n};\n\nconst variants: Record<BadgeVariant, Record<BadgeColor, string>> = {\n light: {\n primary: \"bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400\",\n success: \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n error: \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n warning: \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n info: \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n light: \"bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80\",\n dark: \"bg-gray-500 text-white dark:bg-white/5 dark:text-white\",\n },\n solid: {\n primary: \"bg-brand-500 text-white dark:text-white\",\n success: \"bg-success-500 text-white dark:text-white\",\n error: \"bg-error-500 text-white dark:text-white\",\n warning: \"bg-warning-500 text-white dark:text-white\",\n info: \"bg-blue-light-500 text-white dark:text-white\",\n light: \"bg-gray-400 dark:bg-white/5 text-white dark:text-white/80\",\n dark: \"bg-gray-700 text-white dark:text-white\",\n },\n};\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"light\",\n color = \"primary\",\n size = \"md\",\n startIcon,\n endIcon,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <span\n className={cn(\n \"inline-flex items-center px-2.5 py-0.5 justify-center gap-1 rounded-full font-medium\",\n sizeStyles[size],\n variants[variant][color],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {startIcon && <span className=\"flex items-center\">{startIcon}</span>}\n {children}\n {endIcon && <span className=\"flex items-center\">{endIcon}</span>}\n </span>\n );\n};\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type RibbonVariant = \"corner\" | \"rounded\" | \"flag\";\nexport type RibbonColor =\n | \"primary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"dark\";\nexport type RibbonPosition =\n | \"top-left\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-right\";\n\nexport interface RibbonProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n /** Visual style of the ribbon. */\n variant?: RibbonVariant;\n /** Brand color. Defaults to `primary`. */\n color?: RibbonColor;\n /** Which corner/side the ribbon attaches to. Defaults to `top-right`. */\n position?: RibbonPosition;\n}\n\nconst colorClasses: Record<RibbonColor, string> = {\n primary: \"bg-brand-500 text-white\",\n success: \"bg-success-500 text-white\",\n error: \"bg-error-500 text-white\",\n warning: \"bg-warning-500 text-white\",\n info: \"bg-blue-light-500 text-white\",\n dark: \"bg-gray-800 text-white dark:bg-gray-700\",\n};\n\n// Diagonal band tucked across a corner. Needs a `relative overflow-hidden` host.\nconst cornerClasses: Record<RibbonPosition, string> = {\n \"top-left\": \"left-[-36px] top-[16px] w-[130px] -rotate-45\",\n \"top-right\": \"right-[-36px] top-[16px] w-[130px] rotate-45\",\n \"bottom-left\": \"bottom-[16px] left-[-36px] w-[130px] rotate-45\",\n \"bottom-right\": \"bottom-[16px] right-[-36px] w-[130px] -rotate-45\",\n};\n\n// Tag hugging a corner, inner edge rounded. Needs `relative` host.\nconst roundedClasses: Record<RibbonPosition, string> = {\n \"top-left\": \"left-0 top-0 rounded-tl-xl rounded-br-lg\",\n \"top-right\": \"right-0 top-0 rounded-tr-xl rounded-bl-lg\",\n \"bottom-left\": \"bottom-0 left-0 rounded-bl-xl rounded-tr-lg\",\n \"bottom-right\": \"bottom-0 right-0 rounded-br-xl rounded-tl-lg\",\n};\n\n// Horizontal banner with a swallowtail notch. Needs `relative` host.\nconst flagClasses: Record<RibbonPosition, string> = {\n \"top-left\": \"left-0 top-4 rounded-r-sm pl-3 pr-5\",\n \"bottom-left\": \"bottom-4 left-0 rounded-r-sm pl-3 pr-5\",\n \"top-right\": \"right-0 top-4 rounded-l-sm pl-5 pr-3\",\n \"bottom-right\": \"bottom-4 right-0 rounded-l-sm pl-5 pr-3\",\n};\n\n// Swallowtail cut into the trailing end of the flag (right end for left-anchored,\n// left end for right-anchored).\nconst flagClipPath: Record<RibbonPosition, string> = {\n \"top-left\": \"polygon(0 0, 100% 0, calc(100% - 9px) 50%, 100% 100%, 0 100%)\",\n \"bottom-left\": \"polygon(0 0, 100% 0, calc(100% - 9px) 50%, 100% 100%, 0 100%)\",\n \"top-right\": \"polygon(0 0, 100% 0, 100% 100%, 0 100%, 9px 50%)\",\n \"bottom-right\": \"polygon(0 0, 100% 0, 100% 100%, 0 100%, 9px 50%)\",\n};\n\nexport const Ribbon: React.FC<RibbonProps> = ({\n variant = \"corner\",\n color = \"primary\",\n position = \"top-right\",\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const variantClass =\n variant === \"corner\"\n ? cornerClasses[position]\n : variant === \"rounded\"\n ? roundedClasses[position]\n : flagClasses[position];\n\n return (\n <span\n className={cn(\n \"absolute z-10 inline-flex items-center justify-center whitespace-nowrap py-1 text-center text-theme-xs font-semibold shadow-theme-xs\",\n variant === \"corner\" && \"px-10\",\n variant === \"rounded\" && \"px-3\",\n colorClasses[color],\n variantClass,\n className\n )}\n style={{\n ...(variant === \"flag\"\n ? { clipPath: flagClipPath[position] }\n : undefined),\n ...styleOverride({ bgColor, textColor, borderColor }),\n ...style,\n }}\n {...rest}\n >\n {children}\n </span>\n );\n};\n","import React from \"react\";\n\nexport const alertIcons: Record<\n \"success\" | \"error\" | \"warning\" | \"info\",\n React.ReactNode\n> = {\n success: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.70186 12.0001C3.70186 7.41711 7.41711 3.70186 12.0001 3.70186C16.5831 3.70186 20.2984 7.41711 20.2984 12.0001C20.2984 16.5831 16.5831 20.2984 12.0001 20.2984C7.41711 20.2984 3.70186 16.5831 3.70186 12.0001ZM12.0001 1.90186C6.423 1.90186 1.90186 6.423 1.90186 12.0001C1.90186 17.5772 6.423 22.0984 12.0001 22.0984C17.5772 22.0984 22.0984 17.5772 22.0984 12.0001C22.0984 6.423 17.5772 1.90186 12.0001 1.90186ZM15.6197 10.7395C15.9712 10.388 15.9712 9.81819 15.6197 9.46672C15.2683 9.11525 14.6984 9.11525 14.347 9.46672L11.1894 12.6243L9.6533 11.0883C9.30183 10.7368 8.73198 10.7368 8.38051 11.0883C8.02904 11.4397 8.02904 12.0096 8.38051 12.3611L10.553 14.5335C10.7217 14.7023 10.9507 14.7971 11.1894 14.7971C11.428 14.7971 11.657 14.7023 11.8257 14.5335L15.6197 10.7395Z\"\n />\n </svg>\n ),\n error: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20.3499 12.0004C20.3499 16.612 16.6115 20.3504 11.9999 20.3504C7.38832 20.3504 3.6499 16.612 3.6499 12.0004C3.6499 7.38881 7.38833 3.65039 11.9999 3.65039C16.6115 3.65039 20.3499 7.38881 20.3499 12.0004ZM11.9999 22.1504C17.6056 22.1504 22.1499 17.6061 22.1499 12.0004C22.1499 6.3947 17.6056 1.85039 11.9999 1.85039C6.39421 1.85039 1.8499 6.3947 1.8499 12.0004C1.8499 17.6061 6.39421 22.1504 11.9999 22.1504ZM13.0008 16.4753C13.0008 15.923 12.5531 15.4753 12.0008 15.4753L11.9998 15.4753C11.4475 15.4753 10.9998 15.923 10.9998 16.4753C10.9998 17.0276 11.4475 17.4753 11.9998 17.4753L12.0008 17.4753C12.5531 17.4753 13.0008 17.0276 13.0008 16.4753ZM11.9998 6.62898C12.414 6.62898 12.7498 6.96476 12.7498 7.37898L12.7498 13.0555C12.7498 13.4697 12.414 13.8055 11.9998 13.8055C11.5856 13.8055 11.2498 13.4697 11.2498 13.0555L11.2498 7.37898C11.2498 6.96476 11.5856 6.62898 11.9998 6.62898Z\"\n fill=\"#F04438\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 12.0001C3.6501 7.38852 7.38852 3.6501 12.0001 3.6501C16.6117 3.6501 20.3501 7.38852 20.3501 12.0001C20.3501 16.6117 16.6117 20.3501 12.0001 20.3501C7.38852 20.3501 3.6501 16.6117 3.6501 12.0001ZM12.0001 1.8501C6.39441 1.8501 1.8501 6.39441 1.8501 12.0001C1.8501 17.6058 6.39441 22.1501 12.0001 22.1501C17.6058 22.1501 22.1501 17.6058 22.1501 12.0001C22.1501 6.39441 17.6058 1.8501 12.0001 1.8501ZM10.9992 7.52517C10.9992 8.07746 11.4469 8.52517 11.9992 8.52517H12.0002C12.5525 8.52517 13.0002 8.07746 13.0002 7.52517C13.0002 6.97289 12.5525 6.52517 12.0002 6.52517H11.9992C11.4469 6.52517 10.9992 6.97289 10.9992 7.52517ZM12.0002 17.3715C11.586 17.3715 11.2502 17.0357 11.2502 16.6215V10.945C11.2502 10.5308 11.586 10.195 12.0002 10.195C12.4144 10.195 12.7502 10.5308 12.7502 10.945V16.6215C12.7502 17.0357 12.4144 17.3715 12.0002 17.3715Z\"\n fill=\"\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"fill-current\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 11.9996C3.6501 7.38803 7.38852 3.64961 12.0001 3.64961C16.6117 3.64961 20.3501 7.38803 20.3501 11.9996C20.3501 16.6112 16.6117 20.3496 12.0001 20.3496C7.38852 20.3496 3.6501 16.6112 3.6501 11.9996ZM12.0001 1.84961C6.39441 1.84961 1.8501 6.39392 1.8501 11.9996C1.8501 17.6053 6.39441 22.1496 12.0001 22.1496C17.6058 22.1496 22.1501 17.6053 22.1501 11.9996C22.1501 6.39392 17.6058 1.84961 12.0001 1.84961ZM10.9992 7.52468C10.9992 8.07697 11.4469 8.52468 11.9992 8.52468H12.0002C12.5525 8.52468 13.0002 8.07697 13.0002 7.52468C13.0002 6.9724 12.5525 6.52468 12.0002 6.52468H11.9992C11.4469 6.52468 10.9992 6.9724 10.9992 7.52468ZM12.0002 17.371C11.586 17.371 11.2502 17.0352 11.2502 16.621V10.9445C11.2502 10.5303 11.586 10.1945 12.0002 10.1945C12.4144 10.1945 12.7502 10.5303 12.7502 10.9445V16.621C12.7502 17.0352 12.4144 17.371 12.0002 17.371Z\"\n fill=\"\"\n />\n </svg>\n ),\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { alertIcons } from \"./icons\";\n\nexport type AlertVariant = \"success\" | \"error\" | \"warning\" | \"info\";\n\nexport interface AlertProps\n extends React.HTMLAttributes<HTMLDivElement> {\n variant: AlertVariant;\n title: string;\n message: string;\n showLink?: boolean;\n linkHref?: string;\n linkText?: string;\n /** Override the default variant icon. */\n icon?: React.ReactNode;\n}\n\nconst variantClasses: Record<AlertVariant, { container: string; icon: string }> = {\n success: {\n container: \"border-success-500 bg-success-50 dark:border-success-500/30 dark:bg-success-500/15\",\n icon: \"text-success-500\",\n },\n error: {\n container: \"border-error-500 bg-error-50 dark:border-error-500/30 dark:bg-error-500/15\",\n icon: \"text-error-500\",\n },\n warning: {\n container: \"border-warning-500 bg-warning-50 dark:border-warning-500/30 dark:bg-warning-500/15\",\n icon: \"text-warning-500\",\n },\n info: {\n container: \"border-blue-light-500 bg-blue-light-50 dark:border-blue-light-500/30 dark:bg-blue-light-500/15\",\n icon: \"text-blue-light-500\",\n },\n};\n\nexport const Alert: React.FC<AlertProps> = ({\n variant,\n title,\n message,\n showLink = false,\n linkHref = \"#\",\n linkText = \"Learn more\",\n icon,\n className,\n ...rest\n}) => {\n return (\n <div\n className={cn(\"rounded-xl border p-4\", variantClasses[variant].container, className)}\n {...rest}\n >\n <div className=\"flex items-start gap-3\">\n <div className={cn(\"-mt-0.5\", variantClasses[variant].icon)}>\n {icon ?? alertIcons[variant]}\n </div>\n <div>\n <h4 className=\"mb-1 text-sm font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </h4>\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">{message}</p>\n {showLink && (\n <a\n href={linkHref}\n className=\"inline-block mt-3 text-sm font-medium text-gray-500 underline dark:text-gray-400\"\n >\n {linkText}\n </a>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type AvatarSize = \"xsmall\" | \"small\" | \"medium\" | \"large\" | \"xlarge\" | \"xxlarge\";\nexport type AvatarStatus = \"online\" | \"offline\" | \"busy\" | \"none\";\n\nexport interface AvatarProps\n extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"size\"> {\n src: string;\n alt?: string;\n size?: AvatarSize;\n status?: AvatarStatus;\n /** Override the status indicator color. */\n statusColor?: string;\n}\n\nconst sizeClasses: Record<AvatarSize, string> = {\n xsmall: \"h-6 w-6 max-w-6\",\n small: \"h-8 w-8 max-w-8\",\n medium: \"h-10 w-10 max-w-10\",\n large: \"h-12 w-12 max-w-12\",\n xlarge: \"h-14 w-14 max-w-14\",\n xxlarge: \"h-16 w-16 max-w-16\",\n};\n\nconst statusSizeClasses: Record<AvatarSize, string> = {\n xsmall: \"h-1.5 w-1.5 max-w-1.5\",\n small: \"h-2 w-2 max-w-2\",\n medium: \"h-2.5 w-2.5 max-w-2.5\",\n large: \"h-3 w-3 max-w-3\",\n xlarge: \"h-3.5 w-3.5 max-w-3.5\",\n xxlarge: \"h-4 w-4 max-w-4\",\n};\n\nconst statusColorClasses: Record<Exclude<AvatarStatus, \"none\">, string> = {\n online: \"bg-success-500\",\n offline: \"bg-error-400\",\n busy: \"bg-warning-500\",\n};\n\nexport const Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"User Avatar\",\n size = \"medium\",\n status = \"none\",\n statusColor,\n className,\n ...rest\n}) => {\n return (\n <div className={cn(\"relative rounded-full\", sizeClasses[size], className)}>\n <img\n src={src}\n alt={alt}\n className=\"object-cover w-full rounded-full\"\n {...rest}\n />\n {status !== \"none\" && (\n <span\n className={cn(\n \"absolute bottom-0 right-0 rounded-full border-[1.5px] border-white dark:border-gray-900\",\n statusSizeClasses[size],\n !statusColor && statusColorClasses[status]\n )}\n style={statusColor ? { backgroundColor: statusColor } : undefined}\n />\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface AvatarTextProps extends React.HTMLAttributes<HTMLDivElement> {\n name: string;\n}\n\nexport const AvatarText: React.FC<AvatarTextProps> = ({\n name,\n className,\n ...rest\n}) => {\n // Generate initials from name\n const initials = name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n\n // Generate a consistent pastel color based on the name\n const getColorClass = (name: string) => {\n const colors = [\n \"bg-brand-100 text-brand-600\",\n \"bg-pink-100 text-pink-600\",\n \"bg-cyan-100 text-cyan-600\",\n \"bg-orange-100 text-orange-600\",\n \"bg-green-100 text-green-600\",\n \"bg-purple-100 text-purple-600\",\n \"bg-yellow-100 text-yellow-600\",\n \"bg-error-100 text-error-600\",\n ];\n\n const index = name\n .split(\"\")\n .reduce((acc, char) => acc + char.charCodeAt(0), 0);\n return colors[index % colors.length];\n };\n\n return (\n <div\n className={cn(\n \"flex h-10 w-10 items-center justify-center rounded-full\",\n getColorClass(name),\n className\n )}\n {...rest}\n >\n <span className=\"text-sm font-medium\">{initials}</span>\n </div>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface DropdownProps extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n}\n\nexport const Dropdown: React.FC<DropdownProps> = ({\n isOpen,\n onClose,\n children,\n className,\n ...rest\n}) => {\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n !(event.target as HTMLElement).closest(\".dropdown-toggle\")\n ) {\n onClose();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [onClose]);\n\n if (!isOpen) return null;\n\n return (\n <div\n ref={dropdownRef}\n className={cn(\n \"absolute z-40 right-0 mt-2 rounded-xl border border-gray-200 bg-white shadow-theme-lg dark:border-gray-800 dark:bg-gray-dark\",\n className\n )}\n {...rest}\n >\n {children}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type DropdownItemVariant = \"default\" | \"primary\" | \"outline\";\n\nexport interface DropdownItemProps extends ColorOverrideProps {\n tag?: \"a\" | \"button\";\n href?: string;\n onClick?: () => void;\n onItemClick?: () => void;\n /** Visual style, mirroring Button: a plain menu row, a filled brand item, or an outlined one. */\n variant?: DropdownItemVariant;\n /** Full class override (escape hatch). When set, it replaces the variant styling. */\n baseClassName?: string;\n className?: string;\n children: React.ReactNode;\n}\n\nconst variantBase =\n \"flex w-full items-center gap-2 rounded-lg px-3 py-2 text-left text-sm font-medium transition\";\n\nconst variantClasses: Record<DropdownItemVariant, string> = {\n default:\n \"text-gray-700 hover:bg-gray-100 hover:text-gray-900 dark:text-gray-300 dark:hover:bg-white/5 dark:hover:text-white\",\n primary:\n \"bg-brand-500 text-white shadow-theme-xs hover:bg-brand-600\",\n outline:\n \"text-gray-700 ring-1 ring-inset ring-gray-300 hover:bg-gray-50 dark:text-gray-400 dark:ring-gray-700 dark:hover:bg-white/[0.03] dark:hover:text-gray-300\",\n};\n\nexport const DropdownItem: React.FC<DropdownItemProps> = ({\n tag = \"button\",\n href,\n onClick,\n onItemClick,\n variant = \"default\",\n baseClassName,\n className,\n bgColor,\n textColor,\n borderColor,\n children,\n}) => {\n const combinedClasses =\n baseClassName != null\n ? cn(baseClassName, className)\n : cn(variantBase, variantClasses[variant], className);\n\n const style = styleOverride({ bgColor, textColor, borderColor });\n\n const handleClick = (event: React.MouseEvent) => {\n if (tag === \"button\") {\n event.preventDefault();\n }\n if (onClick) onClick();\n if (onItemClick) onItemClick();\n };\n\n if (tag === \"a\" && href) {\n return (\n <a href={href} className={combinedClasses} style={style} onClick={handleClick}>\n {children}\n </a>\n );\n }\n\n return (\n <button onClick={handleClick} className={combinedClasses} style={style}>\n {children}\n </button>\n );\n};\n","\"use client\";\nimport React, { useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface DropzoneProps {\n /** Called with the dropped/selected files. */\n onDrop?: (files: File[]) => void;\n /** Accepted file types, e.g. \"image/png,image/jpeg\" (native input `accept`). */\n accept?: string;\n /** Allow selecting multiple files. Default: true. */\n multiple?: boolean;\n /** Heading text. Default: \"Drag & Drop Files Here\". */\n title?: string;\n /** Helper text under the heading. */\n description?: string;\n /** \"Browse\" call-to-action label. Default: \"Browse File\". */\n browseLabel?: string;\n /** Extra classes for the outer wrapper. */\n className?: string;\n}\n\n/** Drag-and-drop file upload area — dependency-free (native HTML5 drag/drop). */\nexport const Dropzone: React.FC<DropzoneProps> = ({\n onDrop,\n accept,\n multiple = true,\n title,\n description = \"Drag and drop your PNG, JPG, WebP, SVG images here or browse\",\n browseLabel = \"Browse File\",\n className,\n}) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isDragActive, setIsDragActive] = useState(false);\n\n const handleFiles = (list: FileList | null) => {\n if (list && list.length) onDrop?.(Array.from(list));\n };\n\n return (\n <div\n className={cn(\n \"cursor-pointer rounded-xl border border-dashed border-gray-300 transition hover:border-brand-500 dark:border-gray-700 dark:hover:border-brand-500\",\n className\n )}\n >\n <div\n onClick={() => inputRef.current?.click()}\n onDragOver={(e) => {\n e.preventDefault();\n setIsDragActive(true);\n }}\n onDragLeave={(e) => {\n e.preventDefault();\n setIsDragActive(false);\n }}\n onDrop={(e) => {\n e.preventDefault();\n setIsDragActive(false);\n handleFiles(e.dataTransfer.files);\n }}\n className={cn(\n \"rounded-xl border-dashed p-7 lg:p-10\",\n isDragActive\n ? \"border-brand-500 bg-gray-100 dark:bg-gray-800\"\n : \"border-gray-300 bg-gray-50 dark:border-gray-700 dark:bg-gray-900\"\n )}\n >\n <input\n ref={inputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n className=\"hidden\"\n onChange={(e) => handleFiles(e.target.files)}\n />\n\n <div className=\"flex flex-col items-center\">\n <div className=\"mb-[22px] flex justify-center\">\n <div className=\"flex h-[68px] w-[68px] items-center justify-center rounded-full bg-gray-200 text-gray-700 dark:bg-gray-800 dark:text-gray-400\">\n <svg className=\"fill-current\" width=\"29\" height=\"28\" viewBox=\"0 0 29 28\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M14.5019 3.91699C14.2852 3.91699 14.0899 4.00891 13.953 4.15589L8.57363 9.53186C8.28065 9.82466 8.2805 10.2995 8.5733 10.5925C8.8661 10.8855 9.34097 10.8857 9.63396 10.5929L13.7519 6.47752V18.667C13.7519 19.0812 14.0877 19.417 14.5019 19.417C14.9161 19.417 15.2519 19.0812 15.2519 18.667V6.48234L19.3653 10.5929C19.6583 10.8857 20.1332 10.8855 20.426 10.5925C20.7188 10.2995 20.7186 9.82463 20.4256 9.53184L15.0838 4.19378C14.9463 4.02488 14.7367 3.91699 14.5019 3.91699ZM5.91626 18.667C5.91626 18.2528 5.58047 17.917 5.16626 17.917C4.75205 17.917 4.41626 18.2528 4.41626 18.667V21.8337C4.41626 23.0763 5.42362 24.0837 6.66626 24.0837H22.3339C23.5766 24.0837 24.5839 23.0763 24.5839 21.8337V18.667C24.5839 18.2528 24.2482 17.917 23.8339 17.917C23.4197 17.917 23.0839 18.2528 23.0839 18.667V21.8337C23.0839 22.2479 22.7482 22.5837 22.3339 22.5837H6.66626C6.25205 22.5837 5.91626 22.2479 5.91626 21.8337V18.667Z\"\n />\n </svg>\n </div>\n </div>\n\n <h4 className=\"mb-3 text-theme-xl font-semibold text-gray-800 dark:text-white/90\">\n {title ?? (isDragActive ? \"Drop Files Here\" : \"Drag & Drop Files Here\")}\n </h4>\n\n <span className=\"mb-5 block w-full max-w-[290px] text-center text-sm text-gray-700 dark:text-gray-400\">\n {description}\n </span>\n\n <span className=\"text-theme-sm font-medium text-brand-500 underline\">\n {browseLabel}\n </span>\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n}\n\nexport const Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n}) => {\n const pagesAroundCurrent = Array.from(\n { length: Math.min(3, totalPages) },\n (_, i) => i + Math.max(currentPage - 1, 1)\n );\n\n return (\n <div className=\"flex items-center \">\n <button\n onClick={() => onPageChange(currentPage - 1)}\n disabled={currentPage === 1}\n aria-label=\"Previous\"\n className={cn(\n \"mr-2.5 flex items-center h-10 justify-center rounded-lg border border-gray-300 bg-white px-3.5 py-2.5 text-gray-700 shadow-theme-xs hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-white/[0.03] text-sm\"\n )}\n >\n Previous\n </button>\n <div className=\"flex items-center gap-2\">\n {currentPage > 3 && <span className=\"px-2\">...</span>}\n {pagesAroundCurrent.map((page) => (\n <button\n key={page}\n onClick={() => onPageChange(page)}\n aria-current={currentPage === page ? \"page\" : undefined}\n className={cn(\n \"flex w-10 items-center justify-center h-10 rounded-lg text-sm font-medium\",\n currentPage === page\n ? // active page keeps its color on hover (no hover restyle)\n \"bg-brand-500 text-white\"\n : // hover effect applies only to non-active page indices\n \"text-gray-700 hover:bg-blue-500/[0.08] hover:text-brand-500 dark:text-gray-400 dark:hover:text-brand-500\"\n )}\n >\n {page}\n </button>\n ))}\n {currentPage < totalPages - 2 && <span className=\"px-2\">...</span>}\n </div>\n <button\n onClick={() => onPageChange(currentPage + 1)}\n disabled={currentPage === totalPages}\n aria-label=\"Next\"\n className={cn(\n \"ml-2.5 flex items-center justify-center rounded-lg border border-gray-300 bg-white px-3.5 py-2.5 text-gray-700 shadow-theme-xs text-sm hover:bg-gray-50 h-10 disabled:opacity-50 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-white/[0.03]\"\n )}\n >\n Next\n </button>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport interface InputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"color\">,\n ColorOverrideProps {\n success?: boolean;\n error?: boolean;\n hint?: string;\n}\n\nexport const Input: React.FC<InputProps> = ({\n className,\n disabled = false,\n success = false,\n error = false,\n hint,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const stateClass = disabled\n ? \"text-gray-500 border-gray-300 cursor-not-allowed dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700\"\n : error\n ? \"text-error-800 border-error-500 focus:ring-3 focus:ring-error-500/10 dark:text-error-400 dark:border-error-500\"\n : success\n ? \"text-success-500 border-success-400 focus:ring-success-500/10 focus:border-success-300 dark:text-success-400 dark:border-success-500\"\n : \"bg-transparent text-gray-800 border-gray-300 focus:border-brand-300 focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus:border-brand-800\";\n\n return (\n <div className=\"relative\">\n <input\n disabled={disabled}\n className={cn(\n \"h-11 w-full rounded-lg border appearance-none px-4 py-2.5 text-sm shadow-theme-xs placeholder:text-gray-400 focus:outline-hidden focus:ring-3 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\",\n stateClass,\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n />\n {hint && (\n <p className={cn(\"mt-1.5 text-xs\", error ? \"text-error-500\" : success ? \"text-success-500\" : \"text-gray-500\")}>\n {hint}\n </p>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useMemo, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { Pagination } from \"../Pagination/Pagination\";\nimport { Input } from \"../Form/Input\";\n\nexport type SortDirection = \"asc\" | \"desc\";\n\nexport interface TableColumn<T> {\n /** Key into the row object — also the value used for sorting/searching. */\n key: Extract<keyof T, string>;\n /** Column header label. */\n header: React.ReactNode;\n /** Allow click-to-sort on this column. Default: false. */\n sortable?: boolean;\n /** Cell + header text alignment. Default: \"left\". */\n align?: \"left\" | \"center\" | \"right\";\n /** Custom cell renderer. Falls back to `String(row[key])`. */\n render?: (row: T, rowIndex: number) => React.ReactNode;\n /** Extra classes applied to this column's header and body cells. */\n className?: string;\n}\n\nexport interface TableProps<T = Record<string, unknown>>\n extends Omit<React.TableHTMLAttributes<HTMLTableElement>, \"children\"> {\n /**\n * Composable content (Table / TableHeader / TableBody / TableRow / TableCell).\n * Used when `columns` is **not** provided.\n */\n children?: React.ReactNode;\n\n /* ── data-driven mode (set `columns` to enable search + sort + pagination) ── */\n\n /** The array of row objects to display. */\n data?: T[];\n /** Column definitions. Providing this switches Table into data-driven mode. */\n columns?: TableColumn<T>[];\n /** Maximum number of rows shown per page. Default: 10. */\n rowsPerPage?: number;\n /** Options for the \"Show N entries\" selector. Default: [5, 10, 25, 50]. Pass [] to hide it. */\n rowsPerPageOptions?: number[];\n /** Render pagination controls + the entry counter. Default: true. */\n pagination?: boolean;\n /** Render the \"Show N entries\" selector (only when pagination is on). Default: true. */\n showSizeSelector?: boolean;\n /**\n * Fields matched when searching. The search input is shown **only** when this\n * is a non-empty array — omit it (or pass `[]`) to hide the search box.\n */\n searchKeys?: Extract<keyof T, string>[];\n /** Placeholder for the search field. Default: \"Search...\". */\n searchPlaceholder?: string;\n /** Column sorted on first render. */\n defaultSortKey?: Extract<keyof T, string>;\n /** Initial sort direction. Default: \"asc\". */\n defaultSortDirection?: SortDirection;\n /** Stable key for a row. Defaults to the row index. */\n getRowId?: (row: T, index: number) => string | number;\n /** Fires when a row is clicked (also makes rows hoverable/clickable). */\n onRowClick?: (row: T, index: number) => void;\n /** Shown when no rows match. Default: \"No matching records\". */\n emptyContent?: React.ReactNode;\n}\n\nexport interface TableSectionProps\n extends React.HTMLAttributes<HTMLTableSectionElement> {}\nexport const TableHeader: React.FC<TableSectionProps> = ({ children, className, ...rest }) => (\n <thead className={className} {...rest}>{children}</thead>\n);\nexport const TableBody: React.FC<TableSectionProps> = ({ children, className, ...rest }) => (\n <tbody className={className} {...rest}>{children}</tbody>\n);\n\nexport interface TableRowProps extends React.HTMLAttributes<HTMLTableRowElement> {}\nexport const TableRow: React.FC<TableRowProps> = ({ children, className, ...rest }) => (\n <tr className={className} {...rest}>{children}</tr>\n);\n\nexport interface TableCellProps\n extends React.TdHTMLAttributes<HTMLTableCellElement> {\n isHeader?: boolean;\n}\nexport const TableCell: React.FC<TableCellProps> = ({\n children,\n isHeader = false,\n className,\n ...rest\n}) => {\n const Tag = isHeader ? \"th\" : \"td\";\n return <Tag className={className} {...rest}>{children}</Tag>;\n};\n\nconst alignClass = {\n left: \"text-left\",\n center: \"text-center\",\n right: \"text-right\",\n} as const;\n\nfunction SortIcon({\n active,\n direction,\n}: {\n active: boolean;\n direction: SortDirection;\n}) {\n const on = \"text-brand-500\";\n const off = \"text-gray-400 dark:text-gray-600\";\n return (\n <span className=\"inline-flex flex-col leading-none\">\n <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"currentColor\" aria-hidden=\"true\" className={active && direction === \"asc\" ? on : off}>\n <path d=\"M5 0 9 5H1z\" />\n </svg>\n <svg width=\"10\" height=\"6\" viewBox=\"0 0 10 6\" fill=\"currentColor\" aria-hidden=\"true\" className={active && direction === \"desc\" ? on : off}>\n <path d=\"M5 6 1 1h8z\" />\n </svg>\n </span>\n );\n}\n\ninterface DataTableInnerProps<T> {\n data: T[];\n columns: TableColumn<T>[];\n rowsPerPage?: number;\n rowsPerPageOptions?: number[];\n pagination?: boolean;\n showSizeSelector?: boolean;\n searchKeys?: Extract<keyof T, string>[];\n searchPlaceholder?: string;\n defaultSortKey?: Extract<keyof T, string>;\n defaultSortDirection?: SortDirection;\n getRowId?: (row: T, index: number) => string | number;\n onRowClick?: (row: T, index: number) => void;\n emptyContent?: React.ReactNode;\n className?: string;\n}\n\nfunction DataDrivenTable<T extends Record<string, unknown>>({\n data,\n columns,\n rowsPerPage = 10,\n rowsPerPageOptions = [5, 10, 25, 50],\n pagination = true,\n showSizeSelector = true,\n searchKeys,\n searchPlaceholder = \"Search...\",\n defaultSortKey,\n defaultSortDirection = \"asc\",\n getRowId,\n onRowClick,\n emptyContent = \"No matching records\",\n className,\n}: DataTableInnerProps<T>) {\n const [search, setSearch] = useState(\"\");\n const [pageSize, setPageSize] = useState(rowsPerPage);\n const [sortKey, setSortKey] = useState<Extract<keyof T, string> | undefined>(defaultSortKey);\n const [sortDir, setSortDir] = useState<SortDirection>(defaultSortDirection);\n const [page, setPage] = useState(1);\n\n // Search is only available when explicit search keys are provided.\n const showSearch = !!(searchKeys && searchKeys.length > 0);\n\n const filtered = useMemo(() => {\n const q = search.trim().toLowerCase();\n let rows = data;\n if (showSearch && q) {\n rows = rows.filter((row) =>\n searchKeys!.some((k) => String(row[k] ?? \"\").toLowerCase().includes(q))\n );\n }\n if (sortKey) {\n rows = [...rows].sort((a, b) => {\n const av = a[sortKey];\n const bv = b[sortKey];\n const cmp =\n typeof av === \"number\" && typeof bv === \"number\"\n ? av - bv\n : String(av ?? \"\").localeCompare(String(bv ?? \"\"));\n return sortDir === \"asc\" ? cmp : -cmp;\n });\n }\n return rows;\n }, [data, search, showSearch, searchKeys, sortKey, sortDir]);\n\n const total = filtered.length;\n const totalPages = pagination ? Math.max(1, Math.ceil(total / pageSize)) : 1;\n const current = Math.min(page, totalPages);\n const start = pagination ? (current - 1) * pageSize : 0;\n const pageRows = pagination ? filtered.slice(start, start + pageSize) : filtered;\n\n const toggleSort = (col: TableColumn<T>) => {\n if (!col.sortable) return;\n if (sortKey === col.key) setSortDir((d) => (d === \"asc\" ? \"desc\" : \"asc\"));\n else {\n setSortKey(col.key);\n setSortDir(\"asc\");\n }\n setPage(1);\n };\n\n const sizeOptions = rowsPerPageOptions.length ? rowsPerPageOptions : [];\n const showSelector = pagination && showSizeSelector && sizeOptions.length > 1;\n const showControls = showSearch || showSelector;\n\n return (\n <div\n className={cn(\n \"rounded-xl border border-gray-200 bg-white dark:border-white/[0.05] dark:bg-white/[0.03]\",\n className\n )}\n >\n {showControls && (\n <div className=\"flex flex-wrap items-center justify-between gap-3 p-4\">\n {showSelector ? (\n <label className=\"flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400\">\n Show\n <select\n aria-label=\"Rows per page\"\n value={pageSize}\n onChange={(e) => {\n setPageSize(Number(e.target.value));\n setPage(1);\n }}\n className=\"rounded-lg border border-gray-200 bg-transparent px-2 py-1.5 text-sm text-gray-700 dark:border-white/[0.08] dark:text-white/90\"\n >\n {sizeOptions.map((n) => (\n <option key={n} value={n}>\n {n}\n </option>\n ))}\n </select>\n entries\n </label>\n ) : (\n <span />\n )}\n {showSearch && (\n <Input\n type=\"search\"\n aria-label=\"Search\"\n placeholder={searchPlaceholder}\n value={search}\n onChange={(e) => {\n setSearch(e.target.value);\n setPage(1);\n }}\n className=\"max-w-[220px]\"\n />\n )}\n </div>\n )}\n\n <div className=\"overflow-x-auto border-y border-gray-100 dark:border-white/[0.05]\">\n <table className=\"min-w-full\">\n <TableHeader className=\"border-b border-gray-100 bg-gray-50 dark:border-white/[0.05] dark:bg-white/[0.06]\">\n <TableRow>\n {columns.map((col) => {\n const isActive = sortKey === col.key;\n return (\n <TableCell\n key={col.key}\n isHeader\n className={cn(\n \"whitespace-nowrap px-5 py-3 text-xs font-semibold text-gray-700 dark:text-gray-300\",\n alignClass[col.align ?? \"left\"],\n col.className\n )}\n >\n {col.sortable ? (\n <button\n type=\"button\"\n onClick={() => toggleSort(col)}\n aria-label={`Sort by ${typeof col.header === \"string\" ? col.header : col.key}`}\n className=\"inline-flex select-none items-center gap-1.5 hover:text-gray-900 dark:hover:text-white\"\n >\n {col.header}\n <SortIcon active={isActive} direction={isActive ? sortDir : \"asc\"} />\n </button>\n ) : (\n col.header\n )}\n </TableCell>\n );\n })}\n </TableRow>\n </TableHeader>\n <TableBody className=\"divide-y divide-gray-100 dark:divide-white/[0.05]\">\n {pageRows.map((row, i) => {\n const index = start + i;\n const id = getRowId ? getRowId(row, index) : index;\n return (\n <TableRow\n key={id}\n onClick={onRowClick ? () => onRowClick(row, index) : undefined}\n className={cn(onRowClick && \"cursor-pointer hover:bg-gray-50 dark:hover:bg-white/[0.03]\")}\n >\n {columns.map((col) => (\n <TableCell\n key={col.key}\n className={cn(\n \"whitespace-nowrap px-5 py-3.5 text-sm text-gray-700 dark:text-gray-300\",\n alignClass[col.align ?? \"left\"],\n col.className\n )}\n >\n {col.render ? col.render(row, index) : String(row[col.key] ?? \"\")}\n </TableCell>\n ))}\n </TableRow>\n );\n })}\n {pageRows.length === 0 && (\n <TableRow>\n <TableCell colSpan={columns.length} className=\"px-5 py-6 text-center text-sm text-gray-400\">\n {emptyContent}\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </table>\n </div>\n\n {pagination && (\n <div className=\"flex flex-wrap items-center justify-between gap-3 p-4\">\n <p className=\"text-sm text-gray-500 dark:text-gray-400\">\n {total === 0\n ? \"Showing 0 entries\"\n : `Showing ${start + 1} to ${Math.min(start + pageSize, total)} of ${total} entries`}\n </p>\n {totalPages > 1 && (\n <Pagination currentPage={current} totalPages={totalPages} onPageChange={setPage} />\n )}\n </div>\n )}\n </div>\n );\n}\n\nexport function Table<T extends Record<string, unknown> = Record<string, unknown>>({\n children,\n data,\n columns,\n rowsPerPage,\n rowsPerPageOptions,\n pagination,\n showSizeSelector,\n searchKeys,\n searchPlaceholder,\n defaultSortKey,\n defaultSortDirection,\n getRowId,\n onRowClick,\n emptyContent,\n className,\n ...rest\n}: TableProps<T>) {\n // Data-driven mode: rich table with search / sort / pagination.\n if (columns && data) {\n return (\n <DataDrivenTable\n data={data}\n columns={columns}\n rowsPerPage={rowsPerPage}\n rowsPerPageOptions={rowsPerPageOptions}\n pagination={pagination}\n showSizeSelector={showSizeSelector}\n searchKeys={searchKeys}\n searchPlaceholder={searchPlaceholder}\n defaultSortKey={defaultSortKey}\n defaultSortDirection={defaultSortDirection}\n getRowId={getRowId}\n onRowClick={onRowClick}\n emptyContent={emptyContent}\n className={className}\n />\n );\n }\n\n // Composable mode: thin wrapper around <table>.\n return (\n <table className={cn(\"min-w-full\", className)} {...rest}>\n {children}\n </table>\n );\n}\n","import React from \"react\";\n\nexport interface BreadcrumbItem {\n label: string;\n href?: string;\n}\n\nexport interface BreadcrumbProps {\n pageTitle: string;\n items?: BreadcrumbItem[];\n}\n\nconst ChevronIcon: React.FC = () => (\n <svg\n className=\"stroke-current\"\n width=\"17\"\n height=\"16\"\n viewBox=\"0 0 17 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M6.0765 12.667L10.2432 8.50033L6.0765 4.33366\"\n stroke=\"\"\n strokeWidth=\"1.2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Breadcrumb: React.FC<BreadcrumbProps> = ({ pageTitle, items }) => {\n return (\n <div className=\"flex flex-wrap items-center justify-between gap-3 mb-6\">\n <h2\n className=\"text-xl font-semibold text-gray-800 dark:text-white/90\"\n x-text=\"pageName\"\n >\n {pageTitle}\n </h2>\n <nav>\n <ol className=\"flex items-center gap-1.5\">\n <li>\n <a\n className=\"inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-gray-400\"\n href=\"/\"\n >\n Home\n <ChevronIcon />\n </a>\n </li>\n {items?.map((item, index) => (\n <li key={index}>\n {item.href ? (\n <a\n className=\"inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-gray-400\"\n href={item.href}\n >\n {item.label}\n <ChevronIcon />\n </a>\n ) : (\n <span className=\"inline-flex items-center gap-1.5 text-sm text-gray-500 dark:text-gray-400\">\n {item.label}\n <ChevronIcon />\n </span>\n )}\n </li>\n ))}\n <li className=\"text-sm text-gray-800 dark:text-white/90\">\n {pageTitle}\n </li>\n </ol>\n </nav>\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface ThemeToggleButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n theme?: \"light\" | \"dark\";\n onToggle?: () => void;\n}\n\nexport const ThemeToggleButton: React.FC<ThemeToggleButtonProps> = ({\n theme,\n onToggle,\n className,\n onClick,\n ...rest\n}) => {\n const [internalTheme, setInternalTheme] = useState<\"light\" | \"dark\">(\"light\");\n const isControlled = theme !== undefined;\n const currentTheme = isControlled ? theme : internalTheme;\n\n const handleClick: React.MouseEventHandler<HTMLButtonElement> = (e) => {\n if (onToggle) {\n onToggle();\n } else if (!isControlled) {\n setInternalTheme((prev) => (prev === \"light\" ? \"dark\" : \"light\"));\n }\n onClick?.(e);\n };\n\n return (\n <button\n onClick={handleClick}\n data-theme={currentTheme}\n className={cn(\n \"relative flex items-center justify-center text-gray-500 transition-colors bg-white border border-gray-200 rounded-full hover:text-dark-900 h-11 w-11 hover:bg-gray-100 hover:text-gray-700 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-white\",\n className\n )}\n {...rest}\n >\n <svg\n className=\"hidden dark:block\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M9.99998 1.5415C10.4142 1.5415 10.75 1.87729 10.75 2.2915V3.5415C10.75 3.95572 10.4142 4.2915 9.99998 4.2915C9.58577 4.2915 9.24998 3.95572 9.24998 3.5415V2.2915C9.24998 1.87729 9.58577 1.5415 9.99998 1.5415ZM10.0009 6.79327C8.22978 6.79327 6.79402 8.22904 6.79402 10.0001C6.79402 11.7712 8.22978 13.207 10.0009 13.207C11.772 13.207 13.2078 11.7712 13.2078 10.0001C13.2078 8.22904 11.772 6.79327 10.0009 6.79327ZM5.29402 10.0001C5.29402 7.40061 7.40135 5.29327 10.0009 5.29327C12.6004 5.29327 14.7078 7.40061 14.7078 10.0001C14.7078 12.5997 12.6004 14.707 10.0009 14.707C7.40135 14.707 5.29402 12.5997 5.29402 10.0001ZM15.9813 5.08035C16.2742 4.78746 16.2742 4.31258 15.9813 4.01969C15.6884 3.7268 15.2135 3.7268 14.9207 4.01969L14.0368 4.90357C13.7439 5.19647 13.7439 5.67134 14.0368 5.96423C14.3297 6.25713 14.8045 6.25713 15.0974 5.96423L15.9813 5.08035ZM18.4577 10.0001C18.4577 10.4143 18.1219 10.7501 17.7077 10.7501H16.4577C16.0435 10.7501 15.7077 10.4143 15.7077 10.0001C15.7077 9.58592 16.0435 9.25013 16.4577 9.25013H17.7077C18.1219 9.25013 18.4577 9.58592 18.4577 10.0001ZM14.9207 15.9806C15.2135 16.2735 15.6884 16.2735 15.9813 15.9806C16.2742 15.6877 16.2742 15.2128 15.9813 14.9199L15.0974 14.036C14.8045 13.7431 14.3297 13.7431 14.0368 14.036C13.7439 14.3289 13.7439 14.8038 14.0368 15.0967L14.9207 15.9806ZM9.99998 15.7088C10.4142 15.7088 10.75 16.0445 10.75 16.4588V17.7088C10.75 18.123 10.4142 18.4588 9.99998 18.4588C9.58577 18.4588 9.24998 18.123 9.24998 17.7088V16.4588C9.24998 16.0445 9.58577 15.7088 9.99998 15.7088ZM5.96356 15.0972C6.25646 14.8043 6.25646 14.3295 5.96356 14.0366C5.67067 13.7437 5.1958 13.7437 4.9029 14.0366L4.01902 14.9204C3.72613 15.2133 3.72613 15.6882 4.01902 15.9811C4.31191 16.274 4.78679 16.274 5.07968 15.9811L5.96356 15.0972ZM4.29224 10.0001C4.29224 10.4143 3.95645 10.7501 3.54224 10.7501H2.29224C1.87802 10.7501 1.54224 10.4143 1.54224 10.0001C1.54224 9.58592 1.87802 9.25013 2.29224 9.25013H3.54224C3.95645 9.25013 4.29224 9.58592 4.29224 10.0001ZM4.9029 5.9637C5.1958 6.25659 5.67067 6.25659 5.96356 5.9637C6.25646 5.6708 6.25646 5.19593 5.96356 4.90303L5.07968 4.01915C4.78679 3.72626 4.31191 3.72626 4.01902 4.01915C3.72613 4.31204 3.72613 4.78692 4.01902 5.07981L4.9029 5.9637Z\"\n fill=\"currentColor\"\n />\n </svg>\n <svg\n className=\"dark:hidden\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M17.4547 11.97L18.1799 12.1611C18.265 11.8383 18.1265 11.4982 17.8401 11.3266C17.5538 11.1551 17.1885 11.1934 16.944 11.4207L17.4547 11.97ZM8.0306 2.5459L8.57989 3.05657C8.80718 2.81209 8.84554 2.44682 8.67398 2.16046C8.50243 1.8741 8.16227 1.73559 7.83948 1.82066L8.0306 2.5459ZM12.9154 13.0035C9.64678 13.0035 6.99707 10.3538 6.99707 7.08524H5.49707C5.49707 11.1823 8.81835 14.5035 12.9154 14.5035V13.0035ZM16.944 11.4207C15.8869 12.4035 14.4721 13.0035 12.9154 13.0035V14.5035C14.8657 14.5035 16.6418 13.7499 17.9654 12.5193L16.944 11.4207ZM16.7295 11.7789C15.9437 14.7607 13.2277 16.9586 10.0003 16.9586V18.4586C13.9257 18.4586 17.2249 15.7853 18.1799 12.1611L16.7295 11.7789ZM10.0003 16.9586C6.15734 16.9586 3.04199 13.8433 3.04199 10.0003H1.54199C1.54199 14.6717 5.32892 18.4586 10.0003 18.4586V16.9586ZM3.04199 10.0003C3.04199 6.77289 5.23988 4.05695 8.22173 3.27114L7.83948 1.82066C4.21532 2.77574 1.54199 6.07486 1.54199 10.0003H3.04199ZM6.99707 7.08524C6.99707 5.52854 7.5971 4.11366 8.57989 3.05657L7.48132 2.03522C6.25073 3.35885 5.49707 5.13487 5.49707 7.08524H6.99707Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport interface CardProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n ColorOverrideProps {\n /** Heading shown above the description. */\n title?: React.ReactNode;\n /** Supporting text rendered under the title. */\n description?: React.ReactNode;\n /** Icon rendered in a rounded square above the title. */\n icon?: React.ReactNode;\n /** Optional cover image source. Rendered on top (or alongside when `horizontal`). */\n image?: string;\n /** Alt text for the cover image. */\n imageAlt?: string;\n /** Lay the image alongside the content instead of on top. */\n horizontal?: boolean;\n /** Footer area, e.g. a link or a `Button` call-to-action. */\n footer?: React.ReactNode;\n /** Custom body content, rendered after the description. */\n children?: React.ReactNode;\n}\n\nexport const Card: React.FC<CardProps> = ({\n title,\n description,\n icon,\n image,\n imageAlt = \"\",\n horizontal = false,\n footer,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const cover = image ? (\n <img\n src={image}\n alt={imageAlt}\n className={cn(\n \"object-cover\",\n horizontal\n ? \"h-full w-full sm:w-2/5 sm:max-w-[16rem]\"\n : \"h-48 w-full\"\n )}\n />\n ) : null;\n\n return (\n <div\n className={cn(\n \"overflow-hidden rounded-2xl border border-gray-200 bg-white dark:border-gray-800 dark:bg-white/[0.03]\",\n horizontal && image && \"flex flex-col sm:flex-row\",\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {cover}\n <div className=\"flex-1 p-5 sm:p-6\">\n {icon && (\n <div className=\"mb-5 flex h-12 w-12 items-center justify-center rounded-xl bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400\">\n {icon}\n </div>\n )}\n {title && (\n <h3 className=\"text-lg font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </h3>\n )}\n {description && (\n <p className=\"mt-1 text-sm text-gray-500 dark:text-gray-400\">\n {description}\n </p>\n )}\n {children}\n {footer && <div className=\"mt-4\">{footer}</div>}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport type { ToastVariant } from \"./Toast\";\n\nexport const toastIcons: Record<ToastVariant, React.ReactNode> = {\n success: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.70186 12.0001C3.70186 7.41711 7.41711 3.70186 12.0001 3.70186C16.5831 3.70186 20.2984 7.41711 20.2984 12.0001C20.2984 16.5831 16.5831 20.2984 12.0001 20.2984C7.41711 20.2984 3.70186 16.5831 3.70186 12.0001ZM12.0001 1.90186C6.423 1.90186 1.90186 6.423 1.90186 12.0001C1.90186 17.5772 6.423 22.0984 12.0001 22.0984C17.5772 22.0984 22.0984 17.5772 22.0984 12.0001C22.0984 6.423 17.5772 1.90186 12.0001 1.90186ZM15.6197 10.7395C15.9712 10.388 15.9712 9.81819 15.6197 9.46672C15.2683 9.11525 14.6984 9.11525 14.347 9.46672L11.1894 12.6243L9.6533 11.0883C9.30183 10.7368 8.73198 10.7368 8.38051 11.0883C8.02904 11.4397 8.02904 12.0096 8.38051 12.3611L10.553 14.5335C10.7217 14.7023 10.9507 14.7971 11.1894 14.7971C11.428 14.7971 11.657 14.7023 11.8257 14.5335L15.6197 10.7395Z\"\n />\n </svg>\n ),\n danger: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M20.3499 12.0004C20.3499 16.612 16.6115 20.3504 11.9999 20.3504C7.38832 20.3504 3.6499 16.612 3.6499 12.0004C3.6499 7.38881 7.38833 3.65039 11.9999 3.65039C16.6115 3.65039 20.3499 7.38881 20.3499 12.0004ZM11.9999 22.1504C17.6056 22.1504 22.1499 17.6061 22.1499 12.0004C22.1499 6.3947 17.6056 1.85039 11.9999 1.85039C6.39421 1.85039 1.8499 6.3947 1.8499 12.0004C1.8499 17.6061 6.39421 22.1504 11.9999 22.1504ZM13.0008 16.4753C13.0008 15.923 12.5531 15.4753 12.0008 15.4753L11.9998 15.4753C11.4475 15.4753 10.9998 15.923 10.9998 16.4753C10.9998 17.0276 11.4475 17.4753 11.9998 17.4753L12.0008 17.4753C12.5531 17.4753 13.0008 17.0276 13.0008 16.4753ZM11.9998 6.62898C12.414 6.62898 12.7498 6.96476 12.7498 7.37898L12.7498 13.0555C12.7498 13.4697 12.414 13.8055 11.9998 13.8055C11.5856 13.8055 11.2498 13.4697 11.2498 13.0555L11.2498 7.37898C11.2498 6.96476 11.5856 6.62898 11.9998 6.62898Z\"\n />\n </svg>\n ),\n warning: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 12.0001C3.6501 7.38852 7.38852 3.6501 12.0001 3.6501C16.6117 3.6501 20.3501 7.38852 20.3501 12.0001C20.3501 16.6117 16.6117 20.3501 12.0001 20.3501C7.38852 20.3501 3.6501 16.6117 3.6501 12.0001ZM12.0001 1.8501C6.39441 1.8501 1.8501 6.39441 1.8501 12.0001C1.8501 17.6058 6.39441 22.1501 12.0001 22.1501C17.6058 22.1501 22.1501 17.6058 22.1501 12.0001C22.1501 6.39441 17.6058 1.8501 12.0001 1.8501ZM10.9992 7.52517C10.9992 8.07746 11.4469 8.52517 11.9992 8.52517H12.0002C12.5525 8.52517 13.0002 8.07746 13.0002 7.52517C13.0002 6.97289 12.5525 6.52517 12.0002 6.52517H11.9992C11.4469 6.52517 10.9992 6.97289 10.9992 7.52517ZM12.0002 17.3715C11.586 17.3715 11.2502 17.0357 11.2502 16.6215V10.945C11.2502 10.5308 11.586 10.195 12.0002 10.195C12.4144 10.195 12.7502 10.5308 12.7502 10.945V16.6215C12.7502 17.0357 12.4144 17.3715 12.0002 17.3715Z\"\n />\n </svg>\n ),\n info: (\n <svg\n className=\"fill-current\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.6501 11.9996C3.6501 7.38803 7.38852 3.64961 12.0001 3.64961C16.6117 3.64961 20.3501 7.38803 20.3501 11.9996C20.3501 16.6112 16.6117 20.3496 12.0001 20.3496C7.38852 20.3496 3.6501 16.6112 3.6501 11.9996ZM12.0001 1.84961C6.39441 1.84961 1.8501 6.39392 1.8501 11.9996C1.8501 17.6053 6.39441 22.1496 12.0001 22.1496C17.6058 22.1496 22.1501 17.6053 22.1501 11.9996C22.1501 6.39392 17.6058 1.84961 12.0001 1.84961ZM10.9992 7.52468C10.9992 8.07697 11.4469 8.52468 11.9992 8.52468H12.0002C12.5525 8.52468 13.0002 8.07697 13.0002 7.52468C13.0002 6.9724 12.5525 6.52468 12.0002 6.52468H11.9992C11.4469 6.52468 10.9992 6.9724 10.9992 7.52468ZM12.0002 17.371C11.586 17.371 11.2502 17.0352 11.2502 16.621V10.9445C11.2502 10.5303 11.586 10.1945 12.0002 10.1945C12.4144 10.1945 12.7502 10.5303 12.7502 10.9445V16.621C12.7502 17.0352 12.4144 17.371 12.0002 17.371Z\"\n />\n </svg>\n ),\n};\n\nexport const ToastCloseIcon: React.ReactNode = (\n <svg\n width=\"18\"\n height=\"18\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.04 16.54a.9.9 0 0 0 1.27 1.27L12 13.14l4.69 4.67a.9.9 0 1 0 1.27-1.27L13.27 11.87l4.69-4.68a.9.9 0 1 0-1.27-1.27L12 10.6 7.31 5.92a.9.9 0 0 0-1.27 1.27l4.69 4.68-4.69 4.67Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\nimport { toastIcons, ToastCloseIcon } from \"./icons\";\n\nexport type ToastVariant = \"success\" | \"danger\" | \"warning\" | \"info\";\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\">,\n ColorOverrideProps {\n /** Color/severity variant. */\n variant?: ToastVariant;\n title: React.ReactNode;\n message?: React.ReactNode;\n /** Override the default variant icon. */\n icon?: React.ReactNode;\n /** Hide the leading icon entirely. */\n hideIcon?: boolean;\n /** Render the dismiss button (default `true`). */\n showCloseButton?: boolean;\n /** Called when the close button is clicked. */\n onClose?: () => void;\n /** Hide the colored accent bar at the bottom. */\n hideAccentBar?: boolean;\n}\n\nconst variantStyles: Record<ToastVariant, { iconWrap: string; bar: string }> = {\n success: {\n iconWrap:\n \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n bar: \"bg-success-500\",\n },\n danger: {\n iconWrap:\n \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n bar: \"bg-error-500\",\n },\n warning: {\n iconWrap:\n \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n bar: \"bg-warning-500\",\n },\n info: {\n iconWrap:\n \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n bar: \"bg-blue-light-500\",\n },\n};\n\nexport const Toast: React.FC<ToastProps> = ({\n variant = \"success\",\n title,\n message,\n icon,\n hideIcon = false,\n showCloseButton = true,\n onClose,\n hideAccentBar = false,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const styles = variantStyles[variant];\n return (\n <div\n role=\"alert\"\n className={cn(\n \"relative flex items-center gap-3 overflow-hidden rounded-xl border border-gray-200 bg-white px-4 py-3.5 pr-10 shadow-theme-sm dark:border-gray-800 dark:bg-white/[0.03]\",\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {!hideIcon && (\n <span\n className={cn(\n \"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg\",\n styles.iconWrap\n )}\n >\n {icon ?? toastIcons[variant]}\n </span>\n )}\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-semibold text-gray-800 dark:text-white/90\">\n {title}\n </p>\n {message && (\n <p className=\"mt-0.5 text-sm text-gray-500 dark:text-gray-400\">\n {message}\n </p>\n )}\n </div>\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close\"\n onClick={onClose}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 transition hover:text-gray-700 dark:hover:text-gray-200\"\n >\n {ToastCloseIcon}\n </button>\n )}\n {!hideAccentBar && (\n <span\n className={cn(\"absolute inset-x-0 bottom-0 h-1\", styles.bar)}\n aria-hidden=\"true\"\n />\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useState, useCallback } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type AccordionSelectionMode = \"single\" | \"multiple\";\n\nexport interface AccordionItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Unique key identifying this item. */\n itemKey: string;\n /** Header content. */\n title: React.ReactNode;\n /** Optional content rendered before the title (e.g. an icon). */\n startContent?: React.ReactNode;\n /** Disable expand/collapse for this item. */\n disabled?: boolean;\n}\n\ninterface AccordionContextValue {\n expanded: string[];\n toggle: (key: string) => void;\n}\n\nconst AccordionContext = React.createContext<AccordionContextValue | null>(null);\n\nconst ChevronIcon: React.FC<{ open: boolean }> = ({ open }) => (\n <svg\n className={cn(\n \"h-5 w-5 shrink-0 text-gray-500 transition-transform duration-200 dark:text-gray-400\",\n open && \"rotate-180\"\n )}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M5 7.5L10 12.5L15 7.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const AccordionItem: React.FC<AccordionItemProps> = ({\n itemKey,\n title,\n startContent,\n disabled = false,\n children,\n className,\n ...rest\n}) => {\n const ctx = React.useContext(AccordionContext);\n if (!ctx) {\n throw new Error(\"AccordionItem must be used within an Accordion\");\n }\n const open = ctx.expanded.includes(itemKey);\n const panelId = `accordion-panel-${itemKey}`;\n const buttonId = `accordion-button-${itemKey}`;\n\n return (\n <div\n className={cn(\n \"border-b border-gray-200 last:border-b-0 dark:border-gray-800\",\n className\n )}\n {...rest}\n >\n <h3>\n <button\n type=\"button\"\n id={buttonId}\n aria-expanded={open}\n aria-controls={panelId}\n disabled={disabled}\n onClick={() => !disabled && ctx.toggle(itemKey)}\n className={cn(\n \"flex w-full items-center gap-3 px-4 py-4 text-left text-sm font-medium text-gray-800 transition dark:text-white/90\",\n disabled\n ? \"cursor-not-allowed opacity-50\"\n : \"hover:bg-gray-50 dark:hover:bg-white/[0.03]\"\n )}\n >\n {startContent && (\n <span className=\"flex items-center\">{startContent}</span>\n )}\n <span className=\"flex-1\">{title}</span>\n <ChevronIcon open={open} />\n </button>\n </h3>\n <div\n id={panelId}\n role=\"region\"\n aria-labelledby={buttonId}\n hidden={!open}\n className={cn(\n \"grid transition-all duration-200 ease-in-out\",\n open ? \"grid-rows-[1fr] opacity-100\" : \"grid-rows-[0fr] opacity-0\"\n )}\n >\n <div className=\"overflow-hidden\">\n <div className=\"px-4 pb-4 text-sm text-gray-500 dark:text-gray-400\">\n {children}\n </div>\n </div>\n </div>\n </div>\n );\n};\n\nexport interface AccordionProps extends React.HTMLAttributes<HTMLDivElement> {\n /** \"single\" allows one open item, \"multiple\" allows many. */\n selectionMode?: AccordionSelectionMode;\n /** Uncontrolled initial expanded keys. */\n defaultExpandedKeys?: string[];\n /** Controlled expanded keys. */\n expandedKeys?: string[];\n /** Called with the new set of expanded keys when it changes. */\n onExpandedChange?: (keys: string[]) => void;\n}\n\nexport const Accordion: React.FC<AccordionProps> = ({\n selectionMode = \"single\",\n defaultExpandedKeys = [],\n expandedKeys,\n onExpandedChange,\n children,\n className,\n ...rest\n}) => {\n const isControlled = expandedKeys !== undefined;\n const [internal, setInternal] = useState<string[]>(defaultExpandedKeys);\n const expanded = isControlled ? expandedKeys! : internal;\n\n const toggle = useCallback(\n (key: string) => {\n const isOpen = expanded.includes(key);\n let next: string[];\n if (selectionMode === \"single\") {\n next = isOpen ? [] : [key];\n } else {\n next = isOpen\n ? expanded.filter((k) => k !== key)\n : [...expanded, key];\n }\n if (!isControlled) setInternal(next);\n onExpandedChange?.(next);\n },\n [expanded, selectionMode, isControlled, onExpandedChange]\n );\n\n return (\n <AccordionContext.Provider value={{ expanded, toggle }}>\n <div\n className={cn(\n \"divide-y divide-gray-200 overflow-hidden rounded-xl border border-gray-200 bg-white dark:divide-gray-800 dark:border-gray-800 dark:bg-white/[0.03]\",\n className\n )}\n {...rest}\n >\n {children}\n </div>\n </AccordionContext.Provider>\n );\n};\n","\"use client\";\nimport React, { useState, useRef } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type TabsVariant = \"underline\" | \"solid\" | \"pill\";\n\nexport interface TabProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /** Unique key identifying this tab. */\n tabKey: string;\n /** Tab label (may include an icon). */\n title: React.ReactNode;\n /** Disable selection of this tab. */\n disabled?: boolean;\n}\n\n/** Tab is a configuration element consumed by Tabs; it renders its children as the panel. */\nexport const Tab: React.FC<TabProps> = ({\n children,\n tabKey,\n title,\n disabled,\n ...rest\n}) => {\n return <div {...rest}>{children}</div>;\n};\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n variant?: TabsVariant;\n /** Controlled selected key. */\n selectedKey?: string;\n /** Uncontrolled initial selected key. */\n defaultSelectedKey?: string;\n /** Called with the newly selected key. */\n onSelectionChange?: (key: string) => void;\n /** Accent color for the active tab (any CSS color). Defaults to the brand color. */\n color?: string;\n children?: React.ReactNode;\n}\n\ntype TabElement = React.ReactElement<TabProps>;\n\nexport const Tabs: React.FC<TabsProps> = ({\n variant = \"underline\",\n selectedKey,\n defaultSelectedKey,\n onSelectionChange,\n color,\n children,\n className,\n ...rest\n}) => {\n const tabs = React.Children.toArray(children).filter(\n React.isValidElement\n ) as TabElement[];\n\n const firstKey = tabs[0]?.props.tabKey;\n const isControlled = selectedKey !== undefined;\n const [internal, setInternal] = useState<string>(\n defaultSelectedKey ?? firstKey\n );\n const active = isControlled ? selectedKey! : internal;\n\n const tabRefs = useRef<Record<string, HTMLButtonElement | null>>({});\n\n const select = (key: string) => {\n if (!isControlled) setInternal(key);\n onSelectionChange?.(key);\n };\n\n const onKeyDown = (e: React.KeyboardEvent, index: number) => {\n if (e.key !== \"ArrowRight\" && e.key !== \"ArrowLeft\") return;\n e.preventDefault();\n const dir = e.key === \"ArrowRight\" ? 1 : -1;\n const count = tabs.length;\n let next = index;\n for (let i = 0; i < count; i++) {\n next = (next + dir + count) % count;\n if (!tabs[next].props.disabled) break;\n }\n const nextKey = tabs[next].props.tabKey;\n tabRefs.current[nextKey]?.focus();\n select(nextKey);\n };\n\n const listClasses: Record<TabsVariant, string> = {\n underline: \"flex gap-2 border-b border-gray-200 dark:border-gray-800\",\n solid:\n \"inline-flex gap-1 rounded-lg bg-gray-100 p-1 dark:bg-white/[0.03]\",\n pill: \"inline-flex gap-2\",\n };\n\n const tabClasses = (isActive: boolean): string => {\n const base =\n \"inline-flex items-center gap-2 text-sm font-medium transition focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50\";\n switch (variant) {\n case \"solid\":\n return cn(\n base,\n \"rounded-md px-4 py-2\",\n isActive\n ? \"bg-white text-gray-900 shadow-theme-xs dark:bg-gray-800 dark:text-white/90\"\n : \"text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-white/90\"\n );\n case \"pill\":\n return cn(\n base,\n \"rounded-full px-4 py-2\",\n isActive\n ? \"bg-brand-500 text-white\"\n : \"bg-gray-100 text-gray-600 hover:bg-gray-200 dark:bg-white/[0.03] dark:text-gray-400 dark:hover:bg-white/[0.06]\"\n );\n case \"underline\":\n default:\n return cn(\n base,\n \"border-b-2 px-4 py-3\",\n isActive\n ? \"border-brand-500 text-brand-500\"\n : \"border-transparent text-gray-500 hover:text-gray-800 dark:text-gray-400 dark:hover:text-white/90\"\n );\n }\n };\n\n const activeColorStyle = (isActive: boolean): React.CSSProperties => {\n if (!color || !isActive) return {};\n if (variant === \"underline\") return { borderColor: color, color };\n if (variant === \"pill\") return { backgroundColor: color };\n return { color };\n };\n\n const activePanel = tabs.find((t) => t.props.tabKey === active);\n\n return (\n <div className={cn(\"w-full\", className)} {...rest}>\n <div role=\"tablist\" className={listClasses[variant]}>\n {tabs.map((tab, index) => {\n const { tabKey, title, disabled = false } = tab.props;\n const isActive = tabKey === active;\n return (\n <button\n key={tabKey}\n ref={(el) => {\n tabRefs.current[tabKey] = el;\n }}\n role=\"tab\"\n type=\"button\"\n id={`tab-${tabKey}`}\n aria-selected={isActive}\n aria-controls={`tabpanel-${tabKey}`}\n tabIndex={isActive ? 0 : -1}\n disabled={disabled}\n onClick={() => !disabled && select(tabKey)}\n onKeyDown={(e) => onKeyDown(e, index)}\n className={tabClasses(isActive)}\n style={activeColorStyle(isActive)}\n >\n {title}\n </button>\n );\n })}\n </div>\n {activePanel && (\n <div\n role=\"tabpanel\"\n id={`tabpanel-${active}`}\n aria-labelledby={`tab-${active}`}\n className=\"pt-4 text-sm text-gray-600 dark:text-gray-300\"\n >\n {activePanel.props.children}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useId, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type TooltipPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport interface TooltipProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\" | \"content\">,\n ColorOverrideProps {\n /** The content rendered inside the tooltip bubble. */\n content: React.ReactNode;\n /** Which side of the trigger the tooltip appears on. */\n placement?: TooltipPlacement;\n /** Delay in milliseconds before showing the tooltip. */\n delay?: number;\n /** When true the tooltip never opens. */\n disabled?: boolean;\n /** The trigger element. */\n children: React.ReactNode;\n}\n\nconst placementClasses: Record<TooltipPlacement, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n};\n\nconst arrowClasses: Record<TooltipPlacement, string> = {\n top: \"top-full left-1/2 -translate-x-1/2 -mt-1\",\n right: \"right-full top-1/2 -translate-y-1/2 -mr-1\",\n bottom: \"bottom-full left-1/2 -translate-x-1/2 -mb-1\",\n left: \"left-full top-1/2 -translate-y-1/2 -ml-1\",\n};\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n content,\n placement = \"top\",\n delay = 0,\n disabled = false,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const [visible, setVisible] = useState(false);\n const tooltipId = useId();\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const show = () => {\n if (disabled) return;\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => setVisible(true), delay);\n } else {\n setVisible(true);\n }\n };\n\n const hide = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n setVisible(false);\n };\n\n return (\n <span\n className={cn(\"relative inline-flex\", className)}\n onMouseEnter={show}\n onMouseLeave={hide}\n onFocus={show}\n onBlur={hide}\n aria-describedby={visible ? tooltipId : undefined}\n {...rest}\n >\n {children}\n {!disabled && visible && (\n <span\n id={tooltipId}\n role=\"tooltip\"\n className={cn(\n \"pointer-events-none absolute z-50 whitespace-nowrap rounded-lg bg-gray-900 px-3 py-2 text-xs font-medium text-white shadow-theme-lg dark:bg-gray-700 dark:text-white/90\",\n placementClasses[placement]\n )}\n style={{\n ...styleOverride({ bgColor, textColor, borderColor }),\n ...style,\n }}\n >\n {content}\n <span\n className={cn(\n \"absolute h-2 w-2 rotate-45 bg-gray-900 dark:bg-gray-700\",\n arrowClasses[placement]\n )}\n style={bgColor ? { backgroundColor: bgColor } : undefined}\n aria-hidden=\"true\"\n />\n </span>\n )}\n </span>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type PopoverPlacement = \"top\" | \"right\" | \"bottom\" | \"left\";\n\nexport interface PopoverProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"content\"> {\n /** The clickable trigger element. */\n trigger: React.ReactNode;\n /** Which side of the trigger the panel appears on. */\n placement?: PopoverPlacement;\n /** Controlled open state. Omit for uncontrolled behavior. */\n isOpen?: boolean;\n /** Called when the open state should change (controlled or uncontrolled). */\n onOpenChange?: (open: boolean) => void;\n /** Initial open state when uncontrolled. */\n defaultOpen?: boolean;\n /** Close when clicking outside the popover. */\n closeOnOutsideClick?: boolean;\n /** Close when pressing Escape. */\n closeOnEsc?: boolean;\n /** Panel content. */\n children: React.ReactNode;\n}\n\nconst placementClasses: Record<PopoverPlacement, string> = {\n top: \"bottom-full left-1/2 -translate-x-1/2 mb-2\",\n right: \"left-full top-1/2 -translate-y-1/2 ml-2\",\n bottom: \"top-full left-1/2 -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 -translate-y-1/2 mr-2\",\n};\n\nexport const Popover: React.FC<PopoverProps> = ({\n trigger,\n placement = \"bottom\",\n isOpen: controlledOpen,\n onOpenChange,\n defaultOpen = false,\n closeOnOutsideClick = true,\n closeOnEsc = true,\n children,\n className,\n ...rest\n}) => {\n const [uncontrolledOpen, setUncontrolledOpen] = useState(defaultOpen);\n const isControlled = controlledOpen !== undefined;\n const open = isControlled ? controlledOpen : uncontrolledOpen;\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n\n const setOpen = (next: boolean) => {\n if (!isControlled) setUncontrolledOpen(next);\n onOpenChange?.(next);\n };\n\n useEffect(() => {\n if (!open) return;\n\n const handleClickOutside = (event: MouseEvent) => {\n if (\n closeOnOutsideClick &&\n wrapperRef.current &&\n !wrapperRef.current.contains(event.target as Node)\n ) {\n setOpen(false);\n }\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (closeOnEsc && event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, closeOnOutsideClick, closeOnEsc]);\n\n return (\n <div ref={wrapperRef} className=\"relative inline-block\">\n {/* The trigger is rendered as-is inside a non-interactive wrapper so a\n caller can pass their own <button>/<a> without nesting interactive\n elements (which is invalid HTML). The click bubbles up from it. */}\n <span\n className=\"inline-flex cursor-pointer\"\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n onClick={() => setOpen(!open)}\n >\n {trigger}\n </span>\n {open && (\n <div\n role=\"dialog\"\n className={cn(\n \"absolute z-50 min-w-[12rem] rounded-xl border border-gray-200 bg-white p-4 shadow-theme-lg dark:border-gray-700 dark:bg-gray-900 dark:text-white/90\",\n placementClasses[placement],\n className\n )}\n {...rest}\n >\n {children}\n </div>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useEffect } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport type DrawerPlacement = \"left\" | \"right\" | \"top\" | \"bottom\";\n\nexport interface DrawerProps extends React.HTMLAttributes<HTMLDivElement> {\n isOpen: boolean;\n onClose: () => void;\n /** Side the drawer slides in from. */\n placement?: DrawerPlacement;\n showCloseButton?: boolean;\n closeOnBackdrop?: boolean;\n closeOnEsc?: boolean;\n /** Tailwind size class for the panel (width for left/right, height for top/bottom). */\n size?: string;\n}\n\nconst panelBaseByPlacement: Record<DrawerPlacement, string> = {\n left: \"top-0 left-0 h-full\",\n right: \"top-0 right-0 h-full\",\n top: \"top-0 left-0 w-full\",\n bottom: \"bottom-0 left-0 w-full\",\n};\n\nconst openTransform: Record<DrawerPlacement, string> = {\n left: \"translate-x-0\",\n right: \"translate-x-0\",\n top: \"translate-y-0\",\n bottom: \"translate-y-0\",\n};\n\nconst closedTransform: Record<DrawerPlacement, string> = {\n left: \"-translate-x-full\",\n right: \"translate-x-full\",\n top: \"-translate-y-full\",\n bottom: \"translate-y-full\",\n};\n\nconst defaultSize: Record<DrawerPlacement, string> = {\n left: \"w-80 max-w-full\",\n right: \"w-80 max-w-full\",\n top: \"h-80 max-h-full\",\n bottom: \"h-80 max-h-full\",\n};\n\nexport const Drawer: React.FC<DrawerProps> = ({\n isOpen,\n onClose,\n children,\n className,\n placement = \"right\",\n showCloseButton = true,\n closeOnBackdrop = true,\n closeOnEsc = true,\n size,\n ...rest\n}) => {\n useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n onClose();\n }\n };\n\n if (isOpen && closeOnEsc) {\n document.addEventListener(\"keydown\", handleEscape);\n }\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [isOpen, onClose, closeOnEsc]);\n\n useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"unset\";\n }\n\n return () => {\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen]);\n\n if (!isOpen) return null;\n\n return (\n <div className=\"fixed inset-0 z-99999 drawer\">\n <div\n className=\"fixed inset-0 h-full w-full bg-black/50 backdrop-blur-sm\"\n onClick={closeOnBackdrop ? onClose : undefined}\n ></div>\n <div\n role=\"dialog\"\n aria-modal=\"true\"\n className={cn(\n \"fixed flex flex-col overflow-y-auto bg-white shadow-theme-lg transition-transform duration-300 ease-in-out dark:bg-gray-900 dark:text-white/90\",\n panelBaseByPlacement[placement],\n size ?? defaultSize[placement],\n isOpen ? openTransform[placement] : closedTransform[placement],\n className\n )}\n onClick={(e) => e.stopPropagation()}\n {...rest}\n >\n {showCloseButton && (\n <button\n onClick={onClose}\n aria-label=\"Close drawer\"\n className=\"absolute right-3 top-3 z-999 flex h-9.5 w-9.5 items-center justify-center rounded-full bg-gray-100 text-gray-400 transition-colors hover:bg-gray-200 hover:text-gray-700 dark:bg-gray-800 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white\"\n >\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M6.04289 16.5413C5.65237 16.9318 5.65237 17.565 6.04289 17.9555C6.43342 18.346 7.06658 18.346 7.45711 17.9555L11.9987 13.4139L16.5408 17.956C16.9313 18.3466 17.5645 18.3466 17.955 17.956C18.3455 17.5655 18.3455 16.9323 17.955 16.5418L13.4129 11.9997L17.955 7.4576C18.3455 7.06707 18.3455 6.43391 17.955 6.04338C17.5645 5.65286 16.9313 5.65286 16.5408 6.04338L11.9987 10.5855L7.45711 6.0439C7.06658 5.65338 6.43342 5.65338 6.04289 6.0439C5.65237 6.43442 5.65237 7.06759 6.04289 7.45811L10.5845 11.9997L6.04289 16.5413Z\"\n fill=\"currentColor\"\n />\n </svg>\n </button>\n )}\n {children}\n </div>\n </div>\n );\n};\n","\"use client\";\nimport React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type ChipVariant = \"light\" | \"solid\";\nexport type ChipSize = \"sm\" | \"md\";\nexport type ChipColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\n\nexport interface ChipProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n variant?: ChipVariant;\n size?: ChipSize;\n color?: ChipColor;\n startIcon?: React.ReactNode;\n endIcon?: React.ReactNode;\n /** Rendered at the start of the chip, e.g. a small Avatar. */\n avatar?: React.ReactNode;\n /** When provided, renders a small close button that fires this callback. */\n onClose?: () => void;\n}\n\nconst sizeStyles: Record<ChipSize, string> = {\n sm: \"text-theme-xs\",\n md: \"text-sm\",\n};\n\nconst variants: Record<ChipVariant, Record<ChipColor, string>> = {\n light: {\n primary: \"bg-brand-50 text-brand-500 dark:bg-brand-500/15 dark:text-brand-400\",\n success: \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n error: \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n warning: \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n info: \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n light: \"bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80\",\n dark: \"bg-gray-500 text-white dark:bg-white/5 dark:text-white\",\n },\n solid: {\n primary: \"bg-brand-500 text-white dark:text-white\",\n success: \"bg-success-500 text-white dark:text-white\",\n error: \"bg-error-500 text-white dark:text-white\",\n warning: \"bg-warning-500 text-white dark:text-white\",\n info: \"bg-blue-light-500 text-white dark:text-white\",\n light: \"bg-gray-400 dark:bg-white/5 text-white dark:text-white/80\",\n dark: \"bg-gray-700 text-white dark:text-white\",\n },\n};\n\nexport const Chip: React.FC<ChipProps> = ({\n variant = \"light\",\n color = \"primary\",\n size = \"md\",\n startIcon,\n endIcon,\n avatar,\n onClose,\n children,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <span\n className={cn(\n \"inline-flex items-center justify-center gap-1 rounded-full font-medium\",\n avatar ? \"py-0.5 pl-0.5 pr-2.5\" : \"px-2.5 py-0.5\",\n sizeStyles[size],\n variants[variant][color],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {avatar && <span className=\"flex items-center\">{avatar}</span>}\n {startIcon && <span className=\"flex items-center\">{startIcon}</span>}\n {children}\n {endIcon && <span className=\"flex items-center\">{endIcon}</span>}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Remove\"\n onClick={onClose}\n className=\"ml-0.5 flex h-4 w-4 items-center justify-center rounded-full text-current opacity-70 transition hover:opacity-100 focus:outline-none\"\n >\n <svg\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M9 3L3 9M3 3L9 9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n )}\n </span>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type ProgressColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\nexport type ProgressSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface ProgressProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\">,\n ColorOverrideProps {\n /** Current value (clamped between 0 and maxValue). */\n value?: number;\n /** Maximum value. Defaults to 100. */\n maxValue?: number;\n color?: ProgressColor;\n size?: ProgressSize;\n /** Optional label shown above the track. */\n label?: React.ReactNode;\n /** When true, shows the percentage (e.g. \"75%\") next to the label. */\n showValueLabel?: boolean;\n /** Animated, value-less progress. */\n isIndeterminate?: boolean;\n}\n\nconst sizeStyles: Record<ProgressSize, string> = {\n sm: \"h-1.5\",\n md: \"h-2.5\",\n lg: \"h-4\",\n};\n\nconst fillColors: Record<ProgressColor, string> = {\n primary: \"bg-brand-500\",\n success: \"bg-success-500\",\n error: \"bg-error-500\",\n warning: \"bg-warning-500\",\n info: \"bg-blue-light-500\",\n light: \"bg-gray-400\",\n dark: \"bg-gray-700 dark:bg-gray-300\",\n};\n\nconst indeterminateKeyframes = `@keyframes tdui-progress-indeterminate {\n 0% { left: -40%; width: 40%; }\n 50% { left: 30%; width: 60%; }\n 100% { left: 100%; width: 40%; }\n}`;\n\nexport const Progress: React.FC<ProgressProps> = ({\n value = 0,\n maxValue = 100,\n color = \"primary\",\n size = \"md\",\n label,\n showValueLabel = false,\n isIndeterminate = false,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const safeMax = maxValue <= 0 ? 100 : maxValue;\n const clamped = Math.min(Math.max(value, 0), safeMax);\n const percent = Math.round((clamped / safeMax) * 100);\n\n return (\n <div className={cn(\"w-full\", className)} {...rest}>\n {(label || showValueLabel) && (\n <div className=\"mb-1.5 flex items-center justify-between\">\n {label && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label}\n </span>\n )}\n {showValueLabel && !isIndeterminate && (\n <span className=\"text-sm font-medium text-gray-700 dark:text-gray-400\">\n {percent}%\n </span>\n )}\n </div>\n )}\n <div\n role=\"progressbar\"\n aria-valuemin={0}\n aria-valuemax={safeMax}\n aria-valuenow={isIndeterminate ? undefined : clamped}\n className={cn(\n \"relative w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-800\",\n sizeStyles[size]\n )}\n style={styleOverride({ bgColor, borderColor })}\n >\n {isIndeterminate ? (\n <>\n <style>{indeterminateKeyframes}</style>\n <div\n className={cn(\"absolute top-0 h-full rounded-full\", fillColors[color])}\n style={{\n animation:\n \"tdui-progress-indeterminate 1.5s ease-in-out infinite\",\n ...(textColor ? { backgroundColor: textColor } : {}),\n ...style,\n }}\n />\n </>\n ) : (\n <div\n className={cn(\n \"h-full rounded-full transition-all duration-300\",\n fillColors[color]\n )}\n style={{\n width: `${percent}%`,\n ...(textColor ? { backgroundColor: textColor } : {}),\n ...style,\n }}\n />\n )}\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type SpinnerColor =\n | \"primary\" | \"success\" | \"error\" | \"warning\" | \"info\" | \"light\" | \"dark\";\nexport type SpinnerSize = \"sm\" | \"md\" | \"lg\";\n\nexport interface SpinnerProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n ColorOverrideProps {\n size?: SpinnerSize;\n color?: SpinnerColor;\n /** Optional text rendered beside the spinner (also used as aria-label). */\n label?: React.ReactNode;\n}\n\nconst sizeStyles: Record<SpinnerSize, string> = {\n sm: \"h-4 w-4 border-2\",\n md: \"h-6 w-6 border-2\",\n lg: \"h-8 w-8 border-[3px]\",\n};\n\nconst colorStyles: Record<SpinnerColor, string> = {\n primary: \"text-brand-500\",\n success: \"text-success-500\",\n error: \"text-error-500\",\n warning: \"text-warning-500\",\n info: \"text-blue-light-500\",\n light: \"text-gray-400\",\n dark: \"text-gray-700 dark:text-gray-300\",\n};\n\nexport const Spinner: React.FC<SpinnerProps> = ({\n size = \"md\",\n color = \"primary\",\n label,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const accessibleLabel = typeof label === \"string\" ? label : \"Loading\";\n return (\n <span\n role=\"status\"\n aria-label={accessibleLabel}\n className={cn(\"inline-flex items-center gap-2\", className)}\n style={{ ...styleOverride({ bgColor, borderColor }), ...style }}\n {...rest}\n >\n <span\n aria-hidden=\"true\"\n className={cn(\n \"inline-block animate-spin rounded-full border-current border-t-transparent\",\n sizeStyles[size],\n !textColor && colorStyles[color]\n )}\n style={textColor ? { color: textColor } : undefined}\n />\n {label && (\n <span className=\"text-sm font-medium text-gray-500 dark:text-gray-400\">\n {label}\n </span>\n )}\n </span>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n /** When true, renders children normally with no shimmer. */\n isLoaded?: boolean;\n /** Convenience sizing (any CSS length). Falls back to className. */\n width?: string | number;\n height?: string | number;\n}\n\nexport const Skeleton: React.FC<SkeletonProps> = ({\n isLoaded = false,\n width,\n height,\n className,\n children,\n style,\n ...rest\n}) => {\n if (isLoaded) {\n return <>{children}</>;\n }\n\n return (\n <div\n aria-hidden=\"true\"\n className={cn(\n \"animate-pulse rounded-lg bg-gray-200 dark:bg-gray-800\",\n className\n )}\n style={{ width, height, ...style }}\n {...rest}\n >\n {/* Keep children in the tree (invisible) so layout can be reserved. */}\n <span className=\"invisible\">{children}</span>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type CodeColor =\n | \"primary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"default\";\n\nexport type CodeSize = \"sm\" | \"md\";\n\nexport interface CodeProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\">,\n ColorOverrideProps {\n color?: CodeColor;\n size?: CodeSize;\n}\n\nconst sizeClasses: Record<CodeSize, string> = {\n sm: \"text-xs px-1 py-0.5\",\n md: \"text-sm px-1.5 py-0.5\",\n};\n\nconst colorClasses: Record<CodeColor, string> = {\n primary: \"bg-brand-50 text-brand-600 dark:bg-brand-500/15 dark:text-brand-400\",\n success:\n \"bg-success-50 text-success-600 dark:bg-success-500/15 dark:text-success-500\",\n error: \"bg-error-50 text-error-600 dark:bg-error-500/15 dark:text-error-500\",\n warning:\n \"bg-warning-50 text-warning-600 dark:bg-warning-500/15 dark:text-orange-400\",\n info: \"bg-blue-light-50 text-blue-light-500 dark:bg-blue-light-500/15 dark:text-blue-light-500\",\n default: \"bg-gray-100 text-gray-700 dark:bg-white/5 dark:text-white/80\",\n};\n\nexport const Code: React.FC<CodeProps> = ({\n color = \"default\",\n size = \"md\",\n className,\n children,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n return (\n <code\n className={cn(\n \"inline-flex items-center rounded-md font-mono font-normal\",\n sizeClasses[size],\n colorClasses[color],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n {children}\n </code>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type SnippetSize = \"sm\" | \"md\";\n\nexport interface SnippetProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\" | \"children\">,\n ColorOverrideProps {\n /** Code content as a string (supports \"\\n\") or an array of lines. */\n code?: string | string[];\n /** Alternative to `code`. */\n children?: string | string[];\n /** Prefix rendered before each line (e.g. \"$ \"). */\n symbol?: string;\n /** Hide the copy-to-clipboard button. */\n hideCopyButton?: boolean;\n /** Hide the line prefix symbol. */\n hideSymbol?: boolean;\n size?: SnippetSize;\n}\n\nconst sizeClasses: Record<SnippetSize, string> = {\n sm: \"text-xs p-3\",\n md: \"text-sm p-4\",\n};\n\nconst CopyIcon: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\" />\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\" />\n </svg>\n);\n\nconst CheckIcon: React.FC = () => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n);\n\nexport const Snippet: React.FC<SnippetProps> = ({\n code,\n children,\n symbol = \"\",\n hideCopyButton = false,\n hideSymbol = false,\n size = \"md\",\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const [copied, setCopied] = useState(false);\n\n const raw = code ?? children ?? \"\";\n const lines = Array.isArray(raw) ? raw : raw.split(\"\\n\");\n const text = lines.join(\"\\n\");\n\n const handleCopy = async () => {\n try {\n await navigator.clipboard.writeText(text);\n setCopied(true);\n setTimeout(() => setCopied(false), 1500);\n } catch {\n // clipboard not available — silently ignore\n }\n };\n\n return (\n <div\n className={cn(\n \"relative rounded-xl border border-gray-200 bg-gray-50 font-mono text-gray-800 dark:border-gray-800 dark:bg-white/[0.03] dark:text-white/90\",\n sizeClasses[size],\n className\n )}\n style={{ ...styleOverride({ bgColor, textColor, borderColor }), ...style }}\n {...rest}\n >\n <pre className={cn(\"overflow-x-auto\", !hideCopyButton && \"pr-8\")}>\n <code>\n {lines.map((line, i) => (\n <span key={i} className=\"block whitespace-pre\">\n {!hideSymbol && symbol && (\n <span className=\"select-none text-gray-400 dark:text-gray-500\">\n {symbol}\n </span>\n )}\n {line}\n </span>\n ))}\n </code>\n </pre>\n {!hideCopyButton && (\n <button\n type=\"button\"\n onClick={handleCopy}\n aria-label={copied ? \"Copied\" : \"Copy to clipboard\"}\n className={cn(\n \"absolute right-2 top-2 inline-flex h-7 w-7 items-center justify-center rounded-lg text-gray-500 transition hover:bg-gray-200 hover:text-gray-700 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:text-gray-400 dark:hover:bg-white/10 dark:hover:text-white/90\",\n copied && \"text-success-500 dark:text-success-500\"\n )}\n >\n {copied ? <CheckIcon /> : <CopyIcon />}\n </button>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface LabelProps\n extends React.LabelHTMLAttributes<HTMLLabelElement> {}\n\nexport const Label: React.FC<LabelProps> = ({ children, className, ...rest }) => {\n return (\n <label\n className={cn(\n \"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\",\n className\n )}\n {...rest}\n >\n {children}\n </label>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface TextAreaProps {\n placeholder?: string;\n rows?: number;\n value?: string;\n onChange?: (value: string) => void;\n className?: string;\n disabled?: boolean;\n error?: boolean;\n hint?: string;\n}\n\nexport const TextArea: React.FC<TextAreaProps> = ({\n placeholder = \"Enter your message\",\n rows = 3,\n value = \"\",\n onChange,\n className,\n disabled = false,\n error = false,\n hint = \"\",\n}) => {\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (onChange) {\n onChange(e.target.value);\n }\n };\n\n const stateClass = disabled\n ? \"bg-gray-100 opacity-50 text-gray-500 border-gray-300 cursor-not-allowed dark:bg-gray-800 dark:text-gray-400 dark:border-gray-700\"\n : error\n ? \"bg-transparent text-gray-400 border-gray-300 focus:border-error-300 focus:ring-3 focus:ring-error-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus:border-error-800\"\n : \"bg-transparent text-gray-400 border-gray-300 focus:border-brand-300 focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus:border-brand-800\";\n\n return (\n <div className=\"relative\">\n <textarea\n placeholder={placeholder}\n rows={rows}\n value={value}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n \"w-full rounded-lg border px-4 py-2.5 text-sm shadow-theme-xs focus:outline-hidden\",\n stateClass,\n className\n )}\n />\n {hint && (\n <p\n className={cn(\n \"mt-2 text-sm\",\n error ? \"text-error-500\" : \"text-gray-500 dark:text-gray-400\"\n )}\n >\n {hint}\n </p>\n )}\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface CheckboxProps {\n label?: string;\n checked: boolean;\n className?: string;\n id?: string;\n onChange: (checked: boolean) => void;\n disabled?: boolean;\n /** Override the checked accent color (maps to inline accentColor). */\n checkedColor?: string;\n}\n\nexport const Checkbox: React.FC<CheckboxProps> = ({\n label,\n checked,\n id,\n onChange,\n className,\n disabled = false,\n checkedColor,\n}) => {\n return (\n <label\n className={cn(\n \"flex items-center space-x-3 group cursor-pointer\",\n disabled && \"cursor-not-allowed opacity-60\"\n )}\n >\n <div className=\"relative w-5 h-5\">\n <input\n id={id}\n type=\"checkbox\"\n className={cn(\n \"w-5 h-5 appearance-none cursor-pointer dark:border-gray-700 border border-gray-300 checked:border-transparent rounded-md checked:bg-brand-500 disabled:opacity-60\",\n className\n )}\n checked={checked}\n onChange={(e) => onChange(e.target.checked)}\n disabled={disabled}\n style={checkedColor ? { accentColor: checkedColor } : undefined}\n />\n {checked && (\n <svg\n className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"white\"\n strokeWidth=\"1.94437\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n {disabled && (\n <svg\n className=\"absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2 pointer-events-none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n >\n <path\n d=\"M11.6666 3.5L5.24992 9.91667L2.33325 7\"\n stroke=\"#E4E7EC\"\n strokeWidth=\"2.33333\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n {label && (\n <span className=\"text-sm font-medium text-gray-800 dark:text-gray-200\">\n {label}\n </span>\n )}\n </label>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface RadioProps {\n id: string;\n name: string;\n value: string;\n checked: boolean;\n label: string;\n onChange: (value: string) => void;\n className?: string;\n disabled?: boolean;\n}\n\nexport const Radio: React.FC<RadioProps> = ({\n id,\n name,\n value,\n checked,\n label,\n onChange,\n className,\n disabled = false,\n}) => {\n return (\n <label\n htmlFor={id}\n className={cn(\n \"relative flex cursor-pointer select-none items-center gap-3 text-sm font-medium\",\n disabled\n ? \"text-gray-300 dark:text-gray-600 cursor-not-allowed\"\n : \"text-gray-700 dark:text-gray-400\",\n className\n )}\n >\n <input\n id={id}\n name={name}\n type=\"radio\"\n value={value}\n checked={checked}\n onChange={() => !disabled && onChange(value)}\n className=\"sr-only\"\n disabled={disabled}\n />\n <span\n className={cn(\n \"flex h-5 w-5 items-center justify-center rounded-full border-[1.25px]\",\n checked\n ? \"border-brand-500 bg-brand-500\"\n : \"bg-transparent border-gray-300 dark:border-gray-700\",\n disabled &&\n \"bg-gray-100 dark:bg-gray-700 border-gray-200 dark:border-gray-700\"\n )}\n >\n <span\n className={cn(\n \"h-2 w-2 rounded-full bg-white\",\n checked ? \"block\" : \"hidden\"\n )}\n ></span>\n </span>\n {label}\n </label>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface RadioSmProps {\n id: string;\n name: string;\n value: string;\n checked: boolean;\n label: string;\n onChange: (value: string) => void;\n className?: string;\n}\n\nexport const RadioSm: React.FC<RadioSmProps> = ({\n id,\n name,\n value,\n checked,\n label,\n onChange,\n className,\n}) => {\n return (\n <label\n htmlFor={id}\n className={cn(\n \"flex cursor-pointer select-none items-center text-sm text-gray-500 dark:text-gray-400\",\n className\n )}\n >\n <span className=\"relative\">\n {/* Hidden Input */}\n <input\n type=\"radio\"\n id={id}\n name={name}\n value={value}\n checked={checked}\n onChange={() => onChange(value)}\n className=\"sr-only\"\n />\n {/* Styled Radio Circle */}\n <span\n className={cn(\n \"mr-2 flex h-4 w-4 items-center justify-center rounded-full border\",\n checked\n ? \"border-brand-500 bg-brand-500\"\n : \"bg-transparent border-gray-300 dark:border-gray-700\"\n )}\n >\n {/* Inner Dot */}\n <span\n className={cn(\n \"h-1.5 w-1.5 rounded-full\",\n checked ? \"bg-white\" : \"bg-white dark:bg-[#1e2636]\"\n )}\n ></span>\n </span>\n </span>\n {label}\n </label>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface SwitchProps {\n label: string;\n checked?: boolean;\n defaultChecked?: boolean;\n disabled?: boolean;\n onChange?: (checked: boolean) => void;\n color?: \"blue\" | \"gray\";\n}\n\nexport const Switch: React.FC<SwitchProps> = ({\n label,\n checked,\n defaultChecked = false,\n disabled = false,\n onChange,\n color = \"blue\",\n}) => {\n const isControlled = checked !== undefined;\n const [internalChecked, setInternalChecked] = useState(defaultChecked);\n const isChecked = isControlled ? checked : internalChecked;\n\n const handleToggle = () => {\n if (disabled) return;\n const newCheckedState = !isChecked;\n if (!isControlled) {\n setInternalChecked(newCheckedState);\n }\n if (onChange) {\n onChange(newCheckedState);\n }\n };\n\n const switchColors =\n color === \"blue\"\n ? {\n background: isChecked\n ? \"bg-brand-500 \"\n : \"bg-gray-200 dark:bg-white/10\", // Blue version\n knob: isChecked\n ? \"translate-x-full bg-white\"\n : \"translate-x-0 bg-white\",\n }\n : {\n background: isChecked\n ? \"bg-gray-800 dark:bg-white/10\"\n : \"bg-gray-200 dark:bg-white/10\", // Gray version\n knob: isChecked\n ? \"translate-x-full bg-white\"\n : \"translate-x-0 bg-white\",\n };\n\n return (\n <label\n className={cn(\n \"flex cursor-pointer select-none items-center gap-3 text-sm font-medium\",\n disabled ? \"text-gray-400\" : \"text-gray-700 dark:text-gray-400\"\n )}\n onClick={handleToggle}\n >\n <div className=\"relative\">\n <div\n className={cn(\n \"block transition duration-150 ease-linear h-6 w-11 rounded-full\",\n disabled\n ? \"bg-gray-100 pointer-events-none dark:bg-gray-800\"\n : switchColors.background\n )}\n ></div>\n <div\n className={cn(\n \"absolute left-0.5 top-0.5 h-5 w-5 rounded-full shadow-theme-sm duration-150 ease-linear transform\",\n switchColors.knob\n )}\n ></div>\n </div>\n {label}\n </label>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\ninterface Option {\n value: string;\n label: string;\n}\n\nexport interface SelectProps {\n options: Option[];\n placeholder?: string;\n onChange: (value: string) => void;\n className?: string;\n defaultValue?: string;\n disabled?: boolean;\n}\n\n/**\n * A custom single-select dropdown (no native `<select>`), so the menu is fully\n * styleable and theme-aware. The selected option shows a check mark.\n */\nexport const Select: React.FC<SelectProps> = ({\n options,\n placeholder = \"Select an option\",\n onChange,\n className,\n defaultValue = \"\",\n disabled = false,\n}) => {\n const [selectedValue, setSelectedValue] = useState<string>(defaultValue);\n const [isOpen, setIsOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n // Close on outside click and on Escape.\n useEffect(() => {\n if (!isOpen) return;\n const onPointerDown = (e: MouseEvent) => {\n if (rootRef.current && !rootRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n const onKeyDown = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") setIsOpen(false);\n };\n document.addEventListener(\"mousedown\", onPointerDown);\n document.addEventListener(\"keydown\", onKeyDown);\n return () => {\n document.removeEventListener(\"mousedown\", onPointerDown);\n document.removeEventListener(\"keydown\", onKeyDown);\n };\n }, [isOpen]);\n\n const toggleOpen = () => {\n if (!disabled) setIsOpen((prev) => !prev);\n };\n\n const handleSelect = (value: string) => {\n setSelectedValue(value);\n onChange(value);\n setIsOpen(false);\n };\n\n const selectedLabel = options.find((o) => o.value === selectedValue)?.label;\n\n return (\n <div ref={rootRef} className={cn(\"relative w-full\", className)}>\n <button\n type=\"button\"\n onClick={toggleOpen}\n disabled={disabled}\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n className={cn(\n \"flex h-11 w-full items-center justify-between rounded-lg border border-gray-300 px-4 py-2.5 text-left text-sm shadow-theme-xs transition focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:focus:border-brand-800\",\n disabled && \"cursor-not-allowed opacity-50\",\n selectedLabel\n ? \"text-gray-800 dark:text-white/90\"\n : \"text-gray-400 dark:text-gray-400\"\n )}\n >\n <span className=\"truncate\">{selectedLabel ?? placeholder}</span>\n <svg\n className={cn(\n \"ml-2 h-5 w-5 shrink-0 stroke-current text-gray-500 transition-transform dark:text-gray-400\",\n isOpen && \"rotate-180\"\n )}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.79175 7.39551L10.0001 12.6038L15.2084 7.39551\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n\n {isOpen && (\n <ul\n role=\"listbox\"\n className=\"absolute left-0 top-full z-40 mt-1.5 max-h-60 w-full overflow-y-auto rounded-lg border border-gray-200 bg-white py-1 shadow-theme-lg dark:border-gray-800 dark:bg-gray-900\"\n >\n {options.map((option) => {\n const isSelected = option.value === selectedValue;\n return (\n <li\n key={option.value}\n role=\"option\"\n aria-selected={isSelected}\n onClick={() => handleSelect(option.value)}\n className={cn(\n \"flex cursor-pointer items-center justify-between px-4 py-2 text-sm transition hover:bg-gray-50 dark:hover:bg-white/5\",\n isSelected\n ? \"bg-brand-50 font-medium text-brand-600 dark:bg-brand-500/15 dark:text-brand-400\"\n : \"text-gray-700 dark:text-gray-300\"\n )}\n >\n <span className=\"truncate\">{option.label}</span>\n {isSelected && (\n <svg\n className=\"ml-2 h-4 w-4 shrink-0 stroke-current\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3334 4L6.00008 11.3333L2.66675 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </li>\n );\n })}\n </ul>\n )}\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\n\ninterface Option {\n value: string;\n text: string;\n selected: boolean;\n}\n\nexport interface MultiSelectProps {\n label: string;\n options: Option[];\n defaultSelected?: string[];\n onChange?: (selected: string[]) => void;\n disabled?: boolean;\n}\n\nexport const MultiSelect: React.FC<MultiSelectProps> = ({\n label,\n options,\n defaultSelected = [],\n onChange,\n disabled = false,\n}) => {\n const [selectedOptions, setSelectedOptions] =\n useState<string[]>(defaultSelected);\n const [isOpen, setIsOpen] = useState(false);\n\n const toggleDropdown = () => {\n if (disabled) return;\n setIsOpen((prev) => !prev);\n };\n\n const handleSelect = (optionValue: string) => {\n const newSelectedOptions = selectedOptions.includes(optionValue)\n ? selectedOptions.filter((value) => value !== optionValue)\n : [...selectedOptions, optionValue];\n\n setSelectedOptions(newSelectedOptions);\n if (onChange) onChange(newSelectedOptions);\n };\n\n const removeOption = (_index: number, value: string) => {\n const newSelectedOptions = selectedOptions.filter((opt) => opt !== value);\n setSelectedOptions(newSelectedOptions);\n if (onChange) onChange(newSelectedOptions);\n };\n\n const selectedValuesText = selectedOptions.map(\n (value) => options.find((option) => option.value === value)?.text || \"\"\n );\n\n return (\n <div className=\"w-full\">\n <label className=\"mb-1.5 block text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label}\n </label>\n\n <div className=\"relative z-20 inline-block w-full\">\n <div className=\"relative flex flex-col items-center\">\n <div onClick={toggleDropdown} className=\"w-full\">\n <div className=\"mb-2 flex h-11 rounded-lg border border-gray-300 py-1.5 px-4 shadow-theme-xs outline-hidden transition focus:border-brand-300 focus:shadow-focus-ring dark:border-gray-700 dark:bg-gray-900 dark:focus:border-brand-300\">\n <div className=\"flex flex-wrap flex-auto gap-2\">\n {selectedValuesText.length > 0 ? (\n selectedValuesText.map((text, index) => (\n <div\n key={index}\n className=\"group flex items-center justify-center rounded-full border-[0.7px] border-transparent bg-gray-100 py-1 pl-2.5 pr-2 text-sm text-gray-800 hover:border-gray-200 dark:bg-gray-800 dark:text-white/90 dark:hover:border-gray-800\"\n >\n <span className=\"flex-initial max-w-full\">{text}</span>\n <div className=\"flex flex-row-reverse flex-auto\">\n <div\n onClick={() =>\n removeOption(index, selectedOptions[index])\n }\n className=\"pl-2 text-gray-500 cursor-pointer group-hover:text-gray-400 dark:text-gray-400\"\n >\n <svg\n className=\"fill-current\"\n role=\"button\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.40717 4.46881C3.11428 4.17591 3.11428 3.70104 3.40717 3.40815C3.70006 3.11525 4.17494 3.11525 4.46783 3.40815L6.99943 5.93975L9.53095 3.40822C9.82385 3.11533 10.2987 3.11533 10.5916 3.40822C10.8845 3.70112 10.8845 4.17599 10.5916 4.46888L8.06009 7.00041L10.5916 9.53193C10.8845 9.82482 10.8845 10.2997 10.5916 10.5926C10.2987 10.8855 9.82385 10.8855 9.53095 10.5926L6.99943 8.06107L4.46783 10.5927C4.17494 10.8856 3.70006 10.8856 3.40717 10.5927C3.11428 10.2998 3.11428 9.8249 3.40717 9.53201L5.93877 7.00041L3.40717 4.46881Z\"\n />\n </svg>\n </div>\n </div>\n </div>\n ))\n ) : (\n <input\n placeholder=\"Select option\"\n className=\"w-full h-full p-1 pr-2 text-sm bg-transparent border-0 outline-hidden appearance-none placeholder:text-gray-800 focus:border-0 focus:outline-hidden focus:ring-0 dark:placeholder:text-white/90\"\n readOnly\n value=\"Select option\"\n />\n )}\n </div>\n <div className=\"flex items-center py-1 pl-1 pr-1 w-7\">\n <button\n type=\"button\"\n onClick={toggleDropdown}\n className=\"w-5 h-5 text-gray-700 outline-hidden cursor-pointer focus:outline-hidden dark:text-gray-400\"\n >\n <svg\n className={`stroke-current ${isOpen ? \"rotate-180\" : \"\"}`}\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.79175 7.39551L10.0001 12.6038L15.2084 7.39551\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n </button>\n </div>\n </div>\n </div>\n\n {isOpen && (\n <div\n className=\"absolute left-0 z-40 w-full overflow-y-auto bg-white rounded-lg shadow-sm top-full max-h-select dark:bg-gray-900\"\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex flex-col\">\n {options.map((option, index) => {\n const isSelected = selectedOptions.includes(option.value);\n return (\n <div key={index}>\n <div\n className={`w-full cursor-pointer rounded-t border-b border-gray-200 hover:bg-brand-500/5 dark:border-gray-800`}\n onClick={() => handleSelect(option.value)}\n >\n <div\n className={`relative flex w-full items-center justify-between p-2 pl-2 ${\n isSelected ? \"bg-brand-500/10\" : \"\"\n }`}\n >\n <div\n className={`mx-2 leading-6 ${\n isSelected\n ? \"font-medium text-brand-600 dark:text-brand-400\"\n : \"text-gray-800 dark:text-white/90\"\n }`}\n >\n {option.text}\n </div>\n {isSelected && (\n <svg\n className=\"mr-2 h-4 w-4 shrink-0 stroke-current text-brand-500\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.3334 4L6.00008 11.3333L2.66675 8\"\n stroke=\"currentColor\"\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n </div>\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n};\n","import React from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface FileInputProps\n extends React.InputHTMLAttributes<HTMLInputElement> {}\n\nexport const FileInput: React.FC<FileInputProps> = ({ className, ...rest }) => {\n return (\n <input\n type=\"file\"\n className={cn(\n \"focus:border-ring-brand-300 h-11 w-full overflow-hidden rounded-lg border border-gray-300 bg-transparent text-sm text-gray-500 shadow-theme-xs transition-colors file:mr-5 file:border-collapse file:cursor-pointer file:rounded-l-lg file:border-0 file:border-r file:border-solid file:border-gray-200 file:bg-gray-50 file:py-3 file:pl-3.5 file:pr-3 file:text-sm file:text-gray-700 placeholder:text-gray-400 hover:file:bg-gray-100 focus:outline-hidden focus:file:ring-brand-300 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-400 dark:text-white/90 dark:file:border-gray-800 dark:file:bg-white/[0.03] dark:file:text-gray-400 dark:placeholder:text-gray-400\",\n className\n )}\n {...rest}\n />\n );\n};\n","\"use client\";\nimport React, { useEffect } from \"react\";\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { Label } from \"./Label\";\n\ntype Hook = flatpickr.Options.Hook;\ntype DateOption = flatpickr.Options.DateOption;\n\nexport interface DatePickerProps {\n id: string;\n mode?: \"single\" | \"multiple\" | \"range\" | \"time\";\n onChange?: Hook | Hook[];\n defaultDate?: DateOption;\n label?: string;\n placeholder?: string;\n}\n\nexport const DatePicker: React.FC<DatePickerProps> = ({\n id,\n mode,\n onChange,\n label,\n defaultDate,\n placeholder,\n}) => {\n useEffect(() => {\n const flatPickr = flatpickr(`#${id}`, {\n mode: mode || \"single\",\n static: true,\n monthSelectorType: \"static\",\n dateFormat: \"Y-m-d\",\n defaultDate,\n onChange,\n });\n\n return () => {\n if (!Array.isArray(flatPickr)) {\n flatPickr.destroy();\n }\n };\n }, [mode, onChange, id, defaultDate]);\n\n return (\n <div>\n {label && <Label htmlFor={id}>{label}</Label>}\n\n <div className=\"relative\">\n <input\n id={id}\n placeholder={placeholder}\n className=\"h-11 w-full rounded-lg border appearance-none pl-4 pr-11 py-2.5 text-sm shadow-theme-xs placeholder:text-gray-400 focus:outline-hidden focus:ring-3 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 bg-transparent text-gray-800 border-gray-300 focus:border-brand-300 focus:ring-brand-500/20 dark:border-gray-700 dark:focus:border-brand-800\"\n />\n\n <span className=\"absolute text-gray-500 -translate-y-1/2 pointer-events-none right-3 top-1/2 dark:text-gray-400\">\n <svg\n className=\"size-6\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8 2C8.41421 2 8.75 2.33579 8.75 2.75V3.75H15.25V2.75C15.25 2.33579 15.5858 2 16 2C16.4142 2 16.75 2.33579 16.75 2.75V3.75H18.5C19.7426 3.75 20.75 4.75736 20.75 6V9V19C20.75 20.2426 19.7426 21.25 18.5 21.25H5.5C4.25736 21.25 3.25 20.2426 3.25 19V9V6C3.25 4.75736 4.25736 3.75 5.5 3.75H7.25V2.75C7.25 2.33579 7.58579 2 8 2ZM8 5.25H5.5C5.08579 5.25 4.75 5.58579 4.75 6V8.25H19.25V6C19.25 5.58579 18.9142 5.25 18.5 5.25H16H8ZM19.25 9.75H4.75V19C4.75 19.4142 5.08579 19.75 5.5 19.75H18.5C18.9142 19.75 19.25 19.4142 19.25 19V9.75Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </div>\n </div>\n );\n};\n","\"use client\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport flatpickr from \"flatpickr\";\nimport \"flatpickr/dist/flatpickr.css\";\nimport { Label } from \"./Label\";\n\ntype DateOption = flatpickr.Options.DateOption;\n\nexport interface DateTimePickerProps {\n id: string;\n /** Optional field label rendered above the controls. */\n label?: string;\n /** Placeholder for the date input. */\n placeholder?: string;\n /** Initial date for the calendar. */\n defaultDate?: DateOption;\n /** Initial time as \"HH:MM\". */\n defaultTime?: string;\n /** Fires whenever the date or time changes. */\n onChange?: (value: { date: Date | undefined; time: string }) => void;\n}\n\n/** Keep only up to 2 digits and clamp to [0, max]. */\nconst clampNum = (raw: string, max: number) => {\n const digits = raw.replace(/\\D/g, \"\").slice(0, 2);\n if (digits === \"\") return \"\";\n return String(Math.min(parseInt(digits, 10), max));\n};\n\n/**\n * Date + time field: a flatpickr calendar for the date (same look as DatePicker)\n * paired with a compact HH:MM time input (two fields separated by a \":\").\n */\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n id,\n label,\n placeholder,\n defaultDate,\n defaultTime = \"\",\n onChange,\n}) => {\n const dateRef = useRef<Date | undefined>(undefined);\n const [hh, setHh] = useState(defaultTime.split(\":\")[0] ?? \"\");\n const [mm, setMm] = useState(defaultTime.split(\":\")[1] ?? \"\");\n const hhRef = useRef(hh);\n const mmRef = useRef(mm);\n hhRef.current = hh;\n mmRef.current = mm;\n\n const emit = () => {\n onChange?.({\n date: dateRef.current,\n time: `${(hhRef.current || \"0\").padStart(2, \"0\")}:${(mmRef.current || \"0\").padStart(2, \"0\")}`,\n });\n };\n\n useEffect(() => {\n const flatPickr = flatpickr(`#${id}-date`, {\n mode: \"single\",\n static: true,\n monthSelectorType: \"static\",\n dateFormat: \"Y-m-d\",\n defaultDate,\n onChange: (dates) => {\n dateRef.current = dates[0];\n emit();\n },\n });\n\n return () => {\n if (!Array.isArray(flatPickr)) {\n flatPickr.destroy();\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [id, defaultDate]);\n\n const handleHh = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = clampNum(e.target.value, 23);\n setHh(v);\n hhRef.current = v;\n emit();\n };\n const handleMm = (e: React.ChangeEvent<HTMLInputElement>) => {\n const v = clampNum(e.target.value, 59);\n setMm(v);\n mmRef.current = v;\n emit();\n };\n const padOnBlur =\n (value: string, setter: (v: string) => void) =>\n () => {\n if (value !== \"\") setter(value.padStart(2, \"0\"));\n };\n\n const timeFieldClass =\n \"w-7 bg-transparent text-center tabular-nums placeholder:text-gray-400 focus:outline-hidden dark:placeholder:text-white/30\";\n\n return (\n <div>\n {label && <Label htmlFor={`${id}-date`}>{label}</Label>}\n\n <div className=\"flex items-start gap-3\">\n {/* Date — flatpickr, same look as DatePicker */}\n <div className=\"relative flex-1\">\n <input\n id={`${id}-date`}\n placeholder={placeholder}\n className=\"h-11 w-full appearance-none rounded-lg border border-gray-300 bg-transparent py-2.5 pl-4 pr-11 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/20 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\"\n />\n <span className=\"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 text-gray-500 dark:text-gray-400\">\n <svg className=\"size-6\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8 2C8.41421 2 8.75 2.33579 8.75 2.75V3.75H15.25V2.75C15.25 2.33579 15.5858 2 16 2C16.4142 2 16.75 2.33579 16.75 2.75V3.75H18.5C19.7426 3.75 20.75 4.75736 20.75 6V9V19C20.75 20.2426 19.7426 21.25 18.5 21.25H5.5C4.25736 21.25 3.25 20.2426 3.25 19V9V6C3.25 4.75736 4.25736 3.75 5.5 3.75H7.25V2.75C7.25 2.33579 7.58579 2 8 2ZM8 5.25H5.5C5.08579 5.25 4.75 5.58579 4.75 6V8.25H19.25V6C19.25 5.58579 18.9142 5.25 18.5 5.25H16H8ZM19.25 9.75H4.75V19C4.75 19.4142 5.08579 19.75 5.5 19.75H18.5C18.9142 19.75 19.25 19.4142 19.25 19V9.75Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </div>\n\n {/* Time — HH : MM */}\n <div className=\"flex h-11 items-center rounded-lg border border-gray-300 bg-transparent px-3 text-sm text-gray-800 shadow-theme-xs focus-within:border-brand-300 focus-within:ring-3 focus-within:ring-brand-500/20 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:focus-within:border-brand-800\">\n <input\n aria-label=\"Hours\"\n inputMode=\"numeric\"\n placeholder=\"00\"\n maxLength={2}\n value={hh}\n onChange={handleHh}\n onBlur={padOnBlur(hh, (v) => setHh(v))}\n className={timeFieldClass}\n />\n <span className=\"px-0.5 text-gray-400 dark:text-gray-500\">:</span>\n <input\n aria-label=\"Minutes\"\n inputMode=\"numeric\"\n placeholder=\"00\"\n maxLength={2}\n value={mm}\n onChange={handleMm}\n onBlur={padOnBlur(mm, (v) => setMm(v))}\n className={timeFieldClass}\n />\n <span className=\"ml-1 text-gray-500 dark:text-gray-400\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M3.04175 9.99984C3.04175 6.15686 6.1571 3.0415 10.0001 3.0415C13.8431 3.0415 16.9584 6.15686 16.9584 9.99984C16.9584 13.8428 13.8431 16.9582 10.0001 16.9582C6.1571 16.9582 3.04175 13.8428 3.04175 9.99984ZM10.0001 1.5415C5.32867 1.5415 1.54175 5.32843 1.54175 9.99984C1.54175 14.6712 5.32867 18.4582 10.0001 18.4582C14.6715 18.4582 18.4584 14.6712 18.4584 9.99984C18.4584 5.32843 14.6715 1.5415 10.0001 1.5415ZM9.99998 10.7498C9.58577 10.7498 9.24998 10.4141 9.24998 9.99984V5.4165C9.24998 5.00229 9.58577 4.6665 9.99998 4.6665C10.4142 4.6665 10.75 5.00229 10.75 5.4165V9.24984H13.3334C13.7476 9.24984 14.0834 9.58562 14.0834 9.99984C14.0834 10.4141 13.7476 10.7498 13.3334 10.7498H10.0001H9.99998Z\"\n fill=\"currentColor\"\n />\n </svg>\n </span>\n </div>\n </div>\n </div>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface PasswordInputProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\"> {}\n\n/** Password field with a show/hide toggle (eye icon), matching the template's \"Password Input\". */\nexport const PasswordInput: React.FC<PasswordInputProps> = ({\n className,\n ...rest\n}) => {\n const [show, setShow] = useState(false);\n\n return (\n <div className=\"relative\">\n <input\n type={show ? \"text\" : \"password\"}\n className={cn(\n \"h-11 w-full appearance-none rounded-lg border border-gray-300 bg-transparent py-2.5 pl-4 pr-11 text-sm text-gray-800 shadow-theme-xs placeholder:text-gray-400 focus:border-brand-300 focus:outline-hidden focus:ring-3 focus:ring-brand-500/10 dark:border-gray-700 dark:bg-gray-900 dark:text-white/90 dark:placeholder:text-white/30 dark:focus:border-brand-800\",\n className\n )}\n {...rest}\n />\n <button\n type=\"button\"\n onClick={() => setShow((s) => !s)}\n aria-label={show ? \"Hide password\" : \"Show password\"}\n className=\"absolute right-4 top-1/2 z-30 -translate-y-1/2 cursor-pointer text-gray-500 dark:text-gray-400\"\n >\n {show ? (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.0002 13.8619C7.23361 13.8619 4.86803 12.1372 3.92328 9.70241C4.86804 7.26761 7.23361 5.54297 10.0002 5.54297C12.7667 5.54297 15.1323 7.26762 16.0771 9.70243C15.1323 12.1372 12.7667 13.8619 10.0002 13.8619ZM10.0002 4.04297C6.48191 4.04297 3.49489 6.30917 2.4155 9.4593C2.3615 9.61687 2.3615 9.78794 2.41549 9.94552C3.49488 13.0957 6.48191 15.3619 10.0002 15.3619C13.5184 15.3619 16.5055 13.0957 17.5849 9.94555C17.6389 9.78797 17.6389 9.6169 17.5849 9.45932C16.5055 6.30919 13.5184 4.04297 10.0002 4.04297ZM9.99151 7.84413C8.96527 7.84413 8.13333 8.67606 8.13333 9.70231C8.13333 10.7286 8.96527 11.5605 9.99151 11.5605H10.0064C11.0326 11.5605 11.8646 10.7286 11.8646 9.70231C11.8646 8.67606 11.0326 7.84413 10.0064 7.84413H9.99151Z\"\n />\n </svg>\n ) : (\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"currentColor\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M4.63803 3.57709C4.34513 3.2842 3.87026 3.2842 3.57737 3.57709C3.28447 3.86999 3.28447 4.34486 3.57737 4.63775L4.85323 5.91362C3.74609 6.84199 2.89363 8.06395 2.4155 9.45936C2.3615 9.61694 2.3615 9.78801 2.41549 9.94558C3.49488 13.0957 6.48191 15.3619 10.0002 15.3619C11.255 15.3619 12.4422 15.0737 13.4994 14.5598L15.3625 16.4229C15.6554 16.7158 16.1302 16.7158 16.4231 16.4229C16.716 16.13 16.716 15.6551 16.4231 15.3622L4.63803 3.57709ZM12.3608 13.4212L10.4475 11.5079C10.3061 11.5423 10.1584 11.5606 10.0064 11.5606H9.99151C8.96527 11.5606 8.13333 10.7286 8.13333 9.70237C8.13333 9.5461 8.15262 9.39434 8.18895 9.24933L5.91885 6.97923C5.03505 7.69015 4.34057 8.62704 3.92328 9.70247C4.86803 12.1373 7.23361 13.8619 10.0002 13.8619C10.8326 13.8619 11.6287 13.7058 12.3608 13.4212ZM16.0771 9.70249C15.7843 10.4569 15.3552 11.1432 14.8199 11.7311L15.8813 12.7925C16.6329 11.9813 17.2187 11.0143 17.5849 9.94561C17.6389 9.78803 17.6389 9.61696 17.5849 9.45938C16.5055 6.30925 13.5184 4.04303 10.0002 4.04303C9.13525 4.04303 8.30244 4.17999 7.52218 4.43338L8.75139 5.66259C9.1556 5.58413 9.57311 5.54303 10.0002 5.54303C12.7667 5.54303 15.1323 7.26768 16.0771 9.70249Z\"\n />\n </svg>\n )}\n </button>\n </div>\n );\n};\n","import React, { FormEvent } from \"react\";\nimport { cn } from \"../../lib/cn\";\n\nexport interface FormProps\n extends Omit<React.FormHTMLAttributes<HTMLFormElement>, \"onSubmit\"> {\n onSubmit?: (event: FormEvent<HTMLFormElement>) => void;\n}\n\nexport const Form: React.FC<FormProps> = ({\n onSubmit,\n children,\n className,\n ...rest\n}) => {\n return (\n <form\n onSubmit={(event) => {\n event.preventDefault();\n onSubmit?.(event);\n }}\n className={cn(className)}\n {...rest}\n >\n {children}\n </form>\n );\n};\n","\"use client\";\nimport React, { useState } from \"react\";\nimport { cn } from \"../../lib/cn\";\nimport { styleOverride, type ColorOverrideProps } from \"../../lib/styleOverride\";\n\nexport type SliderColor =\n | \"brand\"\n | \"primary\"\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\";\n\nexport interface SliderProps\n extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"color\" | \"value\" | \"defaultValue\" | \"onChange\" | \"type\"\n >,\n ColorOverrideProps {\n /** Controlled value. */\n value?: number;\n /** Uncontrolled initial value. */\n defaultValue?: number;\n /** Fires with the new numeric value on change. */\n onChange?: (value: number) => void;\n min?: number;\n max?: number;\n step?: number;\n disabled?: boolean;\n /** Accent color of the track + thumb. */\n color?: SliderColor;\n /** Optional label rendered above the slider. */\n label?: React.ReactNode;\n /** Show the current value next to the label. */\n showValue?: boolean;\n}\n\nconst accentClasses: Record<SliderColor, string> = {\n brand: \"accent-brand-500\",\n primary: \"accent-brand-500\",\n success: \"accent-success-500\",\n error: \"accent-error-500\",\n warning: \"accent-warning-500\",\n info: \"accent-blue-light-500\",\n};\n\nconst fillColors: Record<SliderColor, string> = {\n brand: \"#465fff\",\n primary: \"#465fff\",\n success: \"#12b76a\",\n error: \"#f04438\",\n warning: \"#f79009\",\n info: \"#0ba5ec\",\n};\n\nexport const Slider: React.FC<SliderProps> = ({\n value,\n defaultValue = 0,\n onChange,\n min = 0,\n max = 100,\n step = 1,\n disabled = false,\n color = \"brand\",\n label,\n showValue = false,\n className,\n bgColor,\n textColor,\n borderColor,\n style,\n ...rest\n}) => {\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue);\n const currentValue = isControlled ? (value as number) : internalValue;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const next = Number(e.target.value);\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n };\n\n const percent =\n max === min ? 0 : ((currentValue - min) / (max - min)) * 100;\n const fill = fillColors[color];\n const trackBg = `linear-gradient(to right, ${fill} 0%, ${fill} ${percent}%, var(--slider-track, #e4e7ec) ${percent}%, var(--slider-track, #e4e7ec) 100%)`;\n\n return (\n <div className={cn(\"w-full\", disabled && \"opacity-50\")}>\n {(label || showValue) && (\n <div className=\"mb-1.5 flex items-center justify-between text-sm font-medium text-gray-700 dark:text-gray-400\">\n {label && <span>{label}</span>}\n {showValue && (\n <span className=\"text-gray-500 dark:text-gray-400\">\n {currentValue}\n </span>\n )}\n </div>\n )}\n <input\n type=\"range\"\n role=\"slider\"\n min={min}\n max={max}\n step={step}\n value={currentValue}\n disabled={disabled}\n onChange={handleChange}\n aria-valuemin={min}\n aria-valuemax={max}\n aria-valuenow={currentValue}\n className={cn(\n \"h-2 w-full cursor-pointer appearance-none rounded-lg focus:outline-hidden focus:ring-3 focus:ring-brand-500/10\",\n accentClasses[color],\n disabled && \"cursor-not-allowed\",\n className\n )}\n style={{\n background: trackBg,\n ...styleOverride({ bgColor, textColor, borderColor }),\n ...style,\n }}\n {...rest}\n />\n </div>\n );\n};\n"]}