@rehagro/ui 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/provider/theme.ts","../src/icons/DeleteIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/InfoIcon.tsx","../src/icons/WarningIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastContext.tsx","../src/provider/RehagroProvider.tsx","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/TextInput/TextInput.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Select/Select.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Tag/Tag.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Card/Card.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Table/Table.tsx","../src/components/Grid/Container.tsx","../src/components/Grid/GridContainer.tsx","../src/components/Grid/GridItem.tsx"],"names":["jsx","jsxs","Toast","useState","useRef","useCallback","toRgbTriplet","forwardRef","Button","React","PRESET_COLORS","isPresetColor","variantColorClasses","getArbitraryColorStyle","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","statusClasses","helperStatusClasses","CheckIcon","Select","Tooltip","useEffect","variantClasses","Avatar","useMemo","Tag","colorClasses","Card","CardHeader","CardContent","CardFooter","Spinner","Container","GridContainer","GridItem"],"mappings":"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","file":"index.mjs","sourcesContent":["export type RehagroTheme = {\r\n /** Brand colors — accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\r\n primary?: string;\r\n primaryHover?: string;\r\n secondary?: string;\r\n secondaryHover?: string;\r\n danger?: string;\r\n dangerHover?: string;\r\n warning?: string;\r\n warningHover?: string;\r\n success?: string;\r\n successHover?: string;\r\n info?: string;\r\n infoHover?: string;\r\n\r\n /** Semantic colors */\r\n text?: string;\r\n textMuted?: string;\r\n surface?: string;\r\n background?: string;\r\n border?: string;\r\n ring?: string;\r\n\r\n /** Border radius (xxs:4 → xs:8 → sm:12 → md:16 → lg:24 → xl:32) */\r\n radiusXxs?: string;\r\n radiusXs?: string;\r\n radiusSm?: string;\r\n radiusMd?: string;\r\n radiusLg?: string;\r\n radiusXl?: string;\r\n\r\n /** Border width */\r\n borderWidthSm?: string;\r\n borderWidthMd?: string;\r\n borderWidthLg?: string;\r\n\r\n /** Input sizes */\r\n inputHeightSm?: string;\r\n inputHeightMd?: string;\r\n inputHeightLg?: string;\r\n inputPxSm?: string;\r\n inputPxMd?: string;\r\n inputPxLg?: string;\r\n};\r\n\r\nexport type RehagroProviderProps = {\r\n /** Theme overrides — any token not provided keeps the default value */\r\n theme?: RehagroTheme;\r\n /** Toast container position. Default: \"top-right\" */\r\n toastPosition?: import(\"../components/Toast\").ToastPosition;\r\n children: React.ReactNode;\r\n};\r\n\r\n/** Maps theme keys to CSS custom property names */\r\nexport const TOKEN_MAP: Record<keyof RehagroTheme, { var: string; isColor: boolean }> = {\r\n primary: { var: \"--rh-primary\", isColor: true },\r\n primaryHover: { var: \"--rh-primary-hover\", isColor: true },\r\n secondary: { var: \"--rh-secondary\", isColor: true },\r\n secondaryHover: { var: \"--rh-secondary-hover\", isColor: true },\r\n danger: { var: \"--rh-danger\", isColor: true },\r\n dangerHover: { var: \"--rh-danger-hover\", isColor: true },\r\n warning: { var: \"--rh-warning\", isColor: true },\r\n warningHover: { var: \"--rh-warning-hover\", isColor: true },\r\n success: { var: \"--rh-success\", isColor: true },\r\n successHover: { var: \"--rh-success-hover\", isColor: true },\r\n info: { var: \"--rh-info\", isColor: true },\r\n infoHover: { var: \"--rh-info-hover\", isColor: true },\r\n text: { var: \"--rh-text\", isColor: true },\r\n textMuted: { var: \"--rh-text-muted\", isColor: true },\r\n surface: { var: \"--rh-surface\", isColor: true },\r\n background: { var: \"--rh-background\", isColor: true },\r\n border: { var: \"--rh-border\", isColor: true },\r\n ring: { var: \"--rh-ring\", isColor: true },\r\n radiusXxs: { var: \"--rh-radius-xxs\", isColor: false },\r\n radiusXs: { var: \"--rh-radius-xs\", isColor: false },\r\n radiusSm: { var: \"--rh-radius-sm\", isColor: false },\r\n radiusMd: { var: \"--rh-radius-md\", isColor: false },\r\n radiusLg: { var: \"--rh-radius-lg\", isColor: false },\r\n radiusXl: { var: \"--rh-radius-xl\", isColor: false },\r\n borderWidthSm: { var: \"--rh-border-width-sm\", isColor: false },\r\n borderWidthMd: { var: \"--rh-border-width-md\", isColor: false },\r\n borderWidthLg: { var: \"--rh-border-width-lg\", isColor: false },\r\n inputHeightSm: { var: \"--rh-input-height-sm\", isColor: false },\r\n inputHeightMd: { var: \"--rh-input-height-md\", isColor: false },\r\n inputHeightLg: { var: \"--rh-input-height-lg\", isColor: false },\r\n inputPxSm: { var: \"--rh-input-px-sm\", isColor: false },\r\n inputPxMd: { var: \"--rh-input-px-md\", isColor: false },\r\n inputPxLg: { var: \"--rh-input-px-lg\", isColor: false },\r\n};\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const DeleteIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path d=\"M3 6h18\" />\r\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\r\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const EditIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const SearchIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\r\n <path d=\"m21 21-4.3-4.3\" />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const PlusIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path d=\"M5 12h14\" />\r\n <path d=\"M12 5v14\" />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const InfoIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const WarningIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const SuccessIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const ErrorIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const NeutralIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3.75a.75.75 0 000 1.5h.01a.75.75 0 000-1.5H10zm-.75 3a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v3a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75v-3z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n","import type { IconProps } from \"./types\";\r\n\r\nexport const CloseIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"1em\"\r\n height=\"1em\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n);\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport {\r\n InfoIcon,\r\n WarningIcon,\r\n SuccessIcon,\r\n ErrorIcon,\r\n NeutralIcon,\r\n CloseIcon,\r\n} from \"../../icons\";\r\n\r\nexport type ToastVariant = \"info\" | \"warning\" | \"success\" | \"error\" | \"neutral\";\r\nexport type ToastAppearance = \"solid\" | \"light\" | \"outline\";\r\n\r\nexport type ToastLink = {\r\n label: string;\r\n href?: string;\r\n onClick?: () => void;\r\n};\r\n\r\nexport type ToastProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /** Toast title */\r\n title: string;\r\n /** Optional description below the title */\r\n description?: string;\r\n /** Optional link below the content */\r\n link?: ToastLink;\r\n /** Visual variant */\r\n variant?: ToastVariant;\r\n /** Visual appearance */\r\n appearance?: ToastAppearance;\r\n /** Callback when the close button is clicked */\r\n onClose?: () => void;\r\n};\r\n\r\n// ── Icon map ──────────────────────────────────────────────────────────────────\r\n\r\ntype IconComponent = React.FC<React.SVGAttributes<SVGSVGElement>>;\r\n\r\nconst variantIconMap: Record<ToastVariant, IconComponent> = {\r\n info: InfoIcon,\r\n warning: WarningIcon,\r\n success: SuccessIcon,\r\n error: ErrorIcon,\r\n neutral: NeutralIcon,\r\n};\r\n\r\n// ── Style maps ────────────────────────────────────────────────────────────────\r\n\r\ntype StyleKey = `${ToastVariant}-${ToastAppearance}`;\r\n\r\nconst containerStyles: Record<StyleKey, string> = {\r\n \"info-solid\": \"rh-bg-blue-600 rh-text-white rh-border-transparent\",\r\n \"info-light\": \"rh-bg-blue-50 rh-text-blue-900 rh-border-blue-200\",\r\n \"info-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\r\n \"warning-solid\": \"rh-bg-yellow-500 rh-text-white rh-border-transparent\",\r\n \"warning-light\": \"rh-bg-yellow-50 rh-text-yellow-900 rh-border-yellow-200\",\r\n \"warning-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\r\n \"success-solid\": \"rh-bg-[rgb(var(--rh-success))] rh-text-white rh-border-transparent\",\r\n \"success-light\": \"rh-bg-green-50 rh-text-green-900 rh-border-green-200\",\r\n \"success-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\r\n \"error-solid\": \"rh-bg-[rgb(var(--rh-danger))] rh-text-white rh-border-transparent\",\r\n \"error-light\": \"rh-bg-red-50 rh-text-red-900 rh-border-red-200\",\r\n \"error-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\r\n \"neutral-solid\": \"rh-bg-gray-900 rh-text-white rh-border-transparent\",\r\n \"neutral-light\": \"rh-bg-gray-100 rh-text-gray-900 rh-border-gray-200\",\r\n \"neutral-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\r\n};\r\n\r\nconst iconStyles: Record<StyleKey, string> = {\r\n \"info-solid\": \"rh-text-white\",\r\n \"info-light\": \"rh-text-blue-600\",\r\n \"info-outline\": \"rh-text-blue-600\",\r\n \"warning-solid\": \"rh-text-white\",\r\n \"warning-light\": \"rh-text-yellow-600\",\r\n \"warning-outline\": \"rh-text-yellow-600\",\r\n \"success-solid\": \"rh-text-white\",\r\n \"success-light\": \"rh-text-green-600\",\r\n \"success-outline\": \"rh-text-green-600\",\r\n \"error-solid\": \"rh-text-white\",\r\n \"error-light\": \"rh-text-red-600\",\r\n \"error-outline\": \"rh-text-red-600\",\r\n \"neutral-solid\": \"rh-text-white\",\r\n \"neutral-light\": \"rh-text-gray-600\",\r\n \"neutral-outline\": \"rh-text-gray-600\",\r\n};\r\n\r\nconst descriptionStyles: Record<StyleKey, string> = {\r\n \"info-solid\": \"rh-text-white/80\",\r\n \"info-light\": \"rh-text-blue-700\",\r\n \"info-outline\": \"rh-text-text-muted\",\r\n \"warning-solid\": \"rh-text-white/80\",\r\n \"warning-light\": \"rh-text-yellow-700\",\r\n \"warning-outline\": \"rh-text-text-muted\",\r\n \"success-solid\": \"rh-text-white/80\",\r\n \"success-light\": \"rh-text-green-700\",\r\n \"success-outline\": \"rh-text-text-muted\",\r\n \"error-solid\": \"rh-text-white/80\",\r\n \"error-light\": \"rh-text-red-700\",\r\n \"error-outline\": \"rh-text-text-muted\",\r\n \"neutral-solid\": \"rh-text-white/80\",\r\n \"neutral-light\": \"rh-text-gray-700\",\r\n \"neutral-outline\": \"rh-text-text-muted\",\r\n};\r\n\r\nconst linkStyles: Record<StyleKey, string> = {\r\n \"info-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\r\n \"info-light\": \"rh-text-blue-700 rh-underline hover:rh-text-blue-900\",\r\n \"info-outline\": \"rh-text-blue-600 rh-underline hover:rh-text-blue-800\",\r\n \"warning-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\r\n \"warning-light\": \"rh-text-yellow-700 rh-underline hover:rh-text-yellow-900\",\r\n \"warning-outline\": \"rh-text-yellow-600 rh-underline hover:rh-text-yellow-800\",\r\n \"success-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\r\n \"success-light\": \"rh-text-green-700 rh-underline hover:rh-text-green-900\",\r\n \"success-outline\": \"rh-text-green-600 rh-underline hover:rh-text-green-800\",\r\n \"error-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\r\n \"error-light\": \"rh-text-red-700 rh-underline hover:rh-text-red-900\",\r\n \"error-outline\": \"rh-text-red-600 rh-underline hover:rh-text-red-800\",\r\n \"neutral-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\r\n \"neutral-light\": \"rh-text-gray-700 rh-underline hover:rh-text-gray-900\",\r\n \"neutral-outline\": \"rh-text-gray-600 rh-underline hover:rh-text-gray-800\",\r\n};\r\n\r\nconst closeStyles: Record<StyleKey, string> = {\r\n \"info-solid\": \"rh-text-white/80 hover:rh-text-white\",\r\n \"info-light\": \"rh-text-blue-500 hover:rh-text-blue-800\",\r\n \"info-outline\": \"rh-text-text-muted hover:rh-text-text\",\r\n \"warning-solid\": \"rh-text-white/80 hover:rh-text-white\",\r\n \"warning-light\": \"rh-text-yellow-500 hover:rh-text-yellow-800\",\r\n \"warning-outline\": \"rh-text-text-muted hover:rh-text-text\",\r\n \"success-solid\": \"rh-text-white/80 hover:rh-text-white\",\r\n \"success-light\": \"rh-text-green-500 hover:rh-text-green-800\",\r\n \"success-outline\": \"rh-text-text-muted hover:rh-text-text\",\r\n \"error-solid\": \"rh-text-white/80 hover:rh-text-white\",\r\n \"error-light\": \"rh-text-red-500 hover:rh-text-red-800\",\r\n \"error-outline\": \"rh-text-text-muted hover:rh-text-text\",\r\n \"neutral-solid\": \"rh-text-white/80 hover:rh-text-white\",\r\n \"neutral-light\": \"rh-text-gray-500 hover:rh-text-gray-800\",\r\n \"neutral-outline\": \"rh-text-text-muted hover:rh-text-text\",\r\n};\r\n\r\n// ── Component ─────────────────────────────────────────────────────────────────\r\n\r\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\r\n {\r\n title,\r\n description,\r\n link,\r\n variant = \"info\",\r\n appearance = \"light\",\r\n onClose,\r\n className = \"\",\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const styleKey: StyleKey = `${variant}-${appearance}`;\r\n const Icon = variantIconMap[variant];\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"alert\"\r\n aria-live=\"assertive\"\r\n aria-atomic=\"true\"\r\n className={[\r\n \"rh-flex rh-items-start rh-gap-3\",\r\n \"rh-w-80 rh-rounded-sm rh-border rh-p-4\",\r\n \"rh-shadow-md rh-font-sans\",\r\n containerStyles[styleKey],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {/* Icon */}\r\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\r\n <Icon\r\n className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n />\r\n </span>\r\n\r\n {/* Content */}\r\n <div className=\"rh-flex-1 rh-min-w-0\">\r\n <p className=\"rh-text-sm rh-font-semibold rh-leading-tight\">{title}</p>\r\n\r\n {description && (\r\n <p\r\n className={[\r\n \"rh-mt-1 rh-text-sm rh-leading-normal\",\r\n descriptionStyles[styleKey],\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {description}\r\n </p>\r\n )}\r\n\r\n {link && (\r\n <a\r\n href={link.href}\r\n onClick={link.onClick}\r\n className={[\r\n \"rh-mt-1 rh-inline-block rh-text-sm rh-font-medium\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1 rh-rounded-xxs\",\r\n linkStyles[styleKey],\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {link.label}\r\n </a>\r\n )}\r\n </div>\r\n\r\n {/* Close button */}\r\n {onClose && (\r\n <button\r\n type=\"button\"\r\n aria-label=\"Close notification\"\r\n onClick={onClose}\r\n className={[\r\n \"rh-flex-shrink-0 rh-p-0.5 rh-rounded-xxs\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1\",\r\n closeStyles[styleKey],\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <CloseIcon className=\"rh-w-4 rh-h-4\" />\r\n </button>\r\n )}\r\n </div>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport { useCallback, useEffect, useRef, useState } from \"react\";\r\nimport type { ToastPosition } from \"./ToastContext\";\r\nimport { Toast } from \"./Toast\";\r\nimport { useToastContext } from \"./ToastContext\";\r\n\r\n// ── Animation direction per position ─────────────────────────────────────────\r\n\r\ntype AnimDir = \"right\" | \"left\" | \"top\" | \"bottom\";\r\n\r\nconst positionAnimDir: Record<ToastPosition, AnimDir> = {\r\n \"top-right\": \"right\",\r\n \"bottom-right\": \"right\",\r\n \"top-left\": \"left\",\r\n \"bottom-left\": \"left\",\r\n \"top-center\": \"top\",\r\n \"bottom-center\": \"bottom\",\r\n};\r\n\r\nconst enterClass: Record<AnimDir, string> = {\r\n right: \"rh-animate-toast-in-right\",\r\n left: \"rh-animate-toast-in-left\",\r\n top: \"rh-animate-toast-in-top\",\r\n bottom: \"rh-animate-toast-in-bottom\",\r\n};\r\n\r\nconst leaveClass: Record<AnimDir, string> = {\r\n right: \"rh-animate-toast-out-right\",\r\n left: \"rh-animate-toast-out-left\",\r\n top: \"rh-animate-toast-out-top\",\r\n bottom: \"rh-animate-toast-out-bottom\",\r\n};\r\n\r\n// ── Position container classes ────────────────────────────────────────────────\r\n\r\nconst positionClasses: Record<ToastPosition, string> = {\r\n \"top-right\": \"rh-top-4 rh-right-4 rh-items-end\",\r\n \"top-left\": \"rh-top-4 rh-left-4 rh-items-start\",\r\n \"top-center\": \"rh-top-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\r\n \"bottom-right\": \"rh-bottom-4 rh-right-4 rh-items-end\",\r\n \"bottom-left\": \"rh-bottom-4 rh-left-4 rh-items-start\",\r\n \"bottom-center\": \"rh-bottom-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\r\n};\r\n\r\n// ── Animated item ─────────────────────────────────────────────────────────────\r\n\r\nconst LEAVE_DURATION_MS = 200;\r\n\r\ntype AnimatedToastItemProps = {\r\n id: string;\r\n animDir: AnimDir;\r\n isDismissing: boolean;\r\n onRemove: (id: string) => void;\r\n onRequestDismiss: (id: string) => void;\r\n children: (onClose: () => void) => JSX.Element;\r\n};\r\n\r\nfunction AnimatedToastItem({\r\n id,\r\n animDir,\r\n isDismissing,\r\n onRemove,\r\n onRequestDismiss,\r\n children,\r\n}: AnimatedToastItemProps) {\r\n const [entered, setEntered] = useState(false);\r\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n // When the context signals dismiss, start the leave timer then remove\r\n useEffect(() => {\r\n if (!isDismissing) return;\r\n leaveTimerRef.current = setTimeout(() => {\r\n onRemove(id);\r\n }, LEAVE_DURATION_MS);\r\n return () => {\r\n if (leaveTimerRef.current) clearTimeout(leaveTimerRef.current);\r\n };\r\n }, [id, isDismissing, onRemove]);\r\n\r\n const handleAnimationEnd = useCallback(() => {\r\n if (!entered) setEntered(true);\r\n }, [entered]);\r\n\r\n const handleClose = useCallback(() => {\r\n onRequestDismiss(id);\r\n }, [id, onRequestDismiss]);\r\n\r\n const animClass = isDismissing\r\n ? leaveClass[animDir]\r\n : entered\r\n ? \"\"\r\n : enterClass[animDir];\r\n\r\n return (\r\n <div className={animClass} onAnimationEnd={handleAnimationEnd}>\r\n {children(handleClose)}\r\n </div>\r\n );\r\n}\r\n\r\n// ── Container ─────────────────────────────────────────────────────────────────\r\n\r\nexport function ToastContainer() {\r\n const { toasts, dismissingIds, position, requestDismiss, remove } = useToastContext();\r\n const animDir = positionAnimDir[position];\r\n\r\n if (toasts.length === 0) return null;\r\n\r\n return (\r\n <div\r\n aria-label=\"Notifications\"\r\n aria-live=\"polite\"\r\n className={[\r\n \"rh-fixed rh-z-[9999]\",\r\n \"rh-flex rh-flex-col rh-gap-3\",\r\n \"rh-pointer-events-none\",\r\n positionClasses[position],\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {toasts.map((toast) => (\r\n <AnimatedToastItem\r\n key={toast.id}\r\n id={toast.id}\r\n animDir={animDir}\r\n isDismissing={dismissingIds.has(toast.id)}\r\n onRemove={remove}\r\n onRequestDismiss={requestDismiss}\r\n >\r\n {(onClose) => (\r\n <div className=\"rh-pointer-events-auto\">\r\n <Toast\r\n title={toast.title}\r\n description={toast.description}\r\n link={toast.link}\r\n variant={toast.variant}\r\n appearance={toast.appearance}\r\n onClose={onClose}\r\n />\r\n </div>\r\n )}\r\n </AnimatedToastItem>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, {\r\n createContext,\r\n useCallback,\r\n useContext,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport type { ToastAppearance, ToastLink, ToastVariant } from \"./Toast\";\r\nimport { ToastContainer } from \"./ToastContainer\";\r\n\r\n// ── Types ─────────────────────────────────────────────────────────────────────\r\n\r\nexport type ToastPosition =\r\n | \"top-right\"\r\n | \"top-left\"\r\n | \"top-center\"\r\n | \"bottom-right\"\r\n | \"bottom-left\"\r\n | \"bottom-center\";\r\n\r\nexport type ToastItem = {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n link?: ToastLink;\r\n variant: ToastVariant;\r\n appearance: ToastAppearance;\r\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\r\n duration: number;\r\n};\r\n\r\nexport type ToastOptions = {\r\n description?: string;\r\n link?: ToastLink;\r\n appearance?: ToastAppearance;\r\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\r\n duration?: number;\r\n};\r\n\r\nexport type ToastFn = {\r\n (title: string, options?: ToastOptions): string;\r\n info: (title: string, options?: ToastOptions) => string;\r\n warning: (title: string, options?: ToastOptions) => string;\r\n success: (title: string, options?: ToastOptions) => string;\r\n error: (title: string, options?: ToastOptions) => string;\r\n neutral: (title: string, options?: ToastOptions) => string;\r\n dismiss: (id: string) => void;\r\n};\r\n\r\ntype ToastContextValue = {\r\n toasts: ToastItem[];\r\n /** IDs signaled for dismissal — triggers leave animation in ToastContainer */\r\n dismissingIds: Set<string>;\r\n position: ToastPosition;\r\n add: (item: Omit<ToastItem, \"id\">) => string;\r\n /** Signals a toast to start its leave animation */\r\n requestDismiss: (id: string) => void;\r\n /** Actually removes the toast from state (called after leave animation) */\r\n remove: (id: string) => void;\r\n};\r\n\r\n// ── Context ───────────────────────────────────────────────────────────────────\r\n\r\nconst ToastContext = createContext<ToastContextValue | null>(null);\r\n\r\n// ── Provider ──────────────────────────────────────────────────────────────────\r\n\r\nexport type ToastProviderProps = {\r\n children: React.ReactNode;\r\n /** Position of the toast container. Default: \"top-right\" */\r\n position?: ToastPosition;\r\n};\r\n\r\nexport function ToastProvider({\r\n children,\r\n position = \"top-right\",\r\n}: ToastProviderProps) {\r\n const [toasts, setToasts] = useState<ToastItem[]>([]);\r\n const [dismissingIds, setDismissingIds] = useState<Set<string>>(new Set());\r\n const counterRef = useRef(0);\r\n\r\n const remove = useCallback((id: string) => {\r\n setToasts((prev) => prev.filter((t) => t.id !== id));\r\n setDismissingIds((prev) => {\r\n const next = new Set(prev);\r\n next.delete(id);\r\n return next;\r\n });\r\n }, []);\r\n\r\n const requestDismiss = useCallback((id: string) => {\r\n setDismissingIds((prev) => new Set(prev).add(id));\r\n }, []);\r\n\r\n const add = useCallback(\r\n (item: Omit<ToastItem, \"id\">) => {\r\n const id = `rh-toast-${++counterRef.current}`;\r\n const toast: ToastItem = { ...item, id };\r\n\r\n setToasts((prev) => [...prev, toast]);\r\n\r\n if (toast.duration > 0) {\r\n setTimeout(() => requestDismiss(id), toast.duration);\r\n }\r\n\r\n return id;\r\n },\r\n [requestDismiss],\r\n );\r\n\r\n return (\r\n <ToastContext.Provider value={{ toasts, dismissingIds, position, add, requestDismiss, remove }}>\r\n {children}\r\n <ToastContainer />\r\n </ToastContext.Provider>\r\n );\r\n}\r\n\r\n// ── Internal hook (used by ToastContainer) ────────────────────────────────────\r\n\r\nexport function useToastContext(): ToastContextValue {\r\n const ctx = useContext(ToastContext);\r\n if (!ctx) {\r\n throw new Error(\"useToastContext must be used inside ToastProvider\");\r\n }\r\n return ctx;\r\n}\r\n\r\n// ── Public hook ───────────────────────────────────────────────────────────────\r\n\r\nexport function useToast(): { toast: ToastFn } {\r\n const { add, requestDismiss } = useToastContext();\r\n\r\n const createToast = useCallback(\r\n (variant: ToastVariant) =>\r\n (title: string, options: ToastOptions = {}): string => {\r\n return add({\r\n title,\r\n variant,\r\n description: options.description,\r\n link: options.link,\r\n appearance: options.appearance ?? \"light\",\r\n duration: options.duration ?? 5000,\r\n });\r\n },\r\n [add],\r\n );\r\n\r\n const toast = useCallback(\r\n (title: string, options: ToastOptions & { variant?: ToastVariant } = {}): string => {\r\n return add({\r\n title,\r\n variant: options.variant ?? \"info\",\r\n description: options.description,\r\n link: options.link,\r\n appearance: options.appearance ?? \"light\",\r\n duration: options.duration ?? 5000,\r\n });\r\n },\r\n [add],\r\n ) as ToastFn;\r\n\r\n toast.info = createToast(\"info\");\r\n toast.warning = createToast(\"warning\");\r\n toast.success = createToast(\"success\");\r\n toast.error = createToast(\"error\");\r\n toast.neutral = createToast(\"neutral\");\r\n toast.dismiss = requestDismiss;\r\n\r\n return { toast };\r\n}\r\n","import React, { useMemo } from \"react\";\r\nimport type { RehagroProviderProps, RehagroTheme } from \"./theme\";\r\nimport { TOKEN_MAP } from \"./theme\";\r\nimport { ToastProvider } from \"../components/Toast\";\r\n\r\nfunction hexToRgbTriplet(hex: string): string | null {\r\n const h = hex.replace(\"#\", \"\").trim();\r\n if (![3, 6].includes(h.length)) return null;\r\n const full = h.length === 3 ? h.split(\"\").map((c) => c + c).join(\"\") : h;\r\n const r = parseInt(full.slice(0, 2), 16);\r\n const g = parseInt(full.slice(2, 4), 16);\r\n const b = parseInt(full.slice(4, 6), 16);\r\n if ([r, g, b].some(Number.isNaN)) return null;\r\n return `${r} ${g} ${b}`;\r\n}\r\n\r\nfunction toRgbTriplet(value?: string): string | undefined {\r\n if (!value) return undefined;\r\n\r\n // \"#RRGGBB\" or \"#RGB\"\r\n if (value.startsWith(\"#\")) return hexToRgbTriplet(value) ?? undefined;\r\n\r\n // \"rgb(r, g, b)\"\r\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\r\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\r\n\r\n // \"r g b\" (already a triplet)\r\n const parts = value.trim().split(/\\s+/);\r\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) {\r\n return value.trim();\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\nexport function RehagroProvider({ theme, toastPosition, children }: RehagroProviderProps) {\r\n const style = useMemo(() => {\r\n if (!theme) return undefined;\r\n\r\n const vars: Record<string, string> = {};\r\n\r\n for (const [key, config] of Object.entries(TOKEN_MAP)) {\r\n const value = theme[key as keyof RehagroTheme];\r\n if (!value) continue;\r\n\r\n if (config.isColor) {\r\n const triplet = toRgbTriplet(value);\r\n if (triplet) vars[config.var] = triplet;\r\n } else {\r\n vars[config.var] = value;\r\n }\r\n }\r\n\r\n return vars as React.CSSProperties;\r\n }, [theme]);\r\n\r\n return (\r\n <div className=\"rh-root\" style={style}>\r\n <ToastProvider position={toastPosition}>{children}</ToastProvider>\r\n </div>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type { ButtonColor };\r\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonHoverStyle = {\r\n /** Background color on hover */\r\n backgroundColor?: string;\r\n /** Border color on hover */\r\n borderColor?: string;\r\n /** Text color on hover */\r\n color?: string;\r\n};\r\n\r\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\r\n /** Visual style variant */\r\n variant?: ButtonVariant;\r\n /** Button size */\r\n size?: ButtonSize;\r\n /** Border radius */\r\n radius?: ButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: ButtonColor;\r\n /** Custom hover color — overrides the token for this button only. Only applies to preset colors. Accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\r\n hoverColor?: string;\r\n /** Custom hover styles - allows full control over hover appearance */\r\n hoverStyle?: ButtonHoverStyle;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n /** Icon rendered to the left of children (hidden when loading) */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of children (hidden when loading) */\r\n rightIcon?: React.ReactNode;\r\n};\r\n\r\nfunction toRgbTriplet(value: string): string | undefined {\r\n if (value.startsWith(\"#\")) {\r\n const h = value.replace(\"#\", \"\");\r\n const full =\r\n h.length === 3\r\n ? h\r\n .split(\"\")\r\n .map((c) => c + c)\r\n .join(\"\")\r\n : h;\r\n const r = parseInt(full.slice(0, 2), 16);\r\n const g = parseInt(full.slice(2, 4), 16);\r\n const b = parseInt(full.slice(4, 6), 16);\r\n if ([r, g, b].some(Number.isNaN)) return undefined;\r\n return `${r} ${g} ${b}`;\r\n }\r\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\r\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\r\n const parts = value.trim().split(/\\s+/);\r\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) return value.trim();\r\n return undefined;\r\n}\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nconst variantColorClasses: Record<ButtonVariant, Record<PresetColor, string>> = {\r\n solid: {\r\n primary:\r\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\r\n secondary:\r\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\r\n danger:\r\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\r\n warning:\r\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\r\n success:\r\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\r\n info: \"rh-bg-info rh-text-surface rh-border-info hover:rh-bg-info-hover hover:rh-border-info-hover\",\r\n },\r\n outline: {\r\n primary:\r\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\r\n secondary:\r\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\r\n danger:\r\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\r\n warning:\r\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\r\n success:\r\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-info hover:rh-bg-info hover:rh-text-surface\",\r\n },\r\n ghost: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-transparent hover:rh-bg-info/10\",\r\n },\r\n};\r\n\r\nfunction getArbitraryColorStyle(\r\n variant: ButtonVariant,\r\n color: string,\r\n): React.CSSProperties {\r\n if (variant === \"solid\") return { backgroundColor: color, borderColor: color, color: \"#fff\" };\r\n if (variant === \"outline\") return { borderColor: color, color };\r\n return { color, borderColor: \"transparent\" };\r\n}\r\n\r\nconst sizeClasses: Record<ButtonSize, string> = {\r\n sm: \"rh-text-sm rh-px-3 rh-py-1.5\",\r\n md: \"rh-text-sm rh-px-4 rh-py-2\",\r\n lg: \"rh-text-base rh-px-5 rh-py-2.5\",\r\n};\r\n\r\nconst radiusClasses: Record<ButtonRadius, string> = {\r\n none: \"rh-rounded-none\",\r\n xxs: \"rh-rounded-xxs\",\r\n xs: \"rh-rounded-xs\",\r\n sm: \"rh-rounded-sm\",\r\n md: \"rh-rounded-md\",\r\n lg: \"rh-rounded-lg\",\r\n xl: \"rh-rounded-xl\",\r\n full: \"rh-rounded-full\",\r\n};\r\n\r\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\r\n {\r\n variant = \"solid\",\r\n size = \"md\",\r\n radius = \"sm\",\r\n color = \"primary\",\r\n hoverColor,\r\n hoverStyle,\r\n loading = false,\r\n disabled,\r\n leftIcon,\r\n rightIcon,\r\n className = \"\",\r\n style,\r\n children,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const isDisabled = React.useMemo(() => disabled || loading, [disabled, loading]);\r\n const preset = isPresetColor(color);\r\n\r\n const computedStyle = React.useMemo((): React.CSSProperties => {\r\n const baseStyle: React.CSSProperties = preset\r\n ? (hoverColor ? { [`--rh-${color}-hover`]: toRgbTriplet(hoverColor) ?? hoverColor } : {})\r\n : getArbitraryColorStyle(variant, color);\r\n \r\n // Add CSS custom properties for hover styles if provided\r\n const hoverVars: React.CSSProperties = hoverStyle ? {\r\n '--btn-hover-bg': hoverStyle.backgroundColor,\r\n '--btn-hover-border': hoverStyle.borderColor,\r\n '--btn-hover-color': hoverStyle.color,\r\n } as React.CSSProperties : {};\r\n \r\n return { ...style, ...baseStyle, ...hoverVars };\r\n }, [preset, color, variant, hoverColor, hoverStyle, style]);\r\n\r\n const hasCustomHover = Boolean(hoverStyle);\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n disabled={isDisabled}\r\n aria-busy={loading || undefined}\r\n style={computedStyle}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-2\",\r\n \"rh-border rh-font-sans rh-font-medium\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\r\n preset && !hasCustomHover ? variantColorClasses[variant][color as PresetColor] : \"\",\r\n !preset && !hasCustomHover ? \"hover:rh-brightness-90\" : \"\",\r\n hasCustomHover ? \"btn-custom-hover\" : \"\",\r\n sizeClasses[size],\r\n radiusClasses[radius],\r\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {loading && (\r\n <svg\r\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n className=\"rh-opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"rh-opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\r\n />\r\n </svg>\r\n )}\r\n {!loading && leftIcon && (\r\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\r\n {leftIcon}\r\n </span>\r\n )}\r\n {children}\r\n {!loading && rightIcon && (\r\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\r\n {rightIcon}\r\n </span>\r\n )}\r\n </button>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\nimport { ButtonColor, PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\r\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\r\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type IconButtonColor = ButtonColor;\r\n\r\nexport type IconButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\r\n /** Visual style variant */\r\n variant?: IconButtonVariant;\r\n /** Button size */\r\n size?: IconButtonSize;\r\n /** Border radius */\r\n radius?: IconButtonRadius;\r\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\r\n color?: IconButtonColor;\r\n /** Shows loading state and disables interaction */\r\n loading?: boolean;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\nconst variantColorClasses: Record<IconButtonVariant, Record<PresetColor, string>> = {\r\n solid: {\r\n primary:\r\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\r\n secondary:\r\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\r\n danger:\r\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\r\n warning:\r\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\r\n success:\r\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\r\n info: \"rh-bg-info rh-text-surface rh-border-info hover:rh-bg-info-hover hover:rh-border-info-hover\",\r\n },\r\n outline: {\r\n primary:\r\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\r\n secondary:\r\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\r\n danger:\r\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\r\n warning:\r\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\r\n success:\r\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-info hover:rh-bg-info hover:rh-text-surface\",\r\n },\r\n ghost: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-transparent hover:rh-bg-info/10\",\r\n },\r\n};\r\n\r\nfunction getArbitraryColorStyle(\r\n variant: IconButtonVariant,\r\n color: string,\r\n): React.CSSProperties {\r\n if (variant === \"solid\") return { backgroundColor: color, borderColor: color, color: \"#fff\" };\r\n if (variant === \"outline\") return { borderColor: color, color };\r\n return { color, borderColor: \"transparent\" };\r\n}\r\n\r\nconst sizeClasses: Record<IconButtonSize, string> = {\r\n sm: \"rh-h-8 rh-w-8 rh-text-sm\",\r\n md: \"rh-h-10 rh-w-10 rh-text-base\",\r\n lg: \"rh-h-12 rh-w-12 rh-text-lg\",\r\n};\r\n\r\nconst radiusClasses: Record<IconButtonRadius, string> = {\r\n none: \"rh-rounded-none\",\r\n xxs: \"rh-rounded-xxs\",\r\n xs: \"rh-rounded-xs\",\r\n sm: \"rh-rounded-sm\",\r\n md: \"rh-rounded-md\",\r\n lg: \"rh-rounded-lg\",\r\n xl: \"rh-rounded-xl\",\r\n full: \"rh-rounded-full\",\r\n};\r\n\r\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\r\n {\r\n variant = \"ghost\",\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n loading = false,\r\n disabled,\r\n className = \"\",\r\n style,\r\n children,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const isDisabled = disabled || loading;\r\n const preset = isPresetColor(color);\r\n\r\n const computedStyle = React.useMemo(\r\n (): React.CSSProperties =>\r\n preset ? (style ?? {}) : { ...style, ...getArbitraryColorStyle(variant, color) },\r\n [preset, color, variant, style],\r\n );\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n disabled={isDisabled}\r\n aria-busy={loading || undefined}\r\n style={computedStyle}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center\",\r\n \"rh-border rh-font-sans\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\r\n preset ? variantColorClasses[variant][color as PresetColor] : \"hover:rh-brightness-90\",\r\n sizeClasses[size],\r\n radiusClasses[radius],\r\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {loading ? (\r\n <svg\r\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\r\n aria-hidden=\"true\"\r\n >\r\n <circle\r\n className=\"rh-opacity-25\"\r\n cx=\"12\"\r\n cy=\"12\"\r\n r=\"10\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"4\"\r\n />\r\n <path\r\n className=\"rh-opacity-75\"\r\n fill=\"currentColor\"\r\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\r\n />\r\n </svg>\r\n ) : (\r\n children\r\n )}\r\n </button>\r\n );\r\n});\r\n","import React, { forwardRef } from \"react\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\r\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type TextInputProps = Omit<\r\n React.InputHTMLAttributes<HTMLInputElement>,\r\n \"size\"\r\n> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Validation status */\r\n status?: TextInputStatus;\r\n /** Input size */\r\n size?: TextInputSize;\r\n /** Border radius */\r\n radius?: TextInputRadius;\r\n /** Icon rendered to the left of the input */\r\n leftIcon?: React.ReactNode;\r\n /** Icon rendered to the right of the input */\r\n rightIcon?: React.ReactNode;\r\n /** Helper/error message displayed below the input (accepts ReactNode for flexibility) */\r\n helperText?: React.ReactNode;\r\n /** Custom class for the outermost wrapper */\r\n wrapperClassName?: string;\r\n};\r\n\r\nconst statusClasses: Record<TextInputStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\r\n error:\r\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\r\n};\r\n\r\nconst sizeClasses: Record<TextInputSize, string> = {\r\n sm: \"rh-h-input-sm rh-text-sm rh-px-input-x-sm\",\r\n md: \"rh-h-input-md rh-text-sm rh-px-input-x-md\",\r\n lg: \"rh-h-input-lg rh-text-base rh-px-input-x-lg\",\r\n};\r\n\r\nconst radiusClasses: Record<TextInputRadius, string> = {\r\n none: \"rh-rounded-none\",\r\n xxs: \"rh-rounded-xxs\",\r\n xs: \"rh-rounded-xs\",\r\n sm: \"rh-rounded-sm\",\r\n md: \"rh-rounded-md\",\r\n lg: \"rh-rounded-lg\",\r\n xl: \"rh-rounded-xl\",\r\n full: \"rh-rounded-full\",\r\n};\r\n\r\nconst iconSizeClasses: Record<TextInputSize, string> = {\r\n sm: \"rh-w-4 rh-h-4\",\r\n md: \"rh-w-5 rh-h-5\",\r\n lg: \"rh-w-5 rh-h-5\",\r\n};\r\n\r\nconst helperStatusClasses: Record<TextInputStatus, string> = {\r\n default: \"rh-text-text-muted\",\r\n error: \"rh-text-danger\",\r\n};\r\n\r\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\r\n function TextInput(\r\n {\r\n label,\r\n subtitle,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n leftIcon,\r\n rightIcon,\r\n helperText,\r\n disabled,\r\n className = \"\",\r\n wrapperClassName = \"\",\r\n id,\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n const inputId = id || React.useId();\r\n\r\n return (\r\n <div\r\n className={[\r\n \"rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\r\n wrapperClassName,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label\r\n htmlFor={inputId}\r\n className=\"rh-flex rh-items-baseline rh-gap-1\"\r\n >\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {label}\r\n </span>\r\n {subtitle && (\r\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {/* Input container */}\r\n <div\r\n className={[\r\n \"rh-flex rh-items-center rh-gap-2\",\r\n \"rh-border rh-bg-surface rh-font-sans\",\r\n \"rh-transition-colors rh-duration-150\",\r\n statusClasses[status],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled\r\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\r\n : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {leftIcon && (\r\n <span\r\n className={[\r\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\r\n iconSizeClasses[size],\r\n ].join(\" \")}\r\n aria-hidden=\"true\"\r\n >\r\n {leftIcon}\r\n </span>\r\n )}\r\n\r\n <input\r\n ref={ref}\r\n id={inputId}\r\n disabled={disabled}\r\n aria-invalid={status === \"error\" || undefined}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className={[\r\n \"rh-flex-1 rh-bg-transparent rh-outline-none\",\r\n \"rh-text-text placeholder:rh-text-text-muted\",\r\n disabled ? \"rh-cursor-not-allowed\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n />\r\n\r\n {rightIcon && (\r\n <span\r\n className={[\r\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\r\n iconSizeClasses[size],\r\n ].join(\" \")}\r\n aria-hidden=\"true\"\r\n >\r\n {rightIcon}\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <span\r\n id={`${inputId}-helper`}\r\n className={[\r\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\r\n helperStatusClasses[status],\r\n ].join(\" \")}\r\n >\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CheckboxProps = Omit<\r\n React.InputHTMLAttributes<HTMLInputElement>,\r\n \"type\" | \"size\"\r\n> & {\r\n /** Checkbox size */\r\n size?: CheckboxSize;\r\n /** Label text displayed next to the checkbox */\r\n label?: string;\r\n /** Indeterminate state (partially checked) */\r\n indeterminate?: boolean;\r\n};\r\n\r\nconst sizeClasses: Record<CheckboxSize, string> = {\r\n sm: \"rh-h-4 rh-w-4\",\r\n md: \"rh-h-5 rh-w-5\",\r\n lg: \"rh-h-6 rh-w-6\",\r\n};\r\n\r\nconst iconSizeClasses: Record<CheckboxSize, string> = {\r\n sm: \"rh-h-3 rh-w-3\",\r\n md: \"rh-h-3.5 rh-w-3.5\",\r\n lg: \"rh-h-4 rh-w-4\",\r\n};\r\n\r\nconst labelSizeClasses: Record<CheckboxSize, string> = {\r\n sm: \"rh-text-sm\",\r\n md: \"rh-text-sm\",\r\n lg: \"rh-text-base\",\r\n};\r\n\r\nconst CheckIcon = ({ className }: { className?: string }) => (\r\n <svg\r\n className={className}\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M1 5.5L4 8.5L11 1.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst MinusIcon = ({ className }: { className?: string }) => (\r\n <svg\r\n className={className}\r\n viewBox=\"0 0 10 2\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M1 1H9\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\r\n function Checkbox(\r\n {\r\n size = \"md\",\r\n label,\r\n indeterminate = false,\r\n disabled,\r\n checked,\r\n defaultChecked,\r\n className = \"\",\r\n id,\r\n onChange,\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n const innerRef = React.useRef<HTMLInputElement>(null);\r\n const inputId = id || React.useId();\r\n\r\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\r\n\r\n React.useEffect(() => {\r\n if (innerRef.current) {\r\n innerRef.current.indeterminate = indeterminate;\r\n }\r\n }, [indeterminate]);\r\n\r\n const isChecked = checked ?? innerRef.current?.checked ?? defaultChecked ?? false;\r\n const isActive = isChecked || indeterminate;\r\n\r\n return (\r\n <label\r\n htmlFor={inputId}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-gap-2 rh-font-sans rh-select-none\",\r\n disabled ? \"rh-cursor-not-allowed rh-opacity-50\" : \"rh-cursor-pointer\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <span className=\"rh-relative rh-inline-flex rh-items-center rh-justify-center\">\r\n <input\r\n ref={innerRef}\r\n id={inputId}\r\n type=\"checkbox\"\r\n disabled={disabled}\r\n checked={checked}\r\n defaultChecked={defaultChecked}\r\n aria-checked={indeterminate ? \"mixed\" : undefined}\r\n onChange={onChange}\r\n className=\"rh-peer rh-sr-only\"\r\n {...rest}\r\n />\r\n <span\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center\",\r\n \"rh-border rh-border-border rh-rounded-xxs\",\r\n \"rh-transition-colors rh-duration-150\",\r\n sizeClasses[size],\r\n isActive\r\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\r\n : \"rh-bg-surface rh-text-transparent\",\r\n !disabled && !isActive\r\n ? \"hover:rh-border-primary\"\r\n : \"\",\r\n \"peer-focus-visible:rh-ring-2 peer-focus-visible:rh-ring-ring peer-focus-visible:rh-ring-offset-2\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n aria-hidden=\"true\"\r\n >\r\n {indeterminate ? (\r\n <MinusIcon className={iconSizeClasses[size]} />\r\n ) : isChecked ? (\r\n <CheckIcon className={iconSizeClasses[size]} />\r\n ) : null}\r\n </span>\r\n </span>\r\n\r\n {label && (\r\n <span\r\n className={[\r\n \"rh-text-text\",\r\n labelSizeClasses[size],\r\n ].join(\" \")}\r\n >\r\n {label}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n },\r\n);\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\r\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type SelectStatus = \"default\" | \"error\";\r\n\r\nexport type SelectOption = {\r\n /** Unique value for the option */\r\n value: string;\r\n /** Display label */\r\n label: string;\r\n /** Whether the option is disabled */\r\n disabled?: boolean;\r\n};\r\n\r\ntype SelectBaseProps = {\r\n /** List of available options */\r\n options: SelectOption[];\r\n /** Label text displayed above the select */\r\n label?: string;\r\n /** Subtitle displayed next to the label */\r\n subtitle?: string;\r\n /** Placeholder text when no option is selected */\r\n placeholder?: string;\r\n /** Validation status */\r\n status?: SelectStatus;\r\n /** Select size */\r\n size?: SelectSize;\r\n /** Border radius */\r\n radius?: SelectRadius;\r\n /** Helper/error message displayed below the select */\r\n helperText?: React.ReactNode;\r\n /** Whether the select is disabled */\r\n disabled?: boolean;\r\n /** Custom class for the trigger container */\r\n className?: string;\r\n /** Custom class for the outermost wrapper */\r\n wrapperClassName?: string;\r\n};\r\n\r\nexport type SelectSingleProps = SelectBaseProps & {\r\n /** Enables multi-select mode */\r\n multiple?: false;\r\n /** Currently selected value (single mode) */\r\n value?: string;\r\n /** Default selected value (single mode, uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes (single mode) */\r\n onChange?: (value: string) => void;\r\n};\r\n\r\nexport type SelectMultipleProps = SelectBaseProps & {\r\n /** Enables multi-select mode */\r\n multiple: true;\r\n /** Currently selected values (multi mode) */\r\n value?: string[];\r\n /** Default selected values (multi mode, uncontrolled) */\r\n defaultValue?: string[];\r\n /** Called when selection changes (multi mode) */\r\n onChange?: (value: string[]) => void;\r\n};\r\n\r\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\r\n\r\nconst statusClasses: Record<SelectStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\r\n error:\r\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\r\n};\r\n\r\nconst sizeClasses: Record<SelectSize, string> = {\r\n sm: \"rh-min-h-[32px] rh-text-sm rh-px-input-x-sm\",\r\n md: \"rh-min-h-[40px] rh-text-sm rh-px-input-x-md\",\r\n lg: \"rh-min-h-[48px] rh-text-base rh-px-input-x-lg\",\r\n};\r\n\r\nconst radiusClasses: Record<SelectRadius, string> = {\r\n none: \"rh-rounded-none\",\r\n xxs: \"rh-rounded-xxs\",\r\n xs: \"rh-rounded-xs\",\r\n sm: \"rh-rounded-sm\",\r\n md: \"rh-rounded-md\",\r\n lg: \"rh-rounded-lg\",\r\n xl: \"rh-rounded-xl\",\r\n full: \"rh-rounded-full\",\r\n};\r\n\r\nconst dropdownRadiusClasses: Record<SelectRadius, string> = {\r\n none: \"rh-rounded-none\",\r\n xxs: \"rh-rounded-xxs\",\r\n xs: \"rh-rounded-xs\",\r\n sm: \"rh-rounded-xs\",\r\n md: \"rh-rounded-xs\",\r\n lg: \"rh-rounded-xs\",\r\n xl: \"rh-rounded-xs\",\r\n full: \"rh-rounded-xs\",\r\n};\r\n\r\nconst helperStatusClasses: Record<SelectStatus, string> = {\r\n default: \"rh-text-text-muted\",\r\n error: \"rh-text-danger\",\r\n};\r\n\r\nconst optionSizeClasses: Record<SelectSize, string> = {\r\n sm: \"rh-px-input-x-sm rh-py-1.5 rh-text-sm\",\r\n md: \"rh-px-input-x-md rh-py-2 rh-text-sm\",\r\n lg: \"rh-px-input-x-lg rh-py-2.5 rh-text-base\",\r\n};\r\n\r\nconst ChevronIcon = ({ className }: { className?: string }) => (\r\n <svg\r\n className={className}\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst CheckIcon = ({ className }: { className?: string }) => (\r\n <svg\r\n className={className}\r\n viewBox=\"0 0 12 10\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n aria-hidden=\"true\"\r\n >\r\n <path\r\n d=\"M1 5.5L4 8.5L11 1.5\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\r\n function Select(props, ref) {\r\n const {\r\n options,\r\n label,\r\n subtitle,\r\n placeholder = \"Select\",\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"xs\",\r\n helperText,\r\n disabled = false,\r\n className = \"\",\r\n wrapperClassName = \"\",\r\n multiple = false,\r\n } = props;\r\n\r\n const triggerId = React.useId();\r\n const listboxId = React.useId();\r\n const helperId = React.useId();\r\n\r\n const [isOpen, setIsOpen] = React.useState(false);\r\n const [activeIndex, setActiveIndex] = React.useState(-1);\r\n\r\n const wrapperRef = React.useRef<HTMLDivElement>(null);\r\n const innerRef = React.useRef<HTMLButtonElement>(null);\r\n const listboxRef = React.useRef<HTMLUListElement>(null);\r\n\r\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\r\n\r\n // --- Selection state ---\r\n const [internalValue, setInternalValue] = React.useState<string[]>(() => {\r\n if (props.defaultValue !== undefined) {\r\n return Array.isArray(props.defaultValue)\r\n ? props.defaultValue\r\n : [props.defaultValue];\r\n }\r\n return [];\r\n });\r\n\r\n const isControlled = props.value !== undefined;\r\n const selectedValues: string[] = isControlled\r\n ? Array.isArray(props.value)\r\n ? props.value\r\n : props.value !== undefined\r\n ? [props.value]\r\n : []\r\n : internalValue;\r\n\r\n const enabledOptions = options.filter((o) => !o.disabled);\r\n\r\n const handleSelect = (optionValue: string) => {\r\n if (multiple) {\r\n const next = selectedValues.includes(optionValue)\r\n ? selectedValues.filter((v) => v !== optionValue)\r\n : [...selectedValues, optionValue];\r\n\r\n if (!isControlled) setInternalValue(next);\r\n (props as SelectMultipleProps).onChange?.(next);\r\n } else {\r\n const next = [optionValue];\r\n if (!isControlled) setInternalValue(next);\r\n (props as SelectSingleProps).onChange?.(optionValue);\r\n setIsOpen(false);\r\n innerRef.current?.focus();\r\n }\r\n };\r\n\r\n // --- Display value ---\r\n const displayText = React.useMemo(() => {\r\n if (selectedValues.length === 0) return null;\r\n\r\n if (!multiple) {\r\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\r\n }\r\n\r\n const selectedLabels = selectedValues\r\n .map((v) => options.find((o) => o.value === v)?.label)\r\n .filter(Boolean);\r\n\r\n if (selectedLabels.length === 0) return null;\r\n if (selectedLabels.length === 1) return selectedLabels[0];\r\n return `${selectedLabels.length} selected`;\r\n }, [selectedValues, options, multiple]);\r\n\r\n // --- Close on outside click ---\r\n React.useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [isOpen]);\r\n\r\n // --- Close on Escape ---\r\n React.useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleEscape = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n innerRef.current?.focus();\r\n }\r\n };\r\n\r\n document.addEventListener(\"keydown\", handleEscape);\r\n return () => document.removeEventListener(\"keydown\", handleEscape);\r\n }, [isOpen]);\r\n\r\n // --- Scroll active option into view ---\r\n React.useEffect(() => {\r\n if (!isOpen || activeIndex < 0) return;\r\n const listbox = listboxRef.current;\r\n if (!listbox) return;\r\n const activeEl = listbox.children[activeIndex] as HTMLElement | undefined;\r\n if (typeof activeEl?.scrollIntoView === \"function\") {\r\n activeEl.scrollIntoView({ block: \"nearest\" });\r\n }\r\n }, [activeIndex, isOpen]);\r\n\r\n // --- Reset active index when opening ---\r\n React.useEffect(() => {\r\n if (isOpen) {\r\n const firstSelectedIdx = options.findIndex(\r\n (o) => !o.disabled && selectedValues.includes(o.value),\r\n );\r\n setActiveIndex(firstSelectedIdx >= 0 ? firstSelectedIdx : 0);\r\n } else {\r\n setActiveIndex(-1);\r\n }\r\n }, [isOpen]);\r\n\r\n // --- Keyboard navigation ---\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (disabled) return;\r\n\r\n switch (e.key) {\r\n case \"ArrowDown\":\r\n case \"Down\": {\r\n e.preventDefault();\r\n if (!isOpen) {\r\n setIsOpen(true);\r\n return;\r\n }\r\n setActiveIndex((prev) => {\r\n for (let i = prev + 1; i < options.length; i++) {\r\n if (!options[i].disabled) return i;\r\n }\r\n return prev;\r\n });\r\n break;\r\n }\r\n case \"ArrowUp\":\r\n case \"Up\": {\r\n e.preventDefault();\r\n if (!isOpen) {\r\n setIsOpen(true);\r\n return;\r\n }\r\n setActiveIndex((prev) => {\r\n for (let i = prev - 1; i >= 0; i--) {\r\n if (!options[i].disabled) return i;\r\n }\r\n return prev;\r\n });\r\n break;\r\n }\r\n case \"Enter\":\r\n case \" \": {\r\n e.preventDefault();\r\n if (!isOpen) {\r\n setIsOpen(true);\r\n } else if (activeIndex >= 0 && !options[activeIndex].disabled) {\r\n handleSelect(options[activeIndex].value);\r\n }\r\n break;\r\n }\r\n case \"Home\": {\r\n e.preventDefault();\r\n if (isOpen) {\r\n const idx = enabledOptions.length > 0\r\n ? options.indexOf(enabledOptions[0])\r\n : 0;\r\n setActiveIndex(idx);\r\n }\r\n break;\r\n }\r\n case \"End\": {\r\n e.preventDefault();\r\n if (isOpen) {\r\n const idx = enabledOptions.length > 0\r\n ? options.indexOf(enabledOptions[enabledOptions.length - 1])\r\n : options.length - 1;\r\n setActiveIndex(idx);\r\n }\r\n break;\r\n }\r\n case \"Tab\": {\r\n if (isOpen) setIsOpen(false);\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={[\r\n \"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\r\n wrapperClassName,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label\r\n id={`${triggerId}-label`}\r\n className=\"rh-flex rh-items-baseline rh-gap-1\"\r\n >\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {label}\r\n </span>\r\n {subtitle && (\r\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {/* Trigger */}\r\n <button\r\n ref={innerRef}\r\n id={triggerId}\r\n type=\"button\"\r\n role=\"combobox\"\r\n aria-expanded={isOpen}\r\n aria-haspopup=\"listbox\"\r\n aria-controls={listboxId}\r\n aria-labelledby={label ? `${triggerId}-label` : undefined}\r\n aria-describedby={helperText ? helperId : undefined}\r\n aria-invalid={status === \"error\" || undefined}\r\n aria-disabled={disabled || undefined}\r\n disabled={disabled}\r\n onClick={() => !disabled && setIsOpen((o) => !o)}\r\n onKeyDown={handleKeyDown}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-bg-surface rh-font-sans\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[status],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled\r\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\r\n : \"rh-cursor-pointer\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <span\r\n className={[\r\n \"rh-flex-1 rh-truncate\",\r\n displayText ? \"rh-text-text\" : \"rh-text-text-muted\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n\r\n <ChevronIcon\r\n className={[\r\n \"rh-w-5 rh-h-5 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150\",\r\n isOpen ? \"rh-rotate-180\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n />\r\n </button>\r\n\r\n {/* Dropdown */}\r\n {isOpen && (\r\n <ul\r\n ref={listboxRef}\r\n id={listboxId}\r\n role=\"listbox\"\r\n aria-labelledby={label ? `${triggerId}-label` : triggerId}\r\n aria-multiselectable={multiple || undefined}\r\n tabIndex={-1}\r\n className={[\r\n \"rh-absolute rh-z-50 rh-w-full rh-mt-1\",\r\n \"rh-border rh-border-border rh-bg-surface\",\r\n \"rh-shadow-md rh-overflow-auto rh-max-h-60\",\r\n \"rh-py-1\",\r\n dropdownRadiusClasses[radius],\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{ top: \"100%\" }}\r\n >\r\n {options.map((option, index) => {\r\n const isSelected = selectedValues.includes(option.value);\r\n const isActive = index === activeIndex;\r\n const isDisabled = option.disabled;\r\n\r\n return (\r\n <li\r\n key={option.value}\r\n id={`${listboxId}-option-${index}`}\r\n role=\"option\"\r\n aria-selected={isSelected}\r\n aria-disabled={isDisabled || undefined}\r\n onClick={() => {\r\n if (!isDisabled) handleSelect(option.value);\r\n }}\r\n onMouseEnter={() => {\r\n if (!isDisabled) setActiveIndex(index);\r\n }}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-transition-colors rh-duration-150\",\r\n optionSizeClasses[size],\r\n isDisabled\r\n ? \"rh-opacity-50 rh-cursor-not-allowed\"\r\n : \"rh-cursor-pointer\",\r\n isActive && !isDisabled\r\n ? \"rh-bg-background\"\r\n : \"\",\r\n isSelected && !isActive\r\n ? \"rh-bg-primary/5\"\r\n : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">\r\n {option.label}\r\n </span>\r\n\r\n {multiple ? (\r\n <span\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center\",\r\n \"rh-w-5 rh-h-5 rh-shrink-0\",\r\n \"rh-border rh-rounded-xxs rh-transition-colors rh-duration-150\",\r\n isSelected\r\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\r\n : \"rh-border-border rh-bg-surface\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n aria-hidden=\"true\"\r\n >\r\n {isSelected && (\r\n <CheckIcon className=\"rh-w-3 rh-h-3\" />\r\n )}\r\n </span>\r\n ) : (\r\n isSelected && (\r\n <CheckIcon className=\"rh-w-3.5 rh-h-3.5 rh-shrink-0 rh-text-primary\" />\r\n )\r\n )}\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n )}\r\n\r\n {/* Helper text */}\r\n {helperText && (\r\n <span\r\n id={helperId}\r\n className={[\r\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\r\n helperStatusClasses[status],\r\n ].join(\" \")}\r\n >\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n","\"use client\";\r\n\r\nimport React, { forwardRef, useState, useRef, useCallback, useEffect } from \"react\";\r\n\r\nexport type TooltipVariant = \"light\" | \"default\" | \"dark\";\r\nexport type TooltipSize = \"sm\" | \"md\";\r\nexport type TooltipPlacement =\r\n | \"top\"\r\n | \"top-start\"\r\n | \"top-end\"\r\n | \"bottom\"\r\n | \"bottom-start\"\r\n | \"bottom-end\"\r\n | \"left\"\r\n | \"left-start\"\r\n | \"left-end\"\r\n | \"right\"\r\n | \"right-start\"\r\n | \"right-end\";\r\n\r\nexport type TooltipProps = {\r\n /** Tooltip title text */\r\n title: string;\r\n /** Optional description text below the title */\r\n description?: string;\r\n /** Visual style variant */\r\n variant?: TooltipVariant;\r\n /** Tooltip size */\r\n size?: TooltipSize;\r\n /** Placement relative to the trigger element */\r\n placement?: TooltipPlacement;\r\n /** Show a close button (only for md size with description) */\r\n closable?: boolean;\r\n /** Show an icon before the title */\r\n icon?: React.ReactNode;\r\n /** Controlled open state */\r\n open?: boolean;\r\n /** Callback when open state changes */\r\n onOpenChange?: (open: boolean) => void;\r\n /** Delay before showing tooltip (ms) */\r\n enterDelay?: number;\r\n /** Delay before hiding tooltip (ms) */\r\n leaveDelay?: number;\r\n /** The trigger element */\r\n children: React.ReactElement;\r\n /** Additional className for the tooltip container */\r\n className?: string;\r\n};\r\n\r\nconst variantClasses: Record<TooltipVariant, string> = {\r\n light: \"rh-bg-surface rh-text-text rh-border rh-border-border rh-shadow-md\",\r\n default:\r\n \"rh-bg-primary/10 rh-text-text rh-border rh-border-primary/20 rh-shadow-md\",\r\n dark: \"rh-bg-primary rh-text-surface rh-shadow-md\",\r\n};\r\n\r\nconst arrowVariantClasses: Record<TooltipVariant, string> = {\r\n light: \"rh-border-border rh-bg-surface\",\r\n default: \"rh-border-primary/20 rh-bg-primary/10\",\r\n dark: \"rh-bg-primary\",\r\n};\r\n\r\nconst sizeClasses: Record<TooltipSize, string> = {\r\n sm: \"rh-px-3 rh-py-1.5 rh-text-xs\",\r\n md: \"rh-px-4 rh-py-3 rh-text-sm\",\r\n};\r\n\r\nconst tooltipPlacementClasses: Record<TooltipPlacement, string> = {\r\n top: \"rh-bottom-full rh-left-1/2 rh--translate-x-1/2 rh-mb-2\",\r\n \"top-start\": \"rh-bottom-full rh-left-0 rh-mb-2\",\r\n \"top-end\": \"rh-bottom-full rh-right-0 rh-mb-2\",\r\n bottom: \"rh-top-full rh-left-1/2 rh--translate-x-1/2 rh-mt-2\",\r\n \"bottom-start\": \"rh-top-full rh-left-0 rh-mt-2\",\r\n \"bottom-end\": \"rh-top-full rh-right-0 rh-mt-2\",\r\n left: \"rh-right-full rh-top-1/2 rh--translate-y-1/2 rh-mr-2\",\r\n \"left-start\": \"rh-right-full rh-top-0 rh-mr-2\",\r\n \"left-end\": \"rh-right-full rh-bottom-0 rh-mr-2\",\r\n right: \"rh-left-full rh-top-1/2 rh--translate-y-1/2 rh-ml-2\",\r\n \"right-start\": \"rh-left-full rh-top-0 rh-ml-2\",\r\n \"right-end\": \"rh-left-full rh-bottom-0 rh-ml-2\",\r\n};\r\n\r\nconst arrowPlacementClasses: Record<TooltipPlacement, string> = {\r\n top: \"rh-bottom-0 rh-left-1/2 rh--translate-x-1/2 rh-translate-y-1/2 rh-rotate-45\",\r\n \"top-start\": \"rh-bottom-0 rh-left-4 rh-translate-y-1/2 rh-rotate-45\",\r\n \"top-end\": \"rh-bottom-0 rh-right-4 rh-translate-y-1/2 rh-rotate-45\",\r\n bottom:\r\n \"rh-top-0 rh-left-1/2 rh--translate-x-1/2 rh--translate-y-1/2 rh-rotate-45\",\r\n \"bottom-start\": \"rh-top-0 rh-left-4 rh--translate-y-1/2 rh-rotate-45\",\r\n \"bottom-end\": \"rh-top-0 rh-right-4 rh--translate-y-1/2 rh-rotate-45\",\r\n left: \"rh-right-0 rh-top-1/2 rh--translate-y-1/2 rh-translate-x-1/2 rh-rotate-45\",\r\n \"left-start\": \"rh-right-0 rh-top-3 rh-translate-x-1/2 rh-rotate-45\",\r\n \"left-end\": \"rh-right-0 rh-bottom-3 rh-translate-x-1/2 rh-rotate-45\",\r\n right:\r\n \"rh-left-0 rh-top-1/2 rh--translate-y-1/2 rh--translate-x-1/2 rh-rotate-45\",\r\n \"right-start\": \"rh-left-0 rh-top-3 rh--translate-x-1/2 rh-rotate-45\",\r\n \"right-end\": \"rh-left-0 rh-bottom-3 rh--translate-x-1/2 rh-rotate-45\",\r\n};\r\n\r\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\r\n function Tooltip(\r\n {\r\n title,\r\n description,\r\n variant = \"light\",\r\n size = \"sm\",\r\n placement = \"top\",\r\n closable = false,\r\n icon,\r\n open: controlledOpen,\r\n onOpenChange,\r\n enterDelay = 100,\r\n leaveDelay = 150,\r\n children,\r\n className = \"\",\r\n },\r\n ref,\r\n ) {\r\n const [internalOpen, setInternalOpen] = useState(false);\r\n const enterTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n\r\n const isControlled = controlledOpen !== undefined;\r\n const isOpen = isControlled ? controlledOpen : internalOpen;\r\n\r\n const setOpen = useCallback(\r\n (value: boolean) => {\r\n if (!isControlled) {\r\n setInternalOpen(value);\r\n }\r\n onOpenChange?.(value);\r\n },\r\n [isControlled, onOpenChange],\r\n );\r\n\r\n const clearTimers = useCallback(() => {\r\n if (enterTimerRef.current) {\r\n clearTimeout(enterTimerRef.current);\r\n enterTimerRef.current = null;\r\n }\r\n if (leaveTimerRef.current) {\r\n clearTimeout(leaveTimerRef.current);\r\n leaveTimerRef.current = null;\r\n }\r\n }, []);\r\n\r\n const handleEnter = useCallback(() => {\r\n clearTimers();\r\n enterTimerRef.current = setTimeout(() => {\r\n setOpen(true);\r\n }, enterDelay);\r\n }, [clearTimers, enterDelay, setOpen]);\r\n\r\n const handleLeave = useCallback(() => {\r\n clearTimers();\r\n leaveTimerRef.current = setTimeout(() => {\r\n setOpen(false);\r\n }, leaveDelay);\r\n }, [clearTimers, leaveDelay, setOpen]);\r\n\r\n const handleClose = useCallback(() => {\r\n clearTimers();\r\n setOpen(false);\r\n }, [clearTimers, setOpen]);\r\n\r\n useEffect(() => {\r\n return () => clearTimers();\r\n }, [clearTimers]);\r\n\r\n const triggerChild = React.Children.only(children);\r\n\r\n const triggerElement = React.cloneElement(triggerChild, {\r\n onMouseEnter: (e: React.MouseEvent) => {\r\n handleEnter();\r\n triggerChild.props.onMouseEnter?.(e);\r\n },\r\n onMouseLeave: (e: React.MouseEvent) => {\r\n handleLeave();\r\n triggerChild.props.onMouseLeave?.(e);\r\n },\r\n onFocus: (e: React.FocusEvent) => {\r\n handleEnter();\r\n triggerChild.props.onFocus?.(e);\r\n },\r\n onBlur: (e: React.FocusEvent) => {\r\n handleLeave();\r\n triggerChild.props.onBlur?.(e);\r\n },\r\n \"aria-describedby\": isOpen ? \"rh-tooltip\" : undefined,\r\n } as React.HTMLAttributes<HTMLElement>);\r\n\r\n const showCloseButton = closable && size === \"md\" && description;\r\n\r\n const arrowBorderClass =\r\n variant === \"dark\" ? \"\" : \"rh-border-b rh-border-r\";\r\n\r\n return (\r\n <div\r\n className=\"rh-relative rh-inline-flex\"\r\n onMouseEnter={handleEnter}\r\n onMouseLeave={handleLeave}\r\n >\r\n {triggerElement}\r\n {isOpen && (\r\n <div\r\n ref={ref}\r\n id=\"rh-tooltip\"\r\n role=\"tooltip\"\r\n className={[\r\n \"rh-absolute rh-z-50 rh-w-max rh-max-w-xs rh-rounded-xs\",\r\n tooltipPlacementClasses[placement],\r\n variantClasses[variant],\r\n sizeClasses[size],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Arrow */}\r\n <span\r\n aria-hidden=\"true\"\r\n className={[\r\n \"rh-absolute rh-w-2.5 rh-h-2.5\",\r\n arrowBorderClass,\r\n arrowVariantClasses[variant],\r\n arrowPlacementClasses[placement],\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n />\r\n\r\n {/* Content */}\r\n <div className=\"rh-relative rh-flex rh-items-start rh-gap-2\">\r\n {icon && (\r\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\r\n {icon}\r\n </span>\r\n )}\r\n\r\n <div className=\"rh-flex-1 rh-min-w-0\">\r\n <p\r\n className={[\r\n \"rh-font-semibold rh-leading-tight\",\r\n size === \"sm\" ? \"rh-text-xs\" : \"rh-text-sm\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {title}\r\n </p>\r\n {description && size === \"md\" && (\r\n <p\r\n className={[\r\n \"rh-mt-1 rh-text-xs rh-leading-normal\",\r\n variant === \"dark\"\r\n ? \"rh-text-surface/80\"\r\n : \"rh-text-text-muted\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {description}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {showCloseButton && (\r\n <button\r\n type=\"button\"\r\n aria-label=\"Close tooltip\"\r\n onClick={handleClose}\r\n className={[\r\n \"rh-flex-shrink-0 rh-ml-1 rh-p-0.5 rh-rounded-xxs\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\r\n variant === \"dark\"\r\n ? \"rh-text-surface/80 hover:rh-text-surface\"\r\n : \"rh-text-text-muted hover:rh-text-text\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className=\"rh-w-4 rh-h-4\"\r\n aria-hidden=\"true\"\r\n >\r\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n },\r\n);\r\n","\"use client\";\r\n\r\nimport React, { forwardRef, useState, useMemo } from \"react\";\r\n\r\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type AvatarVariant = \"circle\" | \"square\";\r\n\r\n// Paleta de cores para avatares\r\nconst AVATAR_COLORS = [\r\n { bg: \"#FBF1E6\", text: \"#D6822D\" }, // Laranja\r\n { bg: \"#EDF3FA\", text: \"#538CC6\" }, // Azul\r\n { bg: \"#F3E5F5\", text: \"#9C27B0\" }, // Roxo\r\n { bg: \"#E8F5E9\", text: \"#4CAF50\" }, // Verde\r\n { bg: \"#FFF3E0\", text: \"#FF9800\" }, // Amarelo\r\n { bg: \"#FFEBEE\", text: \"#F44336\" }, // Vermelho\r\n { bg: \"#E3F2FD\", text: \"#2196F3\" }, // Azul claro\r\n { bg: \"#F3E5F5\", text: \"#673AB7\" }, // Violeta\r\n { bg: \"#E0F2F1\", text: \"#009688\" }, // Teal\r\n { bg: \"#FBE9E7\", text: \"#FF5722\" }, // Deep Orange\r\n];\r\n\r\n/**\r\n * Gera cores de avatar baseadas em uma string (nome)\r\n * Usa hash simples para garantir consistência\r\n */\r\nfunction getAvatarColors(name: string): { bg: string; text: string } {\r\n const hash = name.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\r\n const index = hash % AVATAR_COLORS.length;\r\n return AVATAR_COLORS[index];\r\n}\r\n\r\nexport type AvatarProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> & {\r\n /** Image source URL */\r\n src?: string;\r\n /** Alt text for the image (required for accessibility) */\r\n alt?: string;\r\n /** Fallback initials shown when image is unavailable */\r\n initials?: string;\r\n /** Avatar size */\r\n size?: AvatarSize;\r\n /** Shape variant */\r\n variant?: AvatarVariant;\r\n /** Generate background and text color automatically based on name/alt */\r\n colorFromName?: boolean;\r\n};\r\n\r\nconst sizeClasses: Record<AvatarSize, string> = {\r\n sm: \"rh-w-8 rh-h-8 rh-text-xs\",\r\n md: \"rh-w-10 rh-h-10 rh-text-sm\",\r\n lg: \"rh-w-12 rh-h-12 rh-text-base\",\r\n xl: \"rh-w-16 rh-h-16 rh-text-lg\",\r\n};\r\n\r\nconst imageSizeClasses: Record<AvatarSize, string> = {\r\n sm: \"rh-w-8 rh-h-8\",\r\n md: \"rh-w-10 rh-h-10\",\r\n lg: \"rh-w-12 rh-h-12\",\r\n xl: \"rh-w-16 rh-h-16\",\r\n};\r\n\r\nconst variantClasses: Record<AvatarVariant, string> = {\r\n circle: \"rh-rounded-full\",\r\n square: \"rh-rounded-sm\",\r\n};\r\n\r\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\r\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", colorFromName = false, className = \"\", style, ...rest },\r\n ref,\r\n) {\r\n const [imgError, setImgError] = useState(false);\r\n const showImage = src && !imgError;\r\n\r\n // Gera cores baseadas no nome se colorFromName estiver ativo\r\n const avatarColors = useMemo(() => {\r\n if (!colorFromName) return null;\r\n const name = initials || alt || \"\";\r\n return name ? getAvatarColors(name) : null;\r\n }, [colorFromName, initials, alt]);\r\n\r\n const fallbackLabel = initials\r\n ? initials.slice(0, 2).toUpperCase()\r\n : alt\r\n ? alt\r\n .split(\" \")\r\n .slice(0, 2)\r\n .map((w) => w[0])\r\n .join(\"\")\r\n .toUpperCase()\r\n : \"?\";\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role={showImage ? undefined : \"img\"}\r\n aria-label={showImage ? undefined : alt || initials}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center rh-shrink-0 rh-overflow-hidden\",\r\n avatarColors ? \"\" : \"rh-bg-primary rh-text-surface\",\r\n \"rh-font-sans rh-font-medium rh-select-none\",\r\n sizeClasses[size],\r\n variantClasses[variant],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{\r\n ...(avatarColors && { backgroundColor: avatarColors.bg, color: avatarColors.text }),\r\n ...style,\r\n }}\r\n {...rest}\r\n >\r\n {showImage ? (\r\n <img\r\n src={src}\r\n alt={alt}\r\n className={[imageSizeClasses[size], variantClasses[variant], \"rh-object-cover\"].join(\" \")}\r\n onError={() => setImgError(true)}\r\n />\r\n ) : (\r\n <span aria-hidden=\"true\">{fallbackLabel}</span>\r\n )}\r\n </div>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { PresetColor } from \"../../types/colors.types\";\r\n\r\nexport type TagSize = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TagProps = React.HTMLAttributes<HTMLSpanElement> & {\r\n /** Tag color — preset name or custom CSS color (e.g., \"#c3c3c3\", \"rgb(...)\") */\r\n color?: PresetColor | (string & {});\r\n /** Tag size */\r\n size?: TagSize;\r\n /** Active (selected) state */\r\n active?: boolean;\r\n /** Tag label text */\r\n title: string;\r\n /** Optional icon rendered on the left side */\r\n leftIcon?: React.ReactNode;\r\n /** Optional icon rendered on the right side */\r\n rightIcon?: React.ReactNode;\r\n /** Disabled state */\r\n disabled?: boolean;\r\n};\r\n\r\nconst PRESET_COLORS = new Set<string>([\r\n \"primary\",\r\n \"secondary\",\r\n \"danger\",\r\n \"warning\",\r\n \"success\",\r\n \"info\",\r\n]);\r\n\r\nconst isPresetColor = (color: string): color is PresetColor => PRESET_COLORS.has(color);\r\n\r\nconst activePresetClasses: Record<PresetColor, string> = {\r\n primary: \"rh-bg-primary rh-text-surface rh-border-primary\",\r\n secondary: \"rh-bg-secondary rh-text-surface rh-border-secondary\",\r\n danger: \"rh-bg-danger rh-text-surface rh-border-danger\",\r\n warning: \"rh-bg-warning rh-text-surface rh-border-warning\",\r\n success: \"rh-bg-success rh-text-surface rh-border-success\",\r\n info: \"rh-bg-info rh-text-surface rh-border-info\",\r\n};\r\n\r\nconst inactivePresetClasses: Record<PresetColor, string> = {\r\n primary: \"rh-bg-primary/10 rh-text-primary rh-border-primary/30\",\r\n secondary: \"rh-bg-secondary/10 rh-text-secondary rh-border-secondary/30\",\r\n danger: \"rh-bg-danger/10 rh-text-danger rh-border-danger/30\",\r\n warning: \"rh-bg-warning/10 rh-text-warning rh-border-warning/30\",\r\n success: \"rh-bg-success/10 rh-text-success rh-border-success/30\",\r\n info: \"rh-bg-info/10 rh-text-info rh-border-info/30\",\r\n};\r\n\r\nconst hoverActivePresetClasses: Record<PresetColor, string> = {\r\n primary: \"hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\r\n secondary: \"hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\r\n danger: \"hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\r\n warning: \"hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\r\n success: \"hover:rh-bg-success-hover hover:rh-border-success-hover\",\r\n info: \"hover:rh-bg-info-hover hover:rh-border-info-hover\",\r\n};\r\n\r\nconst hoverInactivePresetClasses: Record<PresetColor, string> = {\r\n primary: \"hover:rh-bg-primary/20 hover:rh-border-primary/50\",\r\n secondary: \"hover:rh-bg-secondary/20 hover:rh-border-secondary/50\",\r\n danger: \"hover:rh-bg-danger/20 hover:rh-border-danger/50\",\r\n warning: \"hover:rh-bg-warning/20 hover:rh-border-warning/50\",\r\n success: \"hover:rh-bg-success/20 hover:rh-border-success/50\",\r\n info: \"hover:rh-bg-info/20 hover:rh-border-info/50\",\r\n};\r\n\r\nconst sizeClasses: Record<TagSize, string> = {\r\n sm: \"rh-text-xs rh-px-2 rh-py-0.5 rh-gap-1\",\r\n md: \"rh-text-sm rh-px-2.5 rh-py-1 rh-gap-1.5\",\r\n lg: \"rh-text-sm rh-px-3 rh-py-1.5 rh-gap-1.5\",\r\n};\r\n\r\nfunction getCustomColorStyles(color: string, active: boolean): React.CSSProperties {\r\n if (active) {\r\n return { backgroundColor: color, borderColor: color, color: \"#fff\" };\r\n }\r\n return {\r\n backgroundColor: `color-mix(in srgb, ${color} 10%, transparent)`,\r\n borderColor: `color-mix(in srgb, ${color} 30%, transparent)`,\r\n color: color,\r\n };\r\n}\r\n\r\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\r\n {\r\n color = \"primary\",\r\n size = \"md\",\r\n active = false,\r\n title,\r\n leftIcon,\r\n rightIcon,\r\n className = \"\",\r\n disabled,\r\n style,\r\n children,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const preset = isPresetColor(color);\r\n const clickable = !!rest.onClick && !disabled;\r\n const colorClasses = preset\r\n ? active\r\n ? activePresetClasses[color]\r\n : inactivePresetClasses[color]\r\n : \"\";\r\n const hoverClasses =\r\n clickable && preset\r\n ? active\r\n ? hoverActivePresetClasses[color]\r\n : hoverInactivePresetClasses[color]\r\n : clickable\r\n ? \"hover:rh-brightness-95\"\r\n : \"\";\r\n const customStyles = preset ? {} : getCustomColorStyles(color, active);\r\n\r\n return (\r\n <span\r\n ref={ref}\r\n role={clickable ? \"button\" : undefined}\r\n tabIndex={clickable ? 0 : undefined}\r\n aria-pressed={clickable ? active : undefined}\r\n aria-disabled={disabled || undefined}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-font-sans rh-font-medium rh-rounded-full\",\r\n \"rh-border rh-whitespace-nowrap rh-select-none\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-cursor-pointer\",\r\n clickable ? \"rh-cursor-pointer\" : \"\",\r\n sizeClasses[size],\r\n colorClasses,\r\n hoverClasses,\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{ ...customStyles, ...style }}\r\n {...rest}\r\n >\r\n {leftIcon}\r\n {title}\r\n {children}\r\n {rightIcon}\r\n </span>\r\n );\r\n});\r\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { PresetColor } from \"../../types/colors.types\";\n\nexport type ToggleGroupSize = \"sm\" | \"md\" | \"lg\";\nexport type ToggleGroupRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ToggleGroupOption<T extends string = string> = {\n /** Unique value for this option */\n value: T;\n /** Label text or icon to display */\n label?: React.ReactNode;\n /** Icon to display (alternative to label) */\n icon?: React.ReactNode;\n /** Accessible label for screen readers */\n \"aria-label\"?: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n};\n\nexport type ToggleGroupProps<T extends string = string> = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> & {\n /** Available options */\n options: ToggleGroupOption<T>[];\n /** Currently selected value */\n value: T;\n /** Called when selection changes */\n onChange: (value: T) => void;\n /** Size variant */\n size?: ToggleGroupSize;\n /** Border radius */\n radius?: ToggleGroupRadius;\n /** Color scheme for active state */\n color?: PresetColor | (string & {});\n /** Whether the entire group is disabled */\n disabled?: boolean;\n};\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (color: string): color is PresetColor => PRESET_COLORS.has(color);\n\nconst sizeClasses: Record<ToggleGroupSize, { container: string; button: string }> = {\n sm: { container: \"rh-h-8\", button: \"rh-px-2 rh-text-xs\" },\n md: { container: \"rh-h-9\", button: \"rh-px-3 rh-text-sm\" },\n lg: { container: \"rh-h-10\", button: \"rh-px-4 rh-text-sm\" },\n};\n\nconst radiusClasses: Record<ToggleGroupRadius, string> = {\n none: \"rh-rounded-none\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nfunction getActiveStyles(color: string, isPreset: boolean): React.CSSProperties {\n if (isPreset) return {};\n return { backgroundColor: color, color: \"#fff\" };\n}\n\nfunction ToggleGroupInner<T extends string = string>(\n {\n options,\n value,\n onChange,\n size = \"md\",\n radius = \"full\",\n color = \"primary\",\n disabled = false,\n className = \"\",\n ...rest\n }: ToggleGroupProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const preset = isPresetColor(color);\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={[\n \"rh-inline-flex rh-items-center rh-bg-muted rh-overflow-hidden\",\n \"rh-p-1 rh-gap-0.5\",\n radiusClasses[radius],\n sizeClasses[size].container,\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {options.map((option) => {\n const isActive = value === option.value;\n const isDisabled = disabled || option.disabled;\n const activeClass = preset && isActive ? `rh-bg-${color}/20 rh-text-${color}` : \"\";\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isActive}\n aria-label={option[\"aria-label\"]}\n disabled={isDisabled}\n onClick={() => !isDisabled && onChange(option.value)}\n className={[\n \"rh-flex rh-items-center rh-justify-center rh-h-full\",\n \"rh-border-0 rh-font-sans rh-font-medium\",\n \"rh-transition-all rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n radiusClasses[radius],\n sizeClasses[size].button,\n isActive ? \"rh-bg-surface rh-text-text rh-shadow-sm\" : \"rh-bg-transparent rh-text-text-muted\",\n !isActive && !isDisabled ? \"hover:rh-bg-surface/50\" : \"\",\n isDisabled ? \"rh-cursor-not-allowed rh-pointer-events-none\" : \"rh-cursor-pointer\",\n ]\n .filter(Boolean)\n .join(\" \")}\n style={isActive && !preset ? getActiveStyles(color, preset) : undefined}\n >\n {option.icon}\n {option.label}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport const ToggleGroup = forwardRef(ToggleGroupInner) as <T extends string = string>(\n props: ToggleGroupProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },\n) => React.ReactElement;\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Visual style variant */\n variant?: CardVariant;\n /** Border radius */\n radius?: CardRadius;\n /** Internal padding */\n padding?: CardPadding;\n /** Makes the card clickable with hover effects */\n clickable?: boolean;\n /** Disabled state (only applies when clickable) */\n disabled?: boolean;\n};\n\nconst variantClasses: Record<CardVariant, string> = {\n elevated: \"rh-bg-surface rh-shadow-md rh-border-0\",\n outlined: \"rh-bg-surface rh-border rh-border-border rh-shadow-none\",\n filled: \"rh-bg-background rh-border-0 rh-shadow-none\",\n};\n\nconst radiusClasses: Record<CardRadius, string> = {\n none: \"rh-rounded-none\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n};\n\nconst paddingClasses: Record<CardPadding, string> = {\n none: \"rh-p-0\",\n sm: \"rh-p-3\",\n md: \"rh-p-4\",\n lg: \"rh-p-6\",\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n variant = \"outlined\",\n radius = \"sm\",\n padding = \"md\",\n clickable = false,\n disabled = false,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isInteractive = clickable && !disabled;\n\n return (\n <div\n ref={ref}\n role={clickable ? \"button\" : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n aria-disabled={disabled || undefined}\n className={[\n \"rh-font-sans rh-transition-all rh-duration-150\",\n variantClasses[variant],\n radiusClasses[radius],\n paddingClasses[padding],\n isInteractive\n ? \"rh-cursor-pointer hover:rh-shadow-lg hover:rh-scale-[1.01] active:rh-scale-[0.99]\"\n : \"\",\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(function CardHeader(\n { className = \"\", children, ...rest },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={[\"rh-flex rh-items-center rh-justify-between rh-gap-4\", className]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(function CardContent(\n { className = \"\", children, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={[\"rh-mt-2\", className].filter(Boolean).join(\" \")} {...rest}>\n {children}\n </div>\n );\n});\n\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(function CardFooter(\n { className = \"\", children, ...rest },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={[\n \"rh-flex rh-items-center rh-justify-end rh-gap-2 rh-mt-4 rh-pt-4 rh-border-t rh-border-border\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { PresetColor } from \"../../types/colors.types\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type SpinnerProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Spinner size */\n size?: SpinnerSize;\n /** Color scheme */\n color?: PresetColor | (string & {});\n /** Accessible label for screen readers */\n label?: string;\n};\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (color: string): color is PresetColor => PRESET_COLORS.has(color);\n\nconst sizeClasses: Record<SpinnerSize, string> = {\n xs: \"rh-w-3 rh-h-3\",\n sm: \"rh-w-4 rh-h-4\",\n md: \"rh-w-6 rh-h-6\",\n lg: \"rh-w-8 rh-h-8\",\n xl: \"rh-w-12 rh-h-12\",\n};\n\nconst colorClasses: Record<PresetColor, string> = {\n primary: \"rh-text-primary\",\n secondary: \"rh-text-secondary\",\n danger: \"rh-text-danger\",\n warning: \"rh-text-warning\",\n success: \"rh-text-success\",\n info: \"rh-text-info\",\n};\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(function Spinner(\n { size = \"md\", color = \"primary\", label = \"Carregando...\", className = \"\", style, ...rest },\n ref,\n) {\n const preset = isPresetColor(color);\n const colorClass = preset ? colorClasses[color] : \"\";\n const customStyle = preset ? style : { ...style, color };\n\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n sizeClasses[size],\n colorClass,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={customStyle}\n {...rest}\n >\n <svg\n className=\"rh-animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n <span className=\"rh-sr-only\">{label}</span>\n </div>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type TableSize = \"sm\" | \"md\" | \"lg\";\nexport type TableVariant = \"default\" | \"striped\";\n\nexport type TableColumn<T> = {\n /** Unique key for this column */\n key: string;\n /** Column header text */\n header: React.ReactNode;\n /** Function to render cell content */\n render: (row: T, index: number) => React.ReactNode;\n /** Column width (CSS value) */\n width?: string;\n /** Text alignment */\n align?: \"left\" | \"center\" | \"right\";\n /** Whether this column is sortable */\n sortable?: boolean;\n};\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nexport type TableSort = {\n key: string;\n direction: SortDirection;\n};\n\nexport type TableProps<T> = Omit<React.HTMLAttributes<HTMLTableElement>, \"children\"> & {\n /** Column definitions */\n columns: TableColumn<T>[];\n /** Row data */\n data: T[];\n /** Function to get unique key for each row */\n rowKey: (row: T, index: number) => string | number;\n /** Table size variant */\n size?: TableSize;\n /** Table style variant */\n variant?: TableVariant;\n /** Current sort state */\n sort?: TableSort;\n /** Called when sort changes */\n onSortChange?: (sort: TableSort) => void;\n /** Whether to show loading state */\n loading?: boolean;\n /** Content to show when data is empty */\n emptyContent?: React.ReactNode;\n /** Loading content */\n loadingContent?: React.ReactNode;\n /** Whether the table has sticky header */\n stickyHeader?: boolean;\n /** Custom header row style */\n headerStyle?: React.CSSProperties;\n};\n\nconst sizeClasses: Record<TableSize, { cell: string; header: string }> = {\n sm: { cell: \"rh-px-2 rh-py-2 rh-text-xs\", header: \"rh-px-2 rh-py-2 rh-text-xs\" },\n md: { cell: \"rh-px-3 rh-py-3 rh-text-sm\", header: \"rh-px-3 rh-py-3 rh-text-xs\" },\n lg: { cell: \"rh-px-4 rh-py-4 rh-text-sm\", header: \"rh-px-4 rh-py-3 rh-text-sm\" },\n};\n\nconst alignClasses: Record<\"left\" | \"center\" | \"right\", string> = {\n left: \"rh-text-left\",\n center: \"rh-text-center\",\n right: \"rh-text-right\",\n};\n\nfunction TableInner<T>(\n {\n columns,\n data,\n rowKey,\n size = \"md\",\n variant = \"default\",\n sort,\n onSortChange,\n loading = false,\n emptyContent = \"Nenhum dado encontrado\",\n loadingContent,\n stickyHeader = false,\n headerStyle,\n className = \"\",\n ...rest\n }: TableProps<T>,\n ref: React.ForwardedRef<HTMLTableElement>,\n) {\n const handleSort = (column: TableColumn<T>) => {\n if (!column.sortable || !onSortChange) return;\n\n const newDirection: SortDirection =\n sort?.key === column.key\n ? sort.direction === \"asc\"\n ? \"desc\"\n : sort.direction === \"desc\"\n ? null\n : \"asc\"\n : \"asc\";\n\n onSortChange({ key: column.key, direction: newDirection });\n };\n\n const renderSortIcon = (column: TableColumn<T>) => {\n if (!column.sortable) return null;\n\n const isAsc = sort?.key === column.key && sort.direction === \"asc\";\n const isDesc = sort?.key === column.key && sort.direction === \"desc\";\n\n return (\n <span className=\"rh-ml-1 rh-inline-flex rh-flex-col rh-gap-0.5\">\n <svg\n width=\"8\"\n height=\"5\"\n viewBox=\"0 0 8 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={isAsc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\n >\n <path d=\"M4 0L7.4641 4.5H0.535898L4 0Z\" fill=\"currentColor\" />\n </svg>\n <svg\n width=\"8\"\n height=\"5\"\n viewBox=\"0 0 8 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={isDesc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\n >\n <path d=\"M4 5L0.535898 0.5H7.4641L4 5Z\" fill=\"currentColor\" />\n </svg>\n </span>\n );\n };\n\n const isEmpty = !loading && data.length === 0;\n const colSpan = columns.length;\n\n return (\n <div className=\"rh-w-full rh-overflow-x-auto\">\n <table\n ref={ref}\n className={[\n \"rh-w-full rh-border-collapse rh-font-sans\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n <thead>\n <tr className=\"rh-border-b rh-border-border\" style={headerStyle}>\n {columns.map((column) => (\n <th\n key={column.key}\n scope=\"col\"\n style={{ width: column.width }}\n className={[\n sizeClasses[size].header,\n alignClasses[column.align || \"left\"],\n \"rh-font-semibold rh-text-text-muted rh-whitespace-nowrap\",\n stickyHeader ? \"rh-sticky rh-top-0 rh-bg-surface rh-z-10\" : \"\",\n column.sortable ? \"rh-cursor-pointer rh-select-none hover:rh-text-text\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => handleSort(column)}\n >\n <span className=\"rh-inline-flex rh-items-center\">\n {column.header}\n {renderSortIcon(column)}\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading && (\n <tr>\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8\">\n {loadingContent || (\n <div className=\"rh-flex rh-items-center rh-justify-center rh-gap-2 rh-text-text-muted\">\n <svg\n className=\"rh-animate-spin rh-h-5 rh-w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n Carregando...\n </div>\n )}\n </td>\n </tr>\n )}\n {isEmpty && (\n <tr>\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8 rh-text-text-muted\">\n {emptyContent}\n </td>\n </tr>\n )}\n {!loading &&\n data.map((row, index) => (\n <tr\n key={rowKey(row, index)}\n className={[\n \"rh-border-b rh-border-border rh-transition-colors\",\n \"hover:rh-bg-background\",\n variant === \"striped\" && index % 2 === 1 ? \"rh-bg-background/50\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className={[\n sizeClasses[size].cell,\n alignClasses[column.align || \"left\"],\n \"rh-text-text\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {column.render(row, index)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport const Table = forwardRef(TableInner) as <T>(\n props: TableProps<T> & { ref?: React.ForwardedRef<HTMLTableElement> },\n) => React.ReactElement;\n","import React, { forwardRef } from \"react\";\r\n\r\nexport type ContainerProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /**\r\n * Remove o padding horizontal lateral.\r\n * Use quando o conteúdo deve ocupar toda a largura disponível.\r\n */\r\n fluid?: boolean;\r\n};\r\n\r\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\r\n function Container({ fluid = false, className = \"\", children, ...rest }, ref) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\r\n \"rh-w-full rh-mx-auto\",\r\n \"rh-max-w-[1440px]\",\r\n !fluid\r\n ? \"rh-px-grid-margin-mobile desktop-xs:rh-px-grid-margin-desktop\"\r\n : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n","import React, { forwardRef } from \"react\";\r\n\r\nexport type GridContainerProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /**\r\n * Override do número de colunas.\r\n * Padrão: 4 no mobile, 12 no desktop (desktop-xs+).\r\n */\r\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\r\n /**\r\n * Gap entre as colunas em pixels.\r\n * Padrão: 16px no mobile, 24px no desktop.\r\n */\r\n spacing?: number;\r\n};\r\n\r\nconst colsClasses: Record<number, string> = {\r\n 1: \"rh-grid-cols-1\",\r\n 2: \"rh-grid-cols-2\",\r\n 3: \"rh-grid-cols-3\",\r\n 4: \"rh-grid-cols-4\",\r\n 5: \"rh-grid-cols-5\",\r\n 6: \"rh-grid-cols-6\",\r\n 7: \"rh-grid-cols-7\",\r\n 8: \"rh-grid-cols-8\",\r\n 9: \"rh-grid-cols-9\",\r\n 10: \"rh-grid-cols-10\",\r\n 11: \"rh-grid-cols-11\",\r\n 12: \"rh-grid-cols-12\",\r\n};\r\n\r\nexport const GridContainer = forwardRef<HTMLDivElement, GridContainerProps>(\r\n function GridContainer({ columns, spacing, className = \"\", style, children, ...rest }, ref) {\r\n const colClass = columns\r\n ? colsClasses[columns]\r\n : \"rh-grid-cols-4 desktop-xs:rh-grid-cols-12\";\r\n\r\n const gapStyle =\r\n spacing !== undefined\r\n ? { gap: `${spacing}px`, ...style }\r\n : style;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n style={gapStyle}\r\n className={[\r\n \"rh-grid\",\r\n colClass,\r\n spacing === undefined ? \"rh-gap-grid-gutter-mobile desktop-xs:rh-gap-grid-gutter-desktop\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n","import React, { forwardRef } from \"react\";\r\n\r\nexport type GridSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\r\nexport type MobileSpan = 1 | 2 | 3 | 4;\r\n\r\nexport type GridItemProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /** Span base no mobile (320px+). Padrão: 4 (full width das 4 colunas). */\r\n mobile?: MobileSpan;\r\n /** Span a partir de mobile-sm (360px+). */\r\n mobileSm?: MobileSpan;\r\n /** Span a partir de mobile-md (390px+). */\r\n mobileMd?: MobileSpan;\r\n /** Span a partir de mobile-lg (430px+). */\r\n mobileLg?: MobileSpan;\r\n /** Span a partir de desktop-xs (768px+). Padrão: 12 (full width das 12 colunas). */\r\n desktop?: GridSpan;\r\n /** Span a partir de desktop-sm (1024px+). */\r\n desktopSm?: GridSpan;\r\n /** Span a partir de desktop-md (1280px+). */\r\n desktopMd?: GridSpan;\r\n /** Span a partir de desktop-lg (1440px+). */\r\n desktopLg?: GridSpan;\r\n};\r\n\r\n// Mapas estáticos completos para evitar purge do Tailwind\r\nconst mobileSpanClasses: Record<MobileSpan, string> = {\r\n 1: \"rh-col-span-1\",\r\n 2: \"rh-col-span-2\",\r\n 3: \"rh-col-span-3\",\r\n 4: \"rh-col-span-4\",\r\n};\r\n\r\nconst mobileSmSpanClasses: Record<MobileSpan, string> = {\r\n 1: \"mobile-sm:rh-col-span-1\",\r\n 2: \"mobile-sm:rh-col-span-2\",\r\n 3: \"mobile-sm:rh-col-span-3\",\r\n 4: \"mobile-sm:rh-col-span-4\",\r\n};\r\n\r\nconst mobileMdSpanClasses: Record<MobileSpan, string> = {\r\n 1: \"mobile-md:rh-col-span-1\",\r\n 2: \"mobile-md:rh-col-span-2\",\r\n 3: \"mobile-md:rh-col-span-3\",\r\n 4: \"mobile-md:rh-col-span-4\",\r\n};\r\n\r\nconst mobileLgSpanClasses: Record<MobileSpan, string> = {\r\n 1: \"mobile-lg:rh-col-span-1\",\r\n 2: \"mobile-lg:rh-col-span-2\",\r\n 3: \"mobile-lg:rh-col-span-3\",\r\n 4: \"mobile-lg:rh-col-span-4\",\r\n};\r\n\r\nconst desktopSpanClasses: Record<GridSpan, string> = {\r\n 1: \"desktop-xs:rh-col-span-1\",\r\n 2: \"desktop-xs:rh-col-span-2\",\r\n 3: \"desktop-xs:rh-col-span-3\",\r\n 4: \"desktop-xs:rh-col-span-4\",\r\n 5: \"desktop-xs:rh-col-span-5\",\r\n 6: \"desktop-xs:rh-col-span-6\",\r\n 7: \"desktop-xs:rh-col-span-7\",\r\n 8: \"desktop-xs:rh-col-span-8\",\r\n 9: \"desktop-xs:rh-col-span-9\",\r\n 10: \"desktop-xs:rh-col-span-10\",\r\n 11: \"desktop-xs:rh-col-span-11\",\r\n 12: \"desktop-xs:rh-col-span-12\",\r\n};\r\n\r\nconst desktopSmSpanClasses: Record<GridSpan, string> = {\r\n 1: \"desktop-sm:rh-col-span-1\",\r\n 2: \"desktop-sm:rh-col-span-2\",\r\n 3: \"desktop-sm:rh-col-span-3\",\r\n 4: \"desktop-sm:rh-col-span-4\",\r\n 5: \"desktop-sm:rh-col-span-5\",\r\n 6: \"desktop-sm:rh-col-span-6\",\r\n 7: \"desktop-sm:rh-col-span-7\",\r\n 8: \"desktop-sm:rh-col-span-8\",\r\n 9: \"desktop-sm:rh-col-span-9\",\r\n 10: \"desktop-sm:rh-col-span-10\",\r\n 11: \"desktop-sm:rh-col-span-11\",\r\n 12: \"desktop-sm:rh-col-span-12\",\r\n};\r\n\r\nconst desktopMdSpanClasses: Record<GridSpan, string> = {\r\n 1: \"desktop-md:rh-col-span-1\",\r\n 2: \"desktop-md:rh-col-span-2\",\r\n 3: \"desktop-md:rh-col-span-3\",\r\n 4: \"desktop-md:rh-col-span-4\",\r\n 5: \"desktop-md:rh-col-span-5\",\r\n 6: \"desktop-md:rh-col-span-6\",\r\n 7: \"desktop-md:rh-col-span-7\",\r\n 8: \"desktop-md:rh-col-span-8\",\r\n 9: \"desktop-md:rh-col-span-9\",\r\n 10: \"desktop-md:rh-col-span-10\",\r\n 11: \"desktop-md:rh-col-span-11\",\r\n 12: \"desktop-md:rh-col-span-12\",\r\n};\r\n\r\nconst desktopLgSpanClasses: Record<GridSpan, string> = {\r\n 1: \"desktop-lg:rh-col-span-1\",\r\n 2: \"desktop-lg:rh-col-span-2\",\r\n 3: \"desktop-lg:rh-col-span-3\",\r\n 4: \"desktop-lg:rh-col-span-4\",\r\n 5: \"desktop-lg:rh-col-span-5\",\r\n 6: \"desktop-lg:rh-col-span-6\",\r\n 7: \"desktop-lg:rh-col-span-7\",\r\n 8: \"desktop-lg:rh-col-span-8\",\r\n 9: \"desktop-lg:rh-col-span-9\",\r\n 10: \"desktop-lg:rh-col-span-10\",\r\n 11: \"desktop-lg:rh-col-span-11\",\r\n 12: \"desktop-lg:rh-col-span-12\",\r\n};\r\n\r\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\r\n function GridItem(\r\n {\r\n mobile = 4,\r\n mobileSm,\r\n mobileMd,\r\n mobileLg,\r\n desktop = 12,\r\n desktopSm,\r\n desktopMd,\r\n desktopLg,\r\n className = \"\",\r\n children,\r\n ...rest\r\n },\r\n ref,\r\n ) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\r\n mobileSpanClasses[mobile],\r\n mobileSm !== undefined ? mobileSmSpanClasses[mobileSm] : \"\",\r\n mobileMd !== undefined ? mobileMdSpanClasses[mobileMd] : \"\",\r\n mobileLg !== undefined ? mobileLgSpanClasses[mobileLg] : \"\",\r\n desktopSpanClasses[desktop],\r\n desktopSm !== undefined ? desktopSmSpanClasses[desktopSm] : \"\",\r\n desktopMd !== undefined ? desktopMdSpanClasses[desktopMd] : \"\",\r\n desktopLg !== undefined ? desktopLgSpanClasses[desktopLg] : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n },\r\n);\r\n"]}
1
+ {"version":3,"sources":["../src/provider/theme.ts","../src/icons/DeleteIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/InfoIcon.tsx","../src/icons/WarningIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastContext.tsx","../src/provider/RehagroProvider.tsx","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/TextInput/TextInput.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Select/Select.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Tag/Tag.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Card/Card.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Table/Table.tsx","../src/components/Grid/Container.tsx","../src/components/Grid/GridContainer.tsx","../src/components/Grid/GridItem.tsx"],"names":["jsx","jsxs","Toast","useState","useRef","useCallback","toRgbTriplet","forwardRef","Button","React","PRESET_COLORS","isPresetColor","variantColorClasses","getArbitraryColorStyle","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","statusClasses","helperStatusClasses","CheckIcon","Select","Tooltip","useEffect","variantClasses","Avatar","useMemo","Tag","colorClasses","Card","CardHeader","CardContent","CardFooter","Spinner","Container","GridContainer","GridItem"],"mappings":"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","file":"index.mjs","sourcesContent":["export type RehagroTheme = {\n /** Brand colors — accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\n primary?: string;\n primaryHover?: string;\n secondary?: string;\n secondaryHover?: string;\n danger?: string;\n dangerHover?: string;\n warning?: string;\n warningHover?: string;\n success?: string;\n successHover?: string;\n info?: string;\n infoHover?: string;\n\n /** Semantic colors */\n text?: string;\n textMuted?: string;\n surface?: string;\n background?: string;\n border?: string;\n ring?: string;\n\n /** Border radius (xxs:4 → xs:8 → sm:12 → md:16 → lg:24 → xl:32) */\n radiusXxs?: string;\n radiusXs?: string;\n radiusSm?: string;\n radiusMd?: string;\n radiusLg?: string;\n radiusXl?: string;\n\n /** Border width */\n borderWidthSm?: string;\n borderWidthMd?: string;\n borderWidthLg?: string;\n\n /** Input sizes */\n inputHeightSm?: string;\n inputHeightMd?: string;\n inputHeightLg?: string;\n inputPxSm?: string;\n inputPxMd?: string;\n inputPxLg?: string;\n};\n\nexport type RehagroProviderProps = {\n /** Theme overrides — any token not provided keeps the default value */\n theme?: RehagroTheme;\n /** Toast container position. Default: \"top-right\" */\n toastPosition?: import(\"../components/Toast\").ToastPosition;\n children: React.ReactNode;\n};\n\n/** Maps theme keys to CSS custom property names */\nexport const TOKEN_MAP: Record<keyof RehagroTheme, { var: string; isColor: boolean }> = {\n primary: { var: \"--rh-primary\", isColor: true },\n primaryHover: { var: \"--rh-primary-hover\", isColor: true },\n secondary: { var: \"--rh-secondary\", isColor: true },\n secondaryHover: { var: \"--rh-secondary-hover\", isColor: true },\n danger: { var: \"--rh-danger\", isColor: true },\n dangerHover: { var: \"--rh-danger-hover\", isColor: true },\n warning: { var: \"--rh-warning\", isColor: true },\n warningHover: { var: \"--rh-warning-hover\", isColor: true },\n success: { var: \"--rh-success\", isColor: true },\n successHover: { var: \"--rh-success-hover\", isColor: true },\n info: { var: \"--rh-info\", isColor: true },\n infoHover: { var: \"--rh-info-hover\", isColor: true },\n text: { var: \"--rh-text\", isColor: true },\n textMuted: { var: \"--rh-text-muted\", isColor: true },\n surface: { var: \"--rh-surface\", isColor: true },\n background: { var: \"--rh-background\", isColor: true },\n border: { var: \"--rh-border\", isColor: true },\n ring: { var: \"--rh-ring\", isColor: true },\n radiusXxs: { var: \"--rh-radius-xxs\", isColor: false },\n radiusXs: { var: \"--rh-radius-xs\", isColor: false },\n radiusSm: { var: \"--rh-radius-sm\", isColor: false },\n radiusMd: { var: \"--rh-radius-md\", isColor: false },\n radiusLg: { var: \"--rh-radius-lg\", isColor: false },\n radiusXl: { var: \"--rh-radius-xl\", isColor: false },\n borderWidthSm: { var: \"--rh-border-width-sm\", isColor: false },\n borderWidthMd: { var: \"--rh-border-width-md\", isColor: false },\n borderWidthLg: { var: \"--rh-border-width-lg\", isColor: false },\n inputHeightSm: { var: \"--rh-input-height-sm\", isColor: false },\n inputHeightMd: { var: \"--rh-input-height-md\", isColor: false },\n inputHeightLg: { var: \"--rh-input-height-lg\", isColor: false },\n inputPxSm: { var: \"--rh-input-px-sm\", isColor: false },\n inputPxMd: { var: \"--rh-input-px-md\", isColor: false },\n inputPxLg: { var: \"--rh-input-px-lg\", isColor: false },\n};\n","import type { IconProps } from \"./types\";\n\nexport const DeleteIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\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 {...props}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const EditIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\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 {...props}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SearchIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\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 {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const PlusIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\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 {...props}\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const InfoIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const WarningIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SuccessIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const ErrorIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const NeutralIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3.75a.75.75 0 000 1.5h.01a.75.75 0 000-1.5H10zm-.75 3a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v3a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75v-3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const CloseIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport {\n InfoIcon,\n WarningIcon,\n SuccessIcon,\n ErrorIcon,\n NeutralIcon,\n CloseIcon,\n} from \"../../icons\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"success\" | \"error\" | \"neutral\";\nexport type ToastAppearance = \"solid\" | \"light\" | \"outline\";\n\nexport type ToastLink = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type ToastProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Toast title */\n title: string;\n /** Optional description below the title */\n description?: string;\n /** Optional link below the content */\n link?: ToastLink;\n /** Visual variant */\n variant?: ToastVariant;\n /** Visual appearance */\n appearance?: ToastAppearance;\n /** Callback when the close button is clicked */\n onClose?: () => void;\n};\n\n// ── Icon map ──────────────────────────────────────────────────────────────────\n\ntype IconComponent = React.FC<React.SVGAttributes<SVGSVGElement>>;\n\nconst variantIconMap: Record<ToastVariant, IconComponent> = {\n info: InfoIcon,\n warning: WarningIcon,\n success: SuccessIcon,\n error: ErrorIcon,\n neutral: NeutralIcon,\n};\n\n// ── Style maps ────────────────────────────────────────────────────────────────\n\ntype StyleKey = `${ToastVariant}-${ToastAppearance}`;\n\nconst containerStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-bg-blue-600 rh-text-white rh-border-transparent\",\n \"info-light\": \"rh-bg-blue-50 rh-text-blue-900 rh-border-blue-200\",\n \"info-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"warning-solid\": \"rh-bg-yellow-500 rh-text-white rh-border-transparent\",\n \"warning-light\": \"rh-bg-yellow-50 rh-text-yellow-900 rh-border-yellow-200\",\n \"warning-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"success-solid\": \"rh-bg-[rgb(var(--rh-success))] rh-text-white rh-border-transparent\",\n \"success-light\": \"rh-bg-green-50 rh-text-green-900 rh-border-green-200\",\n \"success-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"error-solid\": \"rh-bg-[rgb(var(--rh-danger))] rh-text-white rh-border-transparent\",\n \"error-light\": \"rh-bg-red-50 rh-text-red-900 rh-border-red-200\",\n \"error-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"neutral-solid\": \"rh-bg-gray-900 rh-text-white rh-border-transparent\",\n \"neutral-light\": \"rh-bg-gray-100 rh-text-gray-900 rh-border-gray-200\",\n \"neutral-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n};\n\nconst iconStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white\",\n \"info-light\": \"rh-text-blue-600\",\n \"info-outline\": \"rh-text-blue-600\",\n \"warning-solid\": \"rh-text-white\",\n \"warning-light\": \"rh-text-yellow-600\",\n \"warning-outline\": \"rh-text-yellow-600\",\n \"success-solid\": \"rh-text-white\",\n \"success-light\": \"rh-text-green-600\",\n \"success-outline\": \"rh-text-green-600\",\n \"error-solid\": \"rh-text-white\",\n \"error-light\": \"rh-text-red-600\",\n \"error-outline\": \"rh-text-red-600\",\n \"neutral-solid\": \"rh-text-white\",\n \"neutral-light\": \"rh-text-gray-600\",\n \"neutral-outline\": \"rh-text-gray-600\",\n};\n\nconst descriptionStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700\",\n \"info-outline\": \"rh-text-text-muted\",\n \"warning-solid\": \"rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700\",\n \"warning-outline\": \"rh-text-text-muted\",\n \"success-solid\": \"rh-text-white/80\",\n \"success-light\": \"rh-text-green-700\",\n \"success-outline\": \"rh-text-text-muted\",\n \"error-solid\": \"rh-text-white/80\",\n \"error-light\": \"rh-text-red-700\",\n \"error-outline\": \"rh-text-text-muted\",\n \"neutral-solid\": \"rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700\",\n \"neutral-outline\": \"rh-text-text-muted\",\n};\n\nconst linkStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700 rh-underline hover:rh-text-blue-900\",\n \"info-outline\": \"rh-text-blue-600 rh-underline hover:rh-text-blue-800\",\n \"warning-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700 rh-underline hover:rh-text-yellow-900\",\n \"warning-outline\": \"rh-text-yellow-600 rh-underline hover:rh-text-yellow-800\",\n \"success-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"success-light\": \"rh-text-green-700 rh-underline hover:rh-text-green-900\",\n \"success-outline\": \"rh-text-green-600 rh-underline hover:rh-text-green-800\",\n \"error-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"error-light\": \"rh-text-red-700 rh-underline hover:rh-text-red-900\",\n \"error-outline\": \"rh-text-red-600 rh-underline hover:rh-text-red-800\",\n \"neutral-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700 rh-underline hover:rh-text-gray-900\",\n \"neutral-outline\": \"rh-text-gray-600 rh-underline hover:rh-text-gray-800\",\n};\n\nconst closeStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"info-light\": \"rh-text-blue-500 hover:rh-text-blue-800\",\n \"info-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"warning-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"warning-light\": \"rh-text-yellow-500 hover:rh-text-yellow-800\",\n \"warning-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"success-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"success-light\": \"rh-text-green-500 hover:rh-text-green-800\",\n \"success-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"error-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"error-light\": \"rh-text-red-500 hover:rh-text-red-800\",\n \"error-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"neutral-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"neutral-light\": \"rh-text-gray-500 hover:rh-text-gray-800\",\n \"neutral-outline\": \"rh-text-text-muted hover:rh-text-text\",\n};\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n {\n title,\n description,\n link,\n variant = \"info\",\n appearance = \"light\",\n onClose,\n className = \"\",\n ...rest\n },\n ref,\n) {\n const styleKey: StyleKey = `${variant}-${appearance}`;\n const Icon = variantIconMap[variant];\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n className={[\n \"rh-flex rh-items-start rh-gap-3\",\n \"rh-w-80 rh-rounded-sm rh-border rh-p-4\",\n \"rh-shadow-md rh-font-sans\",\n containerStyles[styleKey],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {/* Icon */}\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n <Icon\n className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]]\n .filter(Boolean)\n .join(\" \")}\n />\n </span>\n\n {/* Content */}\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p className=\"rh-text-sm rh-font-semibold rh-leading-tight\">{title}</p>\n\n {description && (\n <p\n className={[\n \"rh-mt-1 rh-text-sm rh-leading-normal\",\n descriptionStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n\n {link && (\n <a\n href={link.href}\n onClick={link.onClick}\n className={[\n \"rh-mt-1 rh-inline-block rh-text-sm rh-font-medium\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1 rh-rounded-xxs\",\n linkStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {link.label}\n </a>\n )}\n </div>\n\n {/* Close button */}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n onClick={onClose}\n className={[\n \"rh-flex-shrink-0 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1\",\n closeStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <CloseIcon className=\"rh-w-4 rh-h-4\" />\n </button>\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ToastPosition } from \"./ToastContext\";\nimport { Toast } from \"./Toast\";\nimport { useToastContext } from \"./ToastContext\";\n\n// ── Animation direction per position ─────────────────────────────────────────\n\ntype AnimDir = \"right\" | \"left\" | \"top\" | \"bottom\";\n\nconst positionAnimDir: Record<ToastPosition, AnimDir> = {\n \"top-right\": \"right\",\n \"bottom-right\": \"right\",\n \"top-left\": \"left\",\n \"bottom-left\": \"left\",\n \"top-center\": \"top\",\n \"bottom-center\": \"bottom\",\n};\n\nconst enterClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-in-right\",\n left: \"rh-animate-toast-in-left\",\n top: \"rh-animate-toast-in-top\",\n bottom: \"rh-animate-toast-in-bottom\",\n};\n\nconst leaveClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-out-right\",\n left: \"rh-animate-toast-out-left\",\n top: \"rh-animate-toast-out-top\",\n bottom: \"rh-animate-toast-out-bottom\",\n};\n\n// ── Position container classes ────────────────────────────────────────────────\n\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-right\": \"rh-top-4 rh-right-4 rh-items-end\",\n \"top-left\": \"rh-top-4 rh-left-4 rh-items-start\",\n \"top-center\": \"rh-top-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n \"bottom-right\": \"rh-bottom-4 rh-right-4 rh-items-end\",\n \"bottom-left\": \"rh-bottom-4 rh-left-4 rh-items-start\",\n \"bottom-center\": \"rh-bottom-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n};\n\n// ── Animated item ─────────────────────────────────────────────────────────────\n\nconst LEAVE_DURATION_MS = 200;\n\ntype AnimatedToastItemProps = {\n id: string;\n animDir: AnimDir;\n isDismissing: boolean;\n onRemove: (id: string) => void;\n onRequestDismiss: (id: string) => void;\n children: (onClose: () => void) => JSX.Element;\n};\n\nfunction AnimatedToastItem({\n id,\n animDir,\n isDismissing,\n onRemove,\n onRequestDismiss,\n children,\n}: AnimatedToastItemProps) {\n const [entered, setEntered] = useState(false);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // When the context signals dismiss, start the leave timer then remove\n useEffect(() => {\n if (!isDismissing) return;\n leaveTimerRef.current = setTimeout(() => {\n onRemove(id);\n }, LEAVE_DURATION_MS);\n return () => {\n if (leaveTimerRef.current) clearTimeout(leaveTimerRef.current);\n };\n }, [id, isDismissing, onRemove]);\n\n const handleAnimationEnd = useCallback(() => {\n if (!entered) setEntered(true);\n }, [entered]);\n\n const handleClose = useCallback(() => {\n onRequestDismiss(id);\n }, [id, onRequestDismiss]);\n\n const animClass = isDismissing\n ? leaveClass[animDir]\n : entered\n ? \"\"\n : enterClass[animDir];\n\n return (\n <div className={animClass} onAnimationEnd={handleAnimationEnd}>\n {children(handleClose)}\n </div>\n );\n}\n\n// ── Container ─────────────────────────────────────────────────────────────────\n\nexport function ToastContainer() {\n const { toasts, dismissingIds, position, requestDismiss, remove } = useToastContext();\n const animDir = positionAnimDir[position];\n\n if (toasts.length === 0) return null;\n\n return (\n <div\n aria-label=\"Notifications\"\n aria-live=\"polite\"\n className={[\n \"rh-fixed rh-z-[9999]\",\n \"rh-flex rh-flex-col rh-gap-3\",\n \"rh-pointer-events-none\",\n positionClasses[position],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {toasts.map((toast) => (\n <AnimatedToastItem\n key={toast.id}\n id={toast.id}\n animDir={animDir}\n isDismissing={dismissingIds.has(toast.id)}\n onRemove={remove}\n onRequestDismiss={requestDismiss}\n >\n {(onClose) => (\n <div className=\"rh-pointer-events-auto\">\n <Toast\n title={toast.title}\n description={toast.description}\n link={toast.link}\n variant={toast.variant}\n appearance={toast.appearance}\n onClose={onClose}\n />\n </div>\n )}\n </AnimatedToastItem>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React, {\n createContext,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport type { ToastAppearance, ToastLink, ToastVariant } from \"./Toast\";\nimport { ToastContainer } from \"./ToastContainer\";\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type ToastPosition =\n | \"top-right\"\n | \"top-left\"\n | \"top-center\"\n | \"bottom-right\"\n | \"bottom-left\"\n | \"bottom-center\";\n\nexport type ToastItem = {\n id: string;\n title: string;\n description?: string;\n link?: ToastLink;\n variant: ToastVariant;\n appearance: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration: number;\n};\n\nexport type ToastOptions = {\n description?: string;\n link?: ToastLink;\n appearance?: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration?: number;\n};\n\nexport type ToastFn = {\n (title: string, options?: ToastOptions): string;\n info: (title: string, options?: ToastOptions) => string;\n warning: (title: string, options?: ToastOptions) => string;\n success: (title: string, options?: ToastOptions) => string;\n error: (title: string, options?: ToastOptions) => string;\n neutral: (title: string, options?: ToastOptions) => string;\n dismiss: (id: string) => void;\n};\n\ntype ToastContextValue = {\n toasts: ToastItem[];\n /** IDs signaled for dismissal — triggers leave animation in ToastContainer */\n dismissingIds: Set<string>;\n position: ToastPosition;\n add: (item: Omit<ToastItem, \"id\">) => string;\n /** Signals a toast to start its leave animation */\n requestDismiss: (id: string) => void;\n /** Actually removes the toast from state (called after leave animation) */\n remove: (id: string) => void;\n};\n\n// ── Context ───────────────────────────────────────────────────────────────────\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n// ── Provider ──────────────────────────────────────────────────────────────────\n\nexport type ToastProviderProps = {\n children: React.ReactNode;\n /** Position of the toast container. Default: \"top-right\" */\n position?: ToastPosition;\n};\n\nexport function ToastProvider({\n children,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const [dismissingIds, setDismissingIds] = useState<Set<string>>(new Set());\n const counterRef = useRef(0);\n\n const remove = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n setDismissingIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n const requestDismiss = useCallback((id: string) => {\n setDismissingIds((prev) => new Set(prev).add(id));\n }, []);\n\n const add = useCallback(\n (item: Omit<ToastItem, \"id\">) => {\n const id = `rh-toast-${++counterRef.current}`;\n const toast: ToastItem = { ...item, id };\n\n setToasts((prev) => [...prev, toast]);\n\n if (toast.duration > 0) {\n setTimeout(() => requestDismiss(id), toast.duration);\n }\n\n return id;\n },\n [requestDismiss],\n );\n\n return (\n <ToastContext.Provider value={{ toasts, dismissingIds, position, add, requestDismiss, remove }}>\n {children}\n <ToastContainer />\n </ToastContext.Provider>\n );\n}\n\n// ── Internal hook (used by ToastContainer) ────────────────────────────────────\n\nexport function useToastContext(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToastContext must be used inside ToastProvider\");\n }\n return ctx;\n}\n\n// ── Public hook ───────────────────────────────────────────────────────────────\n\nexport function useToast(): { toast: ToastFn } {\n const { add, requestDismiss } = useToastContext();\n\n const createToast = useCallback(\n (variant: ToastVariant) =>\n (title: string, options: ToastOptions = {}): string => {\n return add({\n title,\n variant,\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n );\n\n const toast = useCallback(\n (title: string, options: ToastOptions & { variant?: ToastVariant } = {}): string => {\n return add({\n title,\n variant: options.variant ?? \"info\",\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n ) as ToastFn;\n\n toast.info = createToast(\"info\");\n toast.warning = createToast(\"warning\");\n toast.success = createToast(\"success\");\n toast.error = createToast(\"error\");\n toast.neutral = createToast(\"neutral\");\n toast.dismiss = requestDismiss;\n\n return { toast };\n}\n","import React, { useMemo } from \"react\";\nimport type { RehagroProviderProps, RehagroTheme } from \"./theme\";\nimport { TOKEN_MAP } from \"./theme\";\nimport { ToastProvider } from \"../components/Toast\";\n\nfunction hexToRgbTriplet(hex: string): string | null {\n const h = hex.replace(\"#\", \"\").trim();\n if (![3, 6].includes(h.length)) return null;\n const full = h.length === 3 ? h.split(\"\").map((c) => c + c).join(\"\") : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n if ([r, g, b].some(Number.isNaN)) return null;\n return `${r} ${g} ${b}`;\n}\n\nfunction toRgbTriplet(value?: string): string | undefined {\n if (!value) return undefined;\n\n // \"#RRGGBB\" or \"#RGB\"\n if (value.startsWith(\"#\")) return hexToRgbTriplet(value) ?? undefined;\n\n // \"rgb(r, g, b)\"\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\n\n // \"r g b\" (already a triplet)\n const parts = value.trim().split(/\\s+/);\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) {\n return value.trim();\n }\n\n return undefined;\n}\n\nexport function RehagroProvider({ theme, toastPosition, children }: RehagroProviderProps) {\n const style = useMemo(() => {\n if (!theme) return undefined;\n\n const vars: Record<string, string> = {};\n\n for (const [key, config] of Object.entries(TOKEN_MAP)) {\n const value = theme[key as keyof RehagroTheme];\n if (!value) continue;\n\n if (config.isColor) {\n const triplet = toRgbTriplet(value);\n if (triplet) vars[config.var] = triplet;\n } else {\n vars[config.var] = value;\n }\n }\n\n return vars as React.CSSProperties;\n }, [theme]);\n\n return (\n <div className=\"rh-root\" style={style}>\n <ToastProvider position={toastPosition}>{children}</ToastProvider>\n </div>\n );\n}\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { ButtonColor, PresetColor } from \"../../types/colors.types\";\n\nexport type { ButtonColor };\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ButtonHoverStyle = {\n /** Background color on hover */\n backgroundColor?: string;\n /** Border color on hover */\n borderColor?: string;\n /** Text color on hover */\n color?: string;\n};\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Button size */\n size?: ButtonSize;\n /** Border radius */\n radius?: ButtonRadius;\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\n color?: ButtonColor;\n /** Custom hover color — overrides the token for this button only. Only applies to preset colors. Accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\n hoverColor?: string;\n /** Custom hover styles - allows full control over hover appearance */\n hoverStyle?: ButtonHoverStyle;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n /** Icon rendered to the left of children (hidden when loading) */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of children (hidden when loading) */\n rightIcon?: React.ReactNode;\n};\n\nfunction toRgbTriplet(value: string): string | undefined {\n if (value.startsWith(\"#\")) {\n const h = value.replace(\"#\", \"\");\n const full =\n h.length === 3\n ? h\n .split(\"\")\n .map((c) => c + c)\n .join(\"\")\n : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n if ([r, g, b].some(Number.isNaN)) return undefined;\n return `${r} ${g} ${b}`;\n }\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\n const parts = value.trim().split(/\\s+/);\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) return value.trim();\n return undefined;\n}\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\n\nconst variantColorClasses: Record<ButtonVariant, Record<PresetColor, string>> = {\n solid: {\n primary:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n secondary:\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\n danger:\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\n warning:\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\n success:\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\n info: \"rh-bg-info rh-text-surface rh-border-info hover:rh-bg-info-hover hover:rh-border-info-hover\",\n },\n outline: {\n primary:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\n danger:\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\n warning:\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\n success:\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\n info: \"rh-bg-transparent rh-text-info rh-border-info hover:rh-bg-info hover:rh-text-surface\",\n },\n ghost: {\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\n info: \"rh-bg-transparent rh-text-info rh-border-transparent hover:rh-bg-info/10\",\n },\n};\n\nfunction getArbitraryColorStyle(\n variant: ButtonVariant,\n color: string,\n): React.CSSProperties {\n if (variant === \"solid\") return { backgroundColor: color, borderColor: color, color: \"#fff\" };\n if (variant === \"outline\") return { borderColor: color, color };\n return { color, borderColor: \"transparent\" };\n}\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: \"rh-text-sm rh-px-3 rh-py-1.5\",\n md: \"rh-text-sm rh-px-4 rh-py-2\",\n lg: \"rh-text-base rh-px-5 rh-py-2.5\",\n};\n\nconst radiusClasses: Record<ButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"md\",\n radius = \"sm\",\n color = \"primary\",\n hoverColor,\n hoverStyle,\n loading = false,\n disabled,\n leftIcon,\n rightIcon,\n className = \"\",\n style,\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = React.useMemo(() => disabled || loading, [disabled, loading]);\n const preset = isPresetColor(color);\n\n const computedStyle = React.useMemo((): React.CSSProperties => {\n const baseStyle: React.CSSProperties = preset\n ? (hoverColor ? { [`--rh-${color}-hover`]: toRgbTriplet(hoverColor) ?? hoverColor } : {})\n : getArbitraryColorStyle(variant, color);\n \n // Add CSS custom properties for hover styles if provided\n const hoverVars: React.CSSProperties = hoverStyle ? {\n '--btn-hover-bg': hoverStyle.backgroundColor,\n '--btn-hover-border': hoverStyle.borderColor,\n '--btn-hover-color': hoverStyle.color,\n } as React.CSSProperties : {};\n \n return { ...style, ...baseStyle, ...hoverVars };\n }, [preset, color, variant, hoverColor, hoverStyle, style]);\n\n const hasCustomHover = Boolean(hoverStyle);\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n style={computedStyle}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-2\",\n \"rh-border rh-font-sans rh-font-medium\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n preset && !hasCustomHover ? variantColorClasses[variant][color as PresetColor] : \"\",\n !preset && !hasCustomHover ? \"hover:rh-brightness-90\" : \"\",\n hasCustomHover ? \"btn-custom-hover\" : \"\",\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading && (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n )}\n {!loading && leftIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\nimport { ButtonColor, PresetColor } from \"../../types/colors.types\";\n\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type IconButtonColor = ButtonColor;\n\nexport type IconButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: IconButtonVariant;\n /** Button size */\n size?: IconButtonSize;\n /** Border radius */\n radius?: IconButtonRadius;\n /** Color scheme — preset name or any CSS color (e.g., \"#c3c3c3\", \"red\", \"rgb(...)\") */\n color?: IconButtonColor;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n};\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\n\nconst variantColorClasses: Record<IconButtonVariant, Record<PresetColor, string>> = {\n solid: {\n primary:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n secondary:\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\n danger:\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\n warning:\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\n success:\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\n info: \"rh-bg-info rh-text-surface rh-border-info hover:rh-bg-info-hover hover:rh-border-info-hover\",\n },\n outline: {\n primary:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\n danger:\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\n warning:\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\n success:\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\n info: \"rh-bg-transparent rh-text-info rh-border-info hover:rh-bg-info hover:rh-text-surface\",\n },\n ghost: {\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\n info: \"rh-bg-transparent rh-text-info rh-border-transparent hover:rh-bg-info/10\",\n },\n};\n\nfunction getArbitraryColorStyle(\n variant: IconButtonVariant,\n color: string,\n): React.CSSProperties {\n if (variant === \"solid\") return { backgroundColor: color, borderColor: color, color: \"#fff\" };\n if (variant === \"outline\") return { borderColor: color, color };\n return { color, borderColor: \"transparent\" };\n}\n\nconst sizeClasses: Record<IconButtonSize, string> = {\n sm: \"rh-h-8 rh-w-8 rh-text-sm\",\n md: \"rh-h-10 rh-w-10 rh-text-base\",\n lg: \"rh-h-12 rh-w-12 rh-text-lg\",\n};\n\nconst radiusClasses: Record<IconButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = \"ghost\",\n size = \"md\",\n radius = \"full\",\n color = \"primary\",\n loading = false,\n disabled,\n className = \"\",\n style,\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = disabled || loading;\n const preset = isPresetColor(color);\n\n const computedStyle = React.useMemo(\n (): React.CSSProperties =>\n preset ? (style ?? {}) : { ...style, ...getArbitraryColorStyle(variant, color) },\n [preset, color, variant, style],\n );\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n style={computedStyle}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n preset ? variantColorClasses[variant][color as PresetColor] : \"hover:rh-brightness-90\",\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading ? (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n children\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type TextInputStatus = \"default\" | \"error\";\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type TextInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> & {\n /** Label text displayed above the input */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Validation status */\n status?: TextInputStatus;\n /** Input size */\n size?: TextInputSize;\n /** Border radius */\n radius?: TextInputRadius;\n /** Icon rendered to the left of the input */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of the input */\n rightIcon?: React.ReactNode;\n /** Helper/error message displayed below the input (accepts ReactNode for flexibility) */\n helperText?: React.ReactNode;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nconst statusClasses: Record<TextInputStatus, string> = {\n default: \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring\",\n error: \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger\",\n};\n\nconst sizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-h-input-sm rh-text-sm rh-px-input-x-sm\",\n md: \"rh-h-input-md rh-text-sm rh-px-input-x-md\",\n lg: \"rh-h-input-lg rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<TextInputRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst iconSizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-w-4 rh-h-4\",\n md: \"rh-w-5 rh-h-5\",\n lg: \"rh-w-5 rh-h-5\",\n};\n\nconst helperStatusClasses: Record<TextInputStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(function TextInput(\n {\n label,\n subtitle,\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n leftIcon,\n rightIcon,\n helperText,\n disabled,\n className = \"\",\n wrapperClassName = \"\",\n id,\n ...rest\n },\n ref,\n) {\n const inputId = id || React.useId();\n\n return (\n <div\n className={[\"rh-flex rh-flex-col rh-gap-[0.5rem] rh-font-sans\", wrapperClassName]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label htmlFor={inputId} className=\"rh-flex rh-items-baseline rh-gap-1\">\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\n {subtitle && <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>}\n </label>\n )}\n\n {/* Input container */}\n <div\n className={[\n \"rh-flex rh-items-center rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {leftIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {leftIcon}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n disabled={disabled}\n aria-invalid={status === \"error\" || undefined}\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\n className={[\n \"rh-flex-1 rh-bg-transparent rh-outline-none\",\n \"rh-text-text placeholder:rh-text-text-muted\",\n disabled ? \"rh-cursor-not-allowed\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n />\n\n {rightIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {rightIcon}\n </span>\n )}\n </div>\n\n {/* Helper text */}\n {helperText && (\n <span\n id={`${inputId}-helper`}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\nexport type CheckboxProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> & {\n /** Checkbox size */\n size?: CheckboxSize;\n /** Label text displayed next to the checkbox */\n label?: string;\n /** Indeterminate state (partially checked) */\n indeterminate?: boolean;\n};\n\nconst sizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-4 rh-w-4\",\n md: \"rh-h-5 rh-w-5\",\n lg: \"rh-h-6 rh-w-6\",\n};\n\nconst iconSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-3 rh-w-3\",\n md: \"rh-h-3.5 rh-w-3.5\",\n lg: \"rh-h-4 rh-w-4\",\n};\n\nconst labelSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-text-sm\",\n md: \"rh-text-sm\",\n lg: \"rh-text-base\",\n};\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst MinusIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 10 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 1H9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(\n {\n size = \"md\",\n label,\n indeterminate = false,\n disabled,\n checked,\n defaultChecked,\n className = \"\",\n id,\n onChange,\n ...rest\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement>(null);\n const inputId = id || React.useId();\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const isChecked = checked ?? innerRef.current?.checked ?? defaultChecked ?? false;\n const isActive = isChecked || indeterminate;\n\n return (\n <label\n htmlFor={inputId}\n className={[\n \"rh-inline-flex rh-items-center rh-gap-2 rh-font-sans rh-select-none\",\n disabled ? \"rh-cursor-not-allowed rh-opacity-50\" : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-relative rh-inline-flex rh-items-center rh-justify-center\">\n <input\n ref={innerRef}\n id={inputId}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n defaultChecked={defaultChecked}\n aria-checked={indeterminate ? \"mixed\" : undefined}\n onChange={onChange}\n className=\"rh-peer rh-sr-only\"\n {...rest}\n />\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-border-border rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n sizeClasses[size],\n isActive\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-bg-surface rh-text-transparent\",\n !disabled && !isActive\n ? \"hover:rh-border-primary\"\n : \"\",\n \"peer-focus-visible:rh-ring-2 peer-focus-visible:rh-ring-ring peer-focus-visible:rh-ring-offset-2\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {indeterminate ? (\n <MinusIcon className={iconSizeClasses[size]} />\n ) : isChecked ? (\n <CheckIcon className={iconSizeClasses[size]} />\n ) : null}\n </span>\n </span>\n\n {label && (\n <span\n className={[\n \"rh-text-text\",\n labelSizeClasses[size],\n ].join(\" \")}\n >\n {label}\n </span>\n )}\n </label>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SelectStatus = \"default\" | \"error\";\n\nexport type SelectOption = {\n /** Unique value for the option */\n value: string;\n /** Display label */\n label: string;\n /** Whether the option is disabled */\n disabled?: boolean;\n};\n\ntype SelectBaseProps = {\n /** List of available options */\n options: SelectOption[];\n /** Label text displayed above the select */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Placeholder text when no option is selected */\n placeholder?: string;\n /** Validation status */\n status?: SelectStatus;\n /** Select size */\n size?: SelectSize;\n /** Border radius */\n radius?: SelectRadius;\n /** Helper/error message displayed below the select */\n helperText?: React.ReactNode;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Custom class for the trigger container */\n className?: string;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple?: false;\n /** Currently selected value (single mode) */\n value?: string;\n /** Default selected value (single mode, uncontrolled) */\n defaultValue?: string;\n /** Called when selection changes (single mode) */\n onChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple: true;\n /** Currently selected values (multi mode) */\n value?: string[];\n /** Default selected values (multi mode, uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes (multi mode) */\n onChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst statusClasses: Record<SelectStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<SelectSize, string> = {\n sm: \"rh-min-h-[32px] rh-text-sm rh-px-input-x-sm\",\n md: \"rh-min-h-[40px] rh-text-sm rh-px-input-x-md\",\n lg: \"rh-min-h-[48px] rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst dropdownRadiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-xs\",\n md: \"rh-rounded-xs\",\n lg: \"rh-rounded-xs\",\n xl: \"rh-rounded-xs\",\n full: \"rh-rounded-xs\",\n};\n\nconst helperStatusClasses: Record<SelectStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nconst optionSizeClasses: Record<SelectSize, string> = {\n sm: \"rh-px-input-x-sm rh-py-1.5 rh-text-sm\",\n md: \"rh-px-input-x-md rh-py-2 rh-text-sm\",\n lg: \"rh-px-input-x-lg rh-py-2.5 rh-text-base\",\n};\n\nconst ChevronIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\n function Select(props, ref) {\n const {\n options,\n label,\n subtitle,\n placeholder = \"Select\",\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n helperText,\n disabled = false,\n className = \"\",\n wrapperClassName = \"\",\n multiple = false,\n } = props;\n\n const triggerId = React.useId();\n const listboxId = React.useId();\n const helperId = React.useId();\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n const listboxRef = React.useRef<HTMLUListElement>(null);\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // --- Selection state ---\n const [internalValue, setInternalValue] = React.useState<string[]>(() => {\n if (props.defaultValue !== undefined) {\n return Array.isArray(props.defaultValue)\n ? props.defaultValue\n : [props.defaultValue];\n }\n return [];\n });\n\n const isControlled = props.value !== undefined;\n const selectedValues: string[] = isControlled\n ? Array.isArray(props.value)\n ? props.value\n : props.value !== undefined\n ? [props.value]\n : []\n : internalValue;\n\n const enabledOptions = options.filter((o) => !o.disabled);\n\n const handleSelect = (optionValue: string) => {\n if (multiple) {\n const next = selectedValues.includes(optionValue)\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n\n if (!isControlled) setInternalValue(next);\n (props as SelectMultipleProps).onChange?.(next);\n } else {\n const next = [optionValue];\n if (!isControlled) setInternalValue(next);\n (props as SelectSingleProps).onChange?.(optionValue);\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n // --- Display value ---\n const displayText = React.useMemo(() => {\n if (selectedValues.length === 0) return null;\n\n if (!multiple) {\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\n }\n\n const selectedLabels = selectedValues\n .map((v) => options.find((o) => o.value === v)?.label)\n .filter(Boolean);\n\n if (selectedLabels.length === 0) return null;\n if (selectedLabels.length === 1) return selectedLabels[0];\n return `${selectedLabels.length} selected`;\n }, [selectedValues, options, multiple]);\n\n // --- Close on outside click ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n // --- Close on Escape ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n // --- Scroll active option into view ---\n React.useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const listbox = listboxRef.current;\n if (!listbox) return;\n const activeEl = listbox.children[activeIndex] as HTMLElement | undefined;\n if (typeof activeEl?.scrollIntoView === \"function\") {\n activeEl.scrollIntoView({ block: \"nearest\" });\n }\n }, [activeIndex, isOpen]);\n\n // --- Reset active index when opening ---\n React.useEffect(() => {\n if (isOpen) {\n const firstSelectedIdx = options.findIndex(\n (o) => !o.disabled && selectedValues.includes(o.value),\n );\n setActiveIndex(firstSelectedIdx >= 0 ? firstSelectedIdx : 0);\n } else {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n // --- Keyboard navigation ---\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n case \"Down\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev + 1; i < options.length; i++) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"ArrowUp\":\n case \"Up\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev - 1; i >= 0; i--) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else if (activeIndex >= 0 && !options[activeIndex].disabled) {\n handleSelect(options[activeIndex].value);\n }\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[0])\n : 0;\n setActiveIndex(idx);\n }\n break;\n }\n case \"End\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[enabledOptions.length - 1])\n : options.length - 1;\n setActiveIndex(idx);\n }\n break;\n }\n case \"Tab\": {\n if (isOpen) setIsOpen(false);\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <div\n ref={wrapperRef}\n className={[\n \"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n id={`${triggerId}-label`}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Trigger */}\n <button\n ref={innerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n aria-labelledby={label ? `${triggerId}-label` : undefined}\n aria-describedby={helperText ? helperId : undefined}\n aria-invalid={status === \"error\" || undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"rh-text-left rh-w-full\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span\n className={[\n \"rh-flex-1 rh-truncate\",\n displayText ? \"rh-text-text\" : \"rh-text-text-muted\",\n ].join(\" \")}\n >\n {displayText ?? placeholder}\n </span>\n\n <ChevronIcon\n className={[\n \"rh-w-5 rh-h-5 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150\",\n isOpen ? \"rh-rotate-180\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n </button>\n\n {/* Dropdown */}\n {isOpen && (\n <ul\n ref={listboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? `${triggerId}-label` : triggerId}\n aria-multiselectable={multiple || undefined}\n tabIndex={-1}\n className={[\n \"rh-absolute rh-z-50 rh-w-full rh-mt-1\",\n \"rh-border rh-border-border rh-bg-surface\",\n \"rh-shadow-md rh-overflow-auto rh-max-h-60\",\n \"rh-py-1\",\n dropdownRadiusClasses[radius],\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ top: \"100%\" }}\n >\n {options.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isActive = index === activeIndex;\n const isDisabled = option.disabled;\n\n return (\n <li\n key={option.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n onClick={() => {\n if (!isDisabled) handleSelect(option.value);\n }}\n onMouseEnter={() => {\n if (!isDisabled) setActiveIndex(index);\n }}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-transition-colors rh-duration-150\",\n optionSizeClasses[size],\n isDisabled\n ? \"rh-opacity-50 rh-cursor-not-allowed\"\n : \"rh-cursor-pointer\",\n isActive && !isDisabled\n ? \"rh-bg-background\"\n : \"\",\n isSelected && !isActive\n ? \"rh-bg-primary/5\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">\n {option.label}\n </span>\n\n {multiple ? (\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-w-5 rh-h-5 rh-shrink-0\",\n \"rh-border rh-rounded-xxs rh-transition-colors rh-duration-150\",\n isSelected\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-border-border rh-bg-surface\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {isSelected && (\n <CheckIcon className=\"rh-w-3 rh-h-3\" />\n )}\n </span>\n ) : (\n isSelected && (\n <CheckIcon className=\"rh-w-3.5 rh-h-3.5 rh-shrink-0 rh-text-primary\" />\n )\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {/* Helper text */}\n {helperText && (\n <span\n id={helperId}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef, useState, useRef, useCallback, useEffect } from \"react\";\n\nexport type TooltipVariant = \"light\" | \"default\" | \"dark\";\nexport type TooltipSize = \"sm\" | \"md\";\nexport type TooltipPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport type TooltipProps = {\n /** Tooltip title text */\n title: string;\n /** Optional description text below the title */\n description?: string;\n /** Visual style variant */\n variant?: TooltipVariant;\n /** Tooltip size */\n size?: TooltipSize;\n /** Placement relative to the trigger element */\n placement?: TooltipPlacement;\n /** Show a close button (only for md size with description) */\n closable?: boolean;\n /** Show an icon before the title */\n icon?: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Delay before showing tooltip (ms) */\n enterDelay?: number;\n /** Delay before hiding tooltip (ms) */\n leaveDelay?: number;\n /** The trigger element */\n children: React.ReactElement;\n /** Additional className for the tooltip container */\n className?: string;\n};\n\nconst variantClasses: Record<TooltipVariant, string> = {\n light: \"rh-bg-surface rh-text-text rh-border rh-border-border rh-shadow-md\",\n default:\n \"rh-bg-primary/10 rh-text-text rh-border rh-border-primary/20 rh-shadow-md\",\n dark: \"rh-bg-primary rh-text-surface rh-shadow-md\",\n};\n\nconst arrowVariantClasses: Record<TooltipVariant, string> = {\n light: \"rh-border-border rh-bg-surface\",\n default: \"rh-border-primary/20 rh-bg-primary/10\",\n dark: \"rh-bg-primary\",\n};\n\nconst sizeClasses: Record<TooltipSize, string> = {\n sm: \"rh-px-3 rh-py-1.5 rh-text-xs\",\n md: \"rh-px-4 rh-py-3 rh-text-sm\",\n};\n\nconst tooltipPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-full rh-left-1/2 rh--translate-x-1/2 rh-mb-2\",\n \"top-start\": \"rh-bottom-full rh-left-0 rh-mb-2\",\n \"top-end\": \"rh-bottom-full rh-right-0 rh-mb-2\",\n bottom: \"rh-top-full rh-left-1/2 rh--translate-x-1/2 rh-mt-2\",\n \"bottom-start\": \"rh-top-full rh-left-0 rh-mt-2\",\n \"bottom-end\": \"rh-top-full rh-right-0 rh-mt-2\",\n left: \"rh-right-full rh-top-1/2 rh--translate-y-1/2 rh-mr-2\",\n \"left-start\": \"rh-right-full rh-top-0 rh-mr-2\",\n \"left-end\": \"rh-right-full rh-bottom-0 rh-mr-2\",\n right: \"rh-left-full rh-top-1/2 rh--translate-y-1/2 rh-ml-2\",\n \"right-start\": \"rh-left-full rh-top-0 rh-ml-2\",\n \"right-end\": \"rh-left-full rh-bottom-0 rh-ml-2\",\n};\n\nconst arrowPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-0 rh-left-1/2 rh--translate-x-1/2 rh-translate-y-1/2 rh-rotate-45\",\n \"top-start\": \"rh-bottom-0 rh-left-4 rh-translate-y-1/2 rh-rotate-45\",\n \"top-end\": \"rh-bottom-0 rh-right-4 rh-translate-y-1/2 rh-rotate-45\",\n bottom:\n \"rh-top-0 rh-left-1/2 rh--translate-x-1/2 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-start\": \"rh-top-0 rh-left-4 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-end\": \"rh-top-0 rh-right-4 rh--translate-y-1/2 rh-rotate-45\",\n left: \"rh-right-0 rh-top-1/2 rh--translate-y-1/2 rh-translate-x-1/2 rh-rotate-45\",\n \"left-start\": \"rh-right-0 rh-top-3 rh-translate-x-1/2 rh-rotate-45\",\n \"left-end\": \"rh-right-0 rh-bottom-3 rh-translate-x-1/2 rh-rotate-45\",\n right:\n \"rh-left-0 rh-top-1/2 rh--translate-y-1/2 rh--translate-x-1/2 rh-rotate-45\",\n \"right-start\": \"rh-left-0 rh-top-3 rh--translate-x-1/2 rh-rotate-45\",\n \"right-end\": \"rh-left-0 rh-bottom-3 rh--translate-x-1/2 rh-rotate-45\",\n};\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(\n {\n title,\n description,\n variant = \"light\",\n size = \"sm\",\n placement = \"top\",\n closable = false,\n icon,\n open: controlledOpen,\n onOpenChange,\n enterDelay = 100,\n leaveDelay = 150,\n children,\n className = \"\",\n },\n ref,\n ) {\n const [internalOpen, setInternalOpen] = useState(false);\n const enterTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const clearTimers = useCallback(() => {\n if (enterTimerRef.current) {\n clearTimeout(enterTimerRef.current);\n enterTimerRef.current = null;\n }\n if (leaveTimerRef.current) {\n clearTimeout(leaveTimerRef.current);\n leaveTimerRef.current = null;\n }\n }, []);\n\n const handleEnter = useCallback(() => {\n clearTimers();\n enterTimerRef.current = setTimeout(() => {\n setOpen(true);\n }, enterDelay);\n }, [clearTimers, enterDelay, setOpen]);\n\n const handleLeave = useCallback(() => {\n clearTimers();\n leaveTimerRef.current = setTimeout(() => {\n setOpen(false);\n }, leaveDelay);\n }, [clearTimers, leaveDelay, setOpen]);\n\n const handleClose = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n useEffect(() => {\n return () => clearTimers();\n }, [clearTimers]);\n\n const triggerChild = React.Children.only(children);\n\n const triggerElement = React.cloneElement(triggerChild, {\n onMouseEnter: (e: React.MouseEvent) => {\n handleEnter();\n triggerChild.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleLeave();\n triggerChild.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleEnter();\n triggerChild.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleLeave();\n triggerChild.props.onBlur?.(e);\n },\n \"aria-describedby\": isOpen ? \"rh-tooltip\" : undefined,\n } as React.HTMLAttributes<HTMLElement>);\n\n const showCloseButton = closable && size === \"md\" && description;\n\n const arrowBorderClass =\n variant === \"dark\" ? \"\" : \"rh-border-b rh-border-r\";\n\n return (\n <div\n className=\"rh-relative rh-inline-flex\"\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {triggerElement}\n {isOpen && (\n <div\n ref={ref}\n id=\"rh-tooltip\"\n role=\"tooltip\"\n className={[\n \"rh-absolute rh-z-50 rh-w-max rh-max-w-xs rh-rounded-xs\",\n tooltipPlacementClasses[placement],\n variantClasses[variant],\n sizeClasses[size],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Arrow */}\n <span\n aria-hidden=\"true\"\n className={[\n \"rh-absolute rh-w-2.5 rh-h-2.5\",\n arrowBorderClass,\n arrowVariantClasses[variant],\n arrowPlacementClasses[placement],\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n\n {/* Content */}\n <div className=\"rh-relative rh-flex rh-items-start rh-gap-2\">\n {icon && (\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p\n className={[\n \"rh-font-semibold rh-leading-tight\",\n size === \"sm\" ? \"rh-text-xs\" : \"rh-text-sm\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {title}\n </p>\n {description && size === \"md\" && (\n <p\n className={[\n \"rh-mt-1 rh-text-xs rh-leading-normal\",\n variant === \"dark\"\n ? \"rh-text-surface/80\"\n : \"rh-text-text-muted\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n </div>\n\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close tooltip\"\n onClick={handleClose}\n className={[\n \"rh-flex-shrink-0 rh-ml-1 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n variant === \"dark\"\n ? \"rh-text-surface/80 hover:rh-text-surface\"\n : \"rh-text-text-muted hover:rh-text-text\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"rh-w-4 rh-h-4\"\n aria-hidden=\"true\"\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n","\"use client\";\n\nimport React, { forwardRef, useState, useMemo } from \"react\";\n\nexport type AvatarSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type AvatarVariant = \"circle\" | \"square\";\n\n// Paleta de cores para avatares\nconst AVATAR_COLORS = [\n { bg: \"#FBF1E6\", text: \"#D6822D\" }, // Laranja\n { bg: \"#EDF3FA\", text: \"#538CC6\" }, // Azul\n { bg: \"#F3E5F5\", text: \"#9C27B0\" }, // Roxo\n { bg: \"#E8F5E9\", text: \"#4CAF50\" }, // Verde\n { bg: \"#FFF3E0\", text: \"#FF9800\" }, // Amarelo\n { bg: \"#FFEBEE\", text: \"#F44336\" }, // Vermelho\n { bg: \"#E3F2FD\", text: \"#2196F3\" }, // Azul claro\n { bg: \"#F3E5F5\", text: \"#673AB7\" }, // Violeta\n { bg: \"#E0F2F1\", text: \"#009688\" }, // Teal\n { bg: \"#FBE9E7\", text: \"#FF5722\" }, // Deep Orange\n];\n\n/**\n * Gera cores de avatar baseadas em uma string (nome)\n * Usa hash simples para garantir consistência\n */\nfunction getAvatarColors(name: string): { bg: string; text: string } {\n const hash = name.split(\"\").reduce((acc, char) => acc + char.charCodeAt(0), 0);\n const index = hash % AVATAR_COLORS.length;\n return AVATAR_COLORS[index];\n}\n\nexport type AvatarProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> & {\n /** Image source URL */\n src?: string;\n /** Alt text for the image (required for accessibility) */\n alt?: string;\n /** Fallback initials shown when image is unavailable */\n initials?: string;\n /** Avatar size */\n size?: AvatarSize;\n /** Shape variant */\n variant?: AvatarVariant;\n /** Generate background and text color automatically based on name/alt */\n colorFromName?: boolean;\n};\n\nconst sizeClasses: Record<AvatarSize, string> = {\n sm: \"rh-w-8 rh-h-8 rh-text-xs\",\n md: \"rh-w-10 rh-h-10 rh-text-sm\",\n lg: \"rh-w-12 rh-h-12 rh-text-base\",\n xl: \"rh-w-16 rh-h-16 rh-text-lg\",\n};\n\nconst imageSizeClasses: Record<AvatarSize, string> = {\n sm: \"rh-w-8 rh-h-8\",\n md: \"rh-w-10 rh-h-10\",\n lg: \"rh-w-12 rh-h-12\",\n xl: \"rh-w-16 rh-h-16\",\n};\n\nconst variantClasses: Record<AvatarVariant, string> = {\n circle: \"rh-rounded-full\",\n square: \"rh-rounded-sm\",\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(function Avatar(\n { src, alt = \"\", initials, size = \"md\", variant = \"circle\", colorFromName = false, className = \"\", style, ...rest },\n ref,\n) {\n const [imgError, setImgError] = useState(false);\n const showImage = src && !imgError;\n\n // Gera cores baseadas no nome se colorFromName estiver ativo\n const avatarColors = useMemo(() => {\n if (!colorFromName) return null;\n const name = initials || alt || \"\";\n return name ? getAvatarColors(name) : null;\n }, [colorFromName, initials, alt]);\n\n const fallbackLabel = initials\n ? initials.slice(0, 2).toUpperCase()\n : alt\n ? alt\n .split(\" \")\n .slice(0, 2)\n .map((w) => w[0])\n .join(\"\")\n .toUpperCase()\n : \"?\";\n\n return (\n <div\n ref={ref}\n role={showImage ? undefined : \"img\"}\n aria-label={showImage ? undefined : alt || initials}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center rh-shrink-0 rh-overflow-hidden\",\n avatarColors ? \"\" : \"rh-bg-primary rh-text-surface\",\n \"rh-font-sans rh-font-medium rh-select-none\",\n sizeClasses[size],\n variantClasses[variant],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{\n ...(avatarColors && { backgroundColor: avatarColors.bg, color: avatarColors.text }),\n ...style,\n }}\n {...rest}\n >\n {showImage ? (\n <img\n src={src}\n alt={alt}\n className={[imageSizeClasses[size], variantClasses[variant], \"rh-object-cover\"].join(\" \")}\n onError={() => setImgError(true)}\n />\n ) : (\n <span aria-hidden=\"true\">{fallbackLabel}</span>\n )}\n </div>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { PresetColor } from \"../../types/colors.types\";\n\nexport type TagSize = \"sm\" | \"md\" | \"lg\";\n\nexport type TagProps = React.HTMLAttributes<HTMLSpanElement> & {\n /** Tag color — preset name or custom CSS color (e.g., \"#c3c3c3\", \"rgb(...)\") */\n color?: PresetColor | (string & {});\n /** Tag size */\n size?: TagSize;\n /** Active (selected) state */\n active?: boolean;\n /** Tag label text */\n title: string;\n /** Optional icon rendered on the left side */\n leftIcon?: React.ReactNode;\n /** Optional icon rendered on the right side */\n rightIcon?: React.ReactNode;\n /** Disabled state */\n disabled?: boolean;\n};\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (color: string): color is PresetColor => PRESET_COLORS.has(color);\n\nconst activePresetClasses: Record<PresetColor, string> = {\n primary: \"rh-bg-primary rh-text-surface rh-border-primary\",\n secondary: \"rh-bg-secondary rh-text-surface rh-border-secondary\",\n danger: \"rh-bg-danger rh-text-surface rh-border-danger\",\n warning: \"rh-bg-warning rh-text-surface rh-border-warning\",\n success: \"rh-bg-success rh-text-surface rh-border-success\",\n info: \"rh-bg-info rh-text-surface rh-border-info\",\n};\n\nconst inactivePresetClasses: Record<PresetColor, string> = {\n primary: \"rh-bg-primary/10 rh-text-primary rh-border-primary/30\",\n secondary: \"rh-bg-secondary/10 rh-text-secondary rh-border-secondary/30\",\n danger: \"rh-bg-danger/10 rh-text-danger rh-border-danger/30\",\n warning: \"rh-bg-warning/10 rh-text-warning rh-border-warning/30\",\n success: \"rh-bg-success/10 rh-text-success rh-border-success/30\",\n info: \"rh-bg-info/10 rh-text-info rh-border-info/30\",\n};\n\nconst hoverActivePresetClasses: Record<PresetColor, string> = {\n primary: \"hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n secondary: \"hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\n danger: \"hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\n warning: \"hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\n success: \"hover:rh-bg-success-hover hover:rh-border-success-hover\",\n info: \"hover:rh-bg-info-hover hover:rh-border-info-hover\",\n};\n\nconst hoverInactivePresetClasses: Record<PresetColor, string> = {\n primary: \"hover:rh-bg-primary/20 hover:rh-border-primary/50\",\n secondary: \"hover:rh-bg-secondary/20 hover:rh-border-secondary/50\",\n danger: \"hover:rh-bg-danger/20 hover:rh-border-danger/50\",\n warning: \"hover:rh-bg-warning/20 hover:rh-border-warning/50\",\n success: \"hover:rh-bg-success/20 hover:rh-border-success/50\",\n info: \"hover:rh-bg-info/20 hover:rh-border-info/50\",\n};\n\nconst sizeClasses: Record<TagSize, string> = {\n sm: \"rh-text-xs rh-px-2 rh-py-0.5 rh-gap-1\",\n md: \"rh-text-sm rh-px-2.5 rh-py-1 rh-gap-1.5\",\n lg: \"rh-text-sm rh-px-3 rh-py-1.5 rh-gap-1.5\",\n};\n\nfunction getCustomColorStyles(color: string, active: boolean): React.CSSProperties {\n if (active) {\n return { backgroundColor: color, borderColor: color, color: \"#fff\" };\n }\n return {\n backgroundColor: `color-mix(in srgb, ${color} 10%, transparent)`,\n borderColor: `color-mix(in srgb, ${color} 30%, transparent)`,\n color: color,\n };\n}\n\nexport const Tag = forwardRef<HTMLSpanElement, TagProps>(function Tag(\n {\n color = \"primary\",\n size = \"md\",\n active = false,\n title,\n leftIcon,\n rightIcon,\n className = \"\",\n disabled,\n style,\n children,\n ...rest\n },\n ref,\n) {\n const preset = isPresetColor(color);\n const clickable = !!rest.onClick && !disabled;\n const colorClasses = preset\n ? active\n ? activePresetClasses[color]\n : inactivePresetClasses[color]\n : \"\";\n const hoverClasses =\n clickable && preset\n ? active\n ? hoverActivePresetClasses[color]\n : hoverInactivePresetClasses[color]\n : clickable\n ? \"hover:rh-brightness-95\"\n : \"\";\n const customStyles = preset ? {} : getCustomColorStyles(color, active);\n\n return (\n <span\n ref={ref}\n role={clickable ? \"button\" : undefined}\n tabIndex={clickable ? 0 : undefined}\n aria-pressed={clickable ? active : undefined}\n aria-disabled={disabled || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-font-sans rh-font-medium rh-rounded-full\",\n \"rh-border rh-whitespace-nowrap rh-select-none\",\n \"rh-transition-colors rh-duration-150\",\n \"rh-cursor-pointer\",\n clickable ? \"rh-cursor-pointer\" : \"\",\n sizeClasses[size],\n colorClasses,\n hoverClasses,\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ ...customStyles, ...style }}\n {...rest}\n >\n {leftIcon}\n {title}\n {children}\n {rightIcon}\n </span>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { PresetColor } from \"../../types/colors.types\";\n\nexport type ToggleGroupSize = \"sm\" | \"md\" | \"lg\";\nexport type ToggleGroupRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ToggleGroupOption<T extends string = string> = {\n /** Unique value for this option */\n value: T;\n /** Label text or icon to display */\n label?: React.ReactNode;\n /** Icon to display (alternative to label) */\n icon?: React.ReactNode;\n /** Accessible label for screen readers */\n \"aria-label\"?: string;\n /** Whether this option is disabled */\n disabled?: boolean;\n};\n\nexport type ToggleGroupProps<T extends string = string> = Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\"\n> & {\n /** Available options */\n options: ToggleGroupOption<T>[];\n /** Currently selected value */\n value: T;\n /** Called when selection changes */\n onChange: (value: T) => void;\n /** Size variant */\n size?: ToggleGroupSize;\n /** Border radius */\n radius?: ToggleGroupRadius;\n /** Color scheme for active state */\n color?: PresetColor | (string & {});\n /** Whether the entire group is disabled */\n disabled?: boolean;\n};\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (color: string): color is PresetColor => PRESET_COLORS.has(color);\n\nconst sizeClasses: Record<ToggleGroupSize, { container: string; button: string }> = {\n sm: { container: \"rh-h-8\", button: \"rh-px-2 rh-text-xs\" },\n md: { container: \"rh-h-9\", button: \"rh-px-3 rh-text-sm\" },\n lg: { container: \"rh-h-10\", button: \"rh-px-4 rh-text-sm\" },\n};\n\nconst radiusClasses: Record<ToggleGroupRadius, string> = {\n none: \"rh-rounded-none\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nfunction getActiveStyles(color: string, isPreset: boolean): React.CSSProperties {\n if (isPreset) return {};\n return { backgroundColor: color, color: \"#fff\" };\n}\n\nfunction ToggleGroupInner<T extends string = string>(\n {\n options,\n value,\n onChange,\n size = \"md\",\n radius = \"full\",\n color = \"primary\",\n disabled = false,\n className = \"\",\n ...rest\n }: ToggleGroupProps<T>,\n ref: React.ForwardedRef<HTMLDivElement>,\n) {\n const preset = isPresetColor(color);\n\n return (\n <div\n ref={ref}\n role=\"group\"\n className={[\n \"rh-inline-flex rh-items-center rh-bg-muted rh-overflow-hidden\",\n \"rh-p-1 rh-gap-0.5\",\n radiusClasses[radius],\n sizeClasses[size].container,\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {options.map((option) => {\n const isActive = value === option.value;\n const isDisabled = disabled || option.disabled;\n const activeClass = preset && isActive ? `rh-bg-${color}/20 rh-text-${color}` : \"\";\n\n return (\n <button\n key={option.value}\n type=\"button\"\n role=\"radio\"\n aria-checked={isActive}\n aria-label={option[\"aria-label\"]}\n disabled={isDisabled}\n onClick={() => !isDisabled && onChange(option.value)}\n className={[\n \"rh-flex rh-items-center rh-justify-center rh-h-full\",\n \"rh-border-0 rh-font-sans rh-font-medium\",\n \"rh-transition-all rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n radiusClasses[radius],\n sizeClasses[size].button,\n isActive ? \"rh-bg-surface rh-text-text rh-shadow-sm\" : \"rh-bg-transparent rh-text-text-muted\",\n !isActive && !isDisabled ? \"hover:rh-bg-surface/50\" : \"\",\n isDisabled ? \"rh-cursor-not-allowed rh-pointer-events-none\" : \"rh-cursor-pointer\",\n ]\n .filter(Boolean)\n .join(\" \")}\n style={isActive && !preset ? getActiveStyles(color, preset) : undefined}\n >\n {option.icon}\n {option.label}\n </button>\n );\n })}\n </div>\n );\n}\n\nexport const ToggleGroup = forwardRef(ToggleGroupInner) as <T extends string = string>(\n props: ToggleGroupProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },\n) => React.ReactElement;\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\n\nexport type CardProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Visual style variant */\n variant?: CardVariant;\n /** Border radius */\n radius?: CardRadius;\n /** Internal padding */\n padding?: CardPadding;\n /** Makes the card clickable with hover effects */\n clickable?: boolean;\n /** Disabled state (only applies when clickable) */\n disabled?: boolean;\n};\n\nconst variantClasses: Record<CardVariant, string> = {\n elevated: \"rh-bg-surface rh-shadow-md rh-border-0\",\n outlined: \"rh-bg-surface rh-border rh-border-border rh-shadow-none\",\n filled: \"rh-bg-background rh-border-0 rh-shadow-none\",\n};\n\nconst radiusClasses: Record<CardRadius, string> = {\n none: \"rh-rounded-none\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n};\n\nconst paddingClasses: Record<CardPadding, string> = {\n none: \"rh-p-0\",\n sm: \"rh-p-3\",\n md: \"rh-p-4\",\n lg: \"rh-p-6\",\n};\n\nexport const Card = forwardRef<HTMLDivElement, CardProps>(function Card(\n {\n variant = \"outlined\",\n radius = \"sm\",\n padding = \"md\",\n clickable = false,\n disabled = false,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isInteractive = clickable && !disabled;\n\n return (\n <div\n ref={ref}\n role={clickable ? \"button\" : undefined}\n tabIndex={isInteractive ? 0 : undefined}\n aria-disabled={disabled || undefined}\n className={[\n \"rh-font-sans rh-transition-all rh-duration-150\",\n variantClasses[variant],\n radiusClasses[radius],\n paddingClasses[padding],\n isInteractive\n ? \"rh-cursor-pointer hover:rh-shadow-lg hover:rh-scale-[1.01] active:rh-scale-[0.99]\"\n : \"\",\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(function CardHeader(\n { className = \"\", children, ...rest },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={[\"rh-flex rh-items-center rh-justify-between rh-gap-4\", className]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n});\n\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(function CardContent(\n { className = \"\", children, ...rest },\n ref,\n) {\n return (\n <div ref={ref} className={[\"rh-mt-2\", className].filter(Boolean).join(\" \")} {...rest}>\n {children}\n </div>\n );\n});\n\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(function CardFooter(\n { className = \"\", children, ...rest },\n ref,\n) {\n return (\n <div\n ref={ref}\n className={[\n \"rh-flex rh-items-center rh-justify-end rh-gap-2 rh-mt-4 rh-pt-4 rh-border-t rh-border-border\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\nimport { PresetColor } from \"../../types/colors.types\";\n\nexport type SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n\nexport type SpinnerProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Spinner size */\n size?: SpinnerSize;\n /** Color scheme */\n color?: PresetColor | (string & {});\n /** Accessible label for screen readers */\n label?: string;\n};\n\nconst PRESET_COLORS = new Set<string>([\n \"primary\",\n \"secondary\",\n \"danger\",\n \"warning\",\n \"success\",\n \"info\",\n]);\n\nconst isPresetColor = (color: string): color is PresetColor => PRESET_COLORS.has(color);\n\nconst sizeClasses: Record<SpinnerSize, string> = {\n xs: \"rh-w-3 rh-h-3\",\n sm: \"rh-w-4 rh-h-4\",\n md: \"rh-w-6 rh-h-6\",\n lg: \"rh-w-8 rh-h-8\",\n xl: \"rh-w-12 rh-h-12\",\n};\n\nconst colorClasses: Record<PresetColor, string> = {\n primary: \"rh-text-primary\",\n secondary: \"rh-text-secondary\",\n danger: \"rh-text-danger\",\n warning: \"rh-text-warning\",\n success: \"rh-text-success\",\n info: \"rh-text-info\",\n};\n\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(function Spinner(\n { size = \"md\", color = \"primary\", label = \"Carregando...\", className = \"\", style, ...rest },\n ref,\n) {\n const preset = isPresetColor(color);\n const colorClass = preset ? colorClasses[color] : \"\";\n const customStyle = preset ? style : { ...style, color };\n\n return (\n <div\n ref={ref}\n role=\"status\"\n aria-label={label}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n sizeClasses[size],\n colorClass,\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n style={customStyle}\n {...rest}\n >\n <svg\n className=\"rh-animate-spin\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n <span className=\"rh-sr-only\">{label}</span>\n </div>\n );\n});\n","\"use client\";\n\nimport React, { forwardRef } from \"react\";\n\nexport type TableSize = \"sm\" | \"md\" | \"lg\";\nexport type TableVariant = \"default\" | \"striped\";\n\nexport type TableColumn<T> = {\n /** Unique key for this column */\n key: string;\n /** Column header text */\n header: React.ReactNode;\n /** Function to render cell content */\n render: (row: T, index: number) => React.ReactNode;\n /** Column width (CSS value) */\n width?: string;\n /** Text alignment */\n align?: \"left\" | \"center\" | \"right\";\n /** Whether this column is sortable */\n sortable?: boolean;\n};\n\nexport type SortDirection = \"asc\" | \"desc\" | null;\n\nexport type TableSort = {\n key: string;\n direction: SortDirection;\n};\n\nexport type TableProps<T> = Omit<React.HTMLAttributes<HTMLTableElement>, \"children\"> & {\n /** Column definitions */\n columns: TableColumn<T>[];\n /** Row data */\n data: T[];\n /** Function to get unique key for each row */\n rowKey: (row: T, index: number) => string | number;\n /** Table size variant */\n size?: TableSize;\n /** Table style variant */\n variant?: TableVariant;\n /** Current sort state */\n sort?: TableSort;\n /** Called when sort changes */\n onSortChange?: (sort: TableSort) => void;\n /** Whether to show loading state */\n loading?: boolean;\n /** Content to show when data is empty */\n emptyContent?: React.ReactNode;\n /** Loading content */\n loadingContent?: React.ReactNode;\n /** Whether the table has sticky header */\n stickyHeader?: boolean;\n /** Custom header row style */\n headerStyle?: React.CSSProperties;\n};\n\nconst sizeClasses: Record<TableSize, { cell: string; header: string }> = {\n sm: { cell: \"rh-px-2 rh-py-2 rh-text-xs\", header: \"rh-px-2 rh-py-2 rh-text-xs\" },\n md: { cell: \"rh-px-3 rh-py-3 rh-text-sm\", header: \"rh-px-3 rh-py-3 rh-text-xs\" },\n lg: { cell: \"rh-px-4 rh-py-4 rh-text-sm\", header: \"rh-px-4 rh-py-3 rh-text-sm\" },\n};\n\nconst alignClasses: Record<\"left\" | \"center\" | \"right\", string> = {\n left: \"rh-text-left\",\n center: \"rh-text-center\",\n right: \"rh-text-right\",\n};\n\nfunction TableInner<T>(\n {\n columns,\n data,\n rowKey,\n size = \"md\",\n variant = \"default\",\n sort,\n onSortChange,\n loading = false,\n emptyContent = \"Nenhum dado encontrado\",\n loadingContent,\n stickyHeader = false,\n headerStyle,\n className = \"\",\n ...rest\n }: TableProps<T>,\n ref: React.ForwardedRef<HTMLTableElement>,\n) {\n const handleSort = (column: TableColumn<T>) => {\n if (!column.sortable || !onSortChange) return;\n\n const newDirection: SortDirection =\n sort?.key === column.key\n ? sort.direction === \"asc\"\n ? \"desc\"\n : sort.direction === \"desc\"\n ? null\n : \"asc\"\n : \"asc\";\n\n onSortChange({ key: column.key, direction: newDirection });\n };\n\n const renderSortIcon = (column: TableColumn<T>) => {\n if (!column.sortable) return null;\n\n const isAsc = sort?.key === column.key && sort.direction === \"asc\";\n const isDesc = sort?.key === column.key && sort.direction === \"desc\";\n\n return (\n <span className=\"rh-ml-1 rh-inline-flex rh-flex-col rh-gap-0.5\">\n <svg\n width=\"8\"\n height=\"5\"\n viewBox=\"0 0 8 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={isAsc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\n >\n <path d=\"M4 0L7.4641 4.5H0.535898L4 0Z\" fill=\"currentColor\" />\n </svg>\n <svg\n width=\"8\"\n height=\"5\"\n viewBox=\"0 0 8 5\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={isDesc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\n >\n <path d=\"M4 5L0.535898 0.5H7.4641L4 5Z\" fill=\"currentColor\" />\n </svg>\n </span>\n );\n };\n\n const isEmpty = !loading && data.length === 0;\n const colSpan = columns.length;\n\n return (\n <div className=\"rh-w-full rh-overflow-x-auto\">\n <table\n ref={ref}\n className={[\n \"rh-w-full rh-border-collapse rh-font-sans\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n <thead>\n <tr className=\"rh-border-b rh-border-border\" style={headerStyle}>\n {columns.map((column) => (\n <th\n key={column.key}\n scope=\"col\"\n style={{ width: column.width }}\n className={[\n sizeClasses[size].header,\n alignClasses[column.align || \"left\"],\n \"rh-font-semibold rh-text-text-muted rh-whitespace-nowrap\",\n stickyHeader ? \"rh-sticky rh-top-0 rh-bg-surface rh-z-10\" : \"\",\n column.sortable ? \"rh-cursor-pointer rh-select-none hover:rh-text-text\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n onClick={() => handleSort(column)}\n >\n <span className=\"rh-inline-flex rh-items-center\">\n {column.header}\n {renderSortIcon(column)}\n </span>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {loading && (\n <tr>\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8\">\n {loadingContent || (\n <div className=\"rh-flex rh-items-center rh-justify-center rh-gap-2 rh-text-text-muted\">\n <svg\n className=\"rh-animate-spin rh-h-5 rh-w-5\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n Carregando...\n </div>\n )}\n </td>\n </tr>\n )}\n {isEmpty && (\n <tr>\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8 rh-text-text-muted\">\n {emptyContent}\n </td>\n </tr>\n )}\n {!loading &&\n data.map((row, index) => (\n <tr\n key={rowKey(row, index)}\n className={[\n \"rh-border-b rh-border-border rh-transition-colors\",\n \"hover:rh-bg-background\",\n variant === \"striped\" && index % 2 === 1 ? \"rh-bg-background/50\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {columns.map((column) => (\n <td\n key={column.key}\n className={[\n sizeClasses[size].cell,\n alignClasses[column.align || \"left\"],\n \"rh-text-text\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {column.render(row, index)}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n\nexport const Table = forwardRef(TableInner) as <T>(\n props: TableProps<T> & { ref?: React.ForwardedRef<HTMLTableElement> },\n) => React.ReactElement;\n","import React, { forwardRef } from \"react\";\n\nexport type ContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Remove o padding horizontal lateral.\n * Use quando o conteúdo deve ocupar toda a largura disponível.\n */\n fluid?: boolean;\n};\n\nexport const Container = forwardRef<HTMLDivElement, ContainerProps>(\n function Container({ fluid = false, className = \"\", children, ...rest }, ref) {\n return (\n <div\n ref={ref}\n className={[\n \"rh-w-full rh-mx-auto\",\n \"rh-max-w-[1440px]\",\n !fluid\n ? \"rh-px-grid-margin-mobile desktop-xs:rh-px-grid-margin-desktop\"\n : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type GridContainerProps = React.HTMLAttributes<HTMLDivElement> & {\n /**\n * Override do número de colunas.\n * Padrão: 4 no mobile, 12 no desktop (desktop-xs+).\n */\n columns?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\n /**\n * Gap entre as colunas em pixels.\n * Padrão: 16px no mobile, 24px no desktop.\n */\n spacing?: number;\n};\n\nconst colsClasses: Record<number, string> = {\n 1: \"rh-grid-cols-1\",\n 2: \"rh-grid-cols-2\",\n 3: \"rh-grid-cols-3\",\n 4: \"rh-grid-cols-4\",\n 5: \"rh-grid-cols-5\",\n 6: \"rh-grid-cols-6\",\n 7: \"rh-grid-cols-7\",\n 8: \"rh-grid-cols-8\",\n 9: \"rh-grid-cols-9\",\n 10: \"rh-grid-cols-10\",\n 11: \"rh-grid-cols-11\",\n 12: \"rh-grid-cols-12\",\n};\n\nexport const GridContainer = forwardRef<HTMLDivElement, GridContainerProps>(\n function GridContainer({ columns, spacing, className = \"\", style, children, ...rest }, ref) {\n const colClass = columns\n ? colsClasses[columns]\n : \"rh-grid-cols-4 desktop-xs:rh-grid-cols-12\";\n\n const gapStyle =\n spacing !== undefined\n ? { gap: `${spacing}px`, ...style }\n : style;\n\n return (\n <div\n ref={ref}\n style={gapStyle}\n className={[\n \"rh-grid\",\n colClass,\n spacing === undefined ? \"rh-gap-grid-gutter-mobile desktop-xs:rh-gap-grid-gutter-desktop\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type GridSpan = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;\nexport type MobileSpan = 1 | 2 | 3 | 4;\n\nexport type GridItemProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Span base no mobile (320px+). Padrão: 4 (full width das 4 colunas). */\n mobile?: MobileSpan;\n /** Span a partir de mobile-sm (360px+). */\n mobileSm?: MobileSpan;\n /** Span a partir de mobile-md (390px+). */\n mobileMd?: MobileSpan;\n /** Span a partir de mobile-lg (430px+). */\n mobileLg?: MobileSpan;\n /** Span a partir de desktop-xs (768px+). Padrão: 12 (full width das 12 colunas). */\n desktop?: GridSpan;\n /** Span a partir de desktop-sm (1024px+). */\n desktopSm?: GridSpan;\n /** Span a partir de desktop-md (1280px+). */\n desktopMd?: GridSpan;\n /** Span a partir de desktop-lg (1440px+). */\n desktopLg?: GridSpan;\n};\n\n// Mapas estáticos completos para evitar purge do Tailwind\nconst mobileSpanClasses: Record<MobileSpan, string> = {\n 1: \"rh-col-span-1\",\n 2: \"rh-col-span-2\",\n 3: \"rh-col-span-3\",\n 4: \"rh-col-span-4\",\n};\n\nconst mobileSmSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-sm:rh-col-span-1\",\n 2: \"mobile-sm:rh-col-span-2\",\n 3: \"mobile-sm:rh-col-span-3\",\n 4: \"mobile-sm:rh-col-span-4\",\n};\n\nconst mobileMdSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-md:rh-col-span-1\",\n 2: \"mobile-md:rh-col-span-2\",\n 3: \"mobile-md:rh-col-span-3\",\n 4: \"mobile-md:rh-col-span-4\",\n};\n\nconst mobileLgSpanClasses: Record<MobileSpan, string> = {\n 1: \"mobile-lg:rh-col-span-1\",\n 2: \"mobile-lg:rh-col-span-2\",\n 3: \"mobile-lg:rh-col-span-3\",\n 4: \"mobile-lg:rh-col-span-4\",\n};\n\nconst desktopSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-xs:rh-col-span-1\",\n 2: \"desktop-xs:rh-col-span-2\",\n 3: \"desktop-xs:rh-col-span-3\",\n 4: \"desktop-xs:rh-col-span-4\",\n 5: \"desktop-xs:rh-col-span-5\",\n 6: \"desktop-xs:rh-col-span-6\",\n 7: \"desktop-xs:rh-col-span-7\",\n 8: \"desktop-xs:rh-col-span-8\",\n 9: \"desktop-xs:rh-col-span-9\",\n 10: \"desktop-xs:rh-col-span-10\",\n 11: \"desktop-xs:rh-col-span-11\",\n 12: \"desktop-xs:rh-col-span-12\",\n};\n\nconst desktopSmSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-sm:rh-col-span-1\",\n 2: \"desktop-sm:rh-col-span-2\",\n 3: \"desktop-sm:rh-col-span-3\",\n 4: \"desktop-sm:rh-col-span-4\",\n 5: \"desktop-sm:rh-col-span-5\",\n 6: \"desktop-sm:rh-col-span-6\",\n 7: \"desktop-sm:rh-col-span-7\",\n 8: \"desktop-sm:rh-col-span-8\",\n 9: \"desktop-sm:rh-col-span-9\",\n 10: \"desktop-sm:rh-col-span-10\",\n 11: \"desktop-sm:rh-col-span-11\",\n 12: \"desktop-sm:rh-col-span-12\",\n};\n\nconst desktopMdSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-md:rh-col-span-1\",\n 2: \"desktop-md:rh-col-span-2\",\n 3: \"desktop-md:rh-col-span-3\",\n 4: \"desktop-md:rh-col-span-4\",\n 5: \"desktop-md:rh-col-span-5\",\n 6: \"desktop-md:rh-col-span-6\",\n 7: \"desktop-md:rh-col-span-7\",\n 8: \"desktop-md:rh-col-span-8\",\n 9: \"desktop-md:rh-col-span-9\",\n 10: \"desktop-md:rh-col-span-10\",\n 11: \"desktop-md:rh-col-span-11\",\n 12: \"desktop-md:rh-col-span-12\",\n};\n\nconst desktopLgSpanClasses: Record<GridSpan, string> = {\n 1: \"desktop-lg:rh-col-span-1\",\n 2: \"desktop-lg:rh-col-span-2\",\n 3: \"desktop-lg:rh-col-span-3\",\n 4: \"desktop-lg:rh-col-span-4\",\n 5: \"desktop-lg:rh-col-span-5\",\n 6: \"desktop-lg:rh-col-span-6\",\n 7: \"desktop-lg:rh-col-span-7\",\n 8: \"desktop-lg:rh-col-span-8\",\n 9: \"desktop-lg:rh-col-span-9\",\n 10: \"desktop-lg:rh-col-span-10\",\n 11: \"desktop-lg:rh-col-span-11\",\n 12: \"desktop-lg:rh-col-span-12\",\n};\n\nexport const GridItem = forwardRef<HTMLDivElement, GridItemProps>(\n function GridItem(\n {\n mobile = 4,\n mobileSm,\n mobileMd,\n mobileLg,\n desktop = 12,\n desktopSm,\n desktopMd,\n desktopLg,\n className = \"\",\n children,\n ...rest\n },\n ref,\n ) {\n return (\n <div\n ref={ref}\n className={[\n mobileSpanClasses[mobile],\n mobileSm !== undefined ? mobileSmSpanClasses[mobileSm] : \"\",\n mobileMd !== undefined ? mobileMdSpanClasses[mobileMd] : \"\",\n mobileLg !== undefined ? mobileLgSpanClasses[mobileLg] : \"\",\n desktopSpanClasses[desktop],\n desktopSm !== undefined ? desktopSmSpanClasses[desktopSm] : \"\",\n desktopMd !== undefined ? desktopMdSpanClasses[desktopMd] : \"\",\n desktopLg !== undefined ? desktopLgSpanClasses[desktopLg] : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {children}\n </div>\n );\n },\n);\n"]}