@rehagro/ui 1.0.61 → 1.0.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/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/WarningCircleIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/icons/CaretLeftIcon.tsx","../src/icons/CaretRightIcon.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/Radio/Radio.tsx","../src/components/Select/Select.tsx","../src/components/SelectDate/SelectDate.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Tag/Tag.tsx","../src/components/TagInput/TagInput.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Card/Card.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Table/CustomSelect.tsx","../src/components/Table/Table.tsx","../src/components/Typography/Typography.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Grid/Container.tsx","../src/components/Grid/GridContainer.tsx","../src/components/Grid/GridItem.tsx"],"names":["jsxs","jsx","forwardRef","Toast","useState","useRef","useEffect","useCallback","createContext","useContext","useMemo","toRgbTriplet","Button","React","PRESET_COLORS","isPresetColor","getArbitraryColorStyle","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","labelSizeClasses","Radio","RadioOption","RadioGroup","statusClasses","helperStatusClasses","getSubtitleClassName","CheckIcon","Select","dropdownRadiusClasses","ChevronIcon","DateSelect","getDaysInMonth","getFirstDayOfMonth","ref","EraserIcon","TimePicker","radius","createPortal","Fragment","Tooltip","variantClasses","Avatar","Tag","colorClasses","TagInput","ProgressBar","CardHeader","CardContent","CardFooter","Card","Spinner","ChevronLeftIcon","ChevronRightIcon","Typography","Pagination","Container","GridContainer","GridItem"],"mappings":"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","file":"index.js","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 /** Neutral color — for non-semantic actions (e.g. kebab menus, close buttons).\r\n * Typically mapped to textMuted / text / border in the consumer's theme. */\r\n neutral?: string;\r\n neutralHover?: string;\r\n\r\n /** Subtle background for outline/ghost hover.\r\n * Accepts any CSS color value (hex, rgb, named).\r\n * When omitted, derived automatically via color-mix from the base color. */\r\n primarySubtle?: string;\r\n secondarySubtle?: string;\r\n dangerSubtle?: string;\r\n warningSubtle?: string;\r\n successSubtle?: string;\r\n infoSubtle?: string;\r\n neutralSubtle?: 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 /** Button heights */\r\n buttonHeightXxs?: string;\r\n buttonHeightXs?: string;\r\n buttonHeightSm?: string;\r\n buttonHeightMd?: string;\r\n buttonHeightLg?: string;\r\n buttonHeightXl?: string;\r\n\r\n /** Typography — Inter for body/labels, Sora for headings/display */\r\n fontFamilyBody?: string;\r\n fontFamilyDisplay?: 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\n * - isColor: value must be a color; will be converted to \"r g b\" triplet for alpha support.\r\n * - raw: value is applied to the CSS var as-is (no triplet conversion). Use for CSS values\r\n * that are not plain colors (e.g. color-mix results, gradients, named colors). */\r\nexport const TOKEN_MAP: Record<\r\n keyof RehagroTheme,\r\n { var: string; isColor: boolean; raw?: boolean }\r\n> = {\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 neutral: { var: \"--rh-neutral\", isColor: true },\r\n neutralHover: { var: \"--rh-neutral-hover\", isColor: true },\r\n primarySubtle: { var: \"--rh-primary-subtle\", isColor: true, raw: true },\r\n secondarySubtle: { var: \"--rh-secondary-subtle\", isColor: true, raw: true },\r\n dangerSubtle: { var: \"--rh-danger-subtle\", isColor: true, raw: true },\r\n warningSubtle: { var: \"--rh-warning-subtle\", isColor: true, raw: true },\r\n successSubtle: { var: \"--rh-success-subtle\", isColor: true, raw: true },\r\n infoSubtle: { var: \"--rh-info-subtle\", isColor: true, raw: true },\r\n neutralSubtle: { var: \"--rh-neutral-subtle\", isColor: true, raw: 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 buttonHeightXxs: { var: \"--rh-button-height-xxs\", isColor: false },\r\n buttonHeightXs: { var: \"--rh-button-height-xs\", isColor: false },\r\n buttonHeightSm: { var: \"--rh-button-height-sm\", isColor: false },\r\n buttonHeightMd: { var: \"--rh-button-height-md\", isColor: false },\r\n buttonHeightLg: { var: \"--rh-button-height-lg\", isColor: false },\r\n buttonHeightXl: { var: \"--rh-button-height-xl\", isColor: false },\r\n fontFamilyBody: { var: \"--rh-font-family\", isColor: false },\r\n fontFamilyDisplay: { var: \"--rh-font-family-display\", 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 WarningCircleIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 256 256\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <rect width=\"256\" height=\"256\" fill=\"none\" />\r\n <circle\r\n cx=\"128\"\r\n cy=\"128\"\r\n r=\"96\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeMiterlimit=\"10\"\r\n strokeWidth=\"16\"\r\n />\r\n <line\r\n x1=\"128\"\r\n y1=\"136\"\r\n x2=\"128\"\r\n y2=\"80\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth=\"16\"\r\n />\r\n <circle cx=\"128\" cy=\"172\" r=\"12\" />\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","import React from \"react\";\r\nimport type { IconProps } from \"./types\";\r\n\r\nexport function CaretLeftIcon({ className, ...props }: IconProps) {\r\n return (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n {...props}\r\n >\r\n <path\r\n d=\"M10 12L6 8L10 4\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport type { IconProps } from \"./types\";\r\n\r\nexport function CaretRightIcon({ className, ...props }: IconProps) {\r\n return (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n {...props}\r\n >\r\n <path\r\n d=\"M6 4L10 8L6 12\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { InfoIcon, WarningIcon, SuccessIcon, ErrorIcon, NeutralIcon, CloseIcon } 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. Accepts a string or any React node (e.g. a list of items). */\r\n description?: React.ReactNode;\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-body\",\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 className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]].filter(Boolean).join(\" \")} />\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 <div\r\n className={[\"rh-mt-1 rh-text-sm rh-leading-normal\", descriptionStyles[styleKey]]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {description}\r\n </div>\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?: React.ReactNode;\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?: React.ReactNode;\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 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.raw) {\r\n // Raw tokens (e.g. subtle backgrounds) are applied as-is so the CSS var\r\n // can hold any valid CSS color value (hex, rgb, color-mix, etc.).\r\n vars[config.var] = value;\r\n } else 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 if (!theme.ring && theme.primary) {\r\n const triplet = toRgbTriplet(theme.primary);\r\n if (triplet) vars[\"--rh-ring\"] = triplet;\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 = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonHoverStyle = {\r\n /** Background on hover */\r\n background?: string;\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;\n /** Custom text/icon color for the base state. Use hoverStyle.color to customize hover text color. */\n textColor?: string;\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 \"neutral\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\n/**\r\n * Base (non-hover) color classes per variant/preset.\r\n * Always applied for preset colors — even when `hoverStyle` overrides the hover state.\r\n */\r\nconst variantBaseClasses: Record<ButtonVariant, Record<PresetColor, string>> = {\r\n solid: {\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 neutral: \"rh-bg-neutral rh-text-surface rh-border-neutral\",\r\n },\r\n outline: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-primary\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-secondary\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-danger\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-warning\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-success\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-info\",\r\n neutral: \"rh-bg-transparent rh-text-neutral rh-border-neutral\",\r\n },\r\n ghost: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-transparent\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-transparent\",\r\n neutral: \"rh-bg-transparent rh-text-neutral rh-border-transparent\",\r\n },\r\n};\r\n\r\n/**\r\n * Hover color classes per variant/preset.\r\n * Skipped when `hoverStyle` is provided, so the consumer's custom hover wins.\r\n */\r\nconst variantHoverClasses: Record<ButtonVariant, Record<PresetColor, string>> = {\r\n solid: {\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 neutral: \"hover:rh-bg-neutral-hover hover:rh-border-neutral-hover\",\r\n },\r\n outline: {\r\n primary: \"hover:rh-bg-primary-subtle\",\r\n secondary: \"hover:rh-bg-secondary-subtle\",\r\n danger: \"hover:rh-bg-danger-subtle\",\r\n warning: \"hover:rh-bg-warning-subtle\",\r\n success: \"hover:rh-bg-success-subtle\",\r\n info: \"hover:rh-bg-info-subtle\",\r\n neutral: \"hover:rh-bg-neutral-subtle\",\r\n },\r\n ghost: {\r\n primary: \"hover:rh-bg-primary-subtle\",\r\n secondary: \"hover:rh-bg-secondary-subtle\",\r\n danger: \"hover:rh-bg-danger-subtle\",\r\n warning: \"hover:rh-bg-warning-subtle\",\r\n success: \"hover:rh-bg-success-subtle\",\r\n info: \"hover:rh-bg-info-subtle\",\r\n neutral: \"hover:rh-bg-neutral-subtle\",\r\n },\r\n};\r\n\r\nfunction getArbitraryColorStyle(variant: ButtonVariant, color: string): 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 xxs: \"rh-text-2xs rh-leading-none rh-px-1.5 rh-h-button-xxs rh-gap-1\",\r\n xs: \"rh-text-xs rh-leading-none rh-px-2 rh-h-button-xs rh-gap-1\",\r\n sm: \"rh-text-sm rh-px-3 rh-h-button-sm\",\r\n md: \"rh-text-sm rh-px-4 rh-h-button-md\",\r\n lg: \"rh-text-base rh-px-5 rh-h-button-lg\",\r\n xl: \"rh-text-lg rh-px-6 rh-h-button-xl\",\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\",\n textColor,\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\r\n ? { [`--rh-${color}-hover`]: toRgbTriplet(hoverColor) ?? hoverColor }\r\n : {}\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 ? ({\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\r\n const textStyle: React.CSSProperties = textColor ? { color: textColor } : {};\n\n return { ...style, ...baseStyle, ...textStyle, ...hoverVars };\n }, [preset, color, variant, hoverColor, hoverStyle, style, textColor]);\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-display 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 ? variantBaseClasses[variant][color as PresetColor] : \"\",\r\n preset && !hasCustomHover ? variantHoverClasses[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 = \"xxs\" | \"xs\" | \"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 \"neutral\",\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 neutral:\r\n \"rh-bg-neutral rh-text-surface rh-border-neutral hover:rh-bg-neutral-hover hover:rh-border-neutral-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 neutral:\r\n \"rh-bg-transparent rh-text-neutral rh-border-neutral hover:rh-bg-neutral-subtle\",\r\n },\r\n ghost: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary-subtle\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary-subtle\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger-subtle\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning-subtle\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success-subtle\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-transparent hover:rh-bg-info-subtle\",\r\n neutral: \"rh-bg-transparent rh-text-neutral rh-border-transparent hover:rh-bg-neutral-subtle\",\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 xxs: \"rh-h-4 rh-w-4 rh-text-2xs\",\r\n xs: \"rh-h-6 rh-w-6 rh-text-xs\",\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> = {\n none: \"rh-rounded-none\",\n // IconButton is a square control, so it uses the same compact radius\n // scale as the native implementation. The global web radius tokens are\n // larger (md = 16px), which makes a 32px icon button look circular.\n xxs: \"rh-rounded-[2px]\",\n xs: \"rh-rounded-[4px]\",\n sm: \"rh-rounded-[8px]\",\n md: \"rh-rounded-[12px]\",\n lg: \"rh-rounded-[16px]\",\n xl: \"rh-rounded-[24px]\",\n full: \"rh-rounded-full\",\n};\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-display\",\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\nimport { WarningCircleIcon } from \"../../icons\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\r\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type TextInputBorderWidth = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TextInputLabelWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\r\n\r\nexport type TextInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Label font weight */\r\n labelWeight?: TextInputLabelWeight;\r\n /** Label text color. Defaults to the Rehsult input label color. */\r\n labelColor?: 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 * Custom border color for the input container. Accepts any valid\r\n * CSS color value (hex, rgb, CSS variable, etc). When provided,\r\n * overrides the border color from the current `status`. Useful\r\n * for highlighting cells/rows in tables, marking fields with\r\n * non-error states, or theming. Does NOT change focus/ring\r\n * colors — those still come from `statusClasses`.\r\n */\r\n borderColor?: string;\r\n /**\r\n * Custom background color for the input container. Accepts any valid\r\n * CSS color value (hex, rgb, CSS variable, etc). When provided,\r\n * overrides the default `rh-bg-surface` background. Ignored when\r\n * `disabled` is true to preserve the disabled visual style.\r\n */\r\n backgroundColor?: string;\r\n /**\r\n * Border width token for the input container.\r\n *\r\n * - `sm`: default 1px border.\r\n * - `md`: default 2px border.\r\n * - `lg`: default 3px border.\r\n */\r\n borderWidth?: TextInputBorderWidth;\r\n};\r\n\r\nconst statusClasses: Record<TextInputStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200\",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100\",\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 xl: \"rh-h-input-xl rh-text-sm rh-px-input-x-md\",\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 borderWidthClasses: Record<TextInputBorderWidth, string> = {\r\n sm: \"rh-border-sm\",\r\n md: \"rh-border-md\",\r\n lg: \"rh-border-lg\",\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 xl: \"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\nconst labelWeightClasses: Record<TextInputLabelWeight, string> = {\r\n normal: \"rh-font-normal\",\r\n medium: \"rh-font-medium\",\r\n semibold: \"rh-font-semibold\",\r\n bold: \"rh-font-bold\",\r\n};\r\n\r\nconst getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\r\n\r\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(function TextInput(\r\n {\r\n label,\r\n labelWeight = \"medium\",\r\n labelColor = \"#080B12\",\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 borderColor,\r\n backgroundColor,\r\n borderWidth = \"sm\",\r\n id,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const generatedId = React.useId();\r\n const inputId = id || generatedId;\r\n const [isHelperDismissed, setIsHelperDismissed] = React.useState(false);\r\n const { onChange, ...inputProps } = rest;\r\n const visualStatus: TextInputStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n const containerStyle: React.CSSProperties = {\r\n ...(borderColor ? { borderColor } : {}),\r\n ...(!disabled && backgroundColor ? { backgroundColor } : {}),\r\n };\r\n\r\n return (\r\n <div\r\n className={[\"rh-flex rh-flex-col rh-gap-[0.5rem] rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label htmlFor={inputId} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span\r\n className={`rh-text-sm ${labelWeightClasses[labelWeight]}`}\r\n style={{ color: labelColor }}\r\n >\r\n {label}\r\n </span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{subtitle}</span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {/* Input container */}\r\n <div\r\n style={containerStyle}\r\n className={[\r\n \"rh-flex rh-items-center rh-gap-2\",\r\n \"rh-bg-surface rh-font-body\",\r\n borderWidthClasses[borderWidth],\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-overflow-hidden\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"\",\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={visualStatus === \"error\" || undefined}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className={[\r\n \"rh-flex-1 rh-min-w-0 rh-bg-transparent rh-outline-none\",\r\n \"rh-text-text placeholder:rh-text-text-muted hover:placeholder:rh-text-text\",\r\n disabled ? \"rh-cursor-not-allowed\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onChange={(e) => {\r\n if (helperText) setIsHelperDismissed(true);\r\n onChange?.(e);\r\n }}\r\n {...inputProps}\r\n />\r\n\r\n {rightIcon && (\r\n <span\r\n className={[\r\n \"rh-inline-flex rh-shrink-0 rh-items-center rh-justify-center rh-whitespace-nowrap rh-text-text-muted\",\r\n iconSizeClasses[size],\r\n \"rh-w-auto rh-min-w-fit\",\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 && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\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<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> & {\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 checked?: boolean;\r\n defaultChecked?: 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 d=\"M1 1H9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\r\n </svg>\r\n);\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(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-body 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 ? \"hover:rh-border-primary\" : \"\",\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 && <span className={[\"rh-text-text\", labelSizeClasses[size]].join(\" \")}>{label}</span>}\r\n </label>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef, createContext, useContext } from \"react\";\r\nimport { PresetColor } from \"../../types/colors.types\";\r\n\r\n// ============================================\r\n// TYPES\r\n// ============================================\r\n\r\nexport type RadioSize = \"sm\" | \"md\" | \"lg\";\r\nexport type RadioOrientation = \"horizontal\" | \"vertical\";\r\n\r\nexport type RadioProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> & {\r\n /** Radio size */\r\n size?: RadioSize;\r\n /** Label text displayed next to the radio */\r\n label?: React.ReactNode;\r\n /** Description text below the label */\r\n description?: React.ReactNode;\r\n /** Color scheme for checked state */\r\n color?: PresetColor | (string & {});\r\n};\r\n\r\nexport type RadioGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> & {\r\n /** Currently selected value */\r\n value?: string;\r\n /** Default value (uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes */\r\n onChange?: (value: string) => void;\r\n /** Radio size for all items */\r\n size?: RadioSize;\r\n /** Layout orientation */\r\n orientation?: RadioOrientation;\r\n /** Color scheme for checked state */\r\n color?: PresetColor | (string & {});\r\n /** Whether the entire group is disabled */\r\n disabled?: boolean;\r\n /** Name for all radio inputs */\r\n name?: string;\r\n /** Gap between items */\r\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\r\n};\r\n\r\nexport type RadioOptionProps = RadioProps & {\r\n /** Unique value for this option */\r\n value: string;\r\n};\r\n\r\n// ============================================\r\n// CONTEXT\r\n// ============================================\r\n\r\ntype RadioGroupContextType = {\r\n name?: string;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n size?: RadioSize;\r\n color?: PresetColor | (string & {});\r\n disabled?: boolean;\r\n};\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextType | null>(null);\r\n\r\nconst useRadioGroup = () => useContext(RadioGroupContext);\r\n\r\n// ============================================\r\n// SIZE CLASSES\r\n// ============================================\r\n\r\nconst labelSizeClasses: Record<RadioSize, 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 descriptionSizeClasses: Record<RadioSize, string> = {\r\n sm: \"rh-text-xs\",\r\n md: \"rh-text-xs\",\r\n lg: \"rh-text-sm\",\r\n};\r\n\r\nconst gapClasses: Record<\"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\", string> = {\r\n sm: \"rh-gap-2\",\r\n md: \"rh-gap-3\",\r\n lg: \"rh-gap-4\",\r\n xl: \"rh-gap-5\",\r\n xxl: \"rh-gap-6\",\r\n};\r\n\r\n// ============================================\r\n// PRESET COLORS\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\n// ============================================\r\n// RADIO COMPONENT\r\n// ============================================\r\n\r\nconst inputSizeClasses: Record<RadioSize, string> = {\r\n sm: \"rh-w-4 rh-h-4\",\r\n md: \"rh-w-5 rh-h-5\",\r\n lg: \"rh-w-6 rh-h-6\",\r\n};\r\n\r\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\r\n {\r\n size = \"md\",\r\n label,\r\n description,\r\n color = \"primary\",\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 inputId = id || React.useId();\r\n\r\n // Obter cor para accent-color\r\n const getAccentColor = (): string => {\r\n if (isPresetColor(color)) {\r\n return `rgb(var(--rh-${color}))`;\r\n }\r\n return color;\r\n };\r\n\r\n return (\r\n <label\r\n htmlFor={inputId}\r\n className={[\r\n \"rh-inline-flex rh-items-start rh-gap-2 rh-font-body 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 <input\r\n ref={ref}\r\n id={inputId}\r\n type=\"radio\"\r\n disabled={disabled}\r\n checked={checked}\r\n defaultChecked={defaultChecked}\r\n onChange={onChange}\r\n className={[\r\n inputSizeClasses[size],\r\n \"rh-accent-current rh-cursor-pointer\",\r\n disabled ? \"rh-cursor-not-allowed\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{ accentColor: getAccentColor() }}\r\n {...rest}\r\n />\r\n\r\n {(label || description) && (\r\n <span className=\"rh-flex rh-flex-col\">\r\n {label && (\r\n <span className={[\"rh-text-text\", labelSizeClasses[size]].join(\" \")}>{label}</span>\r\n )}\r\n {description && (\r\n <span className={[\"rh-text-text-muted\", descriptionSizeClasses[size]].join(\" \")}>\r\n {description}\r\n </span>\r\n )}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO OPTION (for use inside RadioGroup)\r\n// ============================================\r\n\r\nexport const RadioOption = forwardRef<HTMLInputElement, RadioOptionProps>(function RadioOption(\r\n { value, size, color, disabled, ...rest },\r\n ref,\r\n) {\r\n const group = useRadioGroup();\r\n\r\n const mergedSize = size ?? group?.size ?? \"md\";\r\n const mergedColor = color ?? group?.color ?? \"primary\";\r\n const mergedDisabled = disabled ?? group?.disabled ?? false;\r\n const isChecked = group?.value === value;\r\n\r\n const handleChange = () => {\r\n group?.onChange?.(value);\r\n };\r\n\r\n return (\r\n <Radio\r\n ref={ref}\r\n name={group?.name}\r\n value={value}\r\n size={mergedSize}\r\n color={mergedColor}\r\n disabled={mergedDisabled}\r\n checked={isChecked}\r\n onChange={handleChange}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO GROUP COMPONENT\r\n// ============================================\r\n\r\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(function RadioGroup(\r\n {\r\n children,\r\n value,\r\n defaultValue,\r\n onChange,\r\n size = \"md\",\r\n orientation = \"vertical\",\r\n color = \"primary\",\r\n disabled = false,\r\n name,\r\n gap = \"md\",\r\n className = \"\",\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const [internalValue, setInternalValue] = React.useState(defaultValue);\r\n const groupName = name || React.useId();\r\n\r\n const currentValue = value ?? internalValue;\r\n\r\n const handleChange = (newValue: string) => {\r\n setInternalValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n name: groupName,\r\n value: currentValue,\r\n onChange: handleChange,\r\n size,\r\n color,\r\n disabled,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n role=\"radiogroup\"\r\n className={[\r\n \"rh-flex\",\r\n orientation === \"vertical\" ? \"rh-flex-col\" : \"rh-flex-row rh-flex-wrap\",\r\n gapClasses[gap],\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 </RadioGroupContext.Provider>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { WarningCircleIcon } from \"../../icons\";\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 to use radio buttons instead of checkboxes */\r\n radio?: boolean;\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 /** Custom background color for the trigger button */\r\n backgroundColor?: 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-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200 \",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100 \",\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 getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\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\n// Radio renderizado como SVG pra garantir centralizacao geometrica\r\n// perfeita do ponto interno (centralizacao por flex/CSS pode quebrar\r\n// em sub-pixel). Proporcoes seguem o padrao Material Design 3 e\r\n// Tailwind UI: outer 16px, inner ~8px (50% do outer).\r\nconst RadioIcon = ({ isSelected }: { isSelected: boolean }) => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n aria-hidden=\"true\"\r\n className={[\r\n \"rh-shrink-0 rh-transition-colors rh-duration-150\",\r\n isSelected\r\n ? \"rh-text-primary rh-fill-surface\"\r\n : \"rh-text-border rh-fill-surface\",\r\n ].join(\" \")}\r\n >\r\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1\" />\r\n {isSelected && (\r\n <circle cx=\"8\" cy=\"8\" r=\"5\" className=\"rh-fill-primary\" stroke=\"none\" />\r\n )}\r\n </svg>\r\n);\r\n\r\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(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 radio = false,\r\n disabled = false,\r\n className = \"\",\r\n wrapperClassName = \"\",\r\n multiple = false,\r\n backgroundColor,\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 const [isHelperDismissed, setIsHelperDismissed] = React.useState(false);\r\n\r\n const typeaheadRef = React.useRef<{ query: string; lastAt: number }>({ query: \"\", lastAt: 0 });\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) ? props.defaultValue : [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 visualStatus: SelectStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n const handleSelect = (optionValue: string) => {\r\n if (helperText) setIsHelperDismissed(true);\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 ? options.indexOf(enabledOptions[0]) : 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 =\r\n 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={[\"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label id={`${triggerId}-label`} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{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={visualStatus === \"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 style={backgroundColor ? { backgroundColor } : undefined}\r\n className={[\r\n \"rh-group rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-font-body\",\r\n !backgroundColor && \"rh-bg-surface\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"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 group-hover:rh-text-text\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n\r\n <ChevronIcon\r\n className={[\r\n \"rh-w-4 rh-h-4 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150 rh-bg-surface rh-rounded-xl\",\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-y-auto rh-overscroll-contain 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 ? \"rh-opacity-50 rh-cursor-not-allowed\" : \"rh-cursor-pointer\",\r\n isActive && !isDisabled ? \"rh-bg-background\" : \"\",\r\n isSelected && !isActive ? \"rh-bg-primary/5\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">{option.label}</span>\r\n\r\n {radio ? (\r\n <RadioIcon isSelected={isSelected} />\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 && <CheckIcon className=\"rh-w-3 rh-h-3\" />}\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 && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef, useEffect, useState, useRef, useMemo } from \"react\";\r\nimport { WarningCircleIcon } from \"../../icons\";\r\nimport { SelectSize, SelectRadius, SelectStatus } from \"../Select/Select\";\r\n\r\nexport type DateSelectMode = \"interval\" | \"day\" | \"month\" | \"year\";\r\n\r\nexport type DateSelectValue = {\r\n mode: DateSelectMode;\r\n year?: number;\r\n month?: number;\r\n day?: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n};\r\n\r\nexport type DateSelectProps = DateSelectBaseProps;\r\n\r\ntype DateSelectBaseProps = {\r\n /** Text displayed above the field */\r\n label?: string;\r\n /** Secondary text next to the label; use \"*\" to render a red asterisk */\r\n subtitle?: string;\r\n /** Text displayed when no date is selected */\r\n placeholder?: string;\r\n /** Visual state of the field: \"default\" (default) or \"error\" */\r\n status?: SelectStatus;\r\n /** Field size: \"sm\" | \"md\" | \"lg\" */\r\n size?: SelectSize;\r\n /** Border radius of the field */\r\n radius?: SelectRadius;\r\n /** Helper or error message displayed below the field */\r\n helperText?: React.ReactNode;\r\n /** Disables the field, preventing any interaction */\r\n disabled?: boolean;\r\n /** CSS class applied to the inner trigger element */\r\n className?: string;\r\n /** CSS class applied to the outer wrapper element */\r\n wrapperClassName?: string;\r\n /** Controlled value of the selected date */\r\n value?: DateSelectValue;\r\n /** Uncontrolled initial value of the selected date */\r\n defaultValue?: DateSelectValue;\r\n /** Callback fired when the selected date changes */\r\n onChange?: (value: DateSelectValue) => void;\r\n /** Start year of the range shown in the picker */\r\n startYear?: number;\r\n /** End year of the range shown in the picker */\r\n endYear?: number;\r\n /** Custom background color for the trigger button */\r\n backgroundColor?: string;\r\n /**\r\n * Restricts which modes are available in the picker.\r\n * When a single mode is provided the tab bar is hidden entirely.\r\n * Defaults to all four modes: [\"interval\", \"day\", \"month\", \"year\"].\r\n */\r\n modes?: DateSelectMode[];\r\n};\r\n\r\nconst MONTHS = [\r\n \"Janeiro\",\r\n \"Fevereiro\",\r\n \"Março\",\r\n \"Abril\",\r\n \"Maio\",\r\n \"Junho\",\r\n \"Julho\",\r\n \"Agosto\",\r\n \"Setembro\",\r\n \"Outubro\",\r\n \"Novembro\",\r\n \"Dezembro\",\r\n];\r\n\r\nconst MONTHS_SHORT = [\r\n \"Jan\",\r\n \"Fev\",\r\n \"Mar\",\r\n \"Abr\",\r\n \"Mai\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Ago\",\r\n \"Set\",\r\n \"Out\",\r\n \"Nov\",\r\n \"Dez\",\r\n];\r\n\r\nconst MODE_OPTIONS: { value: DateSelectMode; label: string }[] = [\r\n { value: \"interval\", label: \"Intervalo\" },\r\n { value: \"day\", label: \"Dia\" },\r\n { value: \"month\", label: \"Mês\" },\r\n { value: \"year\", label: \"Ano\" },\r\n];\r\n\r\nconst statusClasses: Record<SelectStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200\",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100\",\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 getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\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 ChevronLeftIcon = ({ 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=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst ChevronRightIcon = ({ 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=\"M7.21 14.77a.75.75 0 010-1.06L11.168 10 7.23 6.29a.75.75 0 011.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst EraserIcon = ({ className }: { className?: string }) => (\r\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.3134 13.7509H9.45406L16.2384 6.96656C16.4416 6.76343 16.6027 6.52227 16.7127 6.25686C16.8226 5.99145 16.8792 5.70697 16.8792 5.41969C16.8792 5.1324 16.8226 4.84793 16.7127 4.58252C16.6027 4.3171 16.4416 4.07594 16.2384 3.87281L13.0033 0.640783C12.8002 0.437631 12.559 0.276481 12.2936 0.166535C12.0282 0.0565888 11.7437 0 11.4564 0C11.1691 0 10.8846 0.0565888 10.6192 0.166535C10.3538 0.276481 10.1127 0.437631 9.90953 0.640783L0.640783 9.90875C0.437631 10.1119 0.276481 10.353 0.166535 10.6185C0.0565888 10.8839 0 11.1683 0 11.4556C0 11.7429 0.0565888 12.0274 0.166535 12.2928C0.276481 12.5582 0.437631 12.7994 0.640783 13.0025L2.98922 15.3517C3.07635 15.4388 3.17977 15.5078 3.29358 15.5548C3.40739 15.6019 3.52935 15.626 3.6525 15.6259H15.3134C15.5621 15.6259 15.8005 15.5272 15.9763 15.3514C16.1522 15.1755 16.2509 14.9371 16.2509 14.6884C16.2509 14.4398 16.1522 14.2013 15.9763 14.0255C15.8005 13.8497 15.5621 13.7509 15.3134 13.7509ZM11.2353 1.96656C11.2643 1.93751 11.2988 1.91446 11.3367 1.89873C11.3747 1.88301 11.4153 1.87491 11.4564 1.87491C11.4975 1.87491 11.5381 1.88301 11.5761 1.89873C11.614 1.91446 11.6485 1.93751 11.6775 1.96656L14.9103 5.19938C14.9688 5.25796 15.0016 5.33733 15.0016 5.42008C15.0016 5.50283 14.9688 5.5822 14.9103 5.64078L10.9384 9.61031L7.26656 5.93844L11.2353 1.96656ZM4.04078 13.7509L1.96656 11.6767C1.90812 11.6181 1.8753 11.5388 1.8753 11.456C1.8753 11.3733 1.90812 11.2939 1.96656 11.2353L5.93844 7.26656L9.61031 10.9384L6.79781 13.7509H4.04078Z\"\r\n fill=\"#374151\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport const DateSelect = forwardRef<HTMLButtonElement, DateSelectBaseProps>(\r\n function DateSelect(props, ref) {\r\n const {\r\n label,\r\n subtitle,\r\n placeholder = \"Selecione\",\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 startYear,\r\n endYear,\r\n backgroundColor,\r\n modes,\r\n } = props;\r\n\r\n const triggerId = React.useId();\r\n const helperId = React.useId();\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isHelperDismissed, setIsHelperDismissed] = useState(false);\r\n const [dropdownAlign, setDropdownAlign] = useState<\"left\" | \"right\">(\"left\");\r\n\r\n const [internalValue, setInternalValue] = useState<DateSelectValue>(\r\n props.defaultValue ?? { mode: \"day\" },\r\n );\r\n const isControlled = props.value !== undefined;\r\n const value: DateSelectValue = isControlled ? (props.value ?? internalValue) : internalValue;\r\n\r\n const availableModes = useMemo(\r\n () =>\r\n modes && modes.length > 0\r\n ? MODE_OPTIONS.filter((o) => modes.includes(o.value))\r\n : MODE_OPTIONS,\r\n [modes],\r\n );\r\n\r\n const defaultMode = availableModes[0]?.value ?? \"day\";\r\n\r\n const [activeMode, setActiveMode] = useState<DateSelectMode>(\r\n availableModes.some((o) => o.value === (value.mode ?? \"day\"))\r\n ? (value.mode ?? \"day\")\r\n : defaultMode,\r\n );\r\n\r\n const [selectedYear, setSelectedYear] = useState(new Date().getFullYear());\r\n const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth());\r\n\r\n const rightMonth = selectedMonth === 11 ? 0 : selectedMonth + 1;\r\n const rightYear = selectedMonth === 11 ? selectedYear + 1 : selectedYear;\r\n\r\n const [intervalStart, setIntervalStart] = useState<Date | undefined>(value.startDate);\r\n const [intervalEnd, setIntervalEnd] = useState<Date | undefined>(value.endDate);\r\n const [hoverDate, setHoverDate] = useState<Date | undefined>();\r\n\r\n const [yearGridStart, setYearGridStart] = useState(\r\n Math.floor(new Date().getFullYear() / 12) * 12,\r\n );\r\n\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n const innerRef = useRef<HTMLButtonElement>(null);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n\r\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\r\n\r\n const currentYear = new Date().getFullYear();\r\n const yearStart = startYear ?? currentYear - 10;\r\n const yearEnd = endYear ?? currentYear + 10;\r\n\r\n const visualStatus: SelectStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n const handleChange = (newValue: DateSelectValue) => {\r\n if (helperText) setIsHelperDismissed(true);\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n if (newValue.mode !== \"interval\") {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n const handleIntervalApply = () => {\r\n if (!intervalStart || !intervalEnd) return;\r\n const newValue: DateSelectValue = {\r\n mode: \"interval\",\r\n startDate: intervalStart,\r\n endDate: intervalEnd,\r\n };\r\n if (helperText) setIsHelperDismissed(true);\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n setIsOpen(false);\r\n };\r\n\r\n const handleIntervalClear = () => {\r\n setIntervalStart(undefined);\r\n setIntervalEnd(undefined);\r\n setHoverDate(undefined);\r\n const newValue: DateSelectValue = { mode: \"interval\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const handleMonthClear = () => {\r\n const newValue: DateSelectValue = { mode: \"month\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const handleDayClear = () => {\r\n const newValue: DateSelectValue = { mode: \"day\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const handleYearClear = () => {\r\n const newValue: DateSelectValue = { mode: \"year\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const displayText = useMemo(() => {\r\n if (value.mode === \"year\" && value.year) return value.year.toString();\r\n if (value.mode === \"month\" && value.year != null)\r\n return `${MONTHS_SHORT[value.month || 0]} ${value.year}`;\r\n if (value.mode === \"day\" && value.year != null)\r\n return `${value.day}/${(value.month ?? 0) + 1}/${value.year}`;\r\n if (value.mode === \"interval\" && value.startDate && value.endDate) {\r\n return `${value.startDate.toLocaleDateString(\"pt-BR\")} - ${value.endDate.toLocaleDateString(\"pt-BR\")}`;\r\n }\r\n return null;\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\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 document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\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 document.addEventListener(\"keydown\", handleEscape);\r\n return () => document.removeEventListener(\"keydown\", handleEscape);\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (!isOpen || !innerRef.current || !dropdownRef.current) return;\r\n\r\n const triggerRect = innerRef.current.getBoundingClientRect();\r\n const dropdownWidth = activeMode === \"interval\" ? 720 : 385;\r\n const spaceLeft = triggerRect.left;\r\n const spaceRight = window.innerWidth - triggerRect.right;\r\n\r\n if (spaceLeft < dropdownWidth && spaceRight >= dropdownWidth) {\r\n setDropdownAlign(\"right\");\r\n } else {\r\n setDropdownAlign(\"left\");\r\n }\r\n }, [isOpen, activeMode]);\r\n\r\n const getDaysInMonth = (year: number, month: number) => new Date(year, month + 1, 0).getDate();\r\n const getFirstDayOfMonth = (year: number, month: number) => new Date(year, month, 1).getDay();\r\n\r\n const isSameDay = (a: Date, b: Date) =>\r\n a.getFullYear() === b.getFullYear() &&\r\n a.getMonth() === b.getMonth() &&\r\n a.getDate() === b.getDate();\r\n\r\n const isInRange = (date: Date, start?: Date, end?: Date) => {\r\n if (!start) return false;\r\n const ref = end ?? hoverDate;\r\n if (!ref) return false;\r\n const [lo, hi] = start <= ref ? [start, ref] : [ref, start];\r\n return date > lo && date < hi;\r\n };\r\n\r\n const renderModeTabs = () => {\r\n if (availableModes.length <= 1) return null;\r\n return (\r\n <div className=\"rh-flex rh-border-b rh-border-border rh-bg-transparent\">\r\n {availableModes.map((option) => (\r\n <button\r\n key={option.value}\r\n onClick={() => setActiveMode(option.value)}\r\n className={[\r\n \"rh-flex-1 rh-py-2 rh-px-4 rh-text-sm rh-transition-colors rh-duration-150 rh-text-text rh-font-bold\",\r\n \"rh-border-b-2 -rh-mb-px\",\r\n activeMode === option.value\r\n ? \"rh-border-primary\"\r\n : \"rh-border-transparent hover:rh-border-border\",\r\n ].join(\" \")}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderYearGrid = () => (\r\n <div className=\"rh-p-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => setYearGridStart((s) => s - 12)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {yearGridStart} – {yearGridStart + 11}\r\n </span>\r\n <button\r\n onClick={() => setYearGridStart((s) => s + 12)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n <div className=\"rh-grid rh-grid-cols-4 rh-gap-2\">\r\n {Array.from({ length: 12 }, (_, i) => yearGridStart + i).map((year) => {\r\n const isSelected = value.mode === \"year\" && value.year === year;\r\n const outOfRange = year < yearStart || year > yearEnd;\r\n return (\r\n <button\r\n key={year}\r\n disabled={outOfRange}\r\n onClick={() => handleChange({ mode: \"year\", year })}\r\n className={[\r\n \"rh-rounded-sm rh-py-4 rh-w-auto rh-text-sm rh-transition-colors rh-duration-150 rh-border-border rh-border\",\r\n isSelected\r\n ? \"rh-bg-primary rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n outOfRange ? \"rh-opacity-30 rh-cursor-not-allowed\" : \"\",\r\n ].join(\" \")}\r\n >\r\n {year}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleYearClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n\r\n const renderMonthGrid = () => (\r\n <div className=\"rh-p-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => setSelectedYear((y) => y - 1)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{selectedYear}</span>\r\n <button\r\n onClick={() => setSelectedYear((y) => y + 1)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n <div className=\"rh-grid rh-grid-cols-4 rh-gap-2\">\r\n {MONTHS.map((month, index) => {\r\n const isSelected =\r\n value.mode === \"month\" && value.year === selectedYear && value.month === index;\r\n return (\r\n <button\r\n key={month}\r\n onClick={() => handleChange({ mode: \"month\", year: selectedYear, month: index })}\r\n className={[\r\n \"rh-rounded-sm rh-py-4 rh-w-auto rh-text-sm rh-transition-colors rh-duration-150 rh-border-border rh-border\",\r\n isSelected\r\n ? \"rh-bg-primary rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {month}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleMonthClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n\r\n const renderIntervalNav = () => (\r\n <div>\r\n <div className=\"rh-flex rh-gap-4 rh-p-1\">\r\n <div className=\"rh-flex-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 0) {\r\n setSelectedMonth(11);\r\n setSelectedYear((y) => y - 1);\r\n } else setSelectedMonth((m) => m - 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {MONTHS[selectedMonth]} - {selectedYear}\r\n </span>\r\n <div className=\"rh-w-7\" />\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n\r\n <div className=\"rh-grid rh-grid-cols-7 rh-mb-1\">\r\n {[\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"].map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n {renderIntervalDays(selectedYear, selectedMonth)}\r\n </div>\r\n <div className=\"rh-w-px rh-bg-border/30 rh-self-stretch\" />\r\n <div className=\"rh-flex-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <div className=\"rh-w-7\" />\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {MONTHS[rightMonth]} - {rightYear}\r\n </span>\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 11) {\r\n setSelectedMonth(0);\r\n setSelectedYear((y) => y + 1);\r\n } else setSelectedMonth((m) => m + 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n\r\n <div className=\"rh-grid rh-grid-cols-7 rh-mb-1\">\r\n {[\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"].map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n {renderIntervalDays(rightYear, rightMonth)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleIntervalClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n\r\n <button\r\n onClick={handleIntervalApply}\r\n disabled={!intervalStart || !intervalEnd}\r\n style={{\r\n backgroundColor: intervalStart && intervalEnd ? \"#87A851\" : \"#87A85180\",\r\n pointerEvents: !intervalStart || !intervalEnd ? \"none\" : \"auto\",\r\n }}\r\n className={[\r\n \"rh-text-sm rh-font-medium rh-px-4 rh-py-1.5 rh-rounded-lg rh-transition-colors rh-duration-150\",\r\n intervalStart && intervalEnd\r\n ? \"rh-text-surface hover:rh-opacity-90\"\r\n : \" rh-text-surface\",\r\n ].join(\" \")}\r\n >\r\n Aplicar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n\r\n const renderIntervalDays = (calYear: number, calMonth: number) => {\r\n const daysInMonth = getDaysInMonth(calYear, calMonth);\r\n const firstDay = getFirstDayOfMonth(calYear, calMonth);\r\n const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);\r\n\r\n const prevMonth = calMonth === 0 ? 11 : calMonth - 1;\r\n const prevYear = calMonth === 0 ? calYear - 1 : calYear;\r\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\r\n const prevDays = Array.from(\r\n { length: firstDay },\r\n (_, i) => daysInPrevMonth - firstDay + i + 1,\r\n );\r\n\r\n const totalCells = firstDay + daysInMonth;\r\n const nextDaysCount = totalCells % 7 === 0 ? 0 : 7 - (totalCells % 7);\r\n const nextDays = Array.from({ length: nextDaysCount }, (_, i) => i + 1);\r\n\r\n const handleDayClick = (day: number) => {\r\n const clicked = new Date(calYear, calMonth, day);\r\n if (!intervalStart || (intervalStart && intervalEnd)) {\r\n setIntervalStart(clicked);\r\n setIntervalEnd(undefined);\r\n } else {\r\n const [lo, hi] =\r\n clicked >= intervalStart ? [intervalStart, clicked] : [clicked, intervalStart];\r\n setIntervalStart(lo);\r\n setIntervalEnd(hi);\r\n }\r\n };\r\n\r\n const getDayClasses = (day: number) => {\r\n const date = new Date(calYear, calMonth, day);\r\n const isStart = intervalStart && isSameDay(date, intervalStart);\r\n const isEnd = intervalEnd && isSameDay(date, intervalEnd);\r\n const isHoverEnd = !intervalEnd && hoverDate && isSameDay(date, hoverDate) && intervalStart;\r\n const inRange = isInRange(date, intervalStart, intervalEnd);\r\n const inHoverRange = !intervalEnd && isInRange(date, intervalStart, hoverDate);\r\n\r\n return [\r\n \"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-transition-colors rh-duration-150 \",\r\n \"rh-rounded-lg\",\r\n isStart || isEnd ? \"rh-bg-primary rh-text-surface\" : \"\",\r\n isHoverEnd && !isStart ? \"rh-bg-primary/70 rh-text-surface\" : \"\",\r\n inRange || inHoverRange ? \"rh-bg-primary/10 rh-text-text\" : \"\",\r\n !isStart && !isEnd && !inRange && !inHoverRange && !isHoverEnd\r\n ? \"rh-text-text hover:rh-ring-1 hover:rh-ring-[#15607A]\"\r\n : \"\",\r\n ].join(\" \");\r\n };\r\n\r\n return (\r\n <div className=\"rh-grid rh-grid-cols-7 rh-gap-0 rh-text-center\">\r\n {prevDays.map((d, i) => (\r\n <div\r\n key={`prev-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n {days.map((day) => (\r\n <button\r\n key={day}\r\n onClick={() => handleDayClick(day)}\r\n onMouseEnter={() => {\r\n if (intervalStart && !intervalEnd) {\r\n setHoverDate(new Date(calYear, calMonth, day));\r\n }\r\n }}\r\n onMouseLeave={() => setHoverDate(undefined)}\r\n className={getDayClasses(day)}\r\n >\r\n {day}\r\n </button>\r\n ))}\r\n {nextDays.map((d, i) => (\r\n <div\r\n key={`next-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderContent = () => {\r\n switch (activeMode) {\r\n case \"interval\":\r\n return renderIntervalNav();\r\n case \"day\":\r\n return (\r\n <div className=\"rh-p-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 0) {\r\n setSelectedMonth(11);\r\n setSelectedYear((y) => y - 1);\r\n } else setSelectedMonth((m) => m - 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {MONTHS[selectedMonth]} - {selectedYear}\r\n </span>\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 11) {\r\n setSelectedMonth(0);\r\n setSelectedYear((y) => y + 1);\r\n } else setSelectedMonth((m) => m + 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n <div className=\"rh-grid rh-grid-cols-7 rh-mb-1\">\r\n {[\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"].map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n {renderDayGrid(selectedYear, selectedMonth)}\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleDayClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n case \"month\":\r\n return renderMonthGrid();\r\n case \"year\":\r\n return renderYearGrid();\r\n }\r\n };\r\n\r\n const renderDayGrid = (calYear: number, calMonth: number) => {\r\n const daysInMonth = getDaysInMonth(calYear, calMonth);\r\n const firstDay = getFirstDayOfMonth(calYear, calMonth);\r\n const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);\r\n\r\n const prevMonth = calMonth === 0 ? 11 : calMonth - 1;\r\n const prevYear = calMonth === 0 ? calYear - 1 : calYear;\r\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\r\n const prevDays = Array.from(\r\n { length: firstDay },\r\n (_, i) => daysInPrevMonth - firstDay + i + 1,\r\n );\r\n\r\n const totalCells = firstDay + daysInMonth;\r\n const nextDaysCount = totalCells % 7 === 0 ? 0 : 7 - (totalCells % 7);\r\n const nextDays = Array.from({ length: nextDaysCount }, (_, i) => i + 1);\r\n\r\n return (\r\n <div className=\"rh-grid rh-grid-cols-7 rh-gap-0\">\r\n {prevDays.map((d, i) => (\r\n <div\r\n key={`prev-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n {days.map((day) => {\r\n const isSelected =\r\n value.mode === \"day\" &&\r\n value.year === calYear &&\r\n value.month === calMonth &&\r\n value.day === day;\r\n return (\r\n <button\r\n key={day}\r\n onClick={() => handleChange({ mode: \"day\", year: calYear, month: calMonth, day })}\r\n className={[\r\n \"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-rounded-lg rh-transition-colors rh-duration-150\",\r\n isSelected\r\n ? \"rh-bg-primary rh-text-surface\"\r\n : \"rh-text-text hover:rh-ring-1 hover:rh-ring-[#15607A]\",\r\n ].join(\" \")}\r\n >\r\n {day}\r\n </button>\r\n );\r\n })}\r\n {nextDays.map((d, i) => (\r\n <div\r\n key={`next-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={[\"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label id={`${triggerId}-label`} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{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=\"dialog\"\r\n aria-labelledby={label ? `${triggerId}-label` : undefined}\r\n aria-describedby={helperText ? helperId : undefined}\r\n aria-invalid={visualStatus === \"error\" || undefined}\r\n aria-disabled={disabled || undefined}\r\n disabled={disabled}\r\n onClick={() => !disabled && setIsOpen((o) => !o)}\r\n style={backgroundColor ? { backgroundColor } : undefined}\r\n className={[\r\n \"rh-group rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-font-body\",\r\n !backgroundColor && \"rh-bg-surface\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"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 group-hover:rh-text-text\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n <ChevronIcon\r\n className={[\r\n \"rh-w-4 rh-h-4 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150 rh-bg-surface rh-rounded-xl\",\r\n isOpen ? \"rh-rotate-180\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n />\r\n </button>\r\n\r\n {isOpen && (\r\n <div\r\n ref={dropdownRef}\r\n className={[\r\n \"rh-absolute rh-z-50 rh-mt-1 rh-p-5\",\r\n \"rh-bg-surface rh-rounded-md\",\r\n dropdownRadiusClasses[radius],\r\n activeMode === \"interval\" ? \"rh-w-[720px]\" : \"rh-w-[385px]\",\r\n dropdownAlign === \"left\" ? \"rh-right-0\" : \"rh-left-0\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{\r\n top: \"100%\",\r\n boxShadow: \"0 0 9.6px 0 rgba(8, 11, 18, 0.08)\",\r\n }}\r\n >\r\n {renderModeTabs()}\r\n <div className={availableModes.length > 1 ? \"rh-mt-2\" : \"\"}>{renderContent()}</div>\r\n </div>\r\n )}\r\n\r\n {helperText && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\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, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { WarningCircleIcon } from \"../../icons\";\r\nimport type { SelectRadius, SelectSize, SelectStatus } from \"../Select/Select\";\r\n\r\n// ── Types ─────────────────────────────────────────────────────────────────────\r\n\r\nexport type TimePickerValue = {\r\n hour: number;\r\n minute: number;\r\n};\r\n\r\nexport type TimePickerPresentation = \"dropdown\" | \"clock\";\r\n\r\nexport type TimePickerProps = {\r\n /** Label displayed above the field */\r\n label?: string;\r\n /** Secondary text next to the label; use \"*\" to render a red asterisk */\r\n subtitle?: string;\r\n /** Text displayed when no time is selected */\r\n placeholder?: string;\r\n /** Visual state: \"default\" | \"error\" */\r\n status?: SelectStatus;\r\n /** Field size: \"sm\" | \"md\" | \"lg\" */\r\n size?: SelectSize;\r\n /** Border radius */\r\n radius?: SelectRadius;\r\n /** Helper or error message below the field */\r\n helperText?: React.ReactNode;\r\n /** Disables the field */\r\n disabled?: boolean;\r\n /** CSS class applied to the trigger element */\r\n className?: string;\r\n /** CSS class applied to the outer wrapper */\r\n wrapperClassName?: string;\r\n /** Controlled value */\r\n value?: TimePickerValue;\r\n /** Uncontrolled initial value */\r\n defaultValue?: TimePickerValue;\r\n /** Called when the selected time changes */\r\n onChange?: (value: TimePickerValue) => void;\r\n /** Custom background color for the trigger button */\r\n backgroundColor?: string;\r\n /** Picker presentation: compact dropdown or clock dialog */\r\n presentation?: TimePickerPresentation;\r\n};\r\n\r\n// ── Constants ─────────────────────────────────────────────────────────────────\r\n\r\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\r\nconst MINUTES = Array.from({ length: 60 }, (_, i) => i);\r\nconst ITEM_HEIGHT = 36;\r\nconst CLOCK_HOURS_OUTER = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\nconst CLOCK_HOURS_INNER = [0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];\r\nconst CLOCK_MINUTES = Array.from({ length: 12 }, (_, index) => index * 5);\r\n\r\nconst pad = (n: number) => String(n).padStart(2, \"0\");\r\nconst clampClockPart = (value: number, max: number) => Math.min(max, Math.max(0, value));\r\n\r\n// ── Style maps ────────────────────────────────────────────────────────────────\r\n\r\nconst statusClasses: Record<SelectStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200\",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100\",\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 helperStatusClasses: Record<SelectStatus, string> = {\r\n default: \"rh-text-text-muted\",\r\n error: \"rh-text-danger\",\r\n};\r\n\r\nconst getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\r\n\r\n// ── Icons ─────────────────────────────────────────────────────────────────────\r\n\r\nconst ClockIcon = () => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\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 >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <polyline points=\"12 6 12 12 16 14\" />\r\n </svg>\r\n);\r\n\r\nconst EraserIcon = () => (\r\n <svg width=\"15\" height=\"14\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.3134 13.7509H9.45406L16.2384 6.96656C16.4416 6.76343 16.6027 6.52227 16.7127 6.25686C16.8226 5.99145 16.8792 5.70697 16.8792 5.41969C16.8792 5.1324 16.8226 4.84793 16.7127 4.58252C16.6027 4.3171 16.4416 4.07594 16.2384 3.87281L13.0033 0.640783C12.8002 0.437631 12.559 0.276481 12.2936 0.166535C12.0282 0.0565888 11.7437 0 11.4564 0C11.1691 0 10.8846 0.0565888 10.6192 0.166535C10.3538 0.276481 10.1127 0.437631 9.90953 0.640783L0.640783 9.90875C0.437631 10.1119 0.276481 10.353 0.166535 10.6185C0.0565888 10.8839 0 11.1683 0 11.4556C0 11.7429 0.0565888 12.0274 0.166535 12.2928C0.276481 12.5582 0.437631 12.7994 0.640783 13.0025L2.98922 15.3517C3.07635 15.4388 3.17977 15.5078 3.29358 15.5548C3.40739 15.6019 3.52935 15.626 3.6525 15.6259H15.3134C15.5621 15.6259 15.8005 15.5272 15.9763 15.3514C16.1522 15.1755 16.2509 14.9371 16.2509 14.6884C16.2509 14.4398 16.1522 14.2013 15.9763 14.0255C15.8005 13.8497 15.5621 13.7509 15.3134 13.7509Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst PencilIcon = () => (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\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 >\r\n <path d=\"M4 20h4L19 9a2.828 2.828 0 1 0-4-4L4 16v4Z\" />\r\n <path d=\"m13.5 6.5 4 4\" />\r\n </svg>\r\n);\r\n\r\n// ── Column scroll helper ───────────────────────────────────────────────────────\r\n\r\nfunction scrollToSelected(ref: React.RefObject<HTMLDivElement | null>, index: number) {\r\n const el = ref.current;\r\n if (!el) return;\r\n const target = index * ITEM_HEIGHT - el.clientHeight / 2 + ITEM_HEIGHT / 2;\r\n el.scrollTop = Math.max(0, target);\r\n}\r\n\r\nfunction getClockPosition(index: number, radius: number) {\r\n const angle = (index / 12) * Math.PI * 2 - Math.PI / 2;\r\n return {\r\n left: `calc(50% + ${Math.cos(angle) * radius}px)`,\r\n top: `calc(50% + ${Math.sin(angle) * radius}px)`,\r\n };\r\n}\r\n\r\nfunction getRehagroPortalStyle(source: HTMLElement | null): React.CSSProperties | undefined {\r\n const root = source?.closest<HTMLElement>(\".rh-root\");\r\n if (!root) return undefined;\r\n\r\n const variables: Record<string, string> = {};\r\n\r\n for (let index = 0; index < root.style.length; index += 1) {\r\n const property = root.style.item(index);\r\n if (!property.startsWith(\"--rh-\")) continue;\r\n\r\n variables[property] = root.style.getPropertyValue(property);\r\n }\r\n\r\n return variables as React.CSSProperties;\r\n}\r\n\r\n// ── Component ─────────────────────────────────────────────────────────────────\r\n\r\nexport const TimePicker = forwardRef<HTMLButtonElement, TimePickerProps>(\r\n function TimePicker(props, ref) {\r\n const {\r\n label,\r\n subtitle,\r\n placeholder = \"Selecione\",\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 backgroundColor,\r\n presentation = \"dropdown\",\r\n } = props;\r\n\r\n const triggerId = React.useId();\r\n const helperId = React.useId();\r\n\r\n const isControlled = props.value !== undefined;\r\n const [internalValue, setInternalValue] = useState<TimePickerValue | null>(\r\n props.defaultValue ?? null,\r\n );\r\n const committedValue: TimePickerValue | null = isControlled\r\n ? (props.value ?? null)\r\n : internalValue;\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isHelperDismissed, setIsHelperDismissed] = useState(false);\r\n const [dropdownAlign, setDropdownAlign] = useState<\"left\" | \"right\">(\"left\");\r\n const [clockStep, setClockStep] = useState<\"hour\" | \"minute\">(\"hour\");\r\n const [isManualClockInput, setIsManualClockInput] = useState(false);\r\n const [hasPendingValue, setHasPendingValue] = useState(committedValue != null);\r\n\r\n const [pendingHour, setPendingHour] = useState<number>(committedValue?.hour ?? 0);\r\n const [pendingMinute, setPendingMinute] = useState<number>(committedValue?.minute ?? 0);\r\n\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n const innerRef = useRef<HTMLButtonElement>(null);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const hourColRef = useRef<HTMLDivElement>(null);\r\n const minuteColRef = useRef<HTMLDivElement>(null);\r\n\r\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\r\n\r\n const visualStatus: SelectStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n // Sync pending state when dropdown opens\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n const h = committedValue?.hour ?? 0;\r\n const m = committedValue?.minute ?? 0;\r\n setPendingHour(h);\r\n setPendingMinute(m);\r\n setClockStep(\"hour\");\r\n setIsManualClockInput(false);\r\n setHasPendingValue(committedValue != null);\r\n // Scroll after paint\r\n if (presentation === \"dropdown\") {\r\n requestAnimationFrame(() => {\r\n scrollToSelected(hourColRef, h);\r\n scrollToSelected(minuteColRef, m);\r\n });\r\n }\r\n }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Reposition dropdown (left/right alignment)\r\n useEffect(() => {\r\n if (!isOpen || presentation !== \"dropdown\" || !innerRef.current) return;\r\n const rect = innerRef.current.getBoundingClientRect();\r\n const dropdownW = 240;\r\n setDropdownAlign(window.innerWidth - rect.right >= dropdownW ? \"left\" : \"right\");\r\n }, [isOpen, presentation]);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!isOpen || presentation !== \"dropdown\") return;\r\n const handler = (e: MouseEvent) => {\r\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handler);\r\n return () => document.removeEventListener(\"mousedown\", handler);\r\n }, [isOpen, presentation]);\r\n\r\n // Close on Escape\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n innerRef.current?.focus();\r\n }\r\n };\r\n document.addEventListener(\"keydown\", handler);\r\n return () => document.removeEventListener(\"keydown\", handler);\r\n }, [isOpen]);\r\n\r\n const commit = useCallback(\r\n (hour: number, minute: number) => {\r\n const newValue: TimePickerValue = { hour, minute };\r\n if (helperText) setIsHelperDismissed(true);\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n setIsOpen(false);\r\n },\r\n [helperText, isControlled, props],\r\n );\r\n\r\n const handleClear = useCallback(() => {\r\n setPendingHour(0);\r\n setPendingMinute(0);\r\n if (!isControlled) setInternalValue(null);\r\n props.onChange?.(undefined as unknown as TimePickerValue);\r\n setIsOpen(false);\r\n }, [isControlled, props]);\r\n\r\n const displayText =\r\n committedValue != null ? `${pad(committedValue.hour)}:${pad(committedValue.minute)}` : null;\r\n const clockDisplayText = hasPendingValue\r\n ? `${pad(pendingHour)}:${pad(pendingMinute)}`\r\n : \"--:--\";\r\n\r\n const closeClockDialog = () => {\r\n setIsOpen(false);\r\n innerRef.current?.focus();\r\n };\r\n\r\n const handleClockHourChange = (hour: number) => {\r\n setPendingHour(hour);\r\n setHasPendingValue(true);\r\n setClockStep(\"minute\");\r\n };\r\n\r\n const handleClockMinuteChange = (minute: number) => {\r\n setPendingMinute(minute);\r\n setHasPendingValue(true);\r\n };\r\n\r\n const handleManualClockChange = (part: \"hour\" | \"minute\", value: string) => {\r\n const numericValue = Number(value.replace(/\\D/g, \"\"));\r\n if (Number.isNaN(numericValue)) return;\r\n\r\n if (part === \"hour\") {\r\n setPendingHour(clampClockPart(numericValue, 23));\r\n } else {\r\n setPendingMinute(clampClockPart(numericValue, 59));\r\n }\r\n\r\n setHasPendingValue(true);\r\n };\r\n\r\n const clockHourButton = (hour: number, index: number, radius: number) => {\r\n const selected = hasPendingValue && pendingHour === hour;\r\n const position = getClockPosition(index, radius);\r\n\r\n return (\r\n <button\r\n key={hour}\r\n type=\"button\"\r\n aria-label={`${pad(hour)} horas`}\r\n onClick={() => handleClockHourChange(hour)}\r\n className={[\r\n \"rh-absolute rh-flex rh-h-8 rh-w-8 -rh-translate-x-1/2 -rh-translate-y-1/2 rh-items-center rh-justify-center rh-rounded-full rh-text-sm rh-transition-colors rh-duration-150\",\r\n selected\r\n ? \"rh-bg-primary rh-font-semibold rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-border/40\",\r\n ].join(\" \")}\r\n style={position}\r\n >\r\n {pad(hour)}\r\n </button>\r\n );\r\n };\r\n\r\n const clockMinuteButton = (minute: number, index: number) => {\r\n const selected = hasPendingValue && pendingMinute === minute;\r\n const position = getClockPosition(index, 102);\r\n\r\n return (\r\n <button\r\n key={minute}\r\n type=\"button\"\r\n aria-label={`${pad(minute)} minutos`}\r\n onClick={() => handleClockMinuteChange(minute)}\r\n className={[\r\n \"rh-absolute rh-flex rh-h-8 rh-w-8 -rh-translate-x-1/2 -rh-translate-y-1/2 rh-items-center rh-justify-center rh-rounded-full rh-text-sm rh-transition-colors rh-duration-150\",\r\n selected\r\n ? \"rh-bg-primary rh-font-semibold rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-border/40\",\r\n ].join(\" \")}\r\n style={position}\r\n >\r\n {pad(minute)}\r\n </button>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={[\"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label */}\r\n {label && (\r\n <label id={`${triggerId}-label`} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{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=\"dialog\"\r\n aria-labelledby={label ? `${triggerId}-label` : undefined}\r\n aria-describedby={helperText ? helperId : undefined}\r\n aria-invalid={visualStatus === \"error\" || undefined}\r\n aria-disabled={disabled || undefined}\r\n disabled={disabled}\r\n onClick={() => !disabled && setIsOpen((o) => !o)}\r\n style={backgroundColor ? { backgroundColor } : undefined}\r\n className={[\r\n \"rh-group rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-font-body\",\r\n !backgroundColor && \"rh-bg-surface\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"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 group-hover:rh-text-text\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n <ClockIcon />\r\n </button>\r\n\r\n {/* Dropdown */}\r\n {isOpen && presentation === \"dropdown\" && (\r\n <div\r\n ref={dropdownRef}\r\n role=\"dialog\"\r\n aria-label=\"Seletor de hora\"\r\n className={[\r\n \"rh-absolute rh-z-50 rh-mt-1\",\r\n \"rh-bg-surface rh-rounded-xs rh-border rh-border-border\",\r\n \"rh-w-[240px]\",\r\n dropdownAlign === \"left\" ? \"rh-left-0\" : \"rh-right-0\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{\r\n top: \"100%\",\r\n boxShadow: \"0 0 9.6px 0 rgba(8, 11, 18, 0.08)\",\r\n }}\r\n >\r\n {/* Column header */}\r\n <div className=\"rh-flex rh-border-b rh-border-border\">\r\n <div className=\"rh-flex-1 rh-py-2 rh-text-center rh-text-xs rh-font-semibold rh-text-text-muted rh-uppercase rh-tracking-wide\">\r\n Hora\r\n </div>\r\n <div className=\"rh-w-px rh-bg-border\" />\r\n <div className=\"rh-flex-1 rh-py-2 rh-text-center rh-text-xs rh-font-semibold rh-text-text-muted rh-uppercase rh-tracking-wide\">\r\n Minuto\r\n </div>\r\n </div>\r\n\r\n {/* Columns */}\r\n <div className=\"rh-flex\" style={{ height: 216 }}>\r\n {/* Hours */}\r\n <div\r\n ref={hourColRef}\r\n className=\"rh-flex-1 rh-overflow-y-auto rh-py-1 rh-scrollbar-thin\"\r\n style={{ scrollbarWidth: \"none\" }}\r\n >\r\n {HOURS.map((h) => {\r\n const selected = h === pendingHour;\r\n return (\r\n <button\r\n key={h}\r\n type=\"button\"\r\n onClick={() => setPendingHour(h)}\r\n style={{ height: ITEM_HEIGHT }}\r\n className={[\r\n \"rh-w-full rh-flex rh-items-center rh-justify-center rh-text-sm rh-transition-colors rh-duration-100\",\r\n selected\r\n ? \"rh-bg-primary rh-text-surface rh-font-semibold\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {pad(h)}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"rh-w-px rh-bg-border rh-self-stretch\" />\r\n\r\n {/* Minutes */}\r\n <div\r\n ref={minuteColRef}\r\n className=\"rh-flex-1 rh-overflow-y-auto rh-py-1\"\r\n style={{ scrollbarWidth: \"none\" }}\r\n >\r\n {MINUTES.map((m) => {\r\n const selected = m === pendingMinute;\r\n return (\r\n <button\r\n key={m}\r\n type=\"button\"\r\n onClick={() => setPendingMinute(m)}\r\n style={{ height: ITEM_HEIGHT }}\r\n className={[\r\n \"rh-w-full rh-flex rh-items-center rh-justify-center rh-text-sm rh-transition-colors rh-duration-100\",\r\n selected\r\n ? \"rh-bg-primary rh-text-surface rh-font-semibold\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {pad(m)}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n\r\n {/* Footer */}\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-px-3 rh-py-2 rh-border-t rh-border-border\">\r\n <button\r\n type=\"button\"\r\n onClick={handleClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon />\r\n Limpar\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={() => commit(pendingHour, pendingMinute)}\r\n className=\"rh-text-sm rh-font-medium rh-px-4 rh-py-1.5 rh-rounded-lg rh-bg-primary rh-text-surface hover:rh-opacity-90 rh-transition-opacity rh-duration-150\"\r\n >\r\n Aplicar\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {isOpen &&\r\n presentation === \"clock\" &&\r\n typeof document !== \"undefined\" &&\r\n createPortal(\r\n <div className=\"rh-root\" style={getRehagroPortalStyle(wrapperRef.current)}>\r\n <div\r\n role=\"presentation\"\r\n className=\"rh-fixed rh-inset-0 rh-z-50 rh-flex rh-items-center rh-justify-center rh-bg-text/50 rh-p-4\"\r\n onMouseDown={(event) => {\r\n if (event.target === event.currentTarget) closeClockDialog();\r\n }}\r\n >\r\n <div\r\n ref={dropdownRef}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Seletor de hora\"\r\n className=\"rh-flex rh-w-full rh-max-w-[360px] rh-flex-col rh-rounded-sm rh-bg-surface rh-p-6 rh-text-text\"\r\n style={{ boxShadow: \"0 24px 48px rgb(8 11 18 / 0.24)\" }}\r\n >\r\n <span className=\"rh-text-sm rh-font-normal rh-uppercase rh-text-text-muted\">\r\n Selecione a hora\r\n </span>\r\n\r\n <div className=\"rh-mt-6 rh-flex rh-items-center rh-justify-between\">\r\n {isManualClockInput ? (\r\n <div className=\"rh-flex rh-items-center rh-gap-2\">\r\n <input\r\n aria-label=\"Hora\"\r\n inputMode=\"numeric\"\r\n maxLength={2}\r\n value={pad(pendingHour)}\r\n onChange={(event) => handleManualClockChange(\"hour\", event.target.value)}\r\n className=\"rh-h-12 rh-w-14 rh-rounded-xs rh-border rh-border-border rh-bg-surface rh-text-center rh-text-2xl rh-font-semibold rh-text-text rh-outline-none focus:rh-border-primary focus:rh-ring-2 focus:rh-ring-gray-200\"\r\n />\r\n <span className=\"rh-text-2xl rh-font-semibold rh-text-text-muted\">:</span>\r\n <input\r\n aria-label=\"Minuto\"\r\n inputMode=\"numeric\"\r\n maxLength={2}\r\n value={pad(pendingMinute)}\r\n onChange={(event) =>\r\n handleManualClockChange(\"minute\", event.target.value)\r\n }\r\n className=\"rh-h-12 rh-w-14 rh-rounded-xs rh-border rh-border-border rh-bg-surface rh-text-center rh-text-2xl rh-font-semibold rh-text-text rh-outline-none focus:rh-border-primary focus:rh-ring-2 focus:rh-ring-gray-200\"\r\n />\r\n </div>\r\n ) : (\r\n <div className=\"rh-flex rh-items-center rh-gap-1 rh-text-2xl rh-font-semibold\">\r\n <button\r\n type=\"button\"\r\n onClick={() => setClockStep(\"hour\")}\r\n className={[\r\n \"rh-rounded-xs rh-px-1 rh-transition-colors rh-duration-150\",\r\n clockStep === \"hour\"\r\n ? \"rh-text-text\"\r\n : \"rh-text-text-muted hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {clockDisplayText.slice(0, 2)}\r\n </button>\r\n <span className=\"rh-text-text-muted\">:</span>\r\n <button\r\n type=\"button\"\r\n onClick={() => setClockStep(\"minute\")}\r\n className={[\r\n \"rh-rounded-xs rh-px-1 rh-transition-colors rh-duration-150\",\r\n clockStep === \"minute\"\r\n ? \"rh-text-text\"\r\n : \"rh-text-text-muted hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {clockDisplayText.slice(3, 5)}\r\n </button>\r\n </div>\r\n )}\r\n\r\n <button\r\n type=\"button\"\r\n aria-label={\r\n isManualClockInput ? \"Voltar ao relógio\" : \"Digitar horário manualmente\"\r\n }\r\n onClick={() => setIsManualClockInput((current) => !current)}\r\n className=\"rh-rounded-full rh-p-2 rh-text-text hover:rh-bg-background\"\r\n >\r\n <PencilIcon />\r\n </button>\r\n </div>\r\n\r\n {!isManualClockInput && (\r\n <div className=\"rh-mx-auto rh-mt-8 rh-flex rh-h-[256px] rh-w-[256px] rh-items-center rh-justify-center rh-rounded-full rh-bg-background\">\r\n <div className=\"rh-relative rh-h-full rh-w-full\">\r\n {clockStep === \"hour\" ? (\r\n <>\r\n {CLOCK_HOURS_OUTER.map((hour, index) =>\r\n clockHourButton(hour, index, 102),\r\n )}\r\n {CLOCK_HOURS_INNER.map((hour, index) =>\r\n clockHourButton(hour, index, 68),\r\n )}\r\n </>\r\n ) : (\r\n CLOCK_MINUTES.map((minute, index) => clockMinuteButton(minute, index))\r\n )}\r\n <span className=\"rh-absolute rh-left-1/2 rh-top-1/2 rh-h-2 rh-w-2 -rh-translate-x-1/2 -rh-translate-y-1/2 rh-rounded-full rh-bg-primary\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div className=\"rh-mt-8 rh-flex rh-justify-end rh-gap-6\">\r\n <button\r\n type=\"button\"\r\n onClick={closeClockDialog}\r\n className=\"rh-text-base rh-font-medium rh-uppercase rh-text-primary hover:rh-opacity-80\"\r\n >\r\n Cancelar\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n if (hasPendingValue) commit(pendingHour, pendingMinute);\r\n else closeClockDialog();\r\n }}\r\n className=\"rh-text-base rh-font-medium rh-uppercase rh-text-primary hover:rh-opacity-80\"\r\n >\r\n OK\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>,\r\n document.body,\r\n )}\r\n\r\n {/* Helper text */}\r\n {helperText && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\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-display 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 \"neutral\",\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 neutral: \"rh-bg-neutral rh-text-surface rh-border-neutral\",\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 neutral: \"rh-bg-neutral/10 rh-text-neutral rh-border-neutral/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 neutral: \"hover:rh-bg-neutral-hover hover:rh-border-neutral-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 neutral: \"hover:rh-bg-neutral/20 hover:rh-border-neutral/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-display 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","import React, { forwardRef, useState, useRef, useEffect } from \"react\";\r\n\r\nexport type TagInputSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TagInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type TagInputStatus = \"default\" | \"error\";\r\n\r\nexport type TagInputOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nexport type TagInputProps = {\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 /** Available options to select from */\r\n options: TagInputOption[];\r\n /** Current selected values */\r\n value: TagInputOption[];\r\n /** Callback when tags change */\r\n onChange: (tags: TagInputOption[]) => void;\r\n /** Placeholder text when no tags */\r\n placeholder?: string;\r\n /** Validation status */\r\n status?: TagInputStatus;\r\n /** Input size */\r\n size?: TagInputSize;\r\n /** Border radius */\r\n radius?: TagInputRadius;\r\n /** Helper/error message displayed below the input */\r\n helperText?: React.ReactNode;\r\n /** Whether the input is disabled */\r\n disabled?: boolean;\r\n /** Custom class for the outermost wrapper */\r\n wrapperClassName?: string;\r\n /** Custom class for the input container */\r\n className?: string;\r\n};\r\n\r\nconst statusClasses: Record<TagInputStatus, 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<TagInputSize, string> = {\r\n sm: \"rh-min-h-[36px] rh-text-sm rh-px-2 rh-py-1\",\r\n md: \"rh-h-[44px] rh-text-sm rh-px-2 rh-py-[6px]\",\r\n lg: \"rh-min-h-[52px] rh-text-base rh-px-3 rh-py-2\",\r\n};\r\n\r\nconst radiusClasses: Record<TagInputRadius, 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-[8px]\",\r\n lg: \"rh-rounded-lg\",\r\n xl: \"rh-rounded-xl\",\r\n full: \"rh-rounded-full\",\r\n};\r\n\r\nconst helperStatusClasses: Record<TagInputStatus, string> = {\r\n default: \"rh-text-text-muted\",\r\n error: \"rh-text-danger\",\r\n};\r\n\r\nconst tagSizeClasses: Record<TagInputSize, string> = {\r\n sm: \"rh-h-6 rh-text-xs rh-py-0.5 rh-px-1.5\",\r\n md: \"rh-h-[28px] rh-text-sm rh-py-[2px] rh-px-[6px]\",\r\n lg: \"rh-h-8 rh-text-sm rh-py-0.5 rh-px-2\",\r\n};\r\n\r\nconst deleteButtonSizeClasses: Record<TagInputSize, string> = {\r\n sm: \"rh-w-3 rh-h-3\",\r\n md: \"rh-w-[12px] rh-h-[12px]\",\r\n lg: \"rh-w-4 rh-h-4\",\r\n};\r\n\r\nconst addButtonSizeClasses: Record<TagInputSize, 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\n// Mirrors `TextInput#getSubtitleClassName`: a subtitle of just `*`\r\n// is treated as a \"required\" marker and rendered in danger color.\r\n// Any other subtitle stays muted (descriptive helper text style).\r\nconst getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\r\n\r\nexport const TagInput = forwardRef<HTMLDivElement, TagInputProps>(function TagInput(\r\n {\r\n label,\r\n subtitle,\r\n options = [],\r\n value = [],\r\n onChange,\r\n placeholder,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"md\",\r\n helperText,\r\n disabled,\r\n className = \"\",\r\n wrapperClassName = \"\",\r\n },\r\n ref,\r\n) {\r\n const inputId = React.useId();\r\n const [isOpen, setIsOpen] = useState(false);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n // Fechar dropdown ao clicar fora\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n const handleRemoveTag = (tagValue: string) => {\r\n if (disabled) return;\r\n onChange(value.filter((tag) => tag.value !== tagValue));\r\n };\r\n\r\n const handleToggleOption = (option: TagInputOption) => {\r\n if (disabled) return;\r\n const isSelected = value.some((v) => v.value === option.value);\r\n if (isSelected) {\r\n onChange(value.filter((v) => v.value !== option.value));\r\n } else {\r\n onChange([...value, option]);\r\n }\r\n };\r\n\r\n const handleAddClick = () => {\r\n if (disabled) return;\r\n setIsOpen(!isOpen);\r\n };\r\n\r\n return (\r\n <div\r\n ref={(node) => {\r\n // Merge refs\r\n if (typeof ref === \"function\") ref(node);\r\n else if (ref) ref.current = node;\r\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\r\n }}\r\n className={[\"rh-flex rh-flex-col rh-gap-2 rh-font-body rh-relative\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label htmlFor={inputId} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-semibold rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{subtitle}</span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {/* Input container */}\r\n <div\r\n onClick={disabled ? undefined : handleAddClick}\r\n className={[\r\n \"rh-flex rh-flex-row rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-bg-surface rh-font-body\",\r\n \"rh-transition-colors rh-duration-150\",\r\n statusClasses[status],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"rh-cursor-pointer\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Tags area */}\r\n <div className=\"rh-flex rh-flex-row rh-flex-wrap rh-items-center rh-gap-2 rh-flex-1\">\r\n {value.length === 0 && placeholder && (\r\n <span className=\"rh-text-text-muted\">{placeholder}</span>\r\n )}\r\n {value.map((tag) => (\r\n <div\r\n key={tag.value}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-1\",\r\n \"rh-bg-gray-200 rh-border rh-border-gray-200 rh-rounded-[4px]\",\r\n tagSizeClasses[size],\r\n ].join(\" \")}\r\n >\r\n <span className=\"rh-font-semibold rh-text-gray-700\">{tag.label}</span>\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleRemoveTag(tag.value);\r\n }}\r\n disabled={disabled}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-center\",\r\n \"rh-bg-white rh-rounded-full\",\r\n \"rh-cursor-pointer hover:rh-bg-gray-100\",\r\n \"disabled:rh-cursor-not-allowed disabled:rh-opacity-50\",\r\n deleteButtonSizeClasses[size],\r\n ].join(\" \")}\r\n aria-label={`Remover ${tag.label}`}\r\n >\r\n <svg\r\n viewBox=\"0 0 8 8\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"rh-w-[8px] rh-h-[8px]\"\r\n >\r\n <path\r\n d=\"M6 2L2 6M2 2L6 6\"\r\n stroke=\"#374151\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Add button */}\r\n <button\r\n type=\"button\"\r\n onClick={handleAddClick}\r\n disabled={disabled}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-center rh-shrink-0\",\r\n \"rh-text-text-muted hover:rh-text-text\",\r\n \"rh-cursor-pointer\",\r\n \"disabled:rh-cursor-not-allowed disabled:rh-opacity-50\",\r\n addButtonSizeClasses[size],\r\n ].join(\" \")}\r\n aria-label=\"Adicionar\"\r\n aria-expanded={isOpen}\r\n >\r\n <svg\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"rh-w-full rh-h-full\"\r\n >\r\n <path\r\n d=\"M10 4V16M4 10H16\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n {/* Dropdown */}\r\n {isOpen && options.length > 0 && (\r\n <div\r\n className={[\r\n \"rh-absolute rh-top-full rh-left-0 rh-right-0 rh-z-50\",\r\n \"rh-mt-1 rh-bg-surface rh-border rh-border-border\",\r\n \"rh-rounded-[8px] rh-shadow-lg rh-overflow-hidden\",\r\n ].join(\" \")}\r\n >\r\n <ul className=\"rh-max-h-[200px] rh-overflow-y-auto\">\r\n {options.map((option) => {\r\n const isSelected = value.some((v) => v.value === option.value);\r\n return (\r\n <li key={option.value}>\r\n <button\r\n type=\"button\"\r\n onClick={() => handleToggleOption(option)}\r\n className={[\r\n \"rh-w-full rh-flex rh-items-center rh-justify-between\",\r\n \"rh-px-3 rh-py-3 rh-text-left\",\r\n \"rh-border-b rh-border-border/50 last:rh-border-b-0\",\r\n \"hover:rh-bg-gray-50 rh-transition-colors\",\r\n isSelected ? \"rh-text-text\" : \"rh-text-text-muted\",\r\n ].join(\" \")}\r\n >\r\n <span className=\"rh-text-sm rh-font-normal\">{option.label}</span>\r\n {/* Checkbox */}\r\n <span\r\n className={[\r\n \"rh-w-5 rh-h-5 rh-rounded rh-border-2 rh-flex rh-items-center rh-justify-center\",\r\n isSelected\r\n ? \"rh-bg-primary rh-border-primary\"\r\n : \"rh-bg-white rh-border-gray-300\",\r\n ].join(\" \")}\r\n >\r\n {isSelected && (\r\n <svg\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"rh-w-3 rh-h-3\"\r\n >\r\n <path\r\n d=\"M2 6L5 9L10 3\"\r\n stroke=\"white\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n )}\r\n </span>\r\n </button>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n )}\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","import React, { forwardRef } from \"react\";\r\n\r\nexport type ProgressBarVariant = \"inline\" | \"stacked\";\r\nexport type ProgressBarThickness = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nconst THICKNESS_MAP: Record<ProgressBarThickness, number> = {\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nexport type ProgressBarProps = {\r\n /** Progress value from 0 to 100 */\r\n value: number;\r\n /** Label text (only shown in stacked variant) */\r\n label?: string;\r\n /** Layout variant */\r\n variant?: ProgressBarVariant;\r\n /** Bar thickness — preset token or custom value in px */\r\n thickness?: ProgressBarThickness | number;\r\n /** Whether to show percentage text */\r\n showPercentage?: boolean;\r\n /** Custom bar color */\r\n barColor?: string;\r\n /** Custom background color */\r\n bgColor?: string;\r\n /** Custom class for the wrapper */\r\n className?: string;\r\n};\r\n\r\nfunction resolveThickness(thickness: ProgressBarThickness | number): number {\r\n if (typeof thickness === \"number\") return thickness;\r\n return THICKNESS_MAP[thickness];\r\n}\r\n\r\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(function ProgressBar(\r\n {\r\n value,\r\n label,\r\n variant = \"inline\",\r\n thickness = \"sm\",\r\n showPercentage = true,\r\n barColor,\r\n bgColor,\r\n className = \"\",\r\n },\r\n ref,\r\n) {\r\n const clampedValue = Math.min(100, Math.max(0, value));\r\n const heightPx = resolveThickness(thickness);\r\n\r\n if (variant === \"stacked\") {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\"rh-flex rh-flex-col rh-items-start rh-gap-2 rh-font-body\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Percentage row */}\r\n <div className=\"rh-flex rh-flex-row rh-justify-between rh-items-start rh-w-full\">\r\n {label && (\r\n <span className=\"rh-font-sora rh-font-bold rh-text-base rh-leading-6 rh-text-[#374151] rh-flex-1\">\r\n {label}\r\n </span>\r\n )}\r\n {showPercentage && (\r\n <span className=\"rh-font-inter rh-font-normal rh-text-sm rh-leading-5 rh-text-[#9CA3AF] rh-tracking-[0.025em] rh-text-right\">\r\n {clampedValue}%\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Progress bar */}\r\n <div\r\n className=\"rh-w-full rh-rounded-[40px] rh-overflow-hidden\"\r\n style={{ backgroundColor: bgColor || \"#E5E7EB\", height: heightPx }}\r\n >\r\n <div\r\n className=\"rh-h-full rh-rounded-[40px] rh-transition-all rh-duration-300\"\r\n style={{\r\n width: `${clampedValue}%`,\r\n backgroundColor: barColor || \"#538CC6\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Inline variant (default)\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\"rh-flex rh-flex-row rh-items-center rh-gap-2 rh-font-body\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Progress bar */}\r\n <div\r\n className=\"rh-flex-1 rh-rounded-[40px] rh-overflow-hidden\"\r\n style={{ backgroundColor: bgColor || \"#E5E7EB\", height: heightPx }}\r\n >\r\n <div\r\n className=\"rh-h-full rh-rounded-[40px] rh-transition-all rh-duration-300\"\r\n style={{\r\n width: `${clampedValue}%`,\r\n backgroundColor: barColor || \"#538CC6\",\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Percentage */}\r\n {showPercentage && (\r\n <span className=\"rh-font-inter rh-font-normal rh-text-sm rh-leading-5 rh-text-[#9CA3AF] rh-tracking-[0.025em] rh-text-right rh-min-w-[40px]\">\r\n {clampedValue}%\r\n </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 ToggleGroupSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ToggleGroupRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ToggleGroupOption<T extends string = string> = {\r\n /** Unique value for this option */\r\n value: T;\r\n /** Label text or icon to display */\r\n label?: React.ReactNode;\r\n /** Icon to display (alternative to label) */\r\n icon?: React.ReactNode;\r\n /** Accessible label for screen readers */\r\n \"aria-label\"?: string;\r\n /** Whether this option is disabled */\r\n disabled?: boolean;\r\n};\r\n\r\nexport type ToggleGroupProps<T extends string = string> = Omit<\r\n React.HTMLAttributes<HTMLDivElement>,\r\n \"onChange\"\r\n> & {\r\n /** Available options */\r\n options: ToggleGroupOption<T>[];\r\n /** Currently selected value */\r\n value: T;\r\n /** Called when selection changes */\r\n onChange: (value: T) => void;\r\n /** Size variant */\r\n size?: ToggleGroupSize;\r\n /** Border radius */\r\n radius?: ToggleGroupRadius;\r\n /** Color scheme for active state */\r\n color?: PresetColor | (string & {});\r\n /** Whether the entire group is disabled */\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 sizeClasses: Record<ToggleGroupSize, { container: string; button: string }> = {\r\n sm: { container: \"rh-h-8\", button: \"rh-px-2 rh-text-xs\" },\r\n md: { container: \"rh-h-9\", button: \"rh-px-3 rh-text-sm\" },\r\n lg: { container: \"rh-h-10\", button: \"rh-px-4 rh-text-sm\" },\r\n};\r\n\r\nconst radiusClasses: Record<ToggleGroupRadius, string> = {\r\n none: \"rh-rounded-none\",\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\nfunction getActiveStyles(color: string, isPreset: boolean): React.CSSProperties {\r\n if (isPreset) return {};\r\n return { backgroundColor: color, color: \"#fff\" };\r\n}\r\n\r\nfunction ToggleGroupInner<T extends string = string>(\r\n {\r\n options,\r\n value,\r\n onChange,\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n disabled = false,\r\n className = \"\",\r\n ...rest\r\n }: ToggleGroupProps<T>,\r\n ref: React.ForwardedRef<HTMLDivElement>,\r\n) {\r\n const preset = isPresetColor(color);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-bg-muted rh-overflow-hidden\",\r\n \"rh-p-1 rh-gap-0.5\",\r\n radiusClasses[radius],\r\n sizeClasses[size].container,\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {options.map((option) => {\r\n const isActive = value === option.value;\r\n const isDisabled = disabled || option.disabled;\r\n const activeClass = preset && isActive ? `rh-bg-${color}/20 rh-text-${color}` : \"\";\r\n\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n role=\"radio\"\r\n aria-checked={isActive}\r\n aria-label={option[\"aria-label\"]}\r\n disabled={isDisabled}\r\n onClick={() => !isDisabled && onChange(option.value)}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-center rh-h-full\",\r\n \"rh-border-0 rh-font-display rh-font-medium\",\r\n \"rh-transition-all rh-duration-150\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\r\n radiusClasses[radius],\r\n sizeClasses[size].button,\r\n isActive ? \"rh-bg-surface rh-text-text rh-shadow-sm\" : \"rh-bg-transparent rh-text-text-muted\",\r\n !isActive && !isDisabled ? \"hover:rh-bg-surface/50\" : \"\",\r\n isDisabled ? \"rh-cursor-not-allowed rh-pointer-events-none\" : \"rh-cursor-pointer\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={isActive && !preset ? getActiveStyles(color, preset) : undefined}\r\n >\r\n {option.icon}\r\n {option.label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport const ToggleGroup = forwardRef(ToggleGroupInner) as <T extends string = string>(\r\n props: ToggleGroupProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },\r\n) => React.ReactElement;\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\r\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CardProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /** Visual style variant */\r\n variant?: CardVariant;\r\n /** Border radius */\r\n radius?: CardRadius;\r\n /** Internal padding */\r\n padding?: CardPadding;\r\n /** Makes the card clickable with hover effects */\r\n clickable?: boolean;\r\n /** Disabled state (only applies when clickable) */\r\n disabled?: boolean;\r\n};\r\n\r\nconst variantClasses: Record<CardVariant, string> = {\r\n elevated: \"rh-bg-surface rh-shadow-md rh-border-0\",\r\n outlined: \"rh-bg-surface rh-border rh-border-border rh-shadow-none\",\r\n filled: \"rh-bg-background rh-border-0 rh-shadow-none\",\r\n};\r\n\r\nconst radiusClasses: Record<CardRadius, string> = {\r\n none: \"rh-rounded-none\",\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};\r\n\r\nconst paddingClasses: Record<CardPadding, string> = {\r\n none: \"rh-p-0\",\r\n sm: \"rh-p-3\",\r\n md: \"rh-p-4\",\r\n lg: \"rh-p-6\",\r\n};\r\n\r\nconst CardRoot = forwardRef<HTMLDivElement, CardProps>(function Card(\r\n {\r\n variant = \"outlined\",\r\n radius = \"sm\",\r\n padding = \"md\",\r\n clickable = false,\r\n disabled = false,\r\n className = \"\",\r\n children,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const isInteractive = clickable && !disabled;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role={clickable ? \"button\" : undefined}\r\n tabIndex={isInteractive ? 0 : undefined}\r\n aria-disabled={disabled || undefined}\r\n className={[\r\n \"rh-font-body rh-transition-all rh-duration-150\",\r\n variantClasses[variant],\r\n radiusClasses[radius],\r\n paddingClasses[padding],\r\n isInteractive\r\n ? \"rh-cursor-pointer hover:rh-shadow-lg hover:rh-scale-[1.01] active:rh-scale-[0.99]\"\r\n : \"\",\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 {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(function CardHeader(\r\n { className = \"\", children, ...rest },\r\n ref,\r\n) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\"rh-flex rh-items-center rh-justify-between rh-gap-4\", className]\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\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(function CardContent(\r\n { className = \"\", children, ...rest },\r\n ref,\r\n) {\r\n return (\r\n <div ref={ref} className={[\"rh-mt-2\", className].filter(Boolean).join(\" \")} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(function CardFooter(\r\n { className = \"\", children, ...rest },\r\n ref,\r\n) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-end rh-gap-2 rh-mt-4 rh-pt-4 rh-border-t rh-border-border\",\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\nexport const Card = Object.assign(CardRoot, {\r\n Header: CardHeader,\r\n Content: CardContent,\r\n Footer: CardFooter,\r\n});\r\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 neutral: \"rh-text-neutral\",\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\";\r\n\r\nimport React, { useState, useRef, useEffect } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\n\r\nexport type CustomSelectOption = {\r\n value: string;\r\n label: string;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n};\r\n\r\nexport type CustomSelectProps = {\r\n options?: CustomSelectOption[];\r\n value: string;\r\n onChange: (value: string) => void;\r\n className?: string;\r\n placeholder?: string;\r\n textColor?: string;\r\n placeholderColor?: string;\r\n backgroundColor?: string;\r\n /** \"select\" (default) renders a dropdown list; \"date\" renders a calendar picker; \"textInput\" renders an input */\r\n type?: \"select\" | \"date\" | \"textInput\";\r\n /** Prevents user interactions */\r\n disabled?: boolean;\r\n};\r\n\r\nconst DAYS_SHORT = [\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"];\r\nconst MONTHS_PT = [\r\n \"Janeiro\",\r\n \"Fevereiro\",\r\n \"Marco\",\r\n \"Abril\",\r\n \"Maio\",\r\n \"Junho\",\r\n \"Julho\",\r\n \"Agosto\",\r\n \"Setembro\",\r\n \"Outubro\",\r\n \"Novembro\",\r\n \"Dezembro\",\r\n];\r\n\r\nfunction parseDate(value: string): Date | null {\r\n if (!value) return null;\r\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\r\n const [y, m, d] = value.split(\"-\").map(Number);\r\n return new Date(y, m - 1, d);\r\n }\r\n if (/^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(value)) {\r\n const [d, m, y] = value.split(\"/\").map(Number);\r\n return new Date(y, m - 1, d);\r\n }\r\n return null;\r\n}\r\n\r\nfunction formatISO(date: Date): string {\r\n const y = date.getFullYear();\r\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const d = String(date.getDate()).padStart(2, \"0\");\r\n return `${y}-${m}-${d}`;\r\n}\r\n\r\nfunction formatDisplay(date: Date): string {\r\n const d = String(date.getDate()).padStart(2, \"0\");\r\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\r\n const y = date.getFullYear();\r\n return `${d}/${m}/${y}`;\r\n}\r\n\r\nfunction getDaysInMonth(year: number, month: number) {\r\n return new Date(year, month + 1, 0).getDate();\r\n}\r\n\r\nfunction getFirstDayOfMonth(year: number, month: number) {\r\n return new Date(year, month, 1).getDay();\r\n}\r\n\r\nfunction removeHexAlpha(color?: string) {\r\n if (!color) return color;\r\n\r\n if (/^#[0-9a-fA-F]{4}$/.test(color)) {\r\n const [, r, g, b] = color;\r\n return `#${r}${r}${g}${g}${b}${b}`;\r\n }\r\n\r\n if (/^#[0-9a-fA-F]{8}$/.test(color)) {\r\n return color.slice(0, 7);\r\n }\r\n\r\n return color;\r\n}\r\n\r\nconst ChevronLeftIcon = () => (\r\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"rh-w-5 rh-h-5\" aria-hidden=\"true\">\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst ChevronRightIcon = () => (\r\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"rh-w-5 rh-h-5\" aria-hidden=\"true\">\r\n <path\r\n fillRule=\"evenodd\"\r\n d=\"M7.21 14.77a.75.75 0 010-1.06L11.168 10 7.23 6.29a.75.75 0 011.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\ninterface DatePickerDropdownProps {\r\n style: React.CSSProperties;\r\n selectedDate: Date | null;\r\n onSelect: (date: Date | null) => void;\r\n onClose: () => void;\r\n containerRef: React.RefObject<HTMLDivElement | null>;\r\n backgroundColor?: string;\r\n textColor?: string;\r\n}\r\n\r\nconst DatePickerDropdown: React.FC<DatePickerDropdownProps> = ({\r\n style,\r\n selectedDate,\r\n onSelect,\r\n onClose,\r\n containerRef,\r\n backgroundColor,\r\n textColor,\r\n}) => {\r\n const today = new Date();\r\n const opaqueBackgroundColor = removeHexAlpha(backgroundColor);\r\n const calendarTextStyle = textColor ? { color: textColor } : undefined;\r\n\r\n const [viewYear, setViewYear] = useState(\r\n selectedDate ? selectedDate.getFullYear() : today.getFullYear(),\r\n );\r\n const [viewMonth, setViewMonth] = useState(selectedDate ? selectedDate.getMonth() : today.getMonth());\r\n const [tempDate, setTempDate] = useState<Date | null>(selectedDate);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n\r\n useEffect(() => {\r\n const handleClickOutside = (e: MouseEvent) => {\r\n const target = e.target as Node;\r\n if (\r\n dropdownRef.current &&\r\n !dropdownRef.current.contains(target) &&\r\n containerRef.current &&\r\n !containerRef.current.contains(target)\r\n ) {\r\n onClose();\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [onClose, containerRef]);\r\n\r\n const prevMonth = () => {\r\n if (viewMonth === 0) {\r\n setViewMonth(11);\r\n setViewYear((y) => y - 1);\r\n } else {\r\n setViewMonth((m) => m - 1);\r\n }\r\n };\r\n\r\n const nextMonth = () => {\r\n if (viewMonth === 11) {\r\n setViewMonth(0);\r\n setViewYear((y) => y + 1);\r\n } else {\r\n setViewMonth((m) => m + 1);\r\n }\r\n };\r\n\r\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\r\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\r\n const prevMonthDays = getDaysInMonth(viewMonth === 0 ? viewYear - 1 : viewYear, viewMonth === 0 ? 11 : viewMonth - 1);\r\n const trailingCount = (firstDay + daysInMonth) % 7 === 0 ? 0 : 7 - ((firstDay + daysInMonth) % 7);\r\n\r\n const isSelected = (day: number) =>\r\n !!tempDate &&\r\n tempDate.getFullYear() === viewYear &&\r\n tempDate.getMonth() === viewMonth &&\r\n tempDate.getDate() === day;\r\n\r\n return createPortal(\r\n <div\r\n ref={dropdownRef}\r\n style={{\r\n ...style,\r\n backgroundColor: opaqueBackgroundColor,\r\n color: textColor,\r\n boxShadow: \"0 0 9.6px 0 rgba(8, 11, 18, 0.08)\",\r\n width: 260,\r\n }}\r\n className=\"rh-bg-surface rh-rounded-xs rh-p-5 rh-select-none rh-font-body\"\r\n >\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n type=\"button\"\r\n style={calendarTextStyle}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n prevMonth();\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded rh-cursor-pointer rh-text-text\"\r\n >\r\n <ChevronLeftIcon />\r\n </button>\r\n\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\" style={calendarTextStyle}>\r\n {MONTHS_PT[viewMonth]} - {viewYear}\r\n </span>\r\n\r\n <button\r\n type=\"button\"\r\n style={calendarTextStyle}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n nextMonth();\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded rh-cursor-pointer rh-text-text\"\r\n >\r\n <ChevronRightIcon />\r\n </button>\r\n </div>\r\n\r\n <div className=\"rh-grid rh-grid-cols-7\">\r\n {DAYS_SHORT.map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n style={calendarTextStyle}\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"1\" viewBox=\"0 0 350 1\" fill=\"none\" className=\"rh-mb-3\">\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n\r\n <div className=\"rh-grid rh-grid-cols-7 rh-gap-0\">\r\n {Array.from({ length: firstDay }).map((_, i) => (\r\n <div key={`prev-${i}`} className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\" style={calendarTextStyle}>\r\n {prevMonthDays - firstDay + i + 1}\r\n </div>\r\n ))}\r\n\r\n {Array.from({ length: daysInMonth }).map((_, i) => {\r\n const day = i + 1;\r\n const selected = isSelected(day);\r\n return (\r\n <button\r\n key={day}\r\n type=\"button\"\r\n style={{ backgroundColor: selected ? \"#15607A\" : \"transparent\", ...calendarTextStyle }}\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n setTempDate(new Date(viewYear, viewMonth, day));\r\n }}\r\n className={[\r\n \"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-rounded-lg rh-transition-colors rh-duration-150 rh-cursor-pointer\",\r\n selected ? \"rh-text-surface\" : \"rh-text-text hover:rh-ring-1 hover:rh-ring-[#15607A] hover:rh-bg-transparent\",\r\n ].join(\" \")}\r\n >\r\n {day}\r\n </button>\r\n );\r\n })}\r\n\r\n {Array.from({ length: trailingCount }).map((_, i) => (\r\n <div key={`next-${i}`} className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\" style={calendarTextStyle}>\r\n {i + 1}\r\n </div>\r\n ))}\r\n </div>\r\n\r\n <div className=\"rh-flex rh-justify-end rh-gap-2 rh-mt-4\">\r\n <button\r\n type=\"button\"\r\n style={{ backgroundColor: \"#87A851\" }}\r\n onClick={() => {\r\n if (tempDate) onSelect(tempDate);\r\n onClose();\r\n }}\r\n className=\"rh-text-sm rh-font-medium rh-px-4 rh-py-1.5 rh-rounded-lg rh-transition-colors rh-duration-150 rh-bg-success rh-text-surface\"\r\n >\r\n Aplicar\r\n </button>\r\n </div>\r\n </div>,\r\n document.body,\r\n );\r\n};\r\n\r\nexport const CustomSelect = ({\r\n options = [],\r\n value,\r\n onChange,\r\n className = \"\",\r\n placeholder,\r\n textColor,\r\n placeholderColor,\r\n backgroundColor,\r\n type = \"select\",\r\n disabled = false,\r\n}: CustomSelectProps) => {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [dropdownStyle, setDropdownStyle] = useState<React.CSSProperties>({});\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\r\n const resizeTextArea = React.useCallback(() => {\r\n if (type !== \"textInput\" || !textAreaRef.current) return;\r\n const textarea = textAreaRef.current;\r\n textarea.style.height = \"auto\";\r\n\r\n if (textarea.value) {\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n return;\r\n }\r\n\r\n const previousValue = textarea.value;\r\n textarea.value = placeholder || \"\";\r\n textarea.style.height = `${textarea.scrollHeight}px`;\r\n textarea.value = previousValue;\r\n }, [type, placeholder]);\r\n\r\n const calcPosition = (): React.CSSProperties => {\r\n if (!containerRef.current) return {};\r\n const rect = containerRef.current.getBoundingClientRect();\r\n const spaceBelow = window.innerHeight - rect.bottom;\r\n const spaceAbove = rect.top;\r\n const DROPDOWN_HEIGHT = 320;\r\n const openUpward = spaceBelow < DROPDOWN_HEIGHT && spaceAbove > spaceBelow;\r\n\r\n return {\r\n position: \"fixed\",\r\n ...(openUpward ? { bottom: window.innerHeight - rect.top + 4 } : { top: rect.bottom + 4 }),\r\n left: rect.left,\r\n zIndex: 2,\r\n };\r\n };\r\n\r\n const openDropdown = () => {\r\n if (disabled) return;\r\n if (!isOpen) setDropdownStyle(calcPosition());\r\n setIsOpen((prev) => !prev);\r\n };\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n const close = () => setIsOpen(false);\r\n window.addEventListener(\"scroll\", close, { capture: true, passive: true });\r\n window.addEventListener(\"resize\", close, { passive: true });\r\n return () => {\r\n window.removeEventListener(\"scroll\", close, { capture: true });\r\n window.removeEventListener(\"resize\", close);\r\n };\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n resizeTextArea();\r\n }, [resizeTextArea, value]);\r\n\r\n const selectedOption = options.find((opt) => opt.value === value);\r\n\r\n useEffect(() => {\r\n if (type !== \"select\") return;\r\n const handleClickOutside = (e: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n if (isOpen) {\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }\r\n }, [isOpen, type]);\r\n\r\n const selectedDate = type === \"date\" ? parseDate(value) : null;\r\n const handleDateSelect = (date: Date | null) => {\r\n if (date) onChange(formatISO(date));\r\n setIsOpen(false);\r\n };\r\n\r\n const hasValue = value != null && value !== \"\";\r\n const displayLabel =\r\n type === \"date\"\r\n ? selectedDate\r\n ? formatDisplay(selectedDate)\r\n : hasValue\r\n ? value\r\n : placeholder || \"-\"\r\n : selectedOption?.label || (hasValue ? value : placeholder || \"\");\r\n\r\n const displayBg = type === \"date\" ? backgroundColor : selectedOption?.backgroundColor || backgroundColor;\r\n const displayTextColor =\r\n type === \"date\"\r\n ? textColor\r\n : selectedOption?.textColor || (hasValue ? textColor : placeholderColor) || (displayBg ? \"white\" : \"inherit\");\r\n\r\n if (type === \"textInput\") {\r\n const inputTextColor = textColor || \"#111827\";\r\n const inputPlaceholderColor = placeholderColor || \"#9CA3AF\";\r\n const textInputWrapperClassName = className.replace(/\\brh-h-full\\b/g, \"\").trim();\r\n\r\n return (\r\n <div ref={containerRef} className={`rh-relative rh-h-full rh-flex rh-items-center ${textInputWrapperClassName}`}>\r\n <textarea\r\n ref={textAreaRef}\r\n value={value}\r\n disabled={disabled}\r\n placeholder={placeholder}\r\n rows={1}\r\n onClick={(e) => e.stopPropagation()}\r\n onInput={(e) => {\r\n onChange(e.currentTarget.value);\r\n resizeTextArea();\r\n }}\r\n style={{\r\n color: inputTextColor,\r\n backgroundColor: backgroundColor || \"transparent\",\r\n }}\r\n className=\"rh-table-textarea rh-flex rh-items-center rh-leading-[20px] rh-py-[7px] rh-w-full rh-min-h-[40px] rh-text-sm rh-px-1 rh-border rh-bg-surface rh-rounded-xs rh-border-transparent rh-line-height-[20px] rh-outline-none rh-resize-none rh-overflow-hidden hover:rh-border-primary hover:rh-ring-2 hover:rh-ring-gray-200 disabled:rh-opacity-60 disabled:rh-cursor-not-allowed disabled:hover:rh-border-transparent disabled:hover:rh-ring-0\"\r\n />\r\n <style>{`.rh-table-textarea::placeholder { color: ${inputPlaceholderColor}; }`}</style>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div ref={containerRef} className={`rh-relative ${className}`}>\r\n <button\r\n type=\"button\"\r\n disabled={disabled}\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n openDropdown();\r\n }}\r\n style={{ backgroundColor: backgroundColor || undefined }}\r\n className=\"rh-w-full rh-min-h-[40px] rh-flex rh-items-center rh-border rh-bg-surface rh-rounded-sm rh-border-transparent rh-justify-between rh-py-2 hover:rh-border-primary hover:rh-ring-2 hover:rh-ring-gray-200 rh-cursor-pointer rh-text-left disabled:rh-cursor-not-allowed disabled:rh-opacity-60 disabled:hover:rh-border-transparent disabled:hover:rh-ring-0\"\r\n >\r\n <div className=\"rh-flex rh-items-center rh-gap-2 rh-flex-1 rh-px-0.5\">\r\n <span\r\n className=\"rh-text-[14px] rh-px-3.5 rh-py-0.5 rh-rounded-xl rh-whitespace-normal rh-break-words\"\r\n style={{ backgroundColor: displayBg || \"transparent\", fontFamily: \"Inter, sans-serif\", color: displayTextColor }}\r\n >\r\n {displayLabel}\r\n </span>\r\n </div>\r\n </button>\r\n\r\n {type === \"select\" && isOpen &&\r\n createPortal(\r\n <div\r\n style={{ ...dropdownStyle, backgroundColor: backgroundColor || undefined, boxShadow: \"0 10px 20px 0 rgba(0, 0, 0, 0.05)\" }}\r\n className=\"rh-border rh-border-border rh-rounded-xs rh-max-h-60 rh-overflow-auto\"\r\n >\r\n {options.map((option) => (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n onMouseDown={(e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n onChange(option.value);\r\n setIsOpen(false);\r\n }}\r\n className=\"rh-flex rh-items-center rh-gap-2 rh-px-3 rh-py-2 rh-text-left hover:rh-bg-background/50 rh-w-full rh-cursor-pointer\"\r\n >\r\n <div className=\"rh-w-4\">\r\n {option.value === value && (\r\n <svg width=\"13\" height=\"10\" viewBox=\"0 0 13 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M12.7826 1.2813L4.78255 9.2813C4.71287 9.35122 4.63008 9.4067 4.53891 9.44455C4.44775 9.48241 4.35001 9.50189 4.2513 9.50189C4.15259 9.50189 4.05485 9.48241 3.96369 9.44455C3.87252 9.4067 3.78973 9.35122 3.72005 9.2813L0.220051 5.7813C0.150286 5.71154 0.0949458 5.62871 0.0571893 5.53756C0.0194329 5.44641 1.03958e-09 5.34871 0 5.25005C-1.03958e-09 5.15139 0.0194329 5.05369 0.0571893 4.96254C0.0949458 4.87139 0.150286 4.78857 0.220051 4.7188C0.289816 4.64904 0.372638 4.5937 0.46379 4.55594C0.554942 4.51818 0.652639 4.49875 0.751301 4.49875C0.849963 4.49875 0.947659 4.51818 1.03881 4.55594C1.12996 4.5937 1.21279 4.64904 1.28255 4.7188L4.25193 7.68818L11.7213 0.220051C11.8622 0.0791546 12.0533 0 12.2526 0C12.4518 0 12.6429 0.0791546 12.7838 0.220051C12.9247 0.360947 13.0039 0.552044 13.0039 0.751301C13.0039 0.950559 12.9247 1.14165 12.7838 1.28255L12.7826 1.2813Z\"\r\n fill=\"#374151\"\r\n />\r\n </svg>\r\n )}\r\n </div>\r\n <span\r\n className=\"rh-p-0.5 rh-px-2 rh-rounded-xl rh-text-white rh-text-[14px] rh-whitespace-normal rh-break-words\"\r\n style={{\r\n backgroundColor: option.backgroundColor || backgroundColor || \"transparent\",\r\n fontFamily: \"Inter, sans-serif\",\r\n color: option.textColor || textColor || (option.backgroundColor || backgroundColor ? \"white\" : \"inherit\"),\r\n }}\r\n >\r\n {option.label}\r\n </span>\r\n </button>\r\n ))}\r\n </div>,\r\n document.body,\r\n )}\r\n\r\n {type === \"date\" && isOpen && (\r\n <DatePickerDropdown\r\n style={dropdownStyle}\r\n selectedDate={selectedDate}\r\n onSelect={handleDateSelect}\r\n onClose={() => setIsOpen(false)}\r\n containerRef={containerRef}\r\n backgroundColor={backgroundColor}\r\n textColor={textColor}\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { CustomSelect, CustomSelectOption } from \"./CustomSelect\";\r\n\r\nexport type TableSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TableVariant = \"default\" | \"striped\";\r\n\r\nexport type ColumnActionIcon<T> = {\r\n icon: React.ReactNode;\r\n onClick: (row: T, index: number) => void;\r\n};\r\n\r\nexport type TableColumn<T> = {\r\n /** Unique key for this column */\r\n key: string;\r\n /** Column header text */\r\n header: React.ReactNode;\r\n /** Function to render cell content */\r\n render: (row: T, index: number) => React.ReactNode;\r\n /** Column width (CSS value) */\r\n width?: string;\r\n /** Maximum column width (CSS value) */\r\n maxWidth?: string;\r\n /** Background color for this column's header cell (overrides headerStyle.backgroundColor) */\r\n headerBgColor?: string;\r\n /** Text color for this column's header cell (overrides headerTextStyle.color) */\r\n headerTextColor?: string;\r\n /** Text alignment */\r\n align?: \"left\" | \"center\" | \"right\";\r\n /** Whether this column is sortable */\r\n sortable?: boolean;\r\n /** Action icon to show in this column (clickable) */\r\n actionIcon?: ColumnActionIcon<T>;\r\n /** Whether this column is editable with a dropdown */\r\n editable?: boolean;\r\n /** Type of editable field: \"select\" (default), \"date\", or \"textInput\" */\r\n type?: \"select\" | \"date\" | \"textInput\";\r\n /** List of choices for the editable dropdown (required for type=\"select\") */\r\n choices?: CustomSelectOption[];\r\n /** Placeholder shown when there is no value */\r\n editablePlaceholder?: string;\r\n /** Function to get the current value for the editable field */\r\n editableValue?: (row: T) => string;\r\n /** Callback when the editable value changes */\r\n onEditChange?: (row: T, index: number, value: string) => void;\r\n /** Text color for editable field content (select/date/textInput). Can be fixed or derived from the row. */\r\n editableTextColor?: string | ((row: T, index: number) => string | undefined);\r\n /** Placeholder text color for editable field content. Can be fixed or derived from the row. */\r\n editablePlaceholderColor?: string | ((row: T, index: number) => string | undefined);\r\n /** Background color for editable field elements (value chip/control/calendar/input). Can be fixed or derived from the row. */\r\n editableBackgroundColor?: string | ((row: T, index: number) => string | undefined);\r\n};\r\n\r\nexport type SortDirection = \"asc\" | \"desc\" | null;\r\n\r\nexport type TableSort = {\r\n key: string;\r\n direction: SortDirection;\r\n};\r\n\r\nexport type HeaderTextStyle = {\r\n color?: string;\r\n fontFamily?: string;\r\n fontSize?: string;\r\n fontWeight?: string | number;\r\n};\r\n\r\nexport type HeaderStyle = {\r\n backgroundColor?: string;\r\n height?: string;\r\n border?: string;\r\n};\r\n\r\nexport type BodyTextStyle = {\r\n color?: string;\r\n fontFamily?: string;\r\n fontSize?: string;\r\n fontWeight?: string | number;\r\n};\r\n\r\nexport type TableProps<T> = Omit<React.HTMLAttributes<HTMLTableElement>, \"children\"> & {\r\n /** Column definitions */\r\n columns: TableColumn<T>[];\r\n /** Row data */\r\n data: T[];\r\n /** Function to get unique key for each row */\r\n rowKey: (row: T, index: number) => string | number;\r\n /** Table size variant */\r\n size?: TableSize;\r\n /** Table style variant */\r\n variant?: TableVariant;\r\n /** Current sort state */\r\n sort?: TableSort;\r\n /** Called when sort changes */\r\n onSortChange?: (sort: TableSort) => void;\r\n /** Whether to show loading state */\r\n loading?: boolean;\r\n /** Content to show when data is empty */\r\n emptyContent?: React.ReactNode;\r\n /** Loading content */\r\n loadingContent?: React.ReactNode;\r\n /** Whether the table has sticky header */\r\n stickyHeader?: boolean;\r\n /** Custom header row style */\r\n headerStyle?: HeaderStyle;\r\n /** Custom body row style */\r\n bodyBackground?: string;\r\n /** Custom body text style (color, font, weight) */\r\n bodyTextStyle?: HeaderTextStyle;\r\n /** Custom header text class (overrides default rh-text-text-muted) */\r\n headerTextClassName?: string;\r\n /** Custom header text style (color, font, weight) */\r\n headerTextStyle?: HeaderTextStyle;\r\n /** Custom row padding (CSS value for all sides or object with x/y) */\r\n rowPadding?: string | { x?: string; y?: string };\r\n /** Add row button */\r\n addRowButton?: { icon?: React.ReactNode; text?: React.ReactNode };\r\n /** Callback when add row is clicked */\r\n onAddRow?: () => void;\r\n /** If true, rows become clickable and will call `onRowClick` when clicked */\r\n rowClickable?: boolean;\r\n /** Callback invoked when a row is clicked: `(row, index, event)` */\r\n onRowClick?: (row: T, index: number, event?: React.MouseEvent<HTMLTableRowElement>) => void;\r\n /** Disables all editable controls inside table cells (\"select\", \"date\", \"textInput\") */\r\n disableEditableControls?: boolean;\r\n /** @deprecated Use `disableEditableControls` instead */\r\n disableEditableSelects?: boolean;\r\n};\r\n\r\nconst sizeClasses: Record<TableSize, { cell: string; header: string }> = {\r\n sm: { cell: \"rh-px-2 rh-py-2 rh-text-xs\", header: \"rh-px-2 rh-py-2 rh-text-xs\" },\r\n md: { cell: \"rh-px-3 rh-py-3 rh-text-sm\", header: \"rh-px-3 rh-py-3 rh-text-xs\" },\r\n lg: { cell: \"rh-px-4 rh-py-4 rh-text-sm\", header: \"rh-px-4 rh-py-3 rh-text-sm\" },\r\n};\r\n\r\nconst alignClasses: Record<\"left\" | \"center\" | \"right\", string> = {\r\n left: \"rh-text-left\",\r\n center: \"rh-text-center\",\r\n right: \"rh-text-right\",\r\n};\r\n\r\nfunction TableInner<T>(\r\n {\r\n columns,\r\n data,\r\n rowKey,\r\n rowClickable = false,\r\n onRowClick,\r\n disableEditableControls = false,\r\n disableEditableSelects = false,\r\n size = \"md\",\r\n variant = \"default\",\r\n sort,\r\n onSortChange,\r\n loading = false,\r\n emptyContent = \"Nenhum dado encontrado\",\r\n loadingContent,\r\n stickyHeader = false,\r\n headerStyle,\r\n headerTextClassName,\r\n headerTextStyle,\r\n bodyBackground,\r\n bodyTextStyle,\r\n rowPadding,\r\n addRowButton,\r\n onAddRow,\r\n className = \"\",\r\n ...rest\r\n }: TableProps<T>,\r\n ref: React.ForwardedRef<HTMLTableElement>,\r\n) {\r\n const shouldDisableEditableControls =\r\n disableEditableControls || disableEditableSelects;\r\n const handleSort = (column: TableColumn<T>) => {\r\n if (!column.sortable || !onSortChange) return;\r\n\r\n const newDirection: SortDirection =\r\n sort?.key === column.key\r\n ? sort.direction === \"asc\"\r\n ? \"desc\"\r\n : sort.direction === \"desc\"\r\n ? null\r\n : \"asc\"\r\n : \"asc\";\r\n\r\n onSortChange({ key: column.key, direction: newDirection });\r\n };\r\n\r\n const renderSortIcon = (column: TableColumn<T>) => {\r\n if (!column.sortable) return null;\r\n\r\n const isAsc = sort?.key === column.key && sort.direction === \"asc\";\r\n const isDesc = sort?.key === column.key && sort.direction === \"desc\";\r\n\r\n return (\r\n <span className=\"rh-ml-1 rh-inline-flex rh-flex-col rh-gap-0.5\">\r\n <svg\r\n width=\"8\"\r\n height=\"5\"\r\n viewBox=\"0 0 8 5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={isAsc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\r\n >\r\n <path d=\"M4 0L7.4641 4.5H0.535898L4 0Z\" fill=\"currentColor\" />\r\n </svg>\r\n <svg\r\n width=\"8\"\r\n height=\"5\"\r\n viewBox=\"0 0 8 5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={isDesc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\r\n >\r\n <path d=\"M4 5L0.535898 0.5H7.4641L4 5Z\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n );\r\n };\r\n\r\n const isEmpty = !loading && data.length === 0;\r\n const colSpan = columns.length;\r\n\r\n const headerTextStyleInline: React.CSSProperties = {\r\n color: headerTextStyle?.color,\r\n fontFamily: headerTextStyle?.fontFamily,\r\n fontSize: headerTextStyle?.fontSize,\r\n fontWeight: headerTextStyle?.fontWeight,\r\n };\r\n\r\n const bodyStyleInline: React.CSSProperties = {\r\n color: bodyTextStyle?.color,\r\n fontFamily: bodyTextStyle?.fontFamily,\r\n fontSize: bodyTextStyle?.fontSize,\r\n fontWeight: bodyTextStyle?.fontWeight,\r\n };\r\n\r\n const getRowPaddingStyle = (): React.CSSProperties => {\r\n if (typeof rowPadding === \"string\") {\r\n return { padding: rowPadding };\r\n }\r\n if (typeof rowPadding === \"object\") {\r\n const style: React.CSSProperties = {};\r\n if (rowPadding.x) {\r\n style.paddingLeft = rowPadding.x;\r\n style.paddingRight = rowPadding.x;\r\n }\r\n if (rowPadding.y) {\r\n style.paddingTop = rowPadding.y;\r\n style.paddingBottom = rowPadding.y;\r\n }\r\n return style;\r\n }\r\n return {};\r\n };\r\n\r\n const rowPaddingStyle = getRowPaddingStyle();\r\n\r\n /** Returns true when the cell should render an editable control */\r\n const isEditableCell = <T,>(column: TableColumn<T>): boolean => {\r\n if (!column.editable || !column.editableValue) return false;\r\n if (column.type === \"date\" || column.type === \"textInput\") return true;\r\n // select mode requires choices\r\n return !!column.choices;\r\n };\r\n\r\n const getEditableTextColor = (column: TableColumn<T>, row: T, index: number) => {\r\n if (typeof column.editableTextColor === \"function\") {\r\n return column.editableTextColor(row, index);\r\n }\r\n return column.editableTextColor;\r\n };\r\n\r\n const getEditableBackgroundColor = (column: TableColumn<T>, row: T, index: number) => {\r\n if (typeof column.editableBackgroundColor === \"function\") {\r\n return column.editableBackgroundColor(row, index);\r\n }\r\n return column.editableBackgroundColor;\r\n };\r\n\r\n const getEditablePlaceholderColor = (\r\n column: TableColumn<T>,\r\n row: T,\r\n index: number,\r\n ) => {\r\n if (typeof column.editablePlaceholderColor === \"function\") {\r\n return column.editablePlaceholderColor(row, index);\r\n }\r\n return column.editablePlaceholderColor;\r\n };\r\n\r\n return (\r\n <div className=\"rh-w-full rh-rounded\">\r\n <table\r\n ref={ref}\r\n style={{ backgroundColor: bodyBackground }}\r\n className={[\"rh-w-full rh-border-collapse rh-font-body\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n <thead>\r\n <tr\r\n className=\"rh-border-b rh-border-border\"\r\n style={{\r\n backgroundColor: headerStyle?.backgroundColor,\r\n height: headerStyle?.height,\r\n border: headerStyle?.border,\r\n }}\r\n >\r\n {columns.map((column) => (\r\n <th\r\n key={column.key}\r\n scope=\"col\"\r\n style={{\r\n width: column.width,\r\n maxWidth: column.maxWidth,\r\n backgroundColor: column.headerBgColor ?? headerStyle?.backgroundColor,\r\n ...rowPaddingStyle,\r\n }}\r\n className={[\r\n rowPadding ? \"\" : sizeClasses[size].header,\r\n alignClasses[column.align || \"left\"],\r\n `rh-font-semibold rh-whitespace-nowrap ${headerTextClassName || \"rh-text-text-muted\"}`,\r\n stickyHeader ? \"rh-sticky rh-top-0 rh-bg-surface rh-z-10\" : \"\",\r\n column.sortable ? \"rh-cursor-pointer rh-select-none hover:rh-text-text\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onClick={() => handleSort(column)}\r\n >\r\n <span\r\n className=\"rh-inline-flex rh-items-center\"\r\n style={column.headerTextColor ? { ...headerTextStyleInline, color: column.headerTextColor } : headerTextStyleInline}\r\n >\r\n {column.header}\r\n {renderSortIcon(column)}\r\n </span>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody style={{ backgroundColor: bodyBackground }}>\r\n {loading && (\r\n <tr>\r\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8\">\r\n {loadingContent || (\r\n <div className=\"rh-flex rh-items-center rh-justify-center rh-gap-2 rh-text-text-muted\">\r\n <svg\r\n className=\"rh-animate-spin rh-h-5 rh-w-5\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\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 Carregando...\r\n </div>\r\n )}\r\n </td>\r\n </tr>\r\n )}\r\n {isEmpty && (\r\n <tr>\r\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8 rh-text-text-muted\">\r\n {emptyContent}\r\n </td>\r\n </tr>\r\n )}\r\n {!loading &&\r\n data.map((row, index) => (\r\n <tr\r\n key={rowKey(row, index)}\r\n style={bodyStyleInline}\r\n className={[\r\n \"rh-border-b rh-border-border rh-transition-colors\",\r\n rowClickable ? \"rh-cursor-pointer\" : \"\",\r\n \"hover:rh-bg-background/50\",\r\n variant === \"striped\" && index % 2 === 1 ? \"rh-bg-background/50\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onClick={(e) => {\r\n if (!rowClickable || !onRowClick) return;\r\n const target = e.target as HTMLElement | null;\r\n if (!target) return;\r\n\r\n // Ignore clicks that originate from interactive controls so their own handlers run.\r\n const interactiveSelector = 'button, a, input, select, textarea, label, [role=\"button\"], [data-no-row-click]';\r\n if (target.closest(interactiveSelector)) return;\r\n\r\n onRowClick(row, index, e as React.MouseEvent<HTMLTableRowElement>);\r\n }}\r\n >\r\n {columns.map((column) => (\r\n <td\r\n key={column.key}\r\n style={{ width: column.width, maxWidth: column.maxWidth, ...rowPaddingStyle }}\r\n className={[\r\n rowPadding ? \"\" : sizeClasses[size].cell,\r\n alignClasses[column.align || \"left\"],\r\n \"rh-text-text\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <div className=\"rh-flex rh-items-stretch rh-justify-between rh-gap-2 rh-h-full\">\r\n {isEditableCell(column) ? (\r\n <CustomSelect\r\n type={column.type ?? \"select\"}\r\n disabled={shouldDisableEditableControls}\r\n options={column.choices}\r\n value={column.editableValue!(row)}\r\n placeholder={column.editablePlaceholder}\r\n textColor={getEditableTextColor(column, row, index)}\r\n placeholderColor={getEditablePlaceholderColor(column, row, index)}\r\n backgroundColor={getEditableBackgroundColor(column, row, index)}\r\n onChange={(value: string) => column.onEditChange?.(row, index, value)}\r\n className=\"rh-w-full rh-h-full\"\r\n />\r\n ) : (\r\n <span style={{ width: \"100%\" }}>{column.render(row, index)}</span>\r\n )}\r\n {column.actionIcon && (\r\n <span\r\n className=\"rh-cursor-pointer hover:rh-bg-background/50 rh-p-1 rh-rounded\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n column.actionIcon?.onClick(row, index);\r\n }}\r\n >\r\n {column.actionIcon.icon}\r\n </span>\r\n )}\r\n </div>\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n {addRowButton && !loading && (\r\n <tr className=\"rh-border-border hover:rh-bg-background/50 rh-cursor-pointer rh-py-3\">\r\n <td\r\n colSpan={colSpan}\r\n className={[\r\n \"rh-text-center rh-cursor-pointer rh-text-[#9CA3AF] rh-font-medium rh-px-4 rh-py-3 rh-rounded-b\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onClick={onAddRow}\r\n >\r\n <div className=\"rh-flex rh-items-center rh-justify-center rh-gap-2 rh-h-6 rh-font-bold rh-text-sm\">\r\n {addRowButton.icon}\r\n {addRowButton.text}\r\n </div>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport const Table = forwardRef(TableInner) as <T>(\r\n props: TableProps<T> & { ref?: React.ForwardedRef<HTMLTableElement> },\r\n) => React.ReactElement;\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport type TypographyVariant =\r\n // Headings\r\n | \"h1\"\r\n | \"h2\"\r\n | \"h3\"\r\n | \"h4\"\r\n | \"h5\"\r\n | \"h6\"\r\n // Body text\r\n | \"body\"\r\n | \"bodyLg\"\r\n | \"bodySm\"\r\n // Labels (form labels, etc)\r\n | \"label\"\r\n | \"labelSm\"\r\n | \"labelLg\"\r\n // Form specific\r\n | \"formLabel\" // Label de campo de formulário\r\n | \"formText\" // Texto dentro de forms\r\n | \"formHelper\" // Texto de ajuda\r\n // Section titles\r\n | \"sectionTitle\" // Título de seção\r\n | \"modalTitle\" // Título de modal\r\n // Captions\r\n | \"caption\"\r\n | \"captionSm\"\r\n // Special\r\n | \"menu\"\r\n | \"overline\"\r\n | \"link\";\r\n\r\nexport type TypographyColor =\r\n | \"default\"\r\n | \"muted\"\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"danger\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"info\";\r\n\r\nexport type TypographyProps = React.HTMLAttributes<HTMLElement> & {\r\n /** Typographic variant */\r\n variant?: TypographyVariant;\r\n /** Color preset */\r\n color?: TypographyColor;\r\n /** Bold weight */\r\n bold?: boolean;\r\n /** Semibold weight */\r\n semibold?: boolean;\r\n /** Medium weight */\r\n medium?: boolean;\r\n /** Override the rendered HTML element */\r\n as?: keyof JSX.IntrinsicElements;\r\n};\r\n\r\nconst defaultElements: Record<TypographyVariant, keyof JSX.IntrinsicElements> = {\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n h5: \"h5\",\r\n h6: \"h6\",\r\n bodyLg: \"p\",\r\n body: \"p\",\r\n bodySm: \"p\",\r\n label: \"span\",\r\n labelSm: \"span\",\r\n labelLg: \"span\",\r\n formLabel: \"label\",\r\n formText: \"span\",\r\n formHelper: \"span\",\r\n sectionTitle: \"h3\",\r\n modalTitle: \"h2\",\r\n caption: \"span\",\r\n captionSm: \"span\",\r\n menu: \"span\",\r\n overline: \"span\",\r\n link: \"span\",\r\n};\r\n\r\nconst variantClasses: Record<TypographyVariant, string> = {\r\n // Headings - Sora font\r\n h1: \"rh-text-4xl rh-font-bold rh-leading-tight rh-font-display\", // 36px Sora Bold\r\n h2: \"rh-text-2xl rh-font-bold rh-leading-snug rh-font-display\", // 24px Sora Bold\r\n h3: \"rh-text-xl rh-font-semibold rh-leading-snug rh-font-display\", // 20px Sora SemiBold\r\n h4: \"rh-text-lg rh-font-semibold rh-leading-snug rh-font-display\", // 18px Sora SemiBold\r\n h5: \"rh-text-base rh-font-bold rh-leading-normal rh-font-display\", // 16px Sora Bold\r\n h6: \"rh-text-sm rh-font-bold rh-leading-normal rh-font-display\", // 14px Sora Bold\r\n \r\n // Body - Inter font\r\n bodyLg: \"rh-text-base rh-font-normal rh-leading-normal rh-font-body\", // 16px Inter\r\n body: \"rh-text-sm rh-font-normal rh-leading-normal rh-font-body\", // 14px Inter\r\n bodySm: \"rh-text-xs rh-font-normal rh-leading-normal rh-font-body\", // 12px Inter\r\n \r\n // Labels - Inter font\r\n label: \"rh-text-sm rh-font-medium rh-leading-normal rh-font-body\", // 14px Inter Medium\r\n labelSm: \"rh-text-xs rh-font-medium rh-leading-normal rh-font-body\", // 12px Inter Medium\r\n labelLg: \"rh-text-base rh-font-medium rh-leading-normal rh-font-body\", // 16px Inter Medium\r\n \r\n // Form specific - Inter font (mais usados no projeto)\r\n formLabel: \"rh-text-sm rh-font-semibold rh-leading-normal rh-font-body\", // 14px Inter SemiBold\r\n formText: \"rh-text-sm rh-font-normal rh-leading-normal rh-font-body\", // 14px Inter Normal\r\n formHelper: \"rh-text-xs rh-font-normal rh-leading-normal rh-font-body\", // 12px Inter Normal\r\n \r\n // Section titles - Inter font\r\n sectionTitle: \"rh-text-base rh-font-semibold rh-leading-normal rh-font-body\", // 16px Inter SemiBold (Dados da empresa:)\r\n modalTitle: \"rh-text-base rh-font-bold rh-leading-normal rh-font-display\", // 16px Sora Bold (títulos de modal)\r\n \r\n // Captions - Inter font\r\n caption: \"rh-text-xs rh-font-normal rh-leading-normal rh-font-body\", // 12px Inter\r\n captionSm: \"rh-text-2xs rh-font-normal rh-leading-tight rh-font-body\", // 10px Inter\r\n \r\n // Special\r\n menu: \"rh-text-xs rh-font-bold rh-leading-normal rh-font-display\", // 12px Sora Bold\r\n overline: \"rh-text-2xs rh-font-semibold rh-leading-tight rh-font-body rh-tracking-wide rh-uppercase\", // 10px Inter SemiBold UPPERCASE\r\n link: \"rh-text-sm rh-font-medium rh-leading-normal rh-font-body rh-underline\", // 14px Inter Medium underline\r\n};\r\n\r\nconst colorClasses: Record<TypographyColor, string> = {\r\n default: \"rh-text-text\",\r\n muted: \"rh-text-text-muted\",\r\n primary: \"rh-text-primary\",\r\n secondary: \"rh-text-secondary\",\r\n danger: \"rh-text-danger\",\r\n success: \"rh-text-success\",\r\n warning: \"rh-text-warning\",\r\n info: \"rh-text-info\",\r\n};\r\n\r\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(function Typography(\r\n { \r\n variant = \"body\", \r\n color = \"default\", \r\n bold = false, \r\n semibold = false, \r\n medium = false,\r\n as, \r\n className = \"\", \r\n children, \r\n ...rest \r\n },\r\n ref,\r\n) {\r\n const element = as ?? defaultElements[variant];\r\n\r\n // Determinar weight override (prioridade: bold > semibold > medium)\r\n const weightClass = bold \r\n ? \"rh-font-bold\" \r\n : semibold \r\n ? \"rh-font-semibold\" \r\n : medium \r\n ? \"rh-font-medium\" \r\n : \"\";\r\n\r\n return React.createElement(\r\n element as string,\r\n {\r\n ref,\r\n className: [\r\n variantClasses[variant],\r\n colorClasses[color],\r\n weightClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \"),\r\n ...rest,\r\n },\r\n children,\r\n );\r\n});\r\n","import React, { forwardRef, useMemo } from \"react\";\nimport { CaretLeftIcon, CaretRightIcon } from \"../../icons\";\n\nexport type PaginationProps = {\n /** Current active page (1-indexed) */\n currentPage: number;\n /** Total number of pages */\n totalPages: number;\n /** Callback when page changes */\n onPageChange: (page: number) => void;\n /** Maximum number of page buttons to show (default: 5) */\n maxVisible?: number;\n /** Show prev/next arrows (default: true) */\n showArrows?: boolean;\n /** Custom class for the container */\n className?: string;\n /** Disable pagination */\n disabled?: boolean;\n};\n\ntype PageItem = number | \"ellipsis-start\" | \"ellipsis-end\";\n\nfunction getVisiblePages(currentPage: number, totalPages: number, maxVisible: number): PageItem[] {\n if (totalPages <= maxVisible) {\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n const half = Math.floor(maxVisible / 2);\n let start = currentPage - half;\n let end = currentPage + half;\n\n if (start < 1) {\n start = 1;\n end = maxVisible;\n }\n\n if (end > totalPages) {\n end = totalPages;\n start = totalPages - maxVisible + 1;\n }\n\n const pages: PageItem[] = [];\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"ellipsis-start\");\n }\n }\n\n for (let i = start; i <= end; i++) {\n if (i >= 1 && i <= totalPages && !pages.includes(i)) {\n pages.push(i);\n }\n }\n\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(\"ellipsis-end\");\n }\n if (!pages.includes(totalPages)) {\n pages.push(totalPages);\n }\n }\n\n return pages;\n}\n\nexport const Pagination = forwardRef<HTMLDivElement, PaginationProps>(function Pagination(\n {\n currentPage,\n totalPages,\n onPageChange,\n maxVisible = 5,\n showArrows = true,\n className = \"\",\n disabled = false,\n },\n ref,\n) {\n const visiblePages = useMemo(\n () => getVisiblePages(currentPage, totalPages, maxVisible),\n [currentPage, totalPages, maxVisible],\n );\n\n const canGoPrev = currentPage > 1;\n const canGoNext = currentPage < totalPages;\n\n const handlePageClick = (page: number) => {\n if (!disabled && page !== currentPage && page >= 1 && page <= totalPages) {\n onPageChange(page);\n }\n };\n\n const handlePrev = () => {\n if (!disabled && canGoPrev) {\n onPageChange(currentPage - 1);\n }\n };\n\n const handleNext = () => {\n if (!disabled && canGoNext) {\n onPageChange(currentPage + 1);\n }\n };\n\n if (totalPages <= 1) {\n return null;\n }\n\n return (\n <nav\n ref={ref}\n role=\"navigation\"\n aria-label=\"Paginação\"\n className={[\n \"rh-flex rh-flex-row rh-items-center rh-justify-end rh-gap-1\",\n disabled ? \"rh-opacity-50 rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Previous Arrow */}\n {showArrows && (\n <button\n type=\"button\"\n onClick={handlePrev}\n disabled={!canGoPrev || disabled}\n aria-label=\"Página anterior\"\n className={[\n \"rh-w-8 rh-h-8 rh-rounded-full rh-flex rh-items-center rh-justify-center\",\n \"rh-bg-transparent\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n canGoPrev && !disabled\n ? \"rh-text-gray-700 hover:rh-bg-gray-100 rh-cursor-pointer\"\n : \"rh-text-gray-300 rh-cursor-not-allowed\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <CaretLeftIcon className=\"rh-w-4 rh-h-4\" />\n </button>\n )}\n\n {/* Page Numbers */}\n {visiblePages.map((page, index) => {\n if (page === \"ellipsis-start\" || page === \"ellipsis-end\") {\n return (\n <span\n key={page}\n className=\"rh-w-8 rh-h-8 rh-flex rh-items-center rh-justify-center rh-text-gray-500 rh-font-display rh-text-xs rh-font-bold\"\n aria-hidden=\"true\"\n >\n ...\n </span>\n );\n }\n\n const isActive = page === currentPage;\n\n return (\n <button\n key={page}\n type=\"button\"\n onClick={() => handlePageClick(page)}\n disabled={disabled}\n aria-label={`Página ${page}`}\n aria-current={isActive ? \"page\" : undefined}\n className={[\n \"rh-w-8 rh-h-8 rh-rounded-full rh-flex rh-items-center rh-justify-center\",\n \"rh-font-display rh-text-xs rh-font-bold rh-leading-5\",\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 isActive\n ? \"rh-bg-primary rh-text-white\"\n : \"rh-bg-transparent rh-text-gray-700 hover:rh-bg-gray-100 rh-cursor-pointer\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {page}\n </button>\n );\n })}\n\n {/* Next Arrow */}\n {showArrows && (\n <button\n type=\"button\"\n onClick={handleNext}\n disabled={!canGoNext || disabled}\n aria-label=\"Próxima página\"\n className={[\n \"rh-w-8 rh-h-8 rh-rounded-full rh-flex rh-items-center rh-justify-center\",\n \"rh-bg-transparent\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n canGoNext && !disabled\n ? \"rh-text-gray-700 hover:rh-bg-gray-100 rh-cursor-pointer\"\n : \"rh-text-gray-300 rh-cursor-not-allowed\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <CaretRightIcon className=\"rh-w-4 rh-h-4\" />\n </button>\n )}\n </nav>\n );\n});\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/WarningCircleIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/icons/CaretLeftIcon.tsx","../src/icons/CaretRightIcon.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/Radio/Radio.tsx","../src/components/Select/Select.tsx","../src/components/SelectDate/SelectDate.tsx","../src/components/TimePicker/TimePicker.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Tag/Tag.tsx","../src/components/TagInput/TagInput.tsx","../src/components/ProgressBar/ProgressBar.tsx","../src/components/ToggleGroup/ToggleGroup.tsx","../src/components/Card/Card.tsx","../src/components/Spinner/Spinner.tsx","../src/components/Table/CustomSelect.tsx","../src/components/Table/Table.tsx","../src/components/Typography/Typography.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Grid/Container.tsx","../src/components/Grid/GridContainer.tsx","../src/components/Grid/GridItem.tsx"],"names":["jsxs","jsx","forwardRef","Toast","useState","useRef","useEffect","useCallback","createContext","useContext","useMemo","toRgbTriplet","Button","React","PRESET_COLORS","isPresetColor","getArbitraryColorStyle","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","labelSizeClasses","Radio","RadioOption","RadioGroup","statusClasses","helperStatusClasses","getSubtitleClassName","CheckIcon","Select","dropdownRadiusClasses","ChevronIcon","DateSelect","getDaysInMonth","getFirstDayOfMonth","ref","EraserIcon","TimePicker","radius","createPortal","Fragment","Tooltip","variantClasses","Avatar","Tag","colorClasses","TagInput","ProgressBar","CardHeader","CardContent","CardFooter","Card","Spinner","ChevronLeftIcon","ChevronRightIcon","Typography","Pagination","Container","GridContainer","GridItem"],"mappings":"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","file":"index.js","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 /** Neutral color — for non-semantic actions (e.g. kebab menus, close buttons).\r\n * Typically mapped to textMuted / text / border in the consumer's theme. */\r\n neutral?: string;\r\n neutralHover?: string;\r\n\r\n /** Subtle background for outline/ghost hover.\r\n * Accepts any CSS color value (hex, rgb, named).\r\n * When omitted, derived automatically via color-mix from the base color. */\r\n primarySubtle?: string;\r\n secondarySubtle?: string;\r\n dangerSubtle?: string;\r\n warningSubtle?: string;\r\n successSubtle?: string;\r\n infoSubtle?: string;\r\n neutralSubtle?: 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 /** Button heights */\r\n buttonHeightXxs?: string;\r\n buttonHeightXs?: string;\r\n buttonHeightSm?: string;\r\n buttonHeightMd?: string;\r\n buttonHeightLg?: string;\r\n buttonHeightXl?: string;\r\n\r\n /** Typography — Inter for body/labels, Sora for headings/display */\r\n fontFamilyBody?: string;\r\n fontFamilyDisplay?: 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\n * - isColor: value must be a color; will be converted to \"r g b\" triplet for alpha support.\r\n * - raw: value is applied to the CSS var as-is (no triplet conversion). Use for CSS values\r\n * that are not plain colors (e.g. color-mix results, gradients, named colors). */\r\nexport const TOKEN_MAP: Record<\r\n keyof RehagroTheme,\r\n { var: string; isColor: boolean; raw?: boolean }\r\n> = {\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 neutral: { var: \"--rh-neutral\", isColor: true },\r\n neutralHover: { var: \"--rh-neutral-hover\", isColor: true },\r\n primarySubtle: { var: \"--rh-primary-subtle\", isColor: true, raw: true },\r\n secondarySubtle: { var: \"--rh-secondary-subtle\", isColor: true, raw: true },\r\n dangerSubtle: { var: \"--rh-danger-subtle\", isColor: true, raw: true },\r\n warningSubtle: { var: \"--rh-warning-subtle\", isColor: true, raw: true },\r\n successSubtle: { var: \"--rh-success-subtle\", isColor: true, raw: true },\r\n infoSubtle: { var: \"--rh-info-subtle\", isColor: true, raw: true },\r\n neutralSubtle: { var: \"--rh-neutral-subtle\", isColor: true, raw: 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 buttonHeightXxs: { var: \"--rh-button-height-xxs\", isColor: false },\r\n buttonHeightXs: { var: \"--rh-button-height-xs\", isColor: false },\r\n buttonHeightSm: { var: \"--rh-button-height-sm\", isColor: false },\r\n buttonHeightMd: { var: \"--rh-button-height-md\", isColor: false },\r\n buttonHeightLg: { var: \"--rh-button-height-lg\", isColor: false },\r\n buttonHeightXl: { var: \"--rh-button-height-xl\", isColor: false },\r\n fontFamilyBody: { var: \"--rh-font-family\", isColor: false },\r\n fontFamilyDisplay: { var: \"--rh-font-family-display\", 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 WarningCircleIcon = (props: IconProps) => (\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"15\"\r\n height=\"15\"\r\n viewBox=\"0 0 256 256\"\r\n fill=\"currentColor\"\r\n aria-hidden=\"true\"\r\n {...props}\r\n >\r\n <rect width=\"256\" height=\"256\" fill=\"none\" />\r\n <circle\r\n cx=\"128\"\r\n cy=\"128\"\r\n r=\"96\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeMiterlimit=\"10\"\r\n strokeWidth=\"16\"\r\n />\r\n <line\r\n x1=\"128\"\r\n y1=\"136\"\r\n x2=\"128\"\r\n y2=\"80\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n strokeWidth=\"16\"\r\n />\r\n <circle cx=\"128\" cy=\"172\" r=\"12\" />\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","import React from \"react\";\r\nimport type { IconProps } from \"./types\";\r\n\r\nexport function CaretLeftIcon({ className, ...props }: IconProps) {\r\n return (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n {...props}\r\n >\r\n <path\r\n d=\"M10 12L6 8L10 4\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n","import React from \"react\";\r\nimport type { IconProps } from \"./types\";\r\n\r\nexport function CaretRightIcon({ className, ...props }: IconProps) {\r\n return (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={className}\r\n {...props}\r\n >\r\n <path\r\n d=\"M6 4L10 8L6 12\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n );\r\n}\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { InfoIcon, WarningIcon, SuccessIcon, ErrorIcon, NeutralIcon, CloseIcon } 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. Accepts a string or any React node (e.g. a list of items). */\r\n description?: React.ReactNode;\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-body\",\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 className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]].filter(Boolean).join(\" \")} />\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 <div\r\n className={[\"rh-mt-1 rh-text-sm rh-leading-normal\", descriptionStyles[styleKey]]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {description}\r\n </div>\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?: React.ReactNode;\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?: React.ReactNode;\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 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.raw) {\r\n // Raw tokens (e.g. subtle backgrounds) are applied as-is so the CSS var\r\n // can hold any valid CSS color value (hex, rgb, color-mix, etc.).\r\n vars[config.var] = value;\r\n } else 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 if (!theme.ring && theme.primary) {\r\n const triplet = toRgbTriplet(theme.primary);\r\n if (triplet) vars[\"--rh-ring\"] = triplet;\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 = \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ButtonHoverStyle = {\r\n /** Background on hover */\r\n background?: string;\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 text/icon color for the base state. Use hoverStyle.color to customize hover text color. */\r\n textColor?: string;\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 \"neutral\",\r\n]);\r\n\r\nconst isPresetColor = (c: string): c is PresetColor => PRESET_COLORS.has(c);\r\n\r\n/**\r\n * Base (non-hover) color classes per variant/preset.\r\n * Always applied for preset colors — even when `hoverStyle` overrides the hover state.\r\n */\r\nconst variantBaseClasses: Record<ButtonVariant, Record<PresetColor, string>> = {\r\n solid: {\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 neutral: \"rh-bg-neutral rh-text-surface rh-border-neutral\",\r\n },\r\n outline: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-primary\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-secondary\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-danger\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-warning\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-success\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-info\",\r\n neutral: \"rh-bg-transparent rh-text-neutral rh-border-neutral\",\r\n },\r\n ghost: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-transparent\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-transparent\",\r\n neutral: \"rh-bg-transparent rh-text-neutral rh-border-transparent\",\r\n },\r\n};\r\n\r\n/**\r\n * Hover color classes per variant/preset.\r\n * Skipped when `hoverStyle` is provided, so the consumer's custom hover wins.\r\n */\r\nconst variantHoverClasses: Record<ButtonVariant, Record<PresetColor, string>> = {\r\n solid: {\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 neutral: \"hover:rh-bg-neutral-hover hover:rh-border-neutral-hover\",\r\n },\r\n outline: {\r\n primary: \"hover:rh-bg-primary-subtle\",\r\n secondary: \"hover:rh-bg-secondary-subtle\",\r\n danger: \"hover:rh-bg-danger-subtle\",\r\n warning: \"hover:rh-bg-warning-subtle\",\r\n success: \"hover:rh-bg-success-subtle\",\r\n info: \"hover:rh-bg-info-subtle\",\r\n neutral: \"hover:rh-bg-neutral-subtle\",\r\n },\r\n ghost: {\r\n primary: \"hover:rh-bg-primary-subtle\",\r\n secondary: \"hover:rh-bg-secondary-subtle\",\r\n danger: \"hover:rh-bg-danger-subtle\",\r\n warning: \"hover:rh-bg-warning-subtle\",\r\n success: \"hover:rh-bg-success-subtle\",\r\n info: \"hover:rh-bg-info-subtle\",\r\n neutral: \"hover:rh-bg-neutral-subtle\",\r\n },\r\n};\r\n\r\nfunction getArbitraryColorStyle(variant: ButtonVariant, color: string): 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 xxs: \"rh-text-2xs rh-leading-none rh-px-1.5 rh-h-button-xxs rh-gap-1\",\r\n xs: \"rh-text-xs rh-leading-none rh-px-2 rh-h-button-xs rh-gap-1\",\r\n sm: \"rh-text-sm rh-px-3 rh-h-button-sm\",\r\n md: \"rh-text-sm rh-px-4 rh-h-button-md\",\r\n lg: \"rh-text-base rh-px-5 rh-h-button-lg\",\r\n xl: \"rh-text-lg rh-px-6 rh-h-button-xl\",\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 textColor,\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\r\n ? { [`--rh-${color}-hover`]: toRgbTriplet(hoverColor) ?? hoverColor }\r\n : {}\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 ? ({\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\r\n const textStyle: React.CSSProperties = textColor ? { color: textColor } : {};\r\n\r\n return { ...style, ...baseStyle, ...textStyle, ...hoverVars };\r\n }, [preset, color, variant, hoverColor, hoverStyle, style, textColor]);\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-display 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 ? variantBaseClasses[variant][color as PresetColor] : \"\",\r\n preset && !hasCustomHover ? variantHoverClasses[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 = \"xxs\" | \"xs\" | \"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 \"neutral\",\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 neutral:\r\n \"rh-bg-neutral rh-text-surface rh-border-neutral hover:rh-bg-neutral-hover hover:rh-border-neutral-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 neutral:\r\n \"rh-bg-transparent rh-text-neutral rh-border-neutral hover:rh-bg-neutral-subtle\",\r\n },\r\n ghost: {\r\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary-subtle\",\r\n secondary: \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary-subtle\",\r\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger-subtle\",\r\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning-subtle\",\r\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success-subtle\",\r\n info: \"rh-bg-transparent rh-text-info rh-border-transparent hover:rh-bg-info-subtle\",\r\n neutral: \"rh-bg-transparent rh-text-neutral rh-border-transparent hover:rh-bg-neutral-subtle\",\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 xxs: \"rh-h-4 rh-w-4 rh-text-2xs\",\r\n xs: \"rh-h-6 rh-w-6 rh-text-xs\",\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 // IconButton is a square control, so it uses the same compact radius\r\n // scale as the native implementation. The global web radius tokens are\r\n // larger (md = 16px), which makes a 32px icon button look circular.\r\n xxs: \"rh-rounded-[2px]\",\r\n xs: \"rh-rounded-[4px]\",\r\n sm: \"rh-rounded-[8px]\",\r\n md: \"rh-rounded-[12px]\",\r\n lg: \"rh-rounded-[16px]\",\r\n xl: \"rh-rounded-[24px]\",\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-display\",\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\nimport { WarningCircleIcon } from \"../../icons\";\r\n\r\nexport type TextInputStatus = \"default\" | \"error\";\r\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type TextInputBorderWidth = \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type TextInputLabelWeight = \"normal\" | \"medium\" | \"semibold\" | \"bold\";\r\n\r\nexport type TextInputProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> & {\r\n /** Label text displayed above the input */\r\n label?: string;\r\n /** Label font weight */\r\n labelWeight?: TextInputLabelWeight;\r\n /** Label text color. Defaults to the Rehsult input label color. */\r\n labelColor?: 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 * Custom border color for the input container. Accepts any valid\r\n * CSS color value (hex, rgb, CSS variable, etc). When provided,\r\n * overrides the border color from the current `status`. Useful\r\n * for highlighting cells/rows in tables, marking fields with\r\n * non-error states, or theming. Does NOT change focus/ring\r\n * colors — those still come from `statusClasses`.\r\n */\r\n borderColor?: string;\r\n /**\r\n * Custom background color for the input container. Accepts any valid\r\n * CSS color value (hex, rgb, CSS variable, etc). When provided,\r\n * overrides the default `rh-bg-surface` background. Ignored when\r\n * `disabled` is true to preserve the disabled visual style.\r\n */\r\n backgroundColor?: string;\r\n /**\r\n * Border width token for the input container.\r\n *\r\n * - `sm`: default 1px border.\r\n * - `md`: default 2px border.\r\n * - `lg`: default 3px border.\r\n */\r\n borderWidth?: TextInputBorderWidth;\r\n};\r\n\r\nconst statusClasses: Record<TextInputStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200\",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100\",\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 xl: \"rh-h-input-xl rh-text-sm rh-px-input-x-md\",\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 borderWidthClasses: Record<TextInputBorderWidth, string> = {\r\n sm: \"rh-border-sm\",\r\n md: \"rh-border-md\",\r\n lg: \"rh-border-lg\",\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 xl: \"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\nconst labelWeightClasses: Record<TextInputLabelWeight, string> = {\r\n normal: \"rh-font-normal\",\r\n medium: \"rh-font-medium\",\r\n semibold: \"rh-font-semibold\",\r\n bold: \"rh-font-bold\",\r\n};\r\n\r\nconst getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\r\n\r\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(function TextInput(\r\n {\r\n label,\r\n labelWeight = \"medium\",\r\n labelColor = \"#080B12\",\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 borderColor,\r\n backgroundColor,\r\n borderWidth = \"sm\",\r\n id,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const generatedId = React.useId();\r\n const inputId = id || generatedId;\r\n const [isHelperDismissed, setIsHelperDismissed] = React.useState(false);\r\n const { onChange, ...inputProps } = rest;\r\n const visualStatus: TextInputStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n const containerStyle: React.CSSProperties = {\r\n ...(borderColor ? { borderColor } : {}),\r\n ...(!disabled && backgroundColor ? { backgroundColor } : {}),\r\n };\r\n\r\n return (\r\n <div\r\n className={[\"rh-flex rh-flex-col rh-gap-[0.5rem] rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label htmlFor={inputId} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span\r\n className={`rh-text-sm ${labelWeightClasses[labelWeight]}`}\r\n style={{ color: labelColor }}\r\n >\r\n {label}\r\n </span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{subtitle}</span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {/* Input container */}\r\n <div\r\n style={containerStyle}\r\n className={[\r\n \"rh-flex rh-items-center rh-gap-2\",\r\n \"rh-bg-surface rh-font-body\",\r\n borderWidthClasses[borderWidth],\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-overflow-hidden\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"\",\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={visualStatus === \"error\" || undefined}\r\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\r\n className={[\r\n \"rh-flex-1 rh-min-w-0 rh-bg-transparent rh-outline-none\",\r\n \"rh-text-text placeholder:rh-text-text-muted hover:placeholder:rh-text-text\",\r\n disabled ? \"rh-cursor-not-allowed\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onChange={(e) => {\r\n if (helperText) setIsHelperDismissed(true);\r\n onChange?.(e);\r\n }}\r\n {...inputProps}\r\n />\r\n\r\n {rightIcon && (\r\n <span\r\n className={[\r\n \"rh-inline-flex rh-shrink-0 rh-items-center rh-justify-center rh-whitespace-nowrap rh-text-text-muted\",\r\n iconSizeClasses[size],\r\n \"rh-w-auto rh-min-w-fit\",\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 && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\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<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> & {\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 checked?: boolean;\r\n defaultChecked?: 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 d=\"M1 1H9\" stroke=\"currentColor\" strokeWidth=\"2\" strokeLinecap=\"round\" />\r\n </svg>\r\n);\r\n\r\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(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-body 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 ? \"hover:rh-border-primary\" : \"\",\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 && <span className={[\"rh-text-text\", labelSizeClasses[size]].join(\" \")}>{label}</span>}\r\n </label>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef, createContext, useContext } from \"react\";\r\nimport { PresetColor } from \"../../types/colors.types\";\r\n\r\n// ============================================\r\n// TYPES\r\n// ============================================\r\n\r\nexport type RadioSize = \"sm\" | \"md\" | \"lg\";\r\nexport type RadioOrientation = \"horizontal\" | \"vertical\";\r\n\r\nexport type RadioProps = Omit<React.InputHTMLAttributes<HTMLInputElement>, \"type\" | \"size\"> & {\r\n /** Radio size */\r\n size?: RadioSize;\r\n /** Label text displayed next to the radio */\r\n label?: React.ReactNode;\r\n /** Description text below the label */\r\n description?: React.ReactNode;\r\n /** Color scheme for checked state */\r\n color?: PresetColor | (string & {});\r\n};\r\n\r\nexport type RadioGroupProps = Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> & {\r\n /** Currently selected value */\r\n value?: string;\r\n /** Default value (uncontrolled) */\r\n defaultValue?: string;\r\n /** Called when selection changes */\r\n onChange?: (value: string) => void;\r\n /** Radio size for all items */\r\n size?: RadioSize;\r\n /** Layout orientation */\r\n orientation?: RadioOrientation;\r\n /** Color scheme for checked state */\r\n color?: PresetColor | (string & {});\r\n /** Whether the entire group is disabled */\r\n disabled?: boolean;\r\n /** Name for all radio inputs */\r\n name?: string;\r\n /** Gap between items */\r\n gap?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\";\r\n};\r\n\r\nexport type RadioOptionProps = RadioProps & {\r\n /** Unique value for this option */\r\n value: string;\r\n};\r\n\r\n// ============================================\r\n// CONTEXT\r\n// ============================================\r\n\r\ntype RadioGroupContextType = {\r\n name?: string;\r\n value?: string;\r\n onChange?: (value: string) => void;\r\n size?: RadioSize;\r\n color?: PresetColor | (string & {});\r\n disabled?: boolean;\r\n};\r\n\r\nconst RadioGroupContext = createContext<RadioGroupContextType | null>(null);\r\n\r\nconst useRadioGroup = () => useContext(RadioGroupContext);\r\n\r\n// ============================================\r\n// SIZE CLASSES\r\n// ============================================\r\n\r\nconst labelSizeClasses: Record<RadioSize, 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 descriptionSizeClasses: Record<RadioSize, string> = {\r\n sm: \"rh-text-xs\",\r\n md: \"rh-text-xs\",\r\n lg: \"rh-text-sm\",\r\n};\r\n\r\nconst gapClasses: Record<\"sm\" | \"md\" | \"lg\" | \"xl\" | \"xxl\", string> = {\r\n sm: \"rh-gap-2\",\r\n md: \"rh-gap-3\",\r\n lg: \"rh-gap-4\",\r\n xl: \"rh-gap-5\",\r\n xxl: \"rh-gap-6\",\r\n};\r\n\r\n// ============================================\r\n// PRESET COLORS\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\n// ============================================\r\n// RADIO COMPONENT\r\n// ============================================\r\n\r\nconst inputSizeClasses: Record<RadioSize, string> = {\r\n sm: \"rh-w-4 rh-h-4\",\r\n md: \"rh-w-5 rh-h-5\",\r\n lg: \"rh-w-6 rh-h-6\",\r\n};\r\n\r\nexport const Radio = forwardRef<HTMLInputElement, RadioProps>(function Radio(\r\n {\r\n size = \"md\",\r\n label,\r\n description,\r\n color = \"primary\",\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 inputId = id || React.useId();\r\n\r\n // Obter cor para accent-color\r\n const getAccentColor = (): string => {\r\n if (isPresetColor(color)) {\r\n return `rgb(var(--rh-${color}))`;\r\n }\r\n return color;\r\n };\r\n\r\n return (\r\n <label\r\n htmlFor={inputId}\r\n className={[\r\n \"rh-inline-flex rh-items-start rh-gap-2 rh-font-body 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 <input\r\n ref={ref}\r\n id={inputId}\r\n type=\"radio\"\r\n disabled={disabled}\r\n checked={checked}\r\n defaultChecked={defaultChecked}\r\n onChange={onChange}\r\n className={[\r\n inputSizeClasses[size],\r\n \"rh-accent-current rh-cursor-pointer\",\r\n disabled ? \"rh-cursor-not-allowed\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{ accentColor: getAccentColor() }}\r\n {...rest}\r\n />\r\n\r\n {(label || description) && (\r\n <span className=\"rh-flex rh-flex-col\">\r\n {label && (\r\n <span className={[\"rh-text-text\", labelSizeClasses[size]].join(\" \")}>{label}</span>\r\n )}\r\n {description && (\r\n <span className={[\"rh-text-text-muted\", descriptionSizeClasses[size]].join(\" \")}>\r\n {description}\r\n </span>\r\n )}\r\n </span>\r\n )}\r\n </label>\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO OPTION (for use inside RadioGroup)\r\n// ============================================\r\n\r\nexport const RadioOption = forwardRef<HTMLInputElement, RadioOptionProps>(function RadioOption(\r\n { value, size, color, disabled, ...rest },\r\n ref,\r\n) {\r\n const group = useRadioGroup();\r\n\r\n const mergedSize = size ?? group?.size ?? \"md\";\r\n const mergedColor = color ?? group?.color ?? \"primary\";\r\n const mergedDisabled = disabled ?? group?.disabled ?? false;\r\n const isChecked = group?.value === value;\r\n\r\n const handleChange = () => {\r\n group?.onChange?.(value);\r\n };\r\n\r\n return (\r\n <Radio\r\n ref={ref}\r\n name={group?.name}\r\n value={value}\r\n size={mergedSize}\r\n color={mergedColor}\r\n disabled={mergedDisabled}\r\n checked={isChecked}\r\n onChange={handleChange}\r\n {...rest}\r\n />\r\n );\r\n});\r\n\r\n// ============================================\r\n// RADIO GROUP COMPONENT\r\n// ============================================\r\n\r\nexport const RadioGroup = forwardRef<HTMLDivElement, RadioGroupProps>(function RadioGroup(\r\n {\r\n children,\r\n value,\r\n defaultValue,\r\n onChange,\r\n size = \"md\",\r\n orientation = \"vertical\",\r\n color = \"primary\",\r\n disabled = false,\r\n name,\r\n gap = \"md\",\r\n className = \"\",\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const [internalValue, setInternalValue] = React.useState(defaultValue);\r\n const groupName = name || React.useId();\r\n\r\n const currentValue = value ?? internalValue;\r\n\r\n const handleChange = (newValue: string) => {\r\n setInternalValue(newValue);\r\n onChange?.(newValue);\r\n };\r\n\r\n return (\r\n <RadioGroupContext.Provider\r\n value={{\r\n name: groupName,\r\n value: currentValue,\r\n onChange: handleChange,\r\n size,\r\n color,\r\n disabled,\r\n }}\r\n >\r\n <div\r\n ref={ref}\r\n role=\"radiogroup\"\r\n className={[\r\n \"rh-flex\",\r\n orientation === \"vertical\" ? \"rh-flex-col\" : \"rh-flex-row rh-flex-wrap\",\r\n gapClasses[gap],\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 </RadioGroupContext.Provider>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { WarningCircleIcon } from \"../../icons\";\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 to use radio buttons instead of checkboxes */\r\n radio?: boolean;\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 /** Custom background color for the trigger button */\r\n backgroundColor?: 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-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200 \",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100 \",\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 getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\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\n// Radio renderizado como SVG pra garantir centralizacao geometrica\r\n// perfeita do ponto interno (centralizacao por flex/CSS pode quebrar\r\n// em sub-pixel). Proporcoes seguem o padrao Material Design 3 e\r\n// Tailwind UI: outer 16px, inner ~8px (50% do outer).\r\nconst RadioIcon = ({ isSelected }: { isSelected: boolean }) => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\r\n viewBox=\"0 0 16 16\"\r\n aria-hidden=\"true\"\r\n className={[\r\n \"rh-shrink-0 rh-transition-colors rh-duration-150\",\r\n isSelected\r\n ? \"rh-text-primary rh-fill-surface\"\r\n : \"rh-text-border rh-fill-surface\",\r\n ].join(\" \")}\r\n >\r\n <circle cx=\"8\" cy=\"8\" r=\"7\" stroke=\"currentColor\" strokeWidth=\"1\" />\r\n {isSelected && (\r\n <circle cx=\"8\" cy=\"8\" r=\"5\" className=\"rh-fill-primary\" stroke=\"none\" />\r\n )}\r\n </svg>\r\n);\r\n\r\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(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 radio = false,\r\n disabled = false,\r\n className = \"\",\r\n wrapperClassName = \"\",\r\n multiple = false,\r\n backgroundColor,\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 const [isHelperDismissed, setIsHelperDismissed] = React.useState(false);\r\n\r\n const typeaheadRef = React.useRef<{ query: string; lastAt: number }>({ query: \"\", lastAt: 0 });\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) ? props.defaultValue : [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 visualStatus: SelectStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n const handleSelect = (optionValue: string) => {\r\n if (helperText) setIsHelperDismissed(true);\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 ? options.indexOf(enabledOptions[0]) : 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 =\r\n 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={[\"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label id={`${triggerId}-label`} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{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={visualStatus === \"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 style={backgroundColor ? { backgroundColor } : undefined}\r\n className={[\r\n \"rh-group rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-font-body\",\r\n !backgroundColor && \"rh-bg-surface\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"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 group-hover:rh-text-text\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n\r\n <ChevronIcon\r\n className={[\r\n \"rh-w-4 rh-h-4 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150 rh-bg-surface rh-rounded-xl\",\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-y-auto rh-overscroll-contain 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 ? \"rh-opacity-50 rh-cursor-not-allowed\" : \"rh-cursor-pointer\",\r\n isActive && !isDisabled ? \"rh-bg-background\" : \"\",\r\n isSelected && !isActive ? \"rh-bg-primary/5\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">{option.label}</span>\r\n\r\n {radio ? (\r\n <RadioIcon isSelected={isSelected} />\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 && <CheckIcon className=\"rh-w-3 rh-h-3\" />}\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 && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\r\n {helperText}\r\n </span>\r\n )}\r\n </div>\r\n );\r\n});\r\n","\"use client\";\r\n\r\nimport React, { forwardRef, useEffect, useState, useRef, useMemo } from \"react\";\r\nimport { WarningCircleIcon } from \"../../icons\";\r\nimport { SelectSize, SelectRadius, SelectStatus } from \"../Select/Select\";\r\n\r\nexport type DateSelectMode = \"interval\" | \"day\" | \"month\" | \"year\";\r\n\r\nexport type DateSelectValue = {\r\n mode: DateSelectMode;\r\n year?: number;\r\n month?: number;\r\n day?: number;\r\n startDate?: Date;\r\n endDate?: Date;\r\n};\r\n\r\nexport type DateSelectProps = DateSelectBaseProps;\r\n\r\ntype DateSelectBaseProps = {\r\n /** Text displayed above the field */\r\n label?: string;\r\n /** Secondary text next to the label; use \"*\" to render a red asterisk */\r\n subtitle?: string;\r\n /** Text displayed when no date is selected */\r\n placeholder?: string;\r\n /** Visual state of the field: \"default\" (default) or \"error\" */\r\n status?: SelectStatus;\r\n /** Field size: \"sm\" | \"md\" | \"lg\" */\r\n size?: SelectSize;\r\n /** Border radius of the field */\r\n radius?: SelectRadius;\r\n /** Helper or error message displayed below the field */\r\n helperText?: React.ReactNode;\r\n /** Disables the field, preventing any interaction */\r\n disabled?: boolean;\r\n /** CSS class applied to the inner trigger element */\r\n className?: string;\r\n /** CSS class applied to the outer wrapper element */\r\n wrapperClassName?: string;\r\n /** Controlled value of the selected date */\r\n value?: DateSelectValue;\r\n /** Uncontrolled initial value of the selected date */\r\n defaultValue?: DateSelectValue;\r\n /** Callback fired when the selected date changes */\r\n onChange?: (value: DateSelectValue) => void;\r\n /** Start year of the range shown in the picker */\r\n startYear?: number;\r\n /** End year of the range shown in the picker */\r\n endYear?: number;\r\n /** Custom background color for the trigger button */\r\n backgroundColor?: string;\r\n /**\r\n * Restricts which modes are available in the picker.\r\n * When a single mode is provided the tab bar is hidden entirely.\r\n * Defaults to all four modes: [\"interval\", \"day\", \"month\", \"year\"].\r\n */\r\n modes?: DateSelectMode[];\r\n};\r\n\r\nconst MONTHS = [\r\n \"Janeiro\",\r\n \"Fevereiro\",\r\n \"Março\",\r\n \"Abril\",\r\n \"Maio\",\r\n \"Junho\",\r\n \"Julho\",\r\n \"Agosto\",\r\n \"Setembro\",\r\n \"Outubro\",\r\n \"Novembro\",\r\n \"Dezembro\",\r\n];\r\n\r\nconst MONTHS_SHORT = [\r\n \"Jan\",\r\n \"Fev\",\r\n \"Mar\",\r\n \"Abr\",\r\n \"Mai\",\r\n \"Jun\",\r\n \"Jul\",\r\n \"Ago\",\r\n \"Set\",\r\n \"Out\",\r\n \"Nov\",\r\n \"Dez\",\r\n];\r\n\r\nconst MODE_OPTIONS: { value: DateSelectMode; label: string }[] = [\r\n { value: \"interval\", label: \"Intervalo\" },\r\n { value: \"day\", label: \"Dia\" },\r\n { value: \"month\", label: \"Mês\" },\r\n { value: \"year\", label: \"Ano\" },\r\n];\r\n\r\nconst statusClasses: Record<SelectStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200\",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100\",\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 getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\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 ChevronLeftIcon = ({ 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=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst ChevronRightIcon = ({ 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=\"M7.21 14.77a.75.75 0 010-1.06L11.168 10 7.23 6.29a.75.75 0 011.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\r\n clipRule=\"evenodd\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst EraserIcon = ({ className }: { className?: string }) => (\r\n <svg width=\"17\" height=\"16\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.3134 13.7509H9.45406L16.2384 6.96656C16.4416 6.76343 16.6027 6.52227 16.7127 6.25686C16.8226 5.99145 16.8792 5.70697 16.8792 5.41969C16.8792 5.1324 16.8226 4.84793 16.7127 4.58252C16.6027 4.3171 16.4416 4.07594 16.2384 3.87281L13.0033 0.640783C12.8002 0.437631 12.559 0.276481 12.2936 0.166535C12.0282 0.0565888 11.7437 0 11.4564 0C11.1691 0 10.8846 0.0565888 10.6192 0.166535C10.3538 0.276481 10.1127 0.437631 9.90953 0.640783L0.640783 9.90875C0.437631 10.1119 0.276481 10.353 0.166535 10.6185C0.0565888 10.8839 0 11.1683 0 11.4556C0 11.7429 0.0565888 12.0274 0.166535 12.2928C0.276481 12.5582 0.437631 12.7994 0.640783 13.0025L2.98922 15.3517C3.07635 15.4388 3.17977 15.5078 3.29358 15.5548C3.40739 15.6019 3.52935 15.626 3.6525 15.6259H15.3134C15.5621 15.6259 15.8005 15.5272 15.9763 15.3514C16.1522 15.1755 16.2509 14.9371 16.2509 14.6884C16.2509 14.4398 16.1522 14.2013 15.9763 14.0255C15.8005 13.8497 15.5621 13.7509 15.3134 13.7509ZM11.2353 1.96656C11.2643 1.93751 11.2988 1.91446 11.3367 1.89873C11.3747 1.88301 11.4153 1.87491 11.4564 1.87491C11.4975 1.87491 11.5381 1.88301 11.5761 1.89873C11.614 1.91446 11.6485 1.93751 11.6775 1.96656L14.9103 5.19938C14.9688 5.25796 15.0016 5.33733 15.0016 5.42008C15.0016 5.50283 14.9688 5.5822 14.9103 5.64078L10.9384 9.61031L7.26656 5.93844L11.2353 1.96656ZM4.04078 13.7509L1.96656 11.6767C1.90812 11.6181 1.8753 11.5388 1.8753 11.456C1.8753 11.3733 1.90812 11.2939 1.96656 11.2353L5.93844 7.26656L9.61031 10.9384L6.79781 13.7509H4.04078Z\"\r\n fill=\"#374151\"\r\n />\r\n </svg>\r\n);\r\n\r\nexport const DateSelect = forwardRef<HTMLButtonElement, DateSelectBaseProps>(\r\n function DateSelect(props, ref) {\r\n const {\r\n label,\r\n subtitle,\r\n placeholder = \"Selecione\",\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 startYear,\r\n endYear,\r\n backgroundColor,\r\n modes,\r\n } = props;\r\n\r\n const triggerId = React.useId();\r\n const helperId = React.useId();\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isHelperDismissed, setIsHelperDismissed] = useState(false);\r\n const [dropdownAlign, setDropdownAlign] = useState<\"left\" | \"right\">(\"left\");\r\n\r\n const [internalValue, setInternalValue] = useState<DateSelectValue>(\r\n props.defaultValue ?? { mode: \"day\" },\r\n );\r\n const isControlled = props.value !== undefined;\r\n const value: DateSelectValue = isControlled ? (props.value ?? internalValue) : internalValue;\r\n\r\n const availableModes = useMemo(\r\n () =>\r\n modes && modes.length > 0\r\n ? MODE_OPTIONS.filter((o) => modes.includes(o.value))\r\n : MODE_OPTIONS,\r\n [modes],\r\n );\r\n\r\n const defaultMode = availableModes[0]?.value ?? \"day\";\r\n\r\n const [activeMode, setActiveMode] = useState<DateSelectMode>(\r\n availableModes.some((o) => o.value === (value.mode ?? \"day\"))\r\n ? (value.mode ?? \"day\")\r\n : defaultMode,\r\n );\r\n\r\n const [selectedYear, setSelectedYear] = useState(new Date().getFullYear());\r\n const [selectedMonth, setSelectedMonth] = useState(new Date().getMonth());\r\n\r\n const rightMonth = selectedMonth === 11 ? 0 : selectedMonth + 1;\r\n const rightYear = selectedMonth === 11 ? selectedYear + 1 : selectedYear;\r\n\r\n const [intervalStart, setIntervalStart] = useState<Date | undefined>(value.startDate);\r\n const [intervalEnd, setIntervalEnd] = useState<Date | undefined>(value.endDate);\r\n const [hoverDate, setHoverDate] = useState<Date | undefined>();\r\n\r\n const [yearGridStart, setYearGridStart] = useState(\r\n Math.floor(new Date().getFullYear() / 12) * 12,\r\n );\r\n\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n const innerRef = useRef<HTMLButtonElement>(null);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n\r\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\r\n\r\n const currentYear = new Date().getFullYear();\r\n const yearStart = startYear ?? currentYear - 10;\r\n const yearEnd = endYear ?? currentYear + 10;\r\n\r\n const visualStatus: SelectStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n const handleChange = (newValue: DateSelectValue) => {\r\n if (helperText) setIsHelperDismissed(true);\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n if (newValue.mode !== \"interval\") {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n const handleIntervalApply = () => {\r\n if (!intervalStart || !intervalEnd) return;\r\n const newValue: DateSelectValue = {\r\n mode: \"interval\",\r\n startDate: intervalStart,\r\n endDate: intervalEnd,\r\n };\r\n if (helperText) setIsHelperDismissed(true);\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n setIsOpen(false);\r\n };\r\n\r\n const handleIntervalClear = () => {\r\n setIntervalStart(undefined);\r\n setIntervalEnd(undefined);\r\n setHoverDate(undefined);\r\n const newValue: DateSelectValue = { mode: \"interval\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const handleMonthClear = () => {\r\n const newValue: DateSelectValue = { mode: \"month\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const handleDayClear = () => {\r\n const newValue: DateSelectValue = { mode: \"day\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const handleYearClear = () => {\r\n const newValue: DateSelectValue = { mode: \"year\" };\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n };\r\n\r\n const displayText = useMemo(() => {\r\n if (value.mode === \"year\" && value.year) return value.year.toString();\r\n if (value.mode === \"month\" && value.year != null)\r\n return `${MONTHS_SHORT[value.month || 0]} ${value.year}`;\r\n if (value.mode === \"day\" && value.year != null)\r\n return `${value.day}/${(value.month ?? 0) + 1}/${value.year}`;\r\n if (value.mode === \"interval\" && value.startDate && value.endDate) {\r\n return `${value.startDate.toLocaleDateString(\"pt-BR\")} - ${value.endDate.toLocaleDateString(\"pt-BR\")}`;\r\n }\r\n return null;\r\n }, [value]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\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 document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (!isOpen) return;\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 document.addEventListener(\"keydown\", handleEscape);\r\n return () => document.removeEventListener(\"keydown\", handleEscape);\r\n }, [isOpen]);\r\n\r\n useEffect(() => {\r\n if (!isOpen || !innerRef.current || !dropdownRef.current) return;\r\n\r\n const triggerRect = innerRef.current.getBoundingClientRect();\r\n const dropdownWidth = activeMode === \"interval\" ? 720 : 385;\r\n const spaceLeft = triggerRect.left;\r\n const spaceRight = window.innerWidth - triggerRect.right;\r\n\r\n if (spaceLeft < dropdownWidth && spaceRight >= dropdownWidth) {\r\n setDropdownAlign(\"right\");\r\n } else {\r\n setDropdownAlign(\"left\");\r\n }\r\n }, [isOpen, activeMode]);\r\n\r\n const getDaysInMonth = (year: number, month: number) => new Date(year, month + 1, 0).getDate();\r\n const getFirstDayOfMonth = (year: number, month: number) => new Date(year, month, 1).getDay();\r\n\r\n const isSameDay = (a: Date, b: Date) =>\r\n a.getFullYear() === b.getFullYear() &&\r\n a.getMonth() === b.getMonth() &&\r\n a.getDate() === b.getDate();\r\n\r\n const isInRange = (date: Date, start?: Date, end?: Date) => {\r\n if (!start) return false;\r\n const ref = end ?? hoverDate;\r\n if (!ref) return false;\r\n const [lo, hi] = start <= ref ? [start, ref] : [ref, start];\r\n return date > lo && date < hi;\r\n };\r\n\r\n const renderModeTabs = () => {\r\n if (availableModes.length <= 1) return null;\r\n return (\r\n <div className=\"rh-flex rh-border-b rh-border-border rh-bg-transparent\">\r\n {availableModes.map((option) => (\r\n <button\r\n key={option.value}\r\n onClick={() => setActiveMode(option.value)}\r\n className={[\r\n \"rh-flex-1 rh-py-2 rh-px-4 rh-text-sm rh-transition-colors rh-duration-150 rh-text-text rh-font-bold\",\r\n \"rh-border-b-2 -rh-mb-px\",\r\n activeMode === option.value\r\n ? \"rh-border-primary\"\r\n : \"rh-border-transparent hover:rh-border-border\",\r\n ].join(\" \")}\r\n >\r\n {option.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderYearGrid = () => (\r\n <div className=\"rh-p-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => setYearGridStart((s) => s - 12)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {yearGridStart} – {yearGridStart + 11}\r\n </span>\r\n <button\r\n onClick={() => setYearGridStart((s) => s + 12)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n <div className=\"rh-grid rh-grid-cols-4 rh-gap-2\">\r\n {Array.from({ length: 12 }, (_, i) => yearGridStart + i).map((year) => {\r\n const isSelected = value.mode === \"year\" && value.year === year;\r\n const outOfRange = year < yearStart || year > yearEnd;\r\n return (\r\n <button\r\n key={year}\r\n disabled={outOfRange}\r\n onClick={() => handleChange({ mode: \"year\", year })}\r\n className={[\r\n \"rh-rounded-sm rh-py-4 rh-w-auto rh-text-sm rh-transition-colors rh-duration-150 rh-border-border rh-border\",\r\n isSelected\r\n ? \"rh-bg-primary rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n outOfRange ? \"rh-opacity-30 rh-cursor-not-allowed\" : \"\",\r\n ].join(\" \")}\r\n >\r\n {year}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleYearClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n\r\n const renderMonthGrid = () => (\r\n <div className=\"rh-p-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => setSelectedYear((y) => y - 1)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{selectedYear}</span>\r\n <button\r\n onClick={() => setSelectedYear((y) => y + 1)}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n <div className=\"rh-grid rh-grid-cols-4 rh-gap-2\">\r\n {MONTHS.map((month, index) => {\r\n const isSelected =\r\n value.mode === \"month\" && value.year === selectedYear && value.month === index;\r\n return (\r\n <button\r\n key={month}\r\n onClick={() => handleChange({ mode: \"month\", year: selectedYear, month: index })}\r\n className={[\r\n \"rh-rounded-sm rh-py-4 rh-w-auto rh-text-sm rh-transition-colors rh-duration-150 rh-border-border rh-border\",\r\n isSelected\r\n ? \"rh-bg-primary rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {month}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleMonthClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n\r\n const renderIntervalNav = () => (\r\n <div>\r\n <div className=\"rh-flex rh-gap-4 rh-p-1\">\r\n <div className=\"rh-flex-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 0) {\r\n setSelectedMonth(11);\r\n setSelectedYear((y) => y - 1);\r\n } else setSelectedMonth((m) => m - 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {MONTHS[selectedMonth]} - {selectedYear}\r\n </span>\r\n <div className=\"rh-w-7\" />\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n\r\n <div className=\"rh-grid rh-grid-cols-7 rh-mb-1\">\r\n {[\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"].map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n {renderIntervalDays(selectedYear, selectedMonth)}\r\n </div>\r\n <div className=\"rh-w-px rh-bg-border/30 rh-self-stretch\" />\r\n <div className=\"rh-flex-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <div className=\"rh-w-7\" />\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {MONTHS[rightMonth]} - {rightYear}\r\n </span>\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 11) {\r\n setSelectedMonth(0);\r\n setSelectedYear((y) => y + 1);\r\n } else setSelectedMonth((m) => m + 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n\r\n <div className=\"rh-grid rh-grid-cols-7 rh-mb-1\">\r\n {[\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"].map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n {renderIntervalDays(rightYear, rightMonth)}\r\n </div>\r\n </div>\r\n\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleIntervalClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n\r\n <button\r\n onClick={handleIntervalApply}\r\n disabled={!intervalStart || !intervalEnd}\r\n style={{\r\n backgroundColor: intervalStart && intervalEnd ? \"#87A851\" : \"#87A85180\",\r\n pointerEvents: !intervalStart || !intervalEnd ? \"none\" : \"auto\",\r\n }}\r\n className={[\r\n \"rh-text-sm rh-font-medium rh-px-4 rh-py-1.5 rh-rounded-lg rh-transition-colors rh-duration-150\",\r\n intervalStart && intervalEnd\r\n ? \"rh-text-surface hover:rh-opacity-90\"\r\n : \" rh-text-surface\",\r\n ].join(\" \")}\r\n >\r\n Aplicar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n\r\n const renderIntervalDays = (calYear: number, calMonth: number) => {\r\n const daysInMonth = getDaysInMonth(calYear, calMonth);\r\n const firstDay = getFirstDayOfMonth(calYear, calMonth);\r\n const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);\r\n\r\n const prevMonth = calMonth === 0 ? 11 : calMonth - 1;\r\n const prevYear = calMonth === 0 ? calYear - 1 : calYear;\r\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\r\n const prevDays = Array.from(\r\n { length: firstDay },\r\n (_, i) => daysInPrevMonth - firstDay + i + 1,\r\n );\r\n\r\n const totalCells = firstDay + daysInMonth;\r\n const nextDaysCount = totalCells % 7 === 0 ? 0 : 7 - (totalCells % 7);\r\n const nextDays = Array.from({ length: nextDaysCount }, (_, i) => i + 1);\r\n\r\n const handleDayClick = (day: number) => {\r\n const clicked = new Date(calYear, calMonth, day);\r\n if (!intervalStart || (intervalStart && intervalEnd)) {\r\n setIntervalStart(clicked);\r\n setIntervalEnd(undefined);\r\n } else {\r\n const [lo, hi] =\r\n clicked >= intervalStart ? [intervalStart, clicked] : [clicked, intervalStart];\r\n setIntervalStart(lo);\r\n setIntervalEnd(hi);\r\n }\r\n };\r\n\r\n const getDayClasses = (day: number) => {\r\n const date = new Date(calYear, calMonth, day);\r\n const isStart = intervalStart && isSameDay(date, intervalStart);\r\n const isEnd = intervalEnd && isSameDay(date, intervalEnd);\r\n const isHoverEnd = !intervalEnd && hoverDate && isSameDay(date, hoverDate) && intervalStart;\r\n const inRange = isInRange(date, intervalStart, intervalEnd);\r\n const inHoverRange = !intervalEnd && isInRange(date, intervalStart, hoverDate);\r\n\r\n return [\r\n \"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-transition-colors rh-duration-150 \",\r\n \"rh-rounded-lg\",\r\n isStart || isEnd ? \"rh-bg-primary rh-text-surface\" : \"\",\r\n isHoverEnd && !isStart ? \"rh-bg-primary/70 rh-text-surface\" : \"\",\r\n inRange || inHoverRange ? \"rh-bg-primary/10 rh-text-text\" : \"\",\r\n !isStart && !isEnd && !inRange && !inHoverRange && !isHoverEnd\r\n ? \"rh-text-text hover:rh-ring-1 hover:rh-ring-[#15607A]\"\r\n : \"\",\r\n ].join(\" \");\r\n };\r\n\r\n return (\r\n <div className=\"rh-grid rh-grid-cols-7 rh-gap-0 rh-text-center\">\r\n {prevDays.map((d, i) => (\r\n <div\r\n key={`prev-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n {days.map((day) => (\r\n <button\r\n key={day}\r\n onClick={() => handleDayClick(day)}\r\n onMouseEnter={() => {\r\n if (intervalStart && !intervalEnd) {\r\n setHoverDate(new Date(calYear, calMonth, day));\r\n }\r\n }}\r\n onMouseLeave={() => setHoverDate(undefined)}\r\n className={getDayClasses(day)}\r\n >\r\n {day}\r\n </button>\r\n ))}\r\n {nextDays.map((d, i) => (\r\n <div\r\n key={`next-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const renderContent = () => {\r\n switch (activeMode) {\r\n case \"interval\":\r\n return renderIntervalNav();\r\n case \"day\":\r\n return (\r\n <div className=\"rh-p-1\">\r\n <div className=\"rh-flex rh-items-center rh-justify-between\">\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 0) {\r\n setSelectedMonth(11);\r\n setSelectedYear((y) => y - 1);\r\n } else setSelectedMonth((m) => m - 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronLeftIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\r\n {MONTHS[selectedMonth]} - {selectedYear}\r\n </span>\r\n <button\r\n onClick={() => {\r\n if (selectedMonth === 11) {\r\n setSelectedMonth(0);\r\n setSelectedYear((y) => y + 1);\r\n } else setSelectedMonth((m) => m + 1);\r\n }}\r\n className=\"rh-p-1 hover:rh-bg-background rh-rounded\"\r\n >\r\n <ChevronRightIcon className=\"rh-w-5 rh-h-5\" />\r\n </button>\r\n </div>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"100%\"\r\n height=\"1\"\r\n viewBox=\"0 0 350 1\"\r\n fill=\"none\"\r\n className=\"rh-mb-3\"\r\n >\r\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\r\n </svg>\r\n <div className=\"rh-grid rh-grid-cols-7 rh-mb-1\">\r\n {[\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"].map((d, i) => (\r\n <div\r\n key={i}\r\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n {renderDayGrid(selectedYear, selectedMonth)}\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-pt-3 rh-mt-3 rh-border-t rh-border-border/30\">\r\n <button\r\n onClick={handleDayClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon className=\"rh-w-4 rh-h-4\" />\r\n Limpar\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n case \"month\":\r\n return renderMonthGrid();\r\n case \"year\":\r\n return renderYearGrid();\r\n }\r\n };\r\n\r\n const renderDayGrid = (calYear: number, calMonth: number) => {\r\n const daysInMonth = getDaysInMonth(calYear, calMonth);\r\n const firstDay = getFirstDayOfMonth(calYear, calMonth);\r\n const days = Array.from({ length: daysInMonth }, (_, i) => i + 1);\r\n\r\n const prevMonth = calMonth === 0 ? 11 : calMonth - 1;\r\n const prevYear = calMonth === 0 ? calYear - 1 : calYear;\r\n const daysInPrevMonth = getDaysInMonth(prevYear, prevMonth);\r\n const prevDays = Array.from(\r\n { length: firstDay },\r\n (_, i) => daysInPrevMonth - firstDay + i + 1,\r\n );\r\n\r\n const totalCells = firstDay + daysInMonth;\r\n const nextDaysCount = totalCells % 7 === 0 ? 0 : 7 - (totalCells % 7);\r\n const nextDays = Array.from({ length: nextDaysCount }, (_, i) => i + 1);\r\n\r\n return (\r\n <div className=\"rh-grid rh-grid-cols-7 rh-gap-0\">\r\n {prevDays.map((d, i) => (\r\n <div\r\n key={`prev-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n {days.map((day) => {\r\n const isSelected =\r\n value.mode === \"day\" &&\r\n value.year === calYear &&\r\n value.month === calMonth &&\r\n value.day === day;\r\n return (\r\n <button\r\n key={day}\r\n onClick={() => handleChange({ mode: \"day\", year: calYear, month: calMonth, day })}\r\n className={[\r\n \"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-rounded-lg rh-transition-colors rh-duration-150\",\r\n isSelected\r\n ? \"rh-bg-primary rh-text-surface\"\r\n : \"rh-text-text hover:rh-ring-1 hover:rh-ring-[#15607A]\",\r\n ].join(\" \")}\r\n >\r\n {day}\r\n </button>\r\n );\r\n })}\r\n {nextDays.map((d, i) => (\r\n <div\r\n key={`next-${i}`}\r\n className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\"\r\n >\r\n {d}\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={[\"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label id={`${triggerId}-label`} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{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=\"dialog\"\r\n aria-labelledby={label ? `${triggerId}-label` : undefined}\r\n aria-describedby={helperText ? helperId : undefined}\r\n aria-invalid={visualStatus === \"error\" || undefined}\r\n aria-disabled={disabled || undefined}\r\n disabled={disabled}\r\n onClick={() => !disabled && setIsOpen((o) => !o)}\r\n style={backgroundColor ? { backgroundColor } : undefined}\r\n className={[\r\n \"rh-group rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-font-body\",\r\n !backgroundColor && \"rh-bg-surface\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"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 group-hover:rh-text-text\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n <ChevronIcon\r\n className={[\r\n \"rh-w-4 rh-h-4 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150 rh-bg-surface rh-rounded-xl\",\r\n isOpen ? \"rh-rotate-180\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n />\r\n </button>\r\n\r\n {isOpen && (\r\n <div\r\n ref={dropdownRef}\r\n className={[\r\n \"rh-absolute rh-z-50 rh-mt-1 rh-p-5\",\r\n \"rh-bg-surface rh-rounded-md\",\r\n dropdownRadiusClasses[radius],\r\n activeMode === \"interval\" ? \"rh-w-[720px]\" : \"rh-w-[385px]\",\r\n dropdownAlign === \"left\" ? \"rh-right-0\" : \"rh-left-0\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{\r\n top: \"100%\",\r\n boxShadow: \"0 0 9.6px 0 rgba(8, 11, 18, 0.08)\",\r\n }}\r\n >\r\n {renderModeTabs()}\r\n <div className={availableModes.length > 1 ? \"rh-mt-2\" : \"\"}>{renderContent()}</div>\r\n </div>\r\n )}\r\n\r\n {helperText && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\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, useCallback, useEffect, useRef, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport { WarningCircleIcon } from \"../../icons\";\r\nimport type { SelectRadius, SelectSize, SelectStatus } from \"../Select/Select\";\r\n\r\n// ── Types ─────────────────────────────────────────────────────────────────────\r\n\r\nexport type TimePickerValue = {\r\n hour: number;\r\n minute: number;\r\n};\r\n\r\nexport type TimePickerPresentation = \"dropdown\" | \"clock\";\r\n\r\nexport type TimePickerProps = {\r\n /** Label displayed above the field */\r\n label?: string;\r\n /** Secondary text next to the label; use \"*\" to render a red asterisk */\r\n subtitle?: string;\r\n /** Text displayed when no time is selected */\r\n placeholder?: string;\r\n /** Visual state: \"default\" | \"error\" */\r\n status?: SelectStatus;\r\n /** Field size: \"sm\" | \"md\" | \"lg\" */\r\n size?: SelectSize;\r\n /** Border radius */\r\n radius?: SelectRadius;\r\n /** Helper or error message below the field */\r\n helperText?: React.ReactNode;\r\n /** Disables the field */\r\n disabled?: boolean;\r\n /** CSS class applied to the trigger element */\r\n className?: string;\r\n /** CSS class applied to the outer wrapper */\r\n wrapperClassName?: string;\r\n /** Controlled value */\r\n value?: TimePickerValue;\r\n /** Uncontrolled initial value */\r\n defaultValue?: TimePickerValue;\r\n /** Called when the selected time changes */\r\n onChange?: (value: TimePickerValue) => void;\r\n /** Custom background color for the trigger button */\r\n backgroundColor?: string;\r\n /** Picker presentation: compact dropdown or clock dialog */\r\n presentation?: TimePickerPresentation;\r\n};\r\n\r\n// ── Constants ─────────────────────────────────────────────────────────────────\r\n\r\nconst HOURS = Array.from({ length: 24 }, (_, i) => i);\r\nconst MINUTES = Array.from({ length: 60 }, (_, i) => i);\r\nconst ITEM_HEIGHT = 36;\r\nconst CLOCK_HOURS_OUTER = [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\r\nconst CLOCK_HOURS_INNER = [0, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23];\r\nconst CLOCK_MINUTES = Array.from({ length: 12 }, (_, index) => index * 5);\r\n\r\nconst pad = (n: number) => String(n).padStart(2, \"0\");\r\nconst clampClockPart = (value: number, max: number) => Math.min(max, Math.max(0, value));\r\n\r\n// ── Style maps ────────────────────────────────────────────────────────────────\r\n\r\nconst statusClasses: Record<SelectStatus, string> = {\r\n default:\r\n \"rh-border-border focus-within:rh-border-primary focus-within:rh-ring-2 focus-within:rh-ring-gray-200\",\r\n error:\r\n \"rh-border-danger focus-within:rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-red-100\",\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 helperStatusClasses: Record<SelectStatus, string> = {\r\n default: \"rh-text-text-muted\",\r\n error: \"rh-text-danger\",\r\n};\r\n\r\nconst getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\r\n\r\n// ── Icons ─────────────────────────────────────────────────────────────────────\r\n\r\nconst ClockIcon = () => (\r\n <svg\r\n width=\"16\"\r\n height=\"16\"\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 >\r\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\r\n <polyline points=\"12 6 12 12 16 14\" />\r\n </svg>\r\n);\r\n\r\nconst EraserIcon = () => (\r\n <svg width=\"15\" height=\"14\" viewBox=\"0 0 17 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\r\n <path\r\n d=\"M15.3134 13.7509H9.45406L16.2384 6.96656C16.4416 6.76343 16.6027 6.52227 16.7127 6.25686C16.8226 5.99145 16.8792 5.70697 16.8792 5.41969C16.8792 5.1324 16.8226 4.84793 16.7127 4.58252C16.6027 4.3171 16.4416 4.07594 16.2384 3.87281L13.0033 0.640783C12.8002 0.437631 12.559 0.276481 12.2936 0.166535C12.0282 0.0565888 11.7437 0 11.4564 0C11.1691 0 10.8846 0.0565888 10.6192 0.166535C10.3538 0.276481 10.1127 0.437631 9.90953 0.640783L0.640783 9.90875C0.437631 10.1119 0.276481 10.353 0.166535 10.6185C0.0565888 10.8839 0 11.1683 0 11.4556C0 11.7429 0.0565888 12.0274 0.166535 12.2928C0.276481 12.5582 0.437631 12.7994 0.640783 13.0025L2.98922 15.3517C3.07635 15.4388 3.17977 15.5078 3.29358 15.5548C3.40739 15.6019 3.52935 15.626 3.6525 15.6259H15.3134C15.5621 15.6259 15.8005 15.5272 15.9763 15.3514C16.1522 15.1755 16.2509 14.9371 16.2509 14.6884C16.2509 14.4398 16.1522 14.2013 15.9763 14.0255C15.8005 13.8497 15.5621 13.7509 15.3134 13.7509Z\"\r\n fill=\"currentColor\"\r\n />\r\n </svg>\r\n);\r\n\r\nconst PencilIcon = () => (\r\n <svg\r\n width=\"20\"\r\n height=\"20\"\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 >\r\n <path d=\"M4 20h4L19 9a2.828 2.828 0 1 0-4-4L4 16v4Z\" />\r\n <path d=\"m13.5 6.5 4 4\" />\r\n </svg>\r\n);\r\n\r\n// ── Column scroll helper ───────────────────────────────────────────────────────\r\n\r\nfunction scrollToSelected(ref: React.RefObject<HTMLDivElement | null>, index: number) {\r\n const el = ref.current;\r\n if (!el) return;\r\n const target = index * ITEM_HEIGHT - el.clientHeight / 2 + ITEM_HEIGHT / 2;\r\n el.scrollTop = Math.max(0, target);\r\n}\r\n\r\nfunction getClockPosition(index: number, radius: number) {\r\n const angle = (index / 12) * Math.PI * 2 - Math.PI / 2;\r\n return {\r\n left: `calc(50% + ${Math.cos(angle) * radius}px)`,\r\n top: `calc(50% + ${Math.sin(angle) * radius}px)`,\r\n };\r\n}\r\n\r\nfunction getRehagroPortalStyle(source: HTMLElement | null): React.CSSProperties | undefined {\r\n const root = source?.closest<HTMLElement>(\".rh-root\");\r\n if (!root) return undefined;\r\n\r\n const variables: Record<string, string> = {};\r\n\r\n for (let index = 0; index < root.style.length; index += 1) {\r\n const property = root.style.item(index);\r\n if (!property.startsWith(\"--rh-\")) continue;\r\n\r\n variables[property] = root.style.getPropertyValue(property);\r\n }\r\n\r\n return variables as React.CSSProperties;\r\n}\r\n\r\n// ── Component ─────────────────────────────────────────────────────────────────\r\n\r\nexport const TimePicker = forwardRef<HTMLButtonElement, TimePickerProps>(\r\n function TimePicker(props, ref) {\r\n const {\r\n label,\r\n subtitle,\r\n placeholder = \"Selecione\",\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 backgroundColor,\r\n presentation = \"dropdown\",\r\n } = props;\r\n\r\n const triggerId = React.useId();\r\n const helperId = React.useId();\r\n\r\n const isControlled = props.value !== undefined;\r\n const [internalValue, setInternalValue] = useState<TimePickerValue | null>(\r\n props.defaultValue ?? null,\r\n );\r\n const committedValue: TimePickerValue | null = isControlled\r\n ? (props.value ?? null)\r\n : internalValue;\r\n\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [isHelperDismissed, setIsHelperDismissed] = useState(false);\r\n const [dropdownAlign, setDropdownAlign] = useState<\"left\" | \"right\">(\"left\");\r\n const [clockStep, setClockStep] = useState<\"hour\" | \"minute\">(\"hour\");\r\n const [isManualClockInput, setIsManualClockInput] = useState(false);\r\n const [hasPendingValue, setHasPendingValue] = useState(committedValue != null);\r\n\r\n const [pendingHour, setPendingHour] = useState<number>(committedValue?.hour ?? 0);\r\n const [pendingMinute, setPendingMinute] = useState<number>(committedValue?.minute ?? 0);\r\n\r\n const wrapperRef = useRef<HTMLDivElement>(null);\r\n const innerRef = useRef<HTMLButtonElement>(null);\r\n const dropdownRef = useRef<HTMLDivElement>(null);\r\n const hourColRef = useRef<HTMLDivElement>(null);\r\n const minuteColRef = useRef<HTMLDivElement>(null);\r\n\r\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\r\n\r\n const visualStatus: SelectStatus = helperText && isHelperDismissed ? \"default\" : status;\r\n\r\n // Sync pending state when dropdown opens\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n const h = committedValue?.hour ?? 0;\r\n const m = committedValue?.minute ?? 0;\r\n setPendingHour(h);\r\n setPendingMinute(m);\r\n setClockStep(\"hour\");\r\n setIsManualClockInput(false);\r\n setHasPendingValue(committedValue != null);\r\n // Scroll after paint\r\n if (presentation === \"dropdown\") {\r\n requestAnimationFrame(() => {\r\n scrollToSelected(hourColRef, h);\r\n scrollToSelected(minuteColRef, m);\r\n });\r\n }\r\n }, [isOpen]); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n // Reposition dropdown (left/right alignment)\r\n useEffect(() => {\r\n if (!isOpen || presentation !== \"dropdown\" || !innerRef.current) return;\r\n const rect = innerRef.current.getBoundingClientRect();\r\n const dropdownW = 240;\r\n setDropdownAlign(window.innerWidth - rect.right >= dropdownW ? \"left\" : \"right\");\r\n }, [isOpen, presentation]);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!isOpen || presentation !== \"dropdown\") return;\r\n const handler = (e: MouseEvent) => {\r\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handler);\r\n return () => document.removeEventListener(\"mousedown\", handler);\r\n }, [isOpen, presentation]);\r\n\r\n // Close on Escape\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n const handler = (e: KeyboardEvent) => {\r\n if (e.key === \"Escape\") {\r\n setIsOpen(false);\r\n innerRef.current?.focus();\r\n }\r\n };\r\n document.addEventListener(\"keydown\", handler);\r\n return () => document.removeEventListener(\"keydown\", handler);\r\n }, [isOpen]);\r\n\r\n const commit = useCallback(\r\n (hour: number, minute: number) => {\r\n const newValue: TimePickerValue = { hour, minute };\r\n if (helperText) setIsHelperDismissed(true);\r\n if (!isControlled) setInternalValue(newValue);\r\n props.onChange?.(newValue);\r\n setIsOpen(false);\r\n },\r\n [helperText, isControlled, props],\r\n );\r\n\r\n const handleClear = useCallback(() => {\r\n setPendingHour(0);\r\n setPendingMinute(0);\r\n if (!isControlled) setInternalValue(null);\r\n props.onChange?.(undefined as unknown as TimePickerValue);\r\n setIsOpen(false);\r\n }, [isControlled, props]);\r\n\r\n const displayText =\r\n committedValue != null ? `${pad(committedValue.hour)}:${pad(committedValue.minute)}` : null;\r\n const clockDisplayText = hasPendingValue\r\n ? `${pad(pendingHour)}:${pad(pendingMinute)}`\r\n : \"--:--\";\r\n\r\n const closeClockDialog = () => {\r\n setIsOpen(false);\r\n innerRef.current?.focus();\r\n };\r\n\r\n const handleClockHourChange = (hour: number) => {\r\n setPendingHour(hour);\r\n setHasPendingValue(true);\r\n setClockStep(\"minute\");\r\n };\r\n\r\n const handleClockMinuteChange = (minute: number) => {\r\n setPendingMinute(minute);\r\n setHasPendingValue(true);\r\n };\r\n\r\n const handleManualClockChange = (part: \"hour\" | \"minute\", value: string) => {\r\n const numericValue = Number(value.replace(/\\D/g, \"\"));\r\n if (Number.isNaN(numericValue)) return;\r\n\r\n if (part === \"hour\") {\r\n setPendingHour(clampClockPart(numericValue, 23));\r\n } else {\r\n setPendingMinute(clampClockPart(numericValue, 59));\r\n }\r\n\r\n setHasPendingValue(true);\r\n };\r\n\r\n const clockHourButton = (hour: number, index: number, radius: number) => {\r\n const selected = hasPendingValue && pendingHour === hour;\r\n const position = getClockPosition(index, radius);\r\n\r\n return (\r\n <button\r\n key={hour}\r\n type=\"button\"\r\n aria-label={`${pad(hour)} horas`}\r\n onClick={() => handleClockHourChange(hour)}\r\n className={[\r\n \"rh-absolute rh-flex rh-h-8 rh-w-8 -rh-translate-x-1/2 -rh-translate-y-1/2 rh-items-center rh-justify-center rh-rounded-full rh-text-sm rh-transition-colors rh-duration-150\",\r\n selected\r\n ? \"rh-bg-primary rh-font-semibold rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-border/40\",\r\n ].join(\" \")}\r\n style={position}\r\n >\r\n {pad(hour)}\r\n </button>\r\n );\r\n };\r\n\r\n const clockMinuteButton = (minute: number, index: number) => {\r\n const selected = hasPendingValue && pendingMinute === minute;\r\n const position = getClockPosition(index, 102);\r\n\r\n return (\r\n <button\r\n key={minute}\r\n type=\"button\"\r\n aria-label={`${pad(minute)} minutos`}\r\n onClick={() => handleClockMinuteChange(minute)}\r\n className={[\r\n \"rh-absolute rh-flex rh-h-8 rh-w-8 -rh-translate-x-1/2 -rh-translate-y-1/2 rh-items-center rh-justify-center rh-rounded-full rh-text-sm rh-transition-colors rh-duration-150\",\r\n selected\r\n ? \"rh-bg-primary rh-font-semibold rh-text-surface\"\r\n : \"rh-text-text hover:rh-bg-border/40\",\r\n ].join(\" \")}\r\n style={position}\r\n >\r\n {pad(minute)}\r\n </button>\r\n );\r\n };\r\n\r\n return (\r\n <div\r\n ref={wrapperRef}\r\n className={[\"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-body\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label */}\r\n {label && (\r\n <label id={`${triggerId}-label`} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{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=\"dialog\"\r\n aria-labelledby={label ? `${triggerId}-label` : undefined}\r\n aria-describedby={helperText ? helperId : undefined}\r\n aria-invalid={visualStatus === \"error\" || undefined}\r\n aria-disabled={disabled || undefined}\r\n disabled={disabled}\r\n onClick={() => !disabled && setIsOpen((o) => !o)}\r\n style={backgroundColor ? { backgroundColor } : undefined}\r\n className={[\r\n \"rh-group rh-flex rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-font-body\",\r\n !backgroundColor && \"rh-bg-surface\",\r\n \"rh-transition-colors rh-duration-150\",\r\n \"rh-text-left rh-w-full\",\r\n statusClasses[visualStatus],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"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 group-hover:rh-text-text\",\r\n ].join(\" \")}\r\n >\r\n {displayText ?? placeholder}\r\n </span>\r\n <ClockIcon />\r\n </button>\r\n\r\n {/* Dropdown */}\r\n {isOpen && presentation === \"dropdown\" && (\r\n <div\r\n ref={dropdownRef}\r\n role=\"dialog\"\r\n aria-label=\"Seletor de hora\"\r\n className={[\r\n \"rh-absolute rh-z-50 rh-mt-1\",\r\n \"rh-bg-surface rh-rounded-xs rh-border rh-border-border\",\r\n \"rh-w-[240px]\",\r\n dropdownAlign === \"left\" ? \"rh-left-0\" : \"rh-right-0\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={{\r\n top: \"100%\",\r\n boxShadow: \"0 0 9.6px 0 rgba(8, 11, 18, 0.08)\",\r\n }}\r\n >\r\n {/* Column header */}\r\n <div className=\"rh-flex rh-border-b rh-border-border\">\r\n <div className=\"rh-flex-1 rh-py-2 rh-text-center rh-text-xs rh-font-semibold rh-text-text-muted rh-uppercase rh-tracking-wide\">\r\n Hora\r\n </div>\r\n <div className=\"rh-w-px rh-bg-border\" />\r\n <div className=\"rh-flex-1 rh-py-2 rh-text-center rh-text-xs rh-font-semibold rh-text-text-muted rh-uppercase rh-tracking-wide\">\r\n Minuto\r\n </div>\r\n </div>\r\n\r\n {/* Columns */}\r\n <div className=\"rh-flex\" style={{ height: 216 }}>\r\n {/* Hours */}\r\n <div\r\n ref={hourColRef}\r\n className=\"rh-flex-1 rh-overflow-y-auto rh-py-1 rh-scrollbar-thin\"\r\n style={{ scrollbarWidth: \"none\" }}\r\n >\r\n {HOURS.map((h) => {\r\n const selected = h === pendingHour;\r\n return (\r\n <button\r\n key={h}\r\n type=\"button\"\r\n onClick={() => setPendingHour(h)}\r\n style={{ height: ITEM_HEIGHT }}\r\n className={[\r\n \"rh-w-full rh-flex rh-items-center rh-justify-center rh-text-sm rh-transition-colors rh-duration-100\",\r\n selected\r\n ? \"rh-bg-primary rh-text-surface rh-font-semibold\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {pad(h)}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"rh-w-px rh-bg-border rh-self-stretch\" />\r\n\r\n {/* Minutes */}\r\n <div\r\n ref={minuteColRef}\r\n className=\"rh-flex-1 rh-overflow-y-auto rh-py-1\"\r\n style={{ scrollbarWidth: \"none\" }}\r\n >\r\n {MINUTES.map((m) => {\r\n const selected = m === pendingMinute;\r\n return (\r\n <button\r\n key={m}\r\n type=\"button\"\r\n onClick={() => setPendingMinute(m)}\r\n style={{ height: ITEM_HEIGHT }}\r\n className={[\r\n \"rh-w-full rh-flex rh-items-center rh-justify-center rh-text-sm rh-transition-colors rh-duration-100\",\r\n selected\r\n ? \"rh-bg-primary rh-text-surface rh-font-semibold\"\r\n : \"rh-text-text hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {pad(m)}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n\r\n {/* Footer */}\r\n <div className=\"rh-flex rh-items-center rh-justify-between rh-px-3 rh-py-2 rh-border-t rh-border-border\">\r\n <button\r\n type=\"button\"\r\n onClick={handleClear}\r\n className=\"rh-flex rh-items-center rh-gap-1.5 rh-text-sm rh-text-text rh-font-medium rh-px-2 rh-py-1.5 rh-rounded-sm hover:rh-bg-background rh-transition-colors rh-duration-150\"\r\n >\r\n <EraserIcon />\r\n Limpar\r\n </button>\r\n\r\n <button\r\n type=\"button\"\r\n onClick={() => commit(pendingHour, pendingMinute)}\r\n className=\"rh-text-sm rh-font-medium rh-px-4 rh-py-1.5 rh-rounded-lg rh-bg-primary rh-text-surface hover:rh-opacity-90 rh-transition-opacity rh-duration-150\"\r\n >\r\n Aplicar\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n\r\n {isOpen &&\r\n presentation === \"clock\" &&\r\n typeof document !== \"undefined\" &&\r\n createPortal(\r\n <div className=\"rh-root\" style={getRehagroPortalStyle(wrapperRef.current)}>\r\n <div\r\n role=\"presentation\"\r\n className=\"rh-fixed rh-inset-0 rh-z-50 rh-flex rh-items-center rh-justify-center rh-bg-text/50 rh-p-4\"\r\n onMouseDown={(event) => {\r\n if (event.target === event.currentTarget) closeClockDialog();\r\n }}\r\n >\r\n <div\r\n ref={dropdownRef}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n aria-label=\"Seletor de hora\"\r\n className=\"rh-flex rh-w-full rh-max-w-[360px] rh-flex-col rh-rounded-sm rh-bg-surface rh-p-6 rh-text-text\"\r\n style={{ boxShadow: \"0 24px 48px rgb(8 11 18 / 0.24)\" }}\r\n >\r\n <span className=\"rh-text-sm rh-font-normal rh-uppercase rh-text-text-muted\">\r\n Selecione a hora\r\n </span>\r\n\r\n <div className=\"rh-mt-6 rh-flex rh-items-center rh-justify-between\">\r\n {isManualClockInput ? (\r\n <div className=\"rh-flex rh-items-center rh-gap-2\">\r\n <input\r\n aria-label=\"Hora\"\r\n inputMode=\"numeric\"\r\n maxLength={2}\r\n value={pad(pendingHour)}\r\n onChange={(event) => handleManualClockChange(\"hour\", event.target.value)}\r\n className=\"rh-h-12 rh-w-14 rh-rounded-xs rh-border rh-border-border rh-bg-surface rh-text-center rh-text-2xl rh-font-semibold rh-text-text rh-outline-none focus:rh-border-primary focus:rh-ring-2 focus:rh-ring-gray-200\"\r\n />\r\n <span className=\"rh-text-2xl rh-font-semibold rh-text-text-muted\">:</span>\r\n <input\r\n aria-label=\"Minuto\"\r\n inputMode=\"numeric\"\r\n maxLength={2}\r\n value={pad(pendingMinute)}\r\n onChange={(event) =>\r\n handleManualClockChange(\"minute\", event.target.value)\r\n }\r\n className=\"rh-h-12 rh-w-14 rh-rounded-xs rh-border rh-border-border rh-bg-surface rh-text-center rh-text-2xl rh-font-semibold rh-text-text rh-outline-none focus:rh-border-primary focus:rh-ring-2 focus:rh-ring-gray-200\"\r\n />\r\n </div>\r\n ) : (\r\n <div className=\"rh-flex rh-items-center rh-gap-1 rh-text-2xl rh-font-semibold\">\r\n <button\r\n type=\"button\"\r\n onClick={() => setClockStep(\"hour\")}\r\n className={[\r\n \"rh-rounded-xs rh-px-1 rh-transition-colors rh-duration-150\",\r\n clockStep === \"hour\"\r\n ? \"rh-text-text\"\r\n : \"rh-text-text-muted hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {clockDisplayText.slice(0, 2)}\r\n </button>\r\n <span className=\"rh-text-text-muted\">:</span>\r\n <button\r\n type=\"button\"\r\n onClick={() => setClockStep(\"minute\")}\r\n className={[\r\n \"rh-rounded-xs rh-px-1 rh-transition-colors rh-duration-150\",\r\n clockStep === \"minute\"\r\n ? \"rh-text-text\"\r\n : \"rh-text-text-muted hover:rh-bg-background\",\r\n ].join(\" \")}\r\n >\r\n {clockDisplayText.slice(3, 5)}\r\n </button>\r\n </div>\r\n )}\r\n\r\n <button\r\n type=\"button\"\r\n aria-label={\r\n isManualClockInput ? \"Voltar ao relógio\" : \"Digitar horário manualmente\"\r\n }\r\n onClick={() => setIsManualClockInput((current) => !current)}\r\n className=\"rh-rounded-full rh-p-2 rh-text-text hover:rh-bg-background\"\r\n >\r\n <PencilIcon />\r\n </button>\r\n </div>\r\n\r\n {!isManualClockInput && (\r\n <div className=\"rh-mx-auto rh-mt-8 rh-flex rh-h-[256px] rh-w-[256px] rh-items-center rh-justify-center rh-rounded-full rh-bg-background\">\r\n <div className=\"rh-relative rh-h-full rh-w-full\">\r\n {clockStep === \"hour\" ? (\r\n <>\r\n {CLOCK_HOURS_OUTER.map((hour, index) =>\r\n clockHourButton(hour, index, 102),\r\n )}\r\n {CLOCK_HOURS_INNER.map((hour, index) =>\r\n clockHourButton(hour, index, 68),\r\n )}\r\n </>\r\n ) : (\r\n CLOCK_MINUTES.map((minute, index) => clockMinuteButton(minute, index))\r\n )}\r\n <span className=\"rh-absolute rh-left-1/2 rh-top-1/2 rh-h-2 rh-w-2 -rh-translate-x-1/2 -rh-translate-y-1/2 rh-rounded-full rh-bg-primary\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div className=\"rh-mt-8 rh-flex rh-justify-end rh-gap-6\">\r\n <button\r\n type=\"button\"\r\n onClick={closeClockDialog}\r\n className=\"rh-text-base rh-font-medium rh-uppercase rh-text-primary hover:rh-opacity-80\"\r\n >\r\n Cancelar\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n if (hasPendingValue) commit(pendingHour, pendingMinute);\r\n else closeClockDialog();\r\n }}\r\n className=\"rh-text-base rh-font-medium rh-uppercase rh-text-primary hover:rh-opacity-80\"\r\n >\r\n OK\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>,\r\n document.body,\r\n )}\r\n\r\n {/* Helper text */}\r\n {helperText && !isHelperDismissed && (\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[visualStatus],\r\n ].join(\" \")}\r\n >\r\n <WarningCircleIcon />\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-display 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 \"neutral\",\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 neutral: \"rh-bg-neutral rh-text-surface rh-border-neutral\",\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 neutral: \"rh-bg-neutral/10 rh-text-neutral rh-border-neutral/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 neutral: \"hover:rh-bg-neutral-hover hover:rh-border-neutral-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 neutral: \"hover:rh-bg-neutral/20 hover:rh-border-neutral/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-display 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","import React, { forwardRef, useState, useRef, useEffect } from \"react\";\r\n\r\nexport type TagInputSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TagInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\nexport type TagInputStatus = \"default\" | \"error\";\r\n\r\nexport type TagInputOption = {\r\n value: string;\r\n label: string;\r\n};\r\n\r\nexport type TagInputProps = {\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 /** Available options to select from */\r\n options: TagInputOption[];\r\n /** Current selected values */\r\n value: TagInputOption[];\r\n /** Callback when tags change */\r\n onChange: (tags: TagInputOption[]) => void;\r\n /** Placeholder text when no tags */\r\n placeholder?: string;\r\n /** Validation status */\r\n status?: TagInputStatus;\r\n /** Input size */\r\n size?: TagInputSize;\r\n /** Border radius */\r\n radius?: TagInputRadius;\r\n /** Helper/error message displayed below the input */\r\n helperText?: React.ReactNode;\r\n /** Whether the input is disabled */\r\n disabled?: boolean;\r\n /** Custom class for the outermost wrapper */\r\n wrapperClassName?: string;\r\n /** Custom class for the input container */\r\n className?: string;\r\n};\r\n\r\nconst statusClasses: Record<TagInputStatus, 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<TagInputSize, string> = {\r\n sm: \"rh-min-h-[36px] rh-text-sm rh-px-2 rh-py-1\",\r\n md: \"rh-h-[44px] rh-text-sm rh-px-2 rh-py-[6px]\",\r\n lg: \"rh-min-h-[52px] rh-text-base rh-px-3 rh-py-2\",\r\n};\r\n\r\nconst radiusClasses: Record<TagInputRadius, 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-[8px]\",\r\n lg: \"rh-rounded-lg\",\r\n xl: \"rh-rounded-xl\",\r\n full: \"rh-rounded-full\",\r\n};\r\n\r\nconst helperStatusClasses: Record<TagInputStatus, string> = {\r\n default: \"rh-text-text-muted\",\r\n error: \"rh-text-danger\",\r\n};\r\n\r\nconst tagSizeClasses: Record<TagInputSize, string> = {\r\n sm: \"rh-h-6 rh-text-xs rh-py-0.5 rh-px-1.5\",\r\n md: \"rh-h-[28px] rh-text-sm rh-py-[2px] rh-px-[6px]\",\r\n lg: \"rh-h-8 rh-text-sm rh-py-0.5 rh-px-2\",\r\n};\r\n\r\nconst deleteButtonSizeClasses: Record<TagInputSize, string> = {\r\n sm: \"rh-w-3 rh-h-3\",\r\n md: \"rh-w-[12px] rh-h-[12px]\",\r\n lg: \"rh-w-4 rh-h-4\",\r\n};\r\n\r\nconst addButtonSizeClasses: Record<TagInputSize, 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\n// Mirrors `TextInput#getSubtitleClassName`: a subtitle of just `*`\r\n// is treated as a \"required\" marker and rendered in danger color.\r\n// Any other subtitle stays muted (descriptive helper text style).\r\nconst getSubtitleClassName = (subtitle: string) =>\r\n subtitle.trim() === \"*\" ? \"rh-text-danger\" : \"rh-text-text-muted\";\r\n\r\nexport const TagInput = forwardRef<HTMLDivElement, TagInputProps>(function TagInput(\r\n {\r\n label,\r\n subtitle,\r\n options = [],\r\n value = [],\r\n onChange,\r\n placeholder,\r\n status = \"default\",\r\n size = \"md\",\r\n radius = \"md\",\r\n helperText,\r\n disabled,\r\n className = \"\",\r\n wrapperClassName = \"\",\r\n },\r\n ref,\r\n) {\r\n const inputId = React.useId();\r\n const [isOpen, setIsOpen] = useState(false);\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n // Fechar dropdown ao clicar fora\r\n useEffect(() => {\r\n const handleClickOutside = (event: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(event.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\r\n }, []);\r\n\r\n const handleRemoveTag = (tagValue: string) => {\r\n if (disabled) return;\r\n onChange(value.filter((tag) => tag.value !== tagValue));\r\n };\r\n\r\n const handleToggleOption = (option: TagInputOption) => {\r\n if (disabled) return;\r\n const isSelected = value.some((v) => v.value === option.value);\r\n if (isSelected) {\r\n onChange(value.filter((v) => v.value !== option.value));\r\n } else {\r\n onChange([...value, option]);\r\n }\r\n };\r\n\r\n const handleAddClick = () => {\r\n if (disabled) return;\r\n setIsOpen(!isOpen);\r\n };\r\n\r\n return (\r\n <div\r\n ref={(node) => {\r\n // Merge refs\r\n if (typeof ref === \"function\") ref(node);\r\n else if (ref) ref.current = node;\r\n (containerRef as React.MutableRefObject<HTMLDivElement | null>).current = node;\r\n }}\r\n className={[\"rh-flex rh-flex-col rh-gap-2 rh-font-body rh-relative\", wrapperClassName]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Subtitle */}\r\n {label && (\r\n <label htmlFor={inputId} className=\"rh-flex rh-items-baseline rh-gap-1\">\r\n <span className=\"rh-text-sm rh-font-semibold rh-text-text\">{label}</span>\r\n {subtitle && (\r\n <span className={`rh-text-sm ${getSubtitleClassName(subtitle)}`}>{subtitle}</span>\r\n )}\r\n </label>\r\n )}\r\n\r\n {/* Input container */}\r\n <div\r\n onClick={disabled ? undefined : handleAddClick}\r\n className={[\r\n \"rh-flex rh-flex-row rh-items-center rh-justify-between rh-gap-2\",\r\n \"rh-border rh-bg-surface rh-font-body\",\r\n \"rh-transition-colors rh-duration-150\",\r\n statusClasses[status],\r\n radiusClasses[radius],\r\n sizeClasses[size],\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\" : \"rh-cursor-pointer\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Tags area */}\r\n <div className=\"rh-flex rh-flex-row rh-flex-wrap rh-items-center rh-gap-2 rh-flex-1\">\r\n {value.length === 0 && placeholder && (\r\n <span className=\"rh-text-text-muted\">{placeholder}</span>\r\n )}\r\n {value.map((tag) => (\r\n <div\r\n key={tag.value}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-1\",\r\n \"rh-bg-gray-200 rh-border rh-border-gray-200 rh-rounded-[4px]\",\r\n tagSizeClasses[size],\r\n ].join(\" \")}\r\n >\r\n <span className=\"rh-font-semibold rh-text-gray-700\">{tag.label}</span>\r\n <button\r\n type=\"button\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n handleRemoveTag(tag.value);\r\n }}\r\n disabled={disabled}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-center\",\r\n \"rh-bg-white rh-rounded-full\",\r\n \"rh-cursor-pointer hover:rh-bg-gray-100\",\r\n \"disabled:rh-cursor-not-allowed disabled:rh-opacity-50\",\r\n deleteButtonSizeClasses[size],\r\n ].join(\" \")}\r\n aria-label={`Remover ${tag.label}`}\r\n >\r\n <svg\r\n viewBox=\"0 0 8 8\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"rh-w-[8px] rh-h-[8px]\"\r\n >\r\n <path\r\n d=\"M6 2L2 6M2 2L6 6\"\r\n stroke=\"#374151\"\r\n strokeWidth=\"1.5\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Add button */}\r\n <button\r\n type=\"button\"\r\n onClick={handleAddClick}\r\n disabled={disabled}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-center rh-shrink-0\",\r\n \"rh-text-text-muted hover:rh-text-text\",\r\n \"rh-cursor-pointer\",\r\n \"disabled:rh-cursor-not-allowed disabled:rh-opacity-50\",\r\n addButtonSizeClasses[size],\r\n ].join(\" \")}\r\n aria-label=\"Adicionar\"\r\n aria-expanded={isOpen}\r\n >\r\n <svg\r\n viewBox=\"0 0 20 20\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"rh-w-full rh-h-full\"\r\n >\r\n <path\r\n d=\"M10 4V16M4 10H16\"\r\n stroke=\"currentColor\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n </button>\r\n </div>\r\n\r\n {/* Dropdown */}\r\n {isOpen && options.length > 0 && (\r\n <div\r\n className={[\r\n \"rh-absolute rh-top-full rh-left-0 rh-right-0 rh-z-50\",\r\n \"rh-mt-1 rh-bg-surface rh-border rh-border-border\",\r\n \"rh-rounded-[8px] rh-shadow-lg rh-overflow-hidden\",\r\n ].join(\" \")}\r\n >\r\n <ul className=\"rh-max-h-[200px] rh-overflow-y-auto\">\r\n {options.map((option) => {\r\n const isSelected = value.some((v) => v.value === option.value);\r\n return (\r\n <li key={option.value}>\r\n <button\r\n type=\"button\"\r\n onClick={() => handleToggleOption(option)}\r\n className={[\r\n \"rh-w-full rh-flex rh-items-center rh-justify-between\",\r\n \"rh-px-3 rh-py-3 rh-text-left\",\r\n \"rh-border-b rh-border-border/50 last:rh-border-b-0\",\r\n \"hover:rh-bg-gray-50 rh-transition-colors\",\r\n isSelected ? \"rh-text-text\" : \"rh-text-text-muted\",\r\n ].join(\" \")}\r\n >\r\n <span className=\"rh-text-sm rh-font-normal\">{option.label}</span>\r\n {/* Checkbox */}\r\n <span\r\n className={[\r\n \"rh-w-5 rh-h-5 rh-rounded rh-border-2 rh-flex rh-items-center rh-justify-center\",\r\n isSelected\r\n ? \"rh-bg-primary rh-border-primary\"\r\n : \"rh-bg-white rh-border-gray-300\",\r\n ].join(\" \")}\r\n >\r\n {isSelected && (\r\n <svg\r\n viewBox=\"0 0 12 12\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className=\"rh-w-3 rh-h-3\"\r\n >\r\n <path\r\n d=\"M2 6L5 9L10 3\"\r\n stroke=\"white\"\r\n strokeWidth=\"2\"\r\n strokeLinecap=\"round\"\r\n strokeLinejoin=\"round\"\r\n />\r\n </svg>\r\n )}\r\n </span>\r\n </button>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n )}\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","import React, { forwardRef } from \"react\";\r\n\r\nexport type ProgressBarVariant = \"inline\" | \"stacked\";\r\nexport type ProgressBarThickness = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nconst THICKNESS_MAP: Record<ProgressBarThickness, number> = {\r\n xs: 2,\r\n sm: 4,\r\n md: 8,\r\n lg: 12,\r\n xl: 16,\r\n};\r\n\r\nexport type ProgressBarProps = {\r\n /** Progress value from 0 to 100 */\r\n value: number;\r\n /** Label text (only shown in stacked variant) */\r\n label?: string;\r\n /** Layout variant */\r\n variant?: ProgressBarVariant;\r\n /** Bar thickness — preset token or custom value in px */\r\n thickness?: ProgressBarThickness | number;\r\n /** Whether to show percentage text */\r\n showPercentage?: boolean;\r\n /** Custom bar color */\r\n barColor?: string;\r\n /** Custom background color */\r\n bgColor?: string;\r\n /** Custom class for the wrapper */\r\n className?: string;\r\n};\r\n\r\nfunction resolveThickness(thickness: ProgressBarThickness | number): number {\r\n if (typeof thickness === \"number\") return thickness;\r\n return THICKNESS_MAP[thickness];\r\n}\r\n\r\nexport const ProgressBar = forwardRef<HTMLDivElement, ProgressBarProps>(function ProgressBar(\r\n {\r\n value,\r\n label,\r\n variant = \"inline\",\r\n thickness = \"sm\",\r\n showPercentage = true,\r\n barColor,\r\n bgColor,\r\n className = \"\",\r\n },\r\n ref,\r\n) {\r\n const clampedValue = Math.min(100, Math.max(0, value));\r\n const heightPx = resolveThickness(thickness);\r\n\r\n if (variant === \"stacked\") {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\"rh-flex rh-flex-col rh-items-start rh-gap-2 rh-font-body\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Label + Percentage row */}\r\n <div className=\"rh-flex rh-flex-row rh-justify-between rh-items-start rh-w-full\">\r\n {label && (\r\n <span className=\"rh-font-sora rh-font-bold rh-text-base rh-leading-6 rh-text-[#374151] rh-flex-1\">\r\n {label}\r\n </span>\r\n )}\r\n {showPercentage && (\r\n <span className=\"rh-font-inter rh-font-normal rh-text-sm rh-leading-5 rh-text-[#9CA3AF] rh-tracking-[0.025em] rh-text-right\">\r\n {clampedValue}%\r\n </span>\r\n )}\r\n </div>\r\n\r\n {/* Progress bar */}\r\n <div\r\n className=\"rh-w-full rh-rounded-[40px] rh-overflow-hidden\"\r\n style={{ backgroundColor: bgColor || \"#E5E7EB\", height: heightPx }}\r\n >\r\n <div\r\n className=\"rh-h-full rh-rounded-[40px] rh-transition-all rh-duration-300\"\r\n style={{\r\n width: `${clampedValue}%`,\r\n backgroundColor: barColor || \"#538CC6\",\r\n }}\r\n />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Inline variant (default)\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\"rh-flex rh-flex-row rh-items-center rh-gap-2 rh-font-body\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Progress bar */}\r\n <div\r\n className=\"rh-flex-1 rh-rounded-[40px] rh-overflow-hidden\"\r\n style={{ backgroundColor: bgColor || \"#E5E7EB\", height: heightPx }}\r\n >\r\n <div\r\n className=\"rh-h-full rh-rounded-[40px] rh-transition-all rh-duration-300\"\r\n style={{\r\n width: `${clampedValue}%`,\r\n backgroundColor: barColor || \"#538CC6\",\r\n }}\r\n />\r\n </div>\r\n\r\n {/* Percentage */}\r\n {showPercentage && (\r\n <span className=\"rh-font-inter rh-font-normal rh-text-sm rh-leading-5 rh-text-[#9CA3AF] rh-tracking-[0.025em] rh-text-right rh-min-w-[40px]\">\r\n {clampedValue}%\r\n </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 ToggleGroupSize = \"sm\" | \"md\" | \"lg\";\r\nexport type ToggleGroupRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\r\n\r\nexport type ToggleGroupOption<T extends string = string> = {\r\n /** Unique value for this option */\r\n value: T;\r\n /** Label text or icon to display */\r\n label?: React.ReactNode;\r\n /** Icon to display (alternative to label) */\r\n icon?: React.ReactNode;\r\n /** Accessible label for screen readers */\r\n \"aria-label\"?: string;\r\n /** Whether this option is disabled */\r\n disabled?: boolean;\r\n};\r\n\r\nexport type ToggleGroupProps<T extends string = string> = Omit<\r\n React.HTMLAttributes<HTMLDivElement>,\r\n \"onChange\"\r\n> & {\r\n /** Available options */\r\n options: ToggleGroupOption<T>[];\r\n /** Currently selected value */\r\n value: T;\r\n /** Called when selection changes */\r\n onChange: (value: T) => void;\r\n /** Size variant */\r\n size?: ToggleGroupSize;\r\n /** Border radius */\r\n radius?: ToggleGroupRadius;\r\n /** Color scheme for active state */\r\n color?: PresetColor | (string & {});\r\n /** Whether the entire group is disabled */\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 sizeClasses: Record<ToggleGroupSize, { container: string; button: string }> = {\r\n sm: { container: \"rh-h-8\", button: \"rh-px-2 rh-text-xs\" },\r\n md: { container: \"rh-h-9\", button: \"rh-px-3 rh-text-sm\" },\r\n lg: { container: \"rh-h-10\", button: \"rh-px-4 rh-text-sm\" },\r\n};\r\n\r\nconst radiusClasses: Record<ToggleGroupRadius, string> = {\r\n none: \"rh-rounded-none\",\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\nfunction getActiveStyles(color: string, isPreset: boolean): React.CSSProperties {\r\n if (isPreset) return {};\r\n return { backgroundColor: color, color: \"#fff\" };\r\n}\r\n\r\nfunction ToggleGroupInner<T extends string = string>(\r\n {\r\n options,\r\n value,\r\n onChange,\r\n size = \"md\",\r\n radius = \"full\",\r\n color = \"primary\",\r\n disabled = false,\r\n className = \"\",\r\n ...rest\r\n }: ToggleGroupProps<T>,\r\n ref: React.ForwardedRef<HTMLDivElement>,\r\n) {\r\n const preset = isPresetColor(color);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"group\"\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-bg-muted rh-overflow-hidden\",\r\n \"rh-p-1 rh-gap-0.5\",\r\n radiusClasses[radius],\r\n sizeClasses[size].container,\r\n disabled ? \"rh-opacity-50 rh-cursor-not-allowed\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n {options.map((option) => {\r\n const isActive = value === option.value;\r\n const isDisabled = disabled || option.disabled;\r\n const activeClass = preset && isActive ? `rh-bg-${color}/20 rh-text-${color}` : \"\";\r\n\r\n return (\r\n <button\r\n key={option.value}\r\n type=\"button\"\r\n role=\"radio\"\r\n aria-checked={isActive}\r\n aria-label={option[\"aria-label\"]}\r\n disabled={isDisabled}\r\n onClick={() => !isDisabled && onChange(option.value)}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-center rh-h-full\",\r\n \"rh-border-0 rh-font-display rh-font-medium\",\r\n \"rh-transition-all rh-duration-150\",\r\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\r\n radiusClasses[radius],\r\n sizeClasses[size].button,\r\n isActive ? \"rh-bg-surface rh-text-text rh-shadow-sm\" : \"rh-bg-transparent rh-text-text-muted\",\r\n !isActive && !isDisabled ? \"hover:rh-bg-surface/50\" : \"\",\r\n isDisabled ? \"rh-cursor-not-allowed rh-pointer-events-none\" : \"rh-cursor-pointer\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={isActive && !preset ? getActiveStyles(color, preset) : undefined}\r\n >\r\n {option.icon}\r\n {option.label}\r\n </button>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n\r\nexport const ToggleGroup = forwardRef(ToggleGroupInner) as <T extends string = string>(\r\n props: ToggleGroupProps<T> & { ref?: React.ForwardedRef<HTMLDivElement> },\r\n) => React.ReactElement;\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport type CardVariant = \"elevated\" | \"outlined\" | \"filled\";\r\nexport type CardRadius = \"none\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\nexport type CardPadding = \"none\" | \"sm\" | \"md\" | \"lg\";\r\n\r\nexport type CardProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /** Visual style variant */\r\n variant?: CardVariant;\r\n /** Border radius */\r\n radius?: CardRadius;\r\n /** Internal padding */\r\n padding?: CardPadding;\r\n /** Makes the card clickable with hover effects */\r\n clickable?: boolean;\r\n /** Disabled state (only applies when clickable) */\r\n disabled?: boolean;\r\n};\r\n\r\nconst variantClasses: Record<CardVariant, string> = {\r\n elevated: \"rh-bg-surface rh-shadow-md rh-border-0\",\r\n outlined: \"rh-bg-surface rh-border rh-border-border rh-shadow-none\",\r\n filled: \"rh-bg-background rh-border-0 rh-shadow-none\",\r\n};\r\n\r\nconst radiusClasses: Record<CardRadius, string> = {\r\n none: \"rh-rounded-none\",\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};\r\n\r\nconst paddingClasses: Record<CardPadding, string> = {\r\n none: \"rh-p-0\",\r\n sm: \"rh-p-3\",\r\n md: \"rh-p-4\",\r\n lg: \"rh-p-6\",\r\n};\r\n\r\nconst CardRoot = forwardRef<HTMLDivElement, CardProps>(function Card(\r\n {\r\n variant = \"outlined\",\r\n radius = \"sm\",\r\n padding = \"md\",\r\n clickable = false,\r\n disabled = false,\r\n className = \"\",\r\n children,\r\n ...rest\r\n },\r\n ref,\r\n) {\r\n const isInteractive = clickable && !disabled;\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role={clickable ? \"button\" : undefined}\r\n tabIndex={isInteractive ? 0 : undefined}\r\n aria-disabled={disabled || undefined}\r\n className={[\r\n \"rh-font-body rh-transition-all rh-duration-150\",\r\n variantClasses[variant],\r\n radiusClasses[radius],\r\n paddingClasses[padding],\r\n isInteractive\r\n ? \"rh-cursor-pointer hover:rh-shadow-lg hover:rh-scale-[1.01] active:rh-scale-[0.99]\"\r\n : \"\",\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 {...rest}\r\n >\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nexport type CardHeaderProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(function CardHeader(\r\n { className = \"\", children, ...rest },\r\n ref,\r\n) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\"rh-flex rh-items-center rh-justify-between rh-gap-4\", className]\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\nexport type CardContentProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport const CardContent = forwardRef<HTMLDivElement, CardContentProps>(function CardContent(\r\n { className = \"\", children, ...rest },\r\n ref,\r\n) {\r\n return (\r\n <div ref={ref} className={[\"rh-mt-2\", className].filter(Boolean).join(\" \")} {...rest}>\r\n {children}\r\n </div>\r\n );\r\n});\r\n\r\nexport type CardFooterProps = React.HTMLAttributes<HTMLDivElement>;\r\n\r\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(function CardFooter(\r\n { className = \"\", children, ...rest },\r\n ref,\r\n) {\r\n return (\r\n <div\r\n ref={ref}\r\n className={[\r\n \"rh-flex rh-items-center rh-justify-end rh-gap-2 rh-mt-4 rh-pt-4 rh-border-t rh-border-border\",\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\nexport const Card = Object.assign(CardRoot, {\r\n Header: CardHeader,\r\n Content: CardContent,\r\n Footer: CardFooter,\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 SpinnerSize = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\r\n\r\nexport type SpinnerProps = React.HTMLAttributes<HTMLDivElement> & {\r\n /** Spinner size */\r\n size?: SpinnerSize;\r\n /** Color scheme */\r\n color?: PresetColor | (string & {});\r\n /** Accessible label for screen readers */\r\n label?: string;\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 sizeClasses: Record<SpinnerSize, string> = {\r\n xs: \"rh-w-3 rh-h-3\",\r\n sm: \"rh-w-4 rh-h-4\",\r\n md: \"rh-w-6 rh-h-6\",\r\n lg: \"rh-w-8 rh-h-8\",\r\n xl: \"rh-w-12 rh-h-12\",\r\n};\r\n\r\nconst colorClasses: Record<PresetColor, string> = {\r\n primary: \"rh-text-primary\",\r\n secondary: \"rh-text-secondary\",\r\n danger: \"rh-text-danger\",\r\n warning: \"rh-text-warning\",\r\n success: \"rh-text-success\",\r\n info: \"rh-text-info\",\r\n neutral: \"rh-text-neutral\",\r\n};\r\n\r\nexport const Spinner = forwardRef<HTMLDivElement, SpinnerProps>(function Spinner(\r\n { size = \"md\", color = \"primary\", label = \"Carregando...\", className = \"\", style, ...rest },\r\n ref,\r\n) {\r\n const preset = isPresetColor(color);\r\n const colorClass = preset ? colorClasses[color] : \"\";\r\n const customStyle = preset ? style : { ...style, color };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"status\"\r\n aria-label={label}\r\n className={[\r\n \"rh-inline-flex rh-items-center rh-justify-center\",\r\n sizeClasses[size],\r\n colorClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n style={customStyle}\r\n {...rest}\r\n >\r\n <svg\r\n className=\"rh-animate-spin\"\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 <span className=\"rh-sr-only\">{label}</span>\r\n </div>\r\n );\r\n});\r\n","\"use client\";\n\nimport React, { useState, useRef, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nexport type CustomSelectOption = {\n value: string;\n label: string;\n backgroundColor?: string;\n textColor?: string;\n};\n\nexport type CustomSelectProps = {\n options?: CustomSelectOption[];\n value: string;\n onChange: (value: string) => void;\n className?: string;\n placeholder?: string;\n textColor?: string;\n placeholderColor?: string;\n backgroundColor?: string;\n /** \"select\" (default) renders a dropdown list; \"date\" renders a calendar picker; \"textInput\" renders an input */\n type?: \"select\" | \"date\" | \"textInput\";\n /** Prevents user interactions */\n disabled?: boolean;\n};\n\nconst DAYS_SHORT = [\"D\", \"S\", \"T\", \"Q\", \"Q\", \"S\", \"S\"];\nconst MONTHS_PT = [\n \"Janeiro\",\n \"Fevereiro\",\n \"Marco\",\n \"Abril\",\n \"Maio\",\n \"Junho\",\n \"Julho\",\n \"Agosto\",\n \"Setembro\",\n \"Outubro\",\n \"Novembro\",\n \"Dezembro\",\n];\n\nfunction parseDate(value: string): Date | null {\n if (!value) return null;\n if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n const [y, m, d] = value.split(\"-\").map(Number);\n return new Date(y, m - 1, d);\n }\n if (/^\\d{2}\\/\\d{2}\\/\\d{4}$/.test(value)) {\n const [d, m, y] = value.split(\"/\").map(Number);\n return new Date(y, m - 1, d);\n }\n return null;\n}\n\nfunction formatISO(date: Date): string {\n const y = date.getFullYear();\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const d = String(date.getDate()).padStart(2, \"0\");\n return `${y}-${m}-${d}`;\n}\n\nfunction formatDisplay(date: Date): string {\n const d = String(date.getDate()).padStart(2, \"0\");\n const m = String(date.getMonth() + 1).padStart(2, \"0\");\n const y = date.getFullYear();\n return `${d}/${m}/${y}`;\n}\n\nfunction getDaysInMonth(year: number, month: number) {\n return new Date(year, month + 1, 0).getDate();\n}\n\nfunction getFirstDayOfMonth(year: number, month: number) {\n return new Date(year, month, 1).getDay();\n}\n\nfunction removeHexAlpha(color?: string) {\n if (!color) return color;\n\n if (/^#[0-9a-fA-F]{4}$/.test(color)) {\n const [, r, g, b] = color;\n return `#${r}${r}${g}${g}${b}${b}`;\n }\n\n if (/^#[0-9a-fA-F]{8}$/.test(color)) {\n return color.slice(0, 7);\n }\n\n return color;\n}\n\nconst ChevronLeftIcon = () => (\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"rh-w-5 rh-h-5\" aria-hidden=\"true\">\n <path\n fillRule=\"evenodd\"\n d=\"M12.79 5.23a.75.75 0 01-.02 1.06L8.832 10l3.938 3.71a.75.75 0 11-1.04 1.08l-4.5-4.25a.75.75 0 010-1.08l4.5-4.25a.75.75 0 011.06.02z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst ChevronRightIcon = () => (\n <svg viewBox=\"0 0 20 20\" fill=\"currentColor\" className=\"rh-w-5 rh-h-5\" aria-hidden=\"true\">\n <path\n fillRule=\"evenodd\"\n d=\"M7.21 14.77a.75.75 0 010-1.06L11.168 10 7.23 6.29a.75.75 0 011.04-1.08l4.5 4.25a.75.75 0 010 1.08l-4.5 4.25a.75.75 0 01-1.06-.02z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\ninterface DatePickerDropdownProps {\n style: React.CSSProperties;\n selectedDate: Date | null;\n onSelect: (date: Date | null) => void;\n onClose: () => void;\n containerRef: React.RefObject<HTMLDivElement | null>;\n backgroundColor?: string;\n textColor?: string;\n}\n\nconst DatePickerDropdown: React.FC<DatePickerDropdownProps> = ({\n style,\n selectedDate,\n onSelect,\n onClose,\n containerRef,\n backgroundColor,\n textColor,\n}) => {\n const today = new Date();\n const opaqueBackgroundColor = removeHexAlpha(backgroundColor);\n const calendarTextStyle = textColor ? { color: textColor } : undefined;\n\n const [viewYear, setViewYear] = useState(\n selectedDate ? selectedDate.getFullYear() : today.getFullYear(),\n );\n const [viewMonth, setViewMonth] = useState(selectedDate ? selectedDate.getMonth() : today.getMonth());\n const [tempDate, setTempDate] = useState<Date | null>(selectedDate);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const handleClickOutside = (e: MouseEvent) => {\n const target = e.target as Node;\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(target) &&\n containerRef.current &&\n !containerRef.current.contains(target)\n ) {\n onClose();\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [onClose, containerRef]);\n\n const prevMonth = () => {\n if (viewMonth === 0) {\n setViewMonth(11);\n setViewYear((y) => y - 1);\n } else {\n setViewMonth((m) => m - 1);\n }\n };\n\n const nextMonth = () => {\n if (viewMonth === 11) {\n setViewMonth(0);\n setViewYear((y) => y + 1);\n } else {\n setViewMonth((m) => m + 1);\n }\n };\n\n const daysInMonth = getDaysInMonth(viewYear, viewMonth);\n const firstDay = getFirstDayOfMonth(viewYear, viewMonth);\n const prevMonthDays = getDaysInMonth(viewMonth === 0 ? viewYear - 1 : viewYear, viewMonth === 0 ? 11 : viewMonth - 1);\n const trailingCount = (firstDay + daysInMonth) % 7 === 0 ? 0 : 7 - ((firstDay + daysInMonth) % 7);\n\n const isSelected = (day: number) =>\n !!tempDate &&\n tempDate.getFullYear() === viewYear &&\n tempDate.getMonth() === viewMonth &&\n tempDate.getDate() === day;\n\n return createPortal(\n <div\n ref={dropdownRef}\n style={{\n ...style,\n backgroundColor: opaqueBackgroundColor,\n color: textColor,\n boxShadow: \"0 0 9.6px 0 rgba(8, 11, 18, 0.08)\",\n width: 260,\n }}\n className=\"rh-bg-surface rh-rounded-xs rh-p-5 rh-select-none rh-font-body\"\n >\n <div className=\"rh-flex rh-items-center rh-justify-between\">\n <button\n type=\"button\"\n style={calendarTextStyle}\n onMouseDown={(e) => {\n e.preventDefault();\n prevMonth();\n }}\n className=\"rh-p-1 hover:rh-bg-background rh-rounded rh-cursor-pointer rh-text-text\"\n >\n <ChevronLeftIcon />\n </button>\n\n <span className=\"rh-text-sm rh-font-medium rh-text-text\" style={calendarTextStyle}>\n {MONTHS_PT[viewMonth]} - {viewYear}\n </span>\n\n <button\n type=\"button\"\n style={calendarTextStyle}\n onMouseDown={(e) => {\n e.preventDefault();\n nextMonth();\n }}\n className=\"rh-p-1 hover:rh-bg-background rh-rounded rh-cursor-pointer rh-text-text\"\n >\n <ChevronRightIcon />\n </button>\n </div>\n\n <div className=\"rh-grid rh-grid-cols-7\">\n {DAYS_SHORT.map((d, i) => (\n <div\n key={i}\n className=\"rh-text-center rh-text-xs rh-text-text-muted rh-font-medium rh-py-1\"\n style={calendarTextStyle}\n >\n {d}\n </div>\n ))}\n </div>\n\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"100%\" height=\"1\" viewBox=\"0 0 350 1\" fill=\"none\" className=\"rh-mb-3\">\n <path d=\"M0 0.5H350\" stroke=\"#F5F5F5\" />\n </svg>\n\n <div className=\"rh-grid rh-grid-cols-7 rh-gap-0\">\n {Array.from({ length: firstDay }).map((_, i) => (\n <div key={`prev-${i}`} className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\" style={calendarTextStyle}>\n {prevMonthDays - firstDay + i + 1}\n </div>\n ))}\n\n {Array.from({ length: daysInMonth }).map((_, i) => {\n const day = i + 1;\n const selected = isSelected(day);\n return (\n <button\n key={day}\n type=\"button\"\n style={{\n backgroundColor: selected ? \"#15607A\" : \"transparent\",\n color: selected ? \"#FFFFFF\" : textColor,\n }}\n onMouseDown={(e) => {\n e.preventDefault();\n setTempDate(new Date(viewYear, viewMonth, day));\n }}\n className={[\n \"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-rounded-lg rh-transition-colors rh-duration-150 rh-cursor-pointer\",\n selected ? \"rh-text-surface\" : \"rh-text-text hover:rh-ring-1 hover:rh-ring-[#15607A] hover:rh-bg-transparent\",\n ].join(\" \")}\n >\n {day}\n </button>\n );\n })}\n\n {Array.from({ length: trailingCount }).map((_, i) => (\n <div key={`next-${i}`} className=\"rh-w-7 rh-h-7 rh-flex rh-items-center rh-justify-center rh-text-sm rh-text-text-muted rh-opacity-40\" style={calendarTextStyle}>\n {i + 1}\n </div>\n ))}\n </div>\n\n <div className=\"rh-flex rh-justify-end rh-gap-2 rh-mt-4\">\n <button\n type=\"button\"\n style={{ backgroundColor: \"#87A851\" }}\n onClick={() => {\n if (tempDate) onSelect(tempDate);\n onClose();\n }}\n className=\"rh-text-sm rh-font-medium rh-px-4 rh-py-1.5 rh-rounded-lg rh-transition-colors rh-duration-150 rh-bg-success rh-text-surface\"\n >\n Aplicar\n </button>\n </div>\n </div>,\n document.body,\n );\n};\n\nexport const CustomSelect = ({\n options = [],\n value,\n onChange,\n className = \"\",\n placeholder,\n textColor,\n placeholderColor,\n backgroundColor,\n type = \"select\",\n disabled = false,\n}: CustomSelectProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const [dropdownStyle, setDropdownStyle] = useState<React.CSSProperties>({});\n const containerRef = useRef<HTMLDivElement>(null);\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n const resizeTextArea = React.useCallback(() => {\n if (type !== \"textInput\" || !textAreaRef.current) return;\n const textarea = textAreaRef.current;\n textarea.style.height = \"auto\";\n\n if (textarea.value) {\n textarea.style.height = `${textarea.scrollHeight}px`;\n return;\n }\n\n const previousValue = textarea.value;\n textarea.value = placeholder || \"\";\n textarea.style.height = `${textarea.scrollHeight}px`;\n textarea.value = previousValue;\n }, [type, placeholder]);\n\n const calcPosition = (): React.CSSProperties => {\n if (!containerRef.current) return {};\n const rect = containerRef.current.getBoundingClientRect();\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n const DROPDOWN_HEIGHT = 320;\n const openUpward = spaceBelow < DROPDOWN_HEIGHT && spaceAbove > spaceBelow;\n\n return {\n position: \"fixed\",\n ...(openUpward ? { bottom: window.innerHeight - rect.top + 4 } : { top: rect.bottom + 4 }),\n left: rect.left,\n zIndex: 2,\n };\n };\n\n const openDropdown = () => {\n if (disabled) return;\n if (!isOpen) setDropdownStyle(calcPosition());\n setIsOpen((prev) => !prev);\n };\n\n useEffect(() => {\n if (!isOpen) return;\n const close = () => setIsOpen(false);\n window.addEventListener(\"scroll\", close, { capture: true, passive: true });\n window.addEventListener(\"resize\", close, { passive: true });\n return () => {\n window.removeEventListener(\"scroll\", close, { capture: true });\n window.removeEventListener(\"resize\", close);\n };\n }, [isOpen]);\n\n useEffect(() => {\n resizeTextArea();\n }, [resizeTextArea, value]);\n\n const selectedOption = options.find((opt) => opt.value === value);\n\n useEffect(() => {\n if (type !== \"select\") return;\n const handleClickOutside = (e: MouseEvent) => {\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }\n }, [isOpen, type]);\n\n const selectedDate = type === \"date\" ? parseDate(value) : null;\n const handleDateSelect = (date: Date | null) => {\n if (date) onChange(formatISO(date));\n setIsOpen(false);\n };\n\n const hasValue = value != null && value !== \"\";\n const displayLabel =\n type === \"date\"\n ? selectedDate\n ? formatDisplay(selectedDate)\n : hasValue\n ? value\n : placeholder || \"-\"\n : selectedOption?.label || (hasValue ? value : placeholder || \"\");\n\n const displayBg = type === \"date\" ? backgroundColor : selectedOption?.backgroundColor || backgroundColor;\n const displayTextColor =\n type === \"date\"\n ? textColor\n : selectedOption?.textColor || (hasValue ? textColor : placeholderColor) || (displayBg ? \"white\" : \"inherit\");\n\n if (type === \"textInput\") {\n const inputTextColor = textColor || \"#111827\";\n const inputPlaceholderColor = placeholderColor || \"#9CA3AF\";\n const textInputWrapperClassName = className.replace(/\\brh-h-full\\b/g, \"\").trim();\n\n return (\n <div ref={containerRef} className={`rh-relative rh-h-full rh-flex rh-items-center ${textInputWrapperClassName}`}>\n <textarea\n ref={textAreaRef}\n value={value}\n disabled={disabled}\n placeholder={placeholder}\n rows={1}\n onClick={(e) => e.stopPropagation()}\n onInput={(e) => {\n onChange(e.currentTarget.value);\n resizeTextArea();\n }}\n style={{\n color: inputTextColor,\n backgroundColor: backgroundColor || \"transparent\",\n }}\n className=\"rh-table-textarea rh-flex rh-items-center rh-leading-[20px] rh-py-[7px] rh-w-full rh-min-h-[40px] rh-text-sm rh-px-1 rh-border rh-bg-surface rh-rounded-xs rh-border-transparent rh-line-height-[20px] rh-outline-none rh-resize-none rh-overflow-hidden hover:rh-border-primary hover:rh-ring-2 hover:rh-ring-gray-200 disabled:rh-opacity-60 disabled:rh-cursor-not-allowed disabled:hover:rh-border-transparent disabled:hover:rh-ring-0\"\n />\n <style>{`.rh-table-textarea::placeholder { color: ${inputPlaceholderColor}; }`}</style>\n </div>\n );\n }\n\n return (\n <div ref={containerRef} className={`rh-relative ${className}`}>\n <button\n type=\"button\"\n disabled={disabled}\n onClick={(e) => {\n e.stopPropagation();\n openDropdown();\n }}\n style={{ backgroundColor: backgroundColor || undefined }}\n className=\"rh-w-full rh-min-h-[40px] rh-flex rh-items-center rh-border rh-bg-surface rh-rounded-sm rh-border-transparent rh-justify-between rh-py-2 hover:rh-border-primary hover:rh-ring-2 hover:rh-ring-gray-200 rh-cursor-pointer rh-text-left disabled:rh-cursor-not-allowed disabled:rh-opacity-60 disabled:hover:rh-border-transparent disabled:hover:rh-ring-0\"\n >\n <div className=\"rh-flex rh-items-center rh-gap-2 rh-flex-1 rh-px-0.5\">\n <span\n className=\"rh-line-height-[20px] rh-rounded-xl rh-whitespace-normal rh-text-ellipsis rh-text-nowrap\"\n style={{ fontSize: type === \"date\" ? \"14px\" : \"12px\", fontWeight: type === \"date\" ? \"normal\" : \"bold\", padding: type === \"date\" ? \"0px 3px\" : \"2px 14px\", backgroundColor: displayBg || \"transparent\", fontFamily: \"Inter, sans-serif\", color: displayTextColor }}\n >\n {displayLabel}\n </span>\n </div>\n </button>\n\n {type === \"select\" && isOpen &&\n createPortal(\n <div\n style={{ ...dropdownStyle, backgroundColor: backgroundColor || undefined, boxShadow: \"0 10px 20px 0 rgba(0, 0, 0, 0.05)\" }}\n className=\"rh-border rh-border-border rh-rounded-xs rh-max-h-60 rh-overflow-auto\"\n >\n {options.map((option) => (\n <button\n key={option.value}\n type=\"button\"\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n onChange(option.value);\n setIsOpen(false);\n }}\n className=\"rh-flex rh-items-center rh-gap-2 rh-px-3 rh-py-2 rh-text-left hover:rh-bg-background/50 rh-w-full rh-cursor-pointer\"\n >\n <div className=\"rh-w-4\">\n {option.value === value && (\n <svg width=\"13\" height=\"10\" viewBox=\"0 0 13 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M12.7826 1.2813L4.78255 9.2813C4.71287 9.35122 4.63008 9.4067 4.53891 9.44455C4.44775 9.48241 4.35001 9.50189 4.2513 9.50189C4.15259 9.50189 4.05485 9.48241 3.96369 9.44455C3.87252 9.4067 3.78973 9.35122 3.72005 9.2813L0.220051 5.7813C0.150286 5.71154 0.0949458 5.62871 0.0571893 5.53756C0.0194329 5.44641 1.03958e-09 5.34871 0 5.25005C-1.03958e-09 5.15139 0.0194329 5.05369 0.0571893 4.96254C0.0949458 4.87139 0.150286 4.78857 0.220051 4.7188C0.289816 4.64904 0.372638 4.5937 0.46379 4.55594C0.554942 4.51818 0.652639 4.49875 0.751301 4.49875C0.849963 4.49875 0.947659 4.51818 1.03881 4.55594C1.12996 4.5937 1.21279 4.64904 1.28255 4.7188L4.25193 7.68818L11.7213 0.220051C11.8622 0.0791546 12.0533 0 12.2526 0C12.4518 0 12.6429 0.0791546 12.7838 0.220051C12.9247 0.360947 13.0039 0.552044 13.0039 0.751301C13.0039 0.950559 12.9247 1.14165 12.7838 1.28255L12.7826 1.2813Z\"\n fill=\"#374151\"\n />\n </svg>\n )}\n </div>\n <span\n className=\"rh-px-2 rh-rounded-xl rh-text-white rh-text-[12px] rh-whitespace-normal rh-break-words\"\n style={{\n backgroundColor: option.backgroundColor || backgroundColor || \"transparent\",\n fontFamily: \"Inter, sans-serif\",\n color: option.textColor || textColor || (option.backgroundColor || backgroundColor ? \"white\" : \"inherit\"),\n }}\n >\n {option.label}\n </span>\n </button>\n ))}\n </div>,\n document.body,\n )}\n\n {type === \"date\" && isOpen && (\n <DatePickerDropdown\n style={dropdownStyle}\n selectedDate={selectedDate}\n onSelect={handleDateSelect}\n onClose={() => setIsOpen(false)}\n containerRef={containerRef}\n backgroundColor={backgroundColor}\n textColor={textColor}\n />\n )}\n </div>\n );\n};\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\nimport { CustomSelect, CustomSelectOption } from \"./CustomSelect\";\r\n\r\nexport type TableSize = \"sm\" | \"md\" | \"lg\";\r\nexport type TableVariant = \"default\" | \"striped\";\r\n\r\nexport type ColumnActionIcon<T> = {\r\n icon: React.ReactNode;\r\n onClick: (row: T, index: number) => void;\r\n};\r\n\r\nexport type TableColumn<T> = {\r\n /** Unique key for this column */\r\n key: string;\r\n /** Column header text */\r\n header: React.ReactNode;\r\n /** Function to render cell content */\r\n render: (row: T, index: number) => React.ReactNode;\r\n /** Column width (CSS value) */\r\n width?: string;\r\n /** Maximum column width (CSS value) */\r\n maxWidth?: string;\r\n /** Background color for this column's header cell (overrides headerStyle.backgroundColor) */\r\n headerBgColor?: string;\r\n /** Text color for this column's header cell (overrides headerTextStyle.color) */\r\n headerTextColor?: string;\r\n /** Text alignment */\r\n align?: \"left\" | \"center\" | \"right\";\r\n /** Whether this column is sortable */\r\n sortable?: boolean;\r\n /** Action icon to show in this column (clickable) */\r\n actionIcon?: ColumnActionIcon<T>;\r\n /** Whether this column is editable with a dropdown */\r\n editable?: boolean;\r\n /** Type of editable field: \"select\" (default), \"date\", or \"textInput\" */\r\n type?: \"select\" | \"date\" | \"textInput\";\r\n /** List of choices for the editable dropdown (required for type=\"select\") */\r\n choices?: CustomSelectOption[];\r\n /** Placeholder shown when there is no value */\r\n editablePlaceholder?: string;\r\n /** Function to get the current value for the editable field */\r\n editableValue?: (row: T) => string;\r\n /** Callback when the editable value changes */\r\n onEditChange?: (row: T, index: number, value: string) => void;\r\n /** Text color for editable field content (select/date/textInput). Can be fixed or derived from the row. */\r\n editableTextColor?: string | ((row: T, index: number) => string | undefined);\r\n /** Placeholder text color for editable field content. Can be fixed or derived from the row. */\r\n editablePlaceholderColor?: string | ((row: T, index: number) => string | undefined);\r\n /** Background color for editable field elements (value chip/control/calendar/input). Can be fixed or derived from the row. */\r\n editableBackgroundColor?: string | ((row: T, index: number) => string | undefined);\r\n};\r\n\r\nexport type SortDirection = \"asc\" | \"desc\" | null;\r\n\r\nexport type TableSort = {\r\n key: string;\r\n direction: SortDirection;\r\n};\r\n\r\nexport type HeaderTextStyle = {\r\n color?: string;\r\n fontFamily?: string;\r\n fontSize?: string;\r\n fontWeight?: string | number;\r\n};\r\n\r\nexport type HeaderStyle = {\r\n backgroundColor?: string;\r\n height?: string;\r\n border?: string;\r\n};\r\n\r\nexport type BodyTextStyle = {\r\n color?: string;\r\n fontFamily?: string;\r\n fontSize?: string;\r\n fontWeight?: string | number;\r\n};\r\n\r\nexport type TableProps<T> = Omit<React.HTMLAttributes<HTMLTableElement>, \"children\"> & {\r\n /** Column definitions */\r\n columns: TableColumn<T>[];\r\n /** Row data */\r\n data: T[];\r\n /** Function to get unique key for each row */\r\n rowKey: (row: T, index: number) => string | number;\r\n /** Table size variant */\r\n size?: TableSize;\r\n /** Table style variant */\r\n variant?: TableVariant;\r\n /** Current sort state */\r\n sort?: TableSort;\r\n /** Called when sort changes */\r\n onSortChange?: (sort: TableSort) => void;\r\n /** Whether to show loading state */\r\n loading?: boolean;\r\n /** Content to show when data is empty */\r\n emptyContent?: React.ReactNode;\r\n /** Loading content */\r\n loadingContent?: React.ReactNode;\r\n /** Whether the table has sticky header */\r\n stickyHeader?: boolean;\r\n /** Custom header row style */\r\n headerStyle?: HeaderStyle;\r\n /** Custom body row style */\r\n bodyBackground?: string;\r\n /** Custom body text style (color, font, weight) */\r\n bodyTextStyle?: HeaderTextStyle;\r\n /** Custom header text class (overrides default rh-text-text-muted) */\r\n headerTextClassName?: string;\r\n /** Custom header text style (color, font, weight) */\r\n headerTextStyle?: HeaderTextStyle;\r\n /** Custom row padding (CSS value for all sides or object with x/y) */\r\n rowPadding?: string | { x?: string; y?: string };\r\n /** Add row button */\r\n addRowButton?: { icon?: React.ReactNode; text?: React.ReactNode };\r\n /** Callback when add row is clicked */\r\n onAddRow?: () => void;\r\n /** If true, rows become clickable and will call `onRowClick` when clicked */\r\n rowClickable?: boolean;\r\n /** Callback invoked when a row is clicked: `(row, index, event)` */\r\n onRowClick?: (row: T, index: number, event?: React.MouseEvent<HTMLTableRowElement>) => void;\r\n /** Disables all editable controls inside table cells (\"select\", \"date\", \"textInput\") */\r\n disableEditableControls?: boolean;\r\n};\r\n\r\nconst sizeClasses: Record<TableSize, { cell: string; header: string }> = {\r\n sm: { cell: \"rh-px-2 rh-py-2 rh-text-xs\", header: \"rh-px-2 rh-py-2 rh-text-xs\" },\r\n md: { cell: \"rh-px-3 rh-py-3 rh-text-sm\", header: \"rh-px-3 rh-py-3 rh-text-xs\" },\r\n lg: { cell: \"rh-px-4 rh-py-4 rh-text-sm\", header: \"rh-px-4 rh-py-3 rh-text-sm\" },\r\n};\r\n\r\nconst alignClasses: Record<\"left\" | \"center\" | \"right\", string> = {\r\n left: \"rh-text-left\",\r\n center: \"rh-text-center\",\r\n right: \"rh-text-right\",\r\n};\r\n\r\nfunction TableInner<T>(\r\n {\r\n columns,\r\n data,\r\n rowKey,\r\n rowClickable = false,\r\n onRowClick,\r\n disableEditableControls = false,\r\n size = \"md\",\r\n variant = \"default\",\r\n sort,\r\n onSortChange,\r\n loading = false,\r\n emptyContent = \"Nenhum dado encontrado\",\r\n loadingContent,\r\n stickyHeader = false,\r\n headerStyle,\r\n headerTextClassName,\r\n headerTextStyle,\r\n bodyBackground,\r\n bodyTextStyle,\r\n rowPadding,\r\n addRowButton,\r\n onAddRow,\r\n className = \"\",\r\n ...rest\r\n }: TableProps<T>,\r\n ref: React.ForwardedRef<HTMLTableElement>,\r\n) {\r\n const shouldDisableEditableControls =\r\n disableEditableControls;\r\n const handleSort = (column: TableColumn<T>) => {\r\n if (!column.sortable || !onSortChange) return;\r\n\r\n const newDirection: SortDirection =\r\n sort?.key === column.key\r\n ? sort.direction === \"asc\"\r\n ? \"desc\"\r\n : sort.direction === \"desc\"\r\n ? null\r\n : \"asc\"\r\n : \"asc\";\r\n\r\n onSortChange({ key: column.key, direction: newDirection });\r\n };\r\n\r\n const renderSortIcon = (column: TableColumn<T>) => {\r\n if (!column.sortable) return null;\r\n\r\n const isAsc = sort?.key === column.key && sort.direction === \"asc\";\r\n const isDesc = sort?.key === column.key && sort.direction === \"desc\";\r\n\r\n return (\r\n <span className=\"rh-ml-1 rh-inline-flex rh-flex-col rh-gap-0.5\">\r\n <svg\r\n width=\"8\"\r\n height=\"5\"\r\n viewBox=\"0 0 8 5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={isAsc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\r\n >\r\n <path d=\"M4 0L7.4641 4.5H0.535898L4 0Z\" fill=\"currentColor\" />\r\n </svg>\r\n <svg\r\n width=\"8\"\r\n height=\"5\"\r\n viewBox=\"0 0 8 5\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n className={isDesc ? \"rh-text-primary\" : \"rh-text-text-muted\"}\r\n >\r\n <path d=\"M4 5L0.535898 0.5H7.4641L4 5Z\" fill=\"currentColor\" />\r\n </svg>\r\n </span>\r\n );\r\n };\r\n\r\n const isEmpty = !loading && data.length === 0;\r\n const colSpan = columns.length;\r\n\r\n const headerTextStyleInline: React.CSSProperties = {\r\n color: headerTextStyle?.color,\r\n fontFamily: headerTextStyle?.fontFamily,\r\n fontSize: headerTextStyle?.fontSize,\r\n fontWeight: headerTextStyle?.fontWeight,\r\n };\r\n\r\n const bodyStyleInline: React.CSSProperties = {\r\n color: bodyTextStyle?.color,\r\n fontFamily: bodyTextStyle?.fontFamily,\r\n fontSize: bodyTextStyle?.fontSize,\r\n fontWeight: bodyTextStyle?.fontWeight,\r\n };\r\n\r\n const getRowPaddingStyle = (): React.CSSProperties => {\r\n if (typeof rowPadding === \"string\") {\r\n return { padding: rowPadding };\r\n }\r\n if (typeof rowPadding === \"object\") {\r\n const style: React.CSSProperties = {};\r\n if (rowPadding.x) {\r\n style.paddingLeft = rowPadding.x;\r\n style.paddingRight = rowPadding.x;\r\n }\r\n if (rowPadding.y) {\r\n style.paddingTop = rowPadding.y;\r\n style.paddingBottom = rowPadding.y;\r\n }\r\n return style;\r\n }\r\n return {};\r\n };\r\n\r\n const rowPaddingStyle = getRowPaddingStyle();\r\n\r\n /** Returns true when the cell should render an editable control */\r\n const isEditableCell = <T,>(column: TableColumn<T>): boolean => {\r\n if (!column.editable || !column.editableValue) return false;\r\n if (column.type === \"date\" || column.type === \"textInput\") return true;\r\n // select mode requires choices\r\n return !!column.choices;\r\n };\r\n\r\n const getEditableTextColor = (column: TableColumn<T>, row: T, index: number) => {\r\n if (typeof column.editableTextColor === \"function\") {\r\n return column.editableTextColor(row, index);\r\n }\r\n return column.editableTextColor;\r\n };\r\n\r\n const getEditableBackgroundColor = (column: TableColumn<T>, row: T, index: number) => {\r\n if (typeof column.editableBackgroundColor === \"function\") {\r\n return column.editableBackgroundColor(row, index);\r\n }\r\n return column.editableBackgroundColor;\r\n };\r\n\r\n const getEditablePlaceholderColor = (\r\n column: TableColumn<T>,\r\n row: T,\r\n index: number,\r\n ) => {\r\n if (typeof column.editablePlaceholderColor === \"function\") {\r\n return column.editablePlaceholderColor(row, index);\r\n }\r\n return column.editablePlaceholderColor;\r\n };\r\n\r\n return (\r\n <div className=\"rh-w-full rh-rounded\">\r\n <table\r\n ref={ref}\r\n style={{ backgroundColor: bodyBackground }}\r\n className={[\"rh-w-full rh-border-collapse rh-font-body\", className]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n {...rest}\r\n >\r\n <thead>\r\n <tr\r\n className=\"rh-border-b rh-border-border\"\r\n style={{\r\n backgroundColor: headerStyle?.backgroundColor,\r\n height: headerStyle?.height,\r\n border: headerStyle?.border,\r\n }}\r\n >\r\n {columns.map((column) => (\r\n <th\r\n key={column.key}\r\n scope=\"col\"\r\n style={{\r\n width: column.width,\r\n maxWidth: column.maxWidth,\r\n backgroundColor: column.headerBgColor ?? headerStyle?.backgroundColor,\r\n ...rowPaddingStyle,\r\n }}\r\n className={[\r\n rowPadding ? \"\" : sizeClasses[size].header,\r\n alignClasses[column.align || \"left\"],\r\n `rh-font-semibold rh-whitespace-nowrap ${headerTextClassName || \"rh-text-text-muted\"}`,\r\n stickyHeader ? \"rh-sticky rh-top-0 rh-bg-surface rh-z-10\" : \"\",\r\n column.sortable ? \"rh-cursor-pointer rh-select-none hover:rh-text-text\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onClick={() => handleSort(column)}\r\n >\r\n <span\r\n className=\"rh-inline-flex rh-items-center\"\r\n style={column.headerTextColor ? { ...headerTextStyleInline, color: column.headerTextColor } : headerTextStyleInline}\r\n >\r\n {column.header}\r\n {renderSortIcon(column)}\r\n </span>\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n <tbody style={{ backgroundColor: bodyBackground }}>\r\n {loading && (\r\n <tr>\r\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8\">\r\n {loadingContent || (\r\n <div className=\"rh-flex rh-items-center rh-justify-center rh-gap-2 rh-text-text-muted\">\r\n <svg\r\n className=\"rh-animate-spin rh-h-5 rh-w-5\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n fill=\"none\"\r\n viewBox=\"0 0 24 24\"\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 Carregando...\r\n </div>\r\n )}\r\n </td>\r\n </tr>\r\n )}\r\n {isEmpty && (\r\n <tr>\r\n <td colSpan={colSpan} className=\"rh-text-center rh-py-8 rh-text-text-muted\">\r\n {emptyContent}\r\n </td>\r\n </tr>\r\n )}\r\n {!loading &&\r\n data.map((row, index) => (\r\n <tr\r\n key={rowKey(row, index)}\r\n style={bodyStyleInline}\r\n className={[\r\n \"rh-border-b rh-border-border rh-transition-colors\",\r\n rowClickable ? \"rh-cursor-pointer\" : \"\",\r\n \"hover:rh-bg-background/50\",\r\n variant === \"striped\" && index % 2 === 1 ? \"rh-bg-background/50\" : \"\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onClick={(e) => {\r\n if (!rowClickable || !onRowClick) return;\r\n const target = e.target as HTMLElement | null;\r\n if (!target) return;\r\n\r\n // Ignore clicks that originate from interactive controls so their own handlers run.\r\n const interactiveSelector = 'button, a, input, select, textarea, label, [role=\"button\"], [data-no-row-click]';\r\n if (target.closest(interactiveSelector)) return;\r\n\r\n onRowClick(row, index, e as React.MouseEvent<HTMLTableRowElement>);\r\n }}\r\n >\r\n {columns.map((column) => (\r\n <td\r\n key={column.key}\r\n style={{ width: column.width, maxWidth: column.maxWidth, ...rowPaddingStyle }}\r\n className={[\r\n rowPadding ? \"\" : sizeClasses[size].cell,\r\n alignClasses[column.align || \"left\"],\r\n \"rh-text-text\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <div className=\"rh-flex rh-items-stretch rh-justify-between rh-gap-2 rh-h-full\">\r\n {isEditableCell(column) ? (\r\n <CustomSelect\r\n type={column.type ?? \"select\"}\r\n disabled={shouldDisableEditableControls}\r\n options={column.choices}\r\n value={column.editableValue!(row)}\r\n placeholder={column.editablePlaceholder}\r\n textColor={getEditableTextColor(column, row, index)}\r\n placeholderColor={getEditablePlaceholderColor(column, row, index)}\r\n backgroundColor={getEditableBackgroundColor(column, row, index)}\r\n onChange={(value: string) => column.onEditChange?.(row, index, value)}\r\n className=\"rh-w-full rh-h-full\"\r\n />\r\n ) : (\r\n <span style={{ width: \"100%\" }}>{column.render(row, index)}</span>\r\n )}\r\n {column.actionIcon && (\r\n <span\r\n className=\"rh-cursor-pointer hover:rh-bg-background/50 rh-p-1 rh-rounded\"\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n column.actionIcon?.onClick(row, index);\r\n }}\r\n >\r\n {column.actionIcon.icon}\r\n </span>\r\n )}\r\n </div>\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n {addRowButton && !loading && (\r\n <tr className=\"rh-border-border hover:rh-bg-background/50 rh-cursor-pointer rh-py-3\">\r\n <td\r\n colSpan={colSpan}\r\n className={[\r\n \"rh-text-center rh-cursor-pointer rh-text-[#9CA3AF] rh-font-medium rh-px-4 rh-py-3 rh-rounded-b\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n onClick={onAddRow}\r\n >\r\n <div className=\"rh-flex rh-items-center rh-justify-center rh-gap-2 rh-h-6 rh-font-bold rh-text-sm\">\r\n {addRowButton.icon}\r\n {addRowButton.text}\r\n </div>\r\n </td>\r\n </tr>\r\n )}\r\n </tbody>\r\n </table>\r\n </div>\r\n );\r\n}\r\n\r\nexport const Table = forwardRef(TableInner) as <T>(\r\n props: TableProps<T> & { ref?: React.ForwardedRef<HTMLTableElement> },\r\n) => React.ReactElement;\r\n","\"use client\";\r\n\r\nimport React, { forwardRef } from \"react\";\r\n\r\nexport type TypographyVariant =\r\n // Headings\r\n | \"h1\"\r\n | \"h2\"\r\n | \"h3\"\r\n | \"h4\"\r\n | \"h5\"\r\n | \"h6\"\r\n // Body text\r\n | \"body\"\r\n | \"bodyLg\"\r\n | \"bodySm\"\r\n // Labels (form labels, etc)\r\n | \"label\"\r\n | \"labelSm\"\r\n | \"labelLg\"\r\n // Form specific\r\n | \"formLabel\" // Label de campo de formulário\r\n | \"formText\" // Texto dentro de forms\r\n | \"formHelper\" // Texto de ajuda\r\n // Section titles\r\n | \"sectionTitle\" // Título de seção\r\n | \"modalTitle\" // Título de modal\r\n // Captions\r\n | \"caption\"\r\n | \"captionSm\"\r\n // Special\r\n | \"menu\"\r\n | \"overline\"\r\n | \"link\";\r\n\r\nexport type TypographyColor =\r\n | \"default\"\r\n | \"muted\"\r\n | \"primary\"\r\n | \"secondary\"\r\n | \"danger\"\r\n | \"success\"\r\n | \"warning\"\r\n | \"info\";\r\n\r\nexport type TypographyProps = React.HTMLAttributes<HTMLElement> & {\r\n /** Typographic variant */\r\n variant?: TypographyVariant;\r\n /** Color preset */\r\n color?: TypographyColor;\r\n /** Bold weight */\r\n bold?: boolean;\r\n /** Semibold weight */\r\n semibold?: boolean;\r\n /** Medium weight */\r\n medium?: boolean;\r\n /** Override the rendered HTML element */\r\n as?: keyof JSX.IntrinsicElements;\r\n};\r\n\r\nconst defaultElements: Record<TypographyVariant, keyof JSX.IntrinsicElements> = {\r\n h1: \"h1\",\r\n h2: \"h2\",\r\n h3: \"h3\",\r\n h4: \"h4\",\r\n h5: \"h5\",\r\n h6: \"h6\",\r\n bodyLg: \"p\",\r\n body: \"p\",\r\n bodySm: \"p\",\r\n label: \"span\",\r\n labelSm: \"span\",\r\n labelLg: \"span\",\r\n formLabel: \"label\",\r\n formText: \"span\",\r\n formHelper: \"span\",\r\n sectionTitle: \"h3\",\r\n modalTitle: \"h2\",\r\n caption: \"span\",\r\n captionSm: \"span\",\r\n menu: \"span\",\r\n overline: \"span\",\r\n link: \"span\",\r\n};\r\n\r\nconst variantClasses: Record<TypographyVariant, string> = {\r\n // Headings - Sora font\r\n h1: \"rh-text-4xl rh-font-bold rh-leading-tight rh-font-display\", // 36px Sora Bold\r\n h2: \"rh-text-2xl rh-font-bold rh-leading-snug rh-font-display\", // 24px Sora Bold\r\n h3: \"rh-text-xl rh-font-semibold rh-leading-snug rh-font-display\", // 20px Sora SemiBold\r\n h4: \"rh-text-lg rh-font-semibold rh-leading-snug rh-font-display\", // 18px Sora SemiBold\r\n h5: \"rh-text-base rh-font-bold rh-leading-normal rh-font-display\", // 16px Sora Bold\r\n h6: \"rh-text-sm rh-font-bold rh-leading-normal rh-font-display\", // 14px Sora Bold\r\n \r\n // Body - Inter font\r\n bodyLg: \"rh-text-base rh-font-normal rh-leading-normal rh-font-body\", // 16px Inter\r\n body: \"rh-text-sm rh-font-normal rh-leading-normal rh-font-body\", // 14px Inter\r\n bodySm: \"rh-text-xs rh-font-normal rh-leading-normal rh-font-body\", // 12px Inter\r\n \r\n // Labels - Inter font\r\n label: \"rh-text-sm rh-font-medium rh-leading-normal rh-font-body\", // 14px Inter Medium\r\n labelSm: \"rh-text-xs rh-font-medium rh-leading-normal rh-font-body\", // 12px Inter Medium\r\n labelLg: \"rh-text-base rh-font-medium rh-leading-normal rh-font-body\", // 16px Inter Medium\r\n \r\n // Form specific - Inter font (mais usados no projeto)\r\n formLabel: \"rh-text-sm rh-font-semibold rh-leading-normal rh-font-body\", // 14px Inter SemiBold\r\n formText: \"rh-text-sm rh-font-normal rh-leading-normal rh-font-body\", // 14px Inter Normal\r\n formHelper: \"rh-text-xs rh-font-normal rh-leading-normal rh-font-body\", // 12px Inter Normal\r\n \r\n // Section titles - Inter font\r\n sectionTitle: \"rh-text-base rh-font-semibold rh-leading-normal rh-font-body\", // 16px Inter SemiBold (Dados da empresa:)\r\n modalTitle: \"rh-text-base rh-font-bold rh-leading-normal rh-font-display\", // 16px Sora Bold (títulos de modal)\r\n \r\n // Captions - Inter font\r\n caption: \"rh-text-xs rh-font-normal rh-leading-normal rh-font-body\", // 12px Inter\r\n captionSm: \"rh-text-2xs rh-font-normal rh-leading-tight rh-font-body\", // 10px Inter\r\n \r\n // Special\r\n menu: \"rh-text-xs rh-font-bold rh-leading-normal rh-font-display\", // 12px Sora Bold\r\n overline: \"rh-text-2xs rh-font-semibold rh-leading-tight rh-font-body rh-tracking-wide rh-uppercase\", // 10px Inter SemiBold UPPERCASE\r\n link: \"rh-text-sm rh-font-medium rh-leading-normal rh-font-body rh-underline\", // 14px Inter Medium underline\r\n};\r\n\r\nconst colorClasses: Record<TypographyColor, string> = {\r\n default: \"rh-text-text\",\r\n muted: \"rh-text-text-muted\",\r\n primary: \"rh-text-primary\",\r\n secondary: \"rh-text-secondary\",\r\n danger: \"rh-text-danger\",\r\n success: \"rh-text-success\",\r\n warning: \"rh-text-warning\",\r\n info: \"rh-text-info\",\r\n};\r\n\r\nexport const Typography = forwardRef<HTMLElement, TypographyProps>(function Typography(\r\n { \r\n variant = \"body\", \r\n color = \"default\", \r\n bold = false, \r\n semibold = false, \r\n medium = false,\r\n as, \r\n className = \"\", \r\n children, \r\n ...rest \r\n },\r\n ref,\r\n) {\r\n const element = as ?? defaultElements[variant];\r\n\r\n // Determinar weight override (prioridade: bold > semibold > medium)\r\n const weightClass = bold \r\n ? \"rh-font-bold\" \r\n : semibold \r\n ? \"rh-font-semibold\" \r\n : medium \r\n ? \"rh-font-medium\" \r\n : \"\";\r\n\r\n return React.createElement(\r\n element as string,\r\n {\r\n ref,\r\n className: [\r\n variantClasses[variant],\r\n colorClasses[color],\r\n weightClass,\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \"),\r\n ...rest,\r\n },\r\n children,\r\n );\r\n});\r\n","import React, { forwardRef, useMemo } from \"react\";\r\nimport { CaretLeftIcon, CaretRightIcon } from \"../../icons\";\r\n\r\nexport type PaginationProps = {\r\n /** Current active page (1-indexed) */\r\n currentPage: number;\r\n /** Total number of pages */\r\n totalPages: number;\r\n /** Callback when page changes */\r\n onPageChange: (page: number) => void;\r\n /** Maximum number of page buttons to show (default: 5) */\r\n maxVisible?: number;\r\n /** Show prev/next arrows (default: true) */\r\n showArrows?: boolean;\r\n /** Custom class for the container */\r\n className?: string;\r\n /** Disable pagination */\r\n disabled?: boolean;\r\n};\r\n\r\ntype PageItem = number | \"ellipsis-start\" | \"ellipsis-end\";\r\n\r\nfunction getVisiblePages(currentPage: number, totalPages: number, maxVisible: number): PageItem[] {\r\n if (totalPages <= maxVisible) {\r\n return Array.from({ length: totalPages }, (_, i) => i + 1);\r\n }\r\n\r\n const half = Math.floor(maxVisible / 2);\r\n let start = currentPage - half;\r\n let end = currentPage + half;\r\n\r\n if (start < 1) {\r\n start = 1;\r\n end = maxVisible;\r\n }\r\n\r\n if (end > totalPages) {\r\n end = totalPages;\r\n start = totalPages - maxVisible + 1;\r\n }\r\n\r\n const pages: PageItem[] = [];\r\n\r\n if (start > 1) {\r\n pages.push(1);\r\n if (start > 2) {\r\n pages.push(\"ellipsis-start\");\r\n }\r\n }\r\n\r\n for (let i = start; i <= end; i++) {\r\n if (i >= 1 && i <= totalPages && !pages.includes(i)) {\r\n pages.push(i);\r\n }\r\n }\r\n\r\n if (end < totalPages) {\r\n if (end < totalPages - 1) {\r\n pages.push(\"ellipsis-end\");\r\n }\r\n if (!pages.includes(totalPages)) {\r\n pages.push(totalPages);\r\n }\r\n }\r\n\r\n return pages;\r\n}\r\n\r\nexport const Pagination = forwardRef<HTMLDivElement, PaginationProps>(function Pagination(\r\n {\r\n currentPage,\r\n totalPages,\r\n onPageChange,\r\n maxVisible = 5,\r\n showArrows = true,\r\n className = \"\",\r\n disabled = false,\r\n },\r\n ref,\r\n) {\r\n const visiblePages = useMemo(\r\n () => getVisiblePages(currentPage, totalPages, maxVisible),\r\n [currentPage, totalPages, maxVisible],\r\n );\r\n\r\n const canGoPrev = currentPage > 1;\r\n const canGoNext = currentPage < totalPages;\r\n\r\n const handlePageClick = (page: number) => {\r\n if (!disabled && page !== currentPage && page >= 1 && page <= totalPages) {\r\n onPageChange(page);\r\n }\r\n };\r\n\r\n const handlePrev = () => {\r\n if (!disabled && canGoPrev) {\r\n onPageChange(currentPage - 1);\r\n }\r\n };\r\n\r\n const handleNext = () => {\r\n if (!disabled && canGoNext) {\r\n onPageChange(currentPage + 1);\r\n }\r\n };\r\n\r\n if (totalPages <= 1) {\r\n return null;\r\n }\r\n\r\n return (\r\n <nav\r\n ref={ref}\r\n role=\"navigation\"\r\n aria-label=\"Paginação\"\r\n className={[\r\n \"rh-flex rh-flex-row rh-items-center rh-justify-end rh-gap-1\",\r\n disabled ? \"rh-opacity-50 rh-pointer-events-none\" : \"\",\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {/* Previous Arrow */}\r\n {showArrows && (\r\n <button\r\n type=\"button\"\r\n onClick={handlePrev}\r\n disabled={!canGoPrev || disabled}\r\n aria-label=\"Página anterior\"\r\n className={[\r\n \"rh-w-8 rh-h-8 rh-rounded-full rh-flex rh-items-center rh-justify-center\",\r\n \"rh-bg-transparent\",\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 canGoPrev && !disabled\r\n ? \"rh-text-gray-700 hover:rh-bg-gray-100 rh-cursor-pointer\"\r\n : \"rh-text-gray-300 rh-cursor-not-allowed\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <CaretLeftIcon className=\"rh-w-4 rh-h-4\" />\r\n </button>\r\n )}\r\n\r\n {/* Page Numbers */}\r\n {visiblePages.map((page, index) => {\r\n if (page === \"ellipsis-start\" || page === \"ellipsis-end\") {\r\n return (\r\n <span\r\n key={page}\r\n className=\"rh-w-8 rh-h-8 rh-flex rh-items-center rh-justify-center rh-text-gray-500 rh-font-display rh-text-xs rh-font-bold\"\r\n aria-hidden=\"true\"\r\n >\r\n ...\r\n </span>\r\n );\r\n }\r\n\r\n const isActive = page === currentPage;\r\n\r\n return (\r\n <button\r\n key={page}\r\n type=\"button\"\r\n onClick={() => handlePageClick(page)}\r\n disabled={disabled}\r\n aria-label={`Página ${page}`}\r\n aria-current={isActive ? \"page\" : undefined}\r\n className={[\r\n \"rh-w-8 rh-h-8 rh-rounded-full rh-flex rh-items-center rh-justify-center\",\r\n \"rh-font-display rh-text-xs rh-font-bold rh-leading-5\",\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 isActive\r\n ? \"rh-bg-primary rh-text-white\"\r\n : \"rh-bg-transparent rh-text-gray-700 hover:rh-bg-gray-100 rh-cursor-pointer\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n {page}\r\n </button>\r\n );\r\n })}\r\n\r\n {/* Next Arrow */}\r\n {showArrows && (\r\n <button\r\n type=\"button\"\r\n onClick={handleNext}\r\n disabled={!canGoNext || disabled}\r\n aria-label=\"Próxima página\"\r\n className={[\r\n \"rh-w-8 rh-h-8 rh-rounded-full rh-flex rh-items-center rh-justify-center\",\r\n \"rh-bg-transparent\",\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 canGoNext && !disabled\r\n ? \"rh-text-gray-700 hover:rh-bg-gray-100 rh-cursor-pointer\"\r\n : \"rh-text-gray-300 rh-cursor-not-allowed\",\r\n ]\r\n .filter(Boolean)\r\n .join(\" \")}\r\n >\r\n <CaretRightIcon className=\"rh-w-4 rh-h-4\" />\r\n </button>\r\n )}\r\n </nav>\r\n );\r\n});\r\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"]}