@rehagro/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/provider/theme.ts","../src/icons/DeleteIcon.tsx","../src/icons/EditIcon.tsx","../src/icons/SearchIcon.tsx","../src/icons/PlusIcon.tsx","../src/icons/InfoIcon.tsx","../src/icons/WarningIcon.tsx","../src/icons/SuccessIcon.tsx","../src/icons/ErrorIcon.tsx","../src/icons/NeutralIcon.tsx","../src/icons/CloseIcon.tsx","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastContainer.tsx","../src/components/Toast/ToastContext.tsx","../src/provider/RehagroProvider.tsx","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/TextInput/TextInput.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Select/Select.tsx","../src/components/Tooltip/Tooltip.tsx"],"names":["jsx","jsxs","Toast","useState","useRef","useCallback","forwardRef","Button","React","sizeClasses","radiusClasses","IconButton","TextInput","iconSizeClasses","Checkbox","statusClasses","helperStatusClasses","CheckIcon","Select","variantClasses","Tooltip","useEffect"],"mappings":"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","file":"index.mjs","sourcesContent":["export type RehagroTheme = {\n /** Brand colors — accepts \"#RRGGBB\", \"r g b\", or \"rgb(r,g,b)\" */\n primary?: string;\n primaryHover?: string;\n secondary?: string;\n secondaryHover?: string;\n danger?: string;\n dangerHover?: string;\n warning?: string;\n success?: string;\n\n /** Semantic colors */\n text?: string;\n textMuted?: string;\n surface?: string;\n background?: string;\n border?: string;\n ring?: string;\n\n /** Border radius (xxs:4 → xs:8 → sm:12 → md:16 → lg:24 → xl:32) */\n radiusXxs?: string;\n radiusXs?: string;\n radiusSm?: string;\n radiusMd?: string;\n radiusLg?: string;\n radiusXl?: string;\n\n /** Border width */\n borderWidthSm?: string;\n borderWidthMd?: string;\n borderWidthLg?: string;\n\n /** Input sizes */\n inputHeightSm?: string;\n inputHeightMd?: string;\n inputHeightLg?: string;\n inputPxSm?: string;\n inputPxMd?: string;\n inputPxLg?: string;\n};\n\nexport type RehagroProviderProps = {\n /** Theme overrides — any token not provided keeps the default value */\n theme?: RehagroTheme;\n /** Toast container position. Default: \"top-right\" */\n toastPosition?: import(\"../components/Toast\").ToastPosition;\n children: React.ReactNode;\n};\n\n/** Maps theme keys to CSS custom property names */\nexport const TOKEN_MAP: Record<keyof RehagroTheme, { var: string; isColor: boolean }> = {\n primary: { var: \"--rh-primary\", isColor: true },\n primaryHover: { var: \"--rh-primary-hover\", isColor: true },\n secondary: { var: \"--rh-secondary\", isColor: true },\n secondaryHover: { var: \"--rh-secondary-hover\", isColor: true },\n danger: { var: \"--rh-danger\", isColor: true },\n dangerHover: { var: \"--rh-danger-hover\", isColor: true },\n warning: { var: \"--rh-warning\", isColor: true },\n success: { var: \"--rh-success\", isColor: true },\n text: { var: \"--rh-text\", isColor: true },\n textMuted: { var: \"--rh-text-muted\", isColor: true },\n surface: { var: \"--rh-surface\", isColor: true },\n background: { var: \"--rh-background\", isColor: true },\n border: { var: \"--rh-border\", isColor: true },\n ring: { var: \"--rh-ring\", isColor: true },\n radiusXxs: { var: \"--rh-radius-xxs\", isColor: false },\n radiusXs: { var: \"--rh-radius-xs\", isColor: false },\n radiusSm: { var: \"--rh-radius-sm\", isColor: false },\n radiusMd: { var: \"--rh-radius-md\", isColor: false },\n radiusLg: { var: \"--rh-radius-lg\", isColor: false },\n radiusXl: { var: \"--rh-radius-xl\", isColor: false },\n borderWidthSm: { var: \"--rh-border-width-sm\", isColor: false },\n borderWidthMd: { var: \"--rh-border-width-md\", isColor: false },\n borderWidthLg: { var: \"--rh-border-width-lg\", isColor: false },\n inputHeightSm: { var: \"--rh-input-height-sm\", isColor: false },\n inputHeightMd: { var: \"--rh-input-height-md\", isColor: false },\n inputHeightLg: { var: \"--rh-input-height-lg\", isColor: false },\n inputPxSm: { var: \"--rh-input-px-sm\", isColor: false },\n inputPxMd: { var: \"--rh-input-px-md\", isColor: false },\n inputPxLg: { var: \"--rh-input-px-lg\", isColor: false },\n};\n","import type { IconProps } from \"./types\";\n\nexport const DeleteIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const EditIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SearchIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <circle cx=\"11\" cy=\"11\" r=\"8\" />\n <path d=\"m21 21-4.3-4.3\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const PlusIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const InfoIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const WarningIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M8.485 2.495c.673-1.167 2.357-1.167 3.03 0l6.28 10.875c.673 1.167-.17 2.625-1.516 2.625H3.72c-1.347 0-2.189-1.458-1.515-2.625L8.485 2.495zM10 5a.75.75 0 01.75.75v3.5a.75.75 0 01-1.5 0v-3.5A.75.75 0 0110 5zm0 9a1 1 0 100-2 1 1 0 000 2z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const SuccessIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const ErrorIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M10 18a8 8 0 100-16 8 8 0 000 16zM8.28 7.22a.75.75 0 00-1.06 1.06L8.94 10l-1.72 1.72a.75.75 0 101.06 1.06L10 11.06l1.72 1.72a.75.75 0 101.06-1.06L11.06 10l1.72-1.72a.75.75 0 00-1.06-1.06L10 8.94 8.28 7.22z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const NeutralIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n d=\"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-3.75a.75.75 0 000 1.5h.01a.75.75 0 000-1.5H10zm-.75 3a.75.75 0 01.75-.75h.01a.75.75 0 01.75.75v3a.75.75 0 01-.75.75H10a.75.75 0 01-.75-.75v-3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import type { IconProps } from \"./types\";\n\nexport const CloseIcon = (props: IconProps) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"1em\"\n height=\"1em\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n aria-hidden=\"true\"\n {...props}\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n);\n","import React, { forwardRef } from \"react\";\nimport {\n InfoIcon,\n WarningIcon,\n SuccessIcon,\n ErrorIcon,\n NeutralIcon,\n CloseIcon,\n} from \"../../icons\";\n\nexport type ToastVariant = \"info\" | \"warning\" | \"success\" | \"error\" | \"neutral\";\nexport type ToastAppearance = \"solid\" | \"light\" | \"outline\";\n\nexport type ToastLink = {\n label: string;\n href?: string;\n onClick?: () => void;\n};\n\nexport type ToastProps = React.HTMLAttributes<HTMLDivElement> & {\n /** Toast title */\n title: string;\n /** Optional description below the title */\n description?: string;\n /** Optional link below the content */\n link?: ToastLink;\n /** Visual variant */\n variant?: ToastVariant;\n /** Visual appearance */\n appearance?: ToastAppearance;\n /** Callback when the close button is clicked */\n onClose?: () => void;\n};\n\n// ── Icon map ──────────────────────────────────────────────────────────────────\n\ntype IconComponent = React.FC<React.SVGAttributes<SVGSVGElement>>;\n\nconst variantIconMap: Record<ToastVariant, IconComponent> = {\n info: InfoIcon,\n warning: WarningIcon,\n success: SuccessIcon,\n error: ErrorIcon,\n neutral: NeutralIcon,\n};\n\n// ── Style maps ────────────────────────────────────────────────────────────────\n\ntype StyleKey = `${ToastVariant}-${ToastAppearance}`;\n\nconst containerStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-bg-blue-600 rh-text-white rh-border-transparent\",\n \"info-light\": \"rh-bg-blue-50 rh-text-blue-900 rh-border-blue-200\",\n \"info-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"warning-solid\": \"rh-bg-yellow-500 rh-text-white rh-border-transparent\",\n \"warning-light\": \"rh-bg-yellow-50 rh-text-yellow-900 rh-border-yellow-200\",\n \"warning-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"success-solid\": \"rh-bg-[rgb(var(--rh-success))] rh-text-white rh-border-transparent\",\n \"success-light\": \"rh-bg-green-50 rh-text-green-900 rh-border-green-200\",\n \"success-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"error-solid\": \"rh-bg-[rgb(var(--rh-danger))] rh-text-white rh-border-transparent\",\n \"error-light\": \"rh-bg-red-50 rh-text-red-900 rh-border-red-200\",\n \"error-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n \"neutral-solid\": \"rh-bg-gray-900 rh-text-white rh-border-transparent\",\n \"neutral-light\": \"rh-bg-gray-100 rh-text-gray-900 rh-border-gray-200\",\n \"neutral-outline\": \"rh-bg-surface rh-text-text rh-border-border\",\n};\n\nconst iconStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white\",\n \"info-light\": \"rh-text-blue-600\",\n \"info-outline\": \"rh-text-blue-600\",\n \"warning-solid\": \"rh-text-white\",\n \"warning-light\": \"rh-text-yellow-600\",\n \"warning-outline\": \"rh-text-yellow-600\",\n \"success-solid\": \"rh-text-white\",\n \"success-light\": \"rh-text-green-600\",\n \"success-outline\": \"rh-text-green-600\",\n \"error-solid\": \"rh-text-white\",\n \"error-light\": \"rh-text-red-600\",\n \"error-outline\": \"rh-text-red-600\",\n \"neutral-solid\": \"rh-text-white\",\n \"neutral-light\": \"rh-text-gray-600\",\n \"neutral-outline\": \"rh-text-gray-600\",\n};\n\nconst descriptionStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700\",\n \"info-outline\": \"rh-text-text-muted\",\n \"warning-solid\": \"rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700\",\n \"warning-outline\": \"rh-text-text-muted\",\n \"success-solid\": \"rh-text-white/80\",\n \"success-light\": \"rh-text-green-700\",\n \"success-outline\": \"rh-text-text-muted\",\n \"error-solid\": \"rh-text-white/80\",\n \"error-light\": \"rh-text-red-700\",\n \"error-outline\": \"rh-text-text-muted\",\n \"neutral-solid\": \"rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700\",\n \"neutral-outline\": \"rh-text-text-muted\",\n};\n\nconst linkStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"info-light\": \"rh-text-blue-700 rh-underline hover:rh-text-blue-900\",\n \"info-outline\": \"rh-text-blue-600 rh-underline hover:rh-text-blue-800\",\n \"warning-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"warning-light\": \"rh-text-yellow-700 rh-underline hover:rh-text-yellow-900\",\n \"warning-outline\": \"rh-text-yellow-600 rh-underline hover:rh-text-yellow-800\",\n \"success-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"success-light\": \"rh-text-green-700 rh-underline hover:rh-text-green-900\",\n \"success-outline\": \"rh-text-green-600 rh-underline hover:rh-text-green-800\",\n \"error-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"error-light\": \"rh-text-red-700 rh-underline hover:rh-text-red-900\",\n \"error-outline\": \"rh-text-red-600 rh-underline hover:rh-text-red-800\",\n \"neutral-solid\": \"rh-text-white rh-underline hover:rh-text-white/80\",\n \"neutral-light\": \"rh-text-gray-700 rh-underline hover:rh-text-gray-900\",\n \"neutral-outline\": \"rh-text-gray-600 rh-underline hover:rh-text-gray-800\",\n};\n\nconst closeStyles: Record<StyleKey, string> = {\n \"info-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"info-light\": \"rh-text-blue-500 hover:rh-text-blue-800\",\n \"info-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"warning-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"warning-light\": \"rh-text-yellow-500 hover:rh-text-yellow-800\",\n \"warning-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"success-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"success-light\": \"rh-text-green-500 hover:rh-text-green-800\",\n \"success-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"error-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"error-light\": \"rh-text-red-500 hover:rh-text-red-800\",\n \"error-outline\": \"rh-text-text-muted hover:rh-text-text\",\n \"neutral-solid\": \"rh-text-white/80 hover:rh-text-white\",\n \"neutral-light\": \"rh-text-gray-500 hover:rh-text-gray-800\",\n \"neutral-outline\": \"rh-text-text-muted hover:rh-text-text\",\n};\n\n// ── Component ─────────────────────────────────────────────────────────────────\n\nexport const Toast = forwardRef<HTMLDivElement, ToastProps>(function Toast(\n {\n title,\n description,\n link,\n variant = \"info\",\n appearance = \"light\",\n onClose,\n className = \"\",\n ...rest\n },\n ref,\n) {\n const styleKey: StyleKey = `${variant}-${appearance}`;\n const Icon = variantIconMap[variant];\n\n return (\n <div\n ref={ref}\n role=\"alert\"\n aria-live=\"assertive\"\n aria-atomic=\"true\"\n className={[\n \"rh-flex rh-items-start rh-gap-3\",\n \"rh-w-80 rh-rounded-sm rh-border rh-p-4\",\n \"rh-shadow-md rh-font-sans\",\n containerStyles[styleKey],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {/* Icon */}\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n <Icon\n className={[\"rh-w-5 rh-h-5\", iconStyles[styleKey]]\n .filter(Boolean)\n .join(\" \")}\n />\n </span>\n\n {/* Content */}\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p className=\"rh-text-sm rh-font-semibold rh-leading-tight\">{title}</p>\n\n {description && (\n <p\n className={[\n \"rh-mt-1 rh-text-sm rh-leading-normal\",\n descriptionStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n\n {link && (\n <a\n href={link.href}\n onClick={link.onClick}\n className={[\n \"rh-mt-1 rh-inline-block rh-text-sm rh-font-medium\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1 rh-rounded-xxs\",\n linkStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {link.label}\n </a>\n )}\n </div>\n\n {/* Close button */}\n {onClose && (\n <button\n type=\"button\"\n aria-label=\"Close notification\"\n onClick={onClose}\n className={[\n \"rh-flex-shrink-0 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-1\",\n closeStyles[styleKey],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <CloseIcon className=\"rh-w-4 rh-h-4\" />\n </button>\n )}\n </div>\n );\n});\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { ToastPosition } from \"./ToastContext\";\nimport { Toast } from \"./Toast\";\nimport { useToastContext } from \"./ToastContext\";\n\n// ── Animation direction per position ─────────────────────────────────────────\n\ntype AnimDir = \"right\" | \"left\" | \"top\" | \"bottom\";\n\nconst positionAnimDir: Record<ToastPosition, AnimDir> = {\n \"top-right\": \"right\",\n \"bottom-right\": \"right\",\n \"top-left\": \"left\",\n \"bottom-left\": \"left\",\n \"top-center\": \"top\",\n \"bottom-center\": \"bottom\",\n};\n\nconst enterClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-in-right\",\n left: \"rh-animate-toast-in-left\",\n top: \"rh-animate-toast-in-top\",\n bottom: \"rh-animate-toast-in-bottom\",\n};\n\nconst leaveClass: Record<AnimDir, string> = {\n right: \"rh-animate-toast-out-right\",\n left: \"rh-animate-toast-out-left\",\n top: \"rh-animate-toast-out-top\",\n bottom: \"rh-animate-toast-out-bottom\",\n};\n\n// ── Position container classes ────────────────────────────────────────────────\n\nconst positionClasses: Record<ToastPosition, string> = {\n \"top-right\": \"rh-top-4 rh-right-4 rh-items-end\",\n \"top-left\": \"rh-top-4 rh-left-4 rh-items-start\",\n \"top-center\": \"rh-top-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n \"bottom-right\": \"rh-bottom-4 rh-right-4 rh-items-end\",\n \"bottom-left\": \"rh-bottom-4 rh-left-4 rh-items-start\",\n \"bottom-center\": \"rh-bottom-4 rh-left-1/2 rh--translate-x-1/2 rh-items-center\",\n};\n\n// ── Animated item ─────────────────────────────────────────────────────────────\n\nconst LEAVE_DURATION_MS = 200;\n\ntype AnimatedToastItemProps = {\n id: string;\n animDir: AnimDir;\n isDismissing: boolean;\n onRemove: (id: string) => void;\n onRequestDismiss: (id: string) => void;\n children: (onClose: () => void) => JSX.Element;\n};\n\nfunction AnimatedToastItem({\n id,\n animDir,\n isDismissing,\n onRemove,\n onRequestDismiss,\n children,\n}: AnimatedToastItemProps) {\n const [entered, setEntered] = useState(false);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // When the context signals dismiss, start the leave timer then remove\n useEffect(() => {\n if (!isDismissing) return;\n leaveTimerRef.current = setTimeout(() => {\n onRemove(id);\n }, LEAVE_DURATION_MS);\n return () => {\n if (leaveTimerRef.current) clearTimeout(leaveTimerRef.current);\n };\n }, [id, isDismissing, onRemove]);\n\n const handleAnimationEnd = useCallback(() => {\n if (!entered) setEntered(true);\n }, [entered]);\n\n const handleClose = useCallback(() => {\n onRequestDismiss(id);\n }, [id, onRequestDismiss]);\n\n const animClass = isDismissing\n ? leaveClass[animDir]\n : entered\n ? \"\"\n : enterClass[animDir];\n\n return (\n <div className={animClass} onAnimationEnd={handleAnimationEnd}>\n {children(handleClose)}\n </div>\n );\n}\n\n// ── Container ─────────────────────────────────────────────────────────────────\n\nexport function ToastContainer() {\n const { toasts, dismissingIds, position, requestDismiss, remove } = useToastContext();\n const animDir = positionAnimDir[position];\n\n if (toasts.length === 0) return null;\n\n return (\n <div\n aria-label=\"Notifications\"\n aria-live=\"polite\"\n className={[\n \"rh-fixed rh-z-[9999]\",\n \"rh-flex rh-flex-col rh-gap-3\",\n \"rh-pointer-events-none\",\n positionClasses[position],\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {toasts.map((toast) => (\n <AnimatedToastItem\n key={toast.id}\n id={toast.id}\n animDir={animDir}\n isDismissing={dismissingIds.has(toast.id)}\n onRemove={remove}\n onRequestDismiss={requestDismiss}\n >\n {(onClose) => (\n <div className=\"rh-pointer-events-auto\">\n <Toast\n title={toast.title}\n description={toast.description}\n link={toast.link}\n variant={toast.variant}\n appearance={toast.appearance}\n onClose={onClose}\n />\n </div>\n )}\n </AnimatedToastItem>\n ))}\n </div>\n );\n}\n","import React, {\n createContext,\n useCallback,\n useContext,\n useRef,\n useState,\n} from \"react\";\nimport type { ToastAppearance, ToastLink, ToastVariant } from \"./Toast\";\nimport { ToastContainer } from \"./ToastContainer\";\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\nexport type ToastPosition =\n | \"top-right\"\n | \"top-left\"\n | \"top-center\"\n | \"bottom-right\"\n | \"bottom-left\"\n | \"bottom-center\";\n\nexport type ToastItem = {\n id: string;\n title: string;\n description?: string;\n link?: ToastLink;\n variant: ToastVariant;\n appearance: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration: number;\n};\n\nexport type ToastOptions = {\n description?: string;\n link?: ToastLink;\n appearance?: ToastAppearance;\n /** Auto-dismiss duration in ms. 0 = permanent. Default: 5000 */\n duration?: number;\n};\n\nexport type ToastFn = {\n (title: string, options?: ToastOptions): string;\n info: (title: string, options?: ToastOptions) => string;\n warning: (title: string, options?: ToastOptions) => string;\n success: (title: string, options?: ToastOptions) => string;\n error: (title: string, options?: ToastOptions) => string;\n neutral: (title: string, options?: ToastOptions) => string;\n dismiss: (id: string) => void;\n};\n\ntype ToastContextValue = {\n toasts: ToastItem[];\n /** IDs signaled for dismissal — triggers leave animation in ToastContainer */\n dismissingIds: Set<string>;\n position: ToastPosition;\n add: (item: Omit<ToastItem, \"id\">) => string;\n /** Signals a toast to start its leave animation */\n requestDismiss: (id: string) => void;\n /** Actually removes the toast from state (called after leave animation) */\n remove: (id: string) => void;\n};\n\n// ── Context ───────────────────────────────────────────────────────────────────\n\nconst ToastContext = createContext<ToastContextValue | null>(null);\n\n// ── Provider ──────────────────────────────────────────────────────────────────\n\nexport type ToastProviderProps = {\n children: React.ReactNode;\n /** Position of the toast container. Default: \"top-right\" */\n position?: ToastPosition;\n};\n\nexport function ToastProvider({\n children,\n position = \"top-right\",\n}: ToastProviderProps) {\n const [toasts, setToasts] = useState<ToastItem[]>([]);\n const [dismissingIds, setDismissingIds] = useState<Set<string>>(new Set());\n const counterRef = useRef(0);\n\n const remove = useCallback((id: string) => {\n setToasts((prev) => prev.filter((t) => t.id !== id));\n setDismissingIds((prev) => {\n const next = new Set(prev);\n next.delete(id);\n return next;\n });\n }, []);\n\n const requestDismiss = useCallback((id: string) => {\n setDismissingIds((prev) => new Set(prev).add(id));\n }, []);\n\n const add = useCallback(\n (item: Omit<ToastItem, \"id\">) => {\n const id = `rh-toast-${++counterRef.current}`;\n const toast: ToastItem = { ...item, id };\n\n setToasts((prev) => [...prev, toast]);\n\n if (toast.duration > 0) {\n setTimeout(() => requestDismiss(id), toast.duration);\n }\n\n return id;\n },\n [requestDismiss],\n );\n\n return (\n <ToastContext.Provider value={{ toasts, dismissingIds, position, add, requestDismiss, remove }}>\n {children}\n <ToastContainer />\n </ToastContext.Provider>\n );\n}\n\n// ── Internal hook (used by ToastContainer) ────────────────────────────────────\n\nexport function useToastContext(): ToastContextValue {\n const ctx = useContext(ToastContext);\n if (!ctx) {\n throw new Error(\"useToastContext must be used inside ToastProvider\");\n }\n return ctx;\n}\n\n// ── Public hook ───────────────────────────────────────────────────────────────\n\nexport function useToast(): { toast: ToastFn } {\n const { add, requestDismiss } = useToastContext();\n\n const createToast = useCallback(\n (variant: ToastVariant) =>\n (title: string, options: ToastOptions = {}): string => {\n return add({\n title,\n variant,\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n );\n\n const toast = useCallback(\n (title: string, options: ToastOptions & { variant?: ToastVariant } = {}): string => {\n return add({\n title,\n variant: options.variant ?? \"info\",\n description: options.description,\n link: options.link,\n appearance: options.appearance ?? \"light\",\n duration: options.duration ?? 5000,\n });\n },\n [add],\n ) as ToastFn;\n\n toast.info = createToast(\"info\");\n toast.warning = createToast(\"warning\");\n toast.success = createToast(\"success\");\n toast.error = createToast(\"error\");\n toast.neutral = createToast(\"neutral\");\n toast.dismiss = requestDismiss;\n\n return { toast };\n}\n","import React, { useMemo } from \"react\";\nimport type { RehagroProviderProps, RehagroTheme } from \"./theme\";\nimport { TOKEN_MAP } from \"./theme\";\nimport { ToastProvider } from \"../components/Toast\";\n\nfunction hexToRgbTriplet(hex: string): string | null {\n const h = hex.replace(\"#\", \"\").trim();\n if (![3, 6].includes(h.length)) return null;\n const full = h.length === 3 ? h.split(\"\").map((c) => c + c).join(\"\") : h;\n const r = parseInt(full.slice(0, 2), 16);\n const g = parseInt(full.slice(2, 4), 16);\n const b = parseInt(full.slice(4, 6), 16);\n if ([r, g, b].some(Number.isNaN)) return null;\n return `${r} ${g} ${b}`;\n}\n\nfunction toRgbTriplet(value?: string): string | undefined {\n if (!value) return undefined;\n\n // \"#RRGGBB\" or \"#RGB\"\n if (value.startsWith(\"#\")) return hexToRgbTriplet(value) ?? undefined;\n\n // \"rgb(r, g, b)\"\n const m = value.match(/rgb\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*\\)/i);\n if (m) return `${m[1]} ${m[2]} ${m[3]}`;\n\n // \"r g b\" (already a triplet)\n const parts = value.trim().split(/\\s+/);\n if (parts.length === 3 && parts.every((p) => !Number.isNaN(Number(p)))) {\n return value.trim();\n }\n\n return undefined;\n}\n\nexport function RehagroProvider({ theme, toastPosition, children }: RehagroProviderProps) {\n const style = useMemo(() => {\n if (!theme) return undefined;\n\n const vars: Record<string, string> = {};\n\n for (const [key, config] of Object.entries(TOKEN_MAP)) {\n const value = theme[key as keyof RehagroTheme];\n if (!value) continue;\n\n if (config.isColor) {\n const triplet = toRgbTriplet(value);\n if (triplet) vars[config.var] = triplet;\n } else {\n vars[config.var] = value;\n }\n }\n\n return vars as React.CSSProperties;\n }, [theme]);\n\n return (\n <div className=\"rh-root\" style={style}>\n <ToastProvider position={toastPosition}>{children}</ToastProvider>\n </div>\n );\n}\n","import React, { forwardRef } from \"react\";\n\nexport type ButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type ButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type ButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type ButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: ButtonVariant;\n /** Button size */\n size?: ButtonSize;\n /** Border radius */\n radius?: ButtonRadius;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n /** Icon rendered to the left of children (hidden when loading) */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of children (hidden when loading) */\n rightIcon?: React.ReactNode;\n};\n\nconst variantClasses: Record<ButtonVariant, string> = {\n solid:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n outline:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n ghost: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n};\n\nconst sizeClasses: Record<ButtonSize, string> = {\n sm: \"rh-text-sm rh-px-3 rh-py-1.5\",\n md: \"rh-text-sm rh-px-4 rh-py-2\",\n lg: \"rh-text-base rh-px-5 rh-py-2.5\",\n};\n\nconst radiusClasses: Record<ButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const Button = forwardRef<HTMLButtonElement, ButtonProps>(function Button(\n {\n variant = \"solid\",\n size = \"md\",\n radius = \"sm\",\n loading = false,\n disabled,\n leftIcon,\n rightIcon,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = React.useMemo(() => disabled || loading, [disabled, loading]);\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center rh-gap-2\",\n \"rh-border rh-font-sans rh-font-medium\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n variantClasses[variant],\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading && (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n )}\n {!loading && leftIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {leftIcon}\n </span>\n )}\n {children}\n {!loading && rightIcon && (\n <span className=\"rh-inline-flex rh-shrink-0\" aria-hidden=\"true\">\n {rightIcon}\n </span>\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type IconButtonVariant = \"solid\" | \"outline\" | \"ghost\";\nexport type IconButtonSize = \"sm\" | \"md\" | \"lg\";\nexport type IconButtonRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type IconButtonColor = \"primary\" | \"danger\" | \"warning\" | \"success\" | \"secondary\";\n\nexport type IconButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n /** Visual style variant */\n variant?: IconButtonVariant;\n /** Button size */\n size?: IconButtonSize;\n /** Border radius */\n radius?: IconButtonRadius;\n /** Color scheme */\n color?: IconButtonColor;\n /** Shows loading state and disables interaction */\n loading?: boolean;\n};\n\nconst variantColorClasses: Record<IconButtonVariant, Record<IconButtonColor, string>> = {\n solid: {\n primary:\n \"rh-bg-primary rh-text-surface rh-border-primary hover:rh-bg-primary-hover hover:rh-border-primary-hover\",\n danger:\n \"rh-bg-danger rh-text-surface rh-border-danger hover:rh-bg-danger-hover hover:rh-border-danger-hover\",\n warning:\n \"rh-bg-warning rh-text-surface rh-border-warning hover:rh-bg-warning-hover hover:rh-border-warning-hover\",\n success:\n \"rh-bg-success rh-text-surface rh-border-success hover:rh-bg-success-hover hover:rh-border-success-hover\",\n secondary:\n \"rh-bg-secondary rh-text-surface rh-border-secondary hover:rh-bg-secondary-hover hover:rh-border-secondary-hover\",\n },\n outline: {\n primary:\n \"rh-bg-transparent rh-text-primary rh-border-primary hover:rh-bg-primary hover:rh-text-surface\",\n danger:\n \"rh-bg-transparent rh-text-danger rh-border-danger hover:rh-bg-danger hover:rh-text-surface\",\n warning:\n \"rh-bg-transparent rh-text-warning rh-border-warning hover:rh-bg-warning hover:rh-text-surface\",\n success:\n \"rh-bg-transparent rh-text-success rh-border-success hover:rh-bg-success hover:rh-text-surface\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-secondary hover:rh-bg-secondary hover:rh-text-surface\",\n },\n ghost: {\n primary: \"rh-bg-transparent rh-text-primary rh-border-transparent hover:rh-bg-primary/10\",\n danger: \"rh-bg-transparent rh-text-danger rh-border-transparent hover:rh-bg-danger/10\",\n warning: \"rh-bg-transparent rh-text-warning rh-border-transparent hover:rh-bg-warning/10\",\n success: \"rh-bg-transparent rh-text-success rh-border-transparent hover:rh-bg-success/10\",\n secondary:\n \"rh-bg-transparent rh-text-secondary rh-border-transparent hover:rh-bg-secondary/10\",\n },\n};\n\nconst sizeClasses: Record<IconButtonSize, string> = {\n sm: \"rh-h-8 rh-w-8 rh-text-sm\",\n md: \"rh-h-10 rh-w-10 rh-text-base\",\n lg: \"rh-h-12 rh-w-12 rh-text-lg\",\n};\n\nconst radiusClasses: Record<IconButtonRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nexport const IconButton = forwardRef<HTMLButtonElement, IconButtonProps>(function IconButton(\n {\n variant = \"ghost\",\n size = \"md\",\n radius = \"full\",\n color = \"primary\",\n loading = false,\n disabled,\n className = \"\",\n children,\n ...rest\n },\n ref,\n) {\n const isDisabled = disabled || loading;\n\n return (\n <button\n ref={ref}\n disabled={isDisabled}\n aria-busy={loading || undefined}\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring focus-visible:rh-ring-offset-2\",\n variantColorClasses[variant][color],\n sizeClasses[size],\n radiusClasses[radius],\n isDisabled ? \"rh-opacity-50 rh-cursor-not-allowed rh-pointer-events-none\" : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n >\n {loading ? (\n <svg\n className=\"rh-animate-spin rh-h-4 rh-w-4\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n aria-hidden=\"true\"\n >\n <circle\n className=\"rh-opacity-25\"\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n className=\"rh-opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z\"\n />\n </svg>\n ) : (\n children\n )}\n </button>\n );\n});\n","import React, { forwardRef } from \"react\";\n\nexport type TextInputStatus = \"default\" | \"error\";\nexport type TextInputSize = \"sm\" | \"md\" | \"lg\";\nexport type TextInputRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n\nexport type TextInputProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"size\"\n> & {\n /** Label text displayed above the input */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Validation status */\n status?: TextInputStatus;\n /** Input size */\n size?: TextInputSize;\n /** Border radius */\n radius?: TextInputRadius;\n /** Icon rendered to the left of the input */\n leftIcon?: React.ReactNode;\n /** Icon rendered to the right of the input */\n rightIcon?: React.ReactNode;\n /** Helper/error message displayed below the input (accepts ReactNode for flexibility) */\n helperText?: React.ReactNode;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nconst statusClasses: Record<TextInputStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-h-input-sm rh-text-sm rh-px-input-x-sm\",\n md: \"rh-h-input-md rh-text-sm rh-px-input-x-md\",\n lg: \"rh-h-input-lg rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<TextInputRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst iconSizeClasses: Record<TextInputSize, string> = {\n sm: \"rh-w-4 rh-h-4\",\n md: \"rh-w-5 rh-h-5\",\n lg: \"rh-w-5 rh-h-5\",\n};\n\nconst helperStatusClasses: Record<TextInputStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nexport const TextInput = forwardRef<HTMLInputElement, TextInputProps>(\n function TextInput(\n {\n label,\n subtitle,\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n leftIcon,\n rightIcon,\n helperText,\n disabled,\n className = \"\",\n wrapperClassName = \"\",\n id,\n ...rest\n },\n ref,\n ) {\n const inputId = id || React.useId();\n\n return (\n <div\n className={[\n \"rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n htmlFor={inputId}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Input container */}\n <div\n className={[\n \"rh-flex rh-items-center rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {leftIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {leftIcon}\n </span>\n )}\n\n <input\n ref={ref}\n id={inputId}\n disabled={disabled}\n aria-invalid={status === \"error\" || undefined}\n aria-describedby={helperText ? `${inputId}-helper` : undefined}\n className={[\n \"rh-flex-1 rh-bg-transparent rh-outline-none\",\n \"rh-text-text placeholder:rh-text-text-muted\",\n disabled ? \"rh-cursor-not-allowed\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n {...rest}\n />\n\n {rightIcon && (\n <span\n className={[\n \"rh-inline-flex rh-shrink-0 rh-text-text-muted\",\n iconSizeClasses[size],\n ].join(\" \")}\n aria-hidden=\"true\"\n >\n {rightIcon}\n </span>\n )}\n </div>\n\n {/* Helper text */}\n {helperText && (\n <span\n id={`${inputId}-helper`}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type CheckboxSize = \"sm\" | \"md\" | \"lg\";\n\nexport type CheckboxProps = Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> & {\n /** Checkbox size */\n size?: CheckboxSize;\n /** Label text displayed next to the checkbox */\n label?: string;\n /** Indeterminate state (partially checked) */\n indeterminate?: boolean;\n};\n\nconst sizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-4 rh-w-4\",\n md: \"rh-h-5 rh-w-5\",\n lg: \"rh-h-6 rh-w-6\",\n};\n\nconst iconSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-h-3 rh-w-3\",\n md: \"rh-h-3.5 rh-w-3.5\",\n lg: \"rh-h-4 rh-w-4\",\n};\n\nconst labelSizeClasses: Record<CheckboxSize, string> = {\n sm: \"rh-text-sm\",\n md: \"rh-text-sm\",\n lg: \"rh-text-base\",\n};\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst MinusIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 10 2\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 1H9\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n);\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n function Checkbox(\n {\n size = \"md\",\n label,\n indeterminate = false,\n disabled,\n checked,\n defaultChecked,\n className = \"\",\n id,\n onChange,\n ...rest\n },\n ref,\n ) {\n const innerRef = React.useRef<HTMLInputElement>(null);\n const inputId = id || React.useId();\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement);\n\n React.useEffect(() => {\n if (innerRef.current) {\n innerRef.current.indeterminate = indeterminate;\n }\n }, [indeterminate]);\n\n const isChecked = checked ?? innerRef.current?.checked ?? defaultChecked ?? false;\n const isActive = isChecked || indeterminate;\n\n return (\n <label\n htmlFor={inputId}\n className={[\n \"rh-inline-flex rh-items-center rh-gap-2 rh-font-sans rh-select-none\",\n disabled ? \"rh-cursor-not-allowed rh-opacity-50\" : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-relative rh-inline-flex rh-items-center rh-justify-center\">\n <input\n ref={innerRef}\n id={inputId}\n type=\"checkbox\"\n disabled={disabled}\n checked={checked}\n defaultChecked={defaultChecked}\n aria-checked={indeterminate ? \"mixed\" : undefined}\n onChange={onChange}\n className=\"rh-peer rh-sr-only\"\n {...rest}\n />\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-border rh-border-border rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n sizeClasses[size],\n isActive\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-bg-surface rh-text-transparent\",\n !disabled && !isActive\n ? \"hover:rh-border-primary\"\n : \"\",\n \"peer-focus-visible:rh-ring-2 peer-focus-visible:rh-ring-ring peer-focus-visible:rh-ring-offset-2\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {indeterminate ? (\n <MinusIcon className={iconSizeClasses[size]} />\n ) : isChecked ? (\n <CheckIcon className={iconSizeClasses[size]} />\n ) : null}\n </span>\n </span>\n\n {label && (\n <span\n className={[\n \"rh-text-text\",\n labelSizeClasses[size],\n ].join(\" \")}\n >\n {label}\n </span>\n )}\n </label>\n );\n },\n);\n","import React, { forwardRef } from \"react\";\n\nexport type SelectSize = \"sm\" | \"md\" | \"lg\";\nexport type SelectRadius = \"none\" | \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\nexport type SelectStatus = \"default\" | \"error\";\n\nexport type SelectOption = {\n /** Unique value for the option */\n value: string;\n /** Display label */\n label: string;\n /** Whether the option is disabled */\n disabled?: boolean;\n};\n\ntype SelectBaseProps = {\n /** List of available options */\n options: SelectOption[];\n /** Label text displayed above the select */\n label?: string;\n /** Subtitle displayed next to the label */\n subtitle?: string;\n /** Placeholder text when no option is selected */\n placeholder?: string;\n /** Validation status */\n status?: SelectStatus;\n /** Select size */\n size?: SelectSize;\n /** Border radius */\n radius?: SelectRadius;\n /** Helper/error message displayed below the select */\n helperText?: React.ReactNode;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Custom class for the trigger container */\n className?: string;\n /** Custom class for the outermost wrapper */\n wrapperClassName?: string;\n};\n\nexport type SelectSingleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple?: false;\n /** Currently selected value (single mode) */\n value?: string;\n /** Default selected value (single mode, uncontrolled) */\n defaultValue?: string;\n /** Called when selection changes (single mode) */\n onChange?: (value: string) => void;\n};\n\nexport type SelectMultipleProps = SelectBaseProps & {\n /** Enables multi-select mode */\n multiple: true;\n /** Currently selected values (multi mode) */\n value?: string[];\n /** Default selected values (multi mode, uncontrolled) */\n defaultValue?: string[];\n /** Called when selection changes (multi mode) */\n onChange?: (value: string[]) => void;\n};\n\nexport type SelectProps = SelectSingleProps | SelectMultipleProps;\n\nconst statusClasses: Record<SelectStatus, string> = {\n default:\n \"rh-border-border focus-within:rh-ring-2 focus-within:rh-ring-ring focus-within:rh-ring-offset-2\",\n error:\n \"rh-border-danger focus-within:rh-ring-2 focus-within:rh-ring-danger focus-within:rh-ring-offset-2\",\n};\n\nconst sizeClasses: Record<SelectSize, string> = {\n sm: \"rh-min-h-[32px] rh-text-sm rh-px-input-x-sm\",\n md: \"rh-min-h-[40px] rh-text-sm rh-px-input-x-md\",\n lg: \"rh-min-h-[48px] rh-text-base rh-px-input-x-lg\",\n};\n\nconst radiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-sm\",\n md: \"rh-rounded-md\",\n lg: \"rh-rounded-lg\",\n xl: \"rh-rounded-xl\",\n full: \"rh-rounded-full\",\n};\n\nconst dropdownRadiusClasses: Record<SelectRadius, string> = {\n none: \"rh-rounded-none\",\n xxs: \"rh-rounded-xxs\",\n xs: \"rh-rounded-xs\",\n sm: \"rh-rounded-xs\",\n md: \"rh-rounded-xs\",\n lg: \"rh-rounded-xs\",\n xl: \"rh-rounded-xs\",\n full: \"rh-rounded-xs\",\n};\n\nconst helperStatusClasses: Record<SelectStatus, string> = {\n default: \"rh-text-text-muted\",\n error: \"rh-text-danger\",\n};\n\nconst optionSizeClasses: Record<SelectSize, string> = {\n sm: \"rh-px-input-x-sm rh-py-1.5 rh-text-sm\",\n md: \"rh-px-input-x-md rh-py-2 rh-text-sm\",\n lg: \"rh-px-input-x-lg rh-py-2.5 rh-text-base\",\n};\n\nconst ChevronIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M5.23 7.21a.75.75 0 011.06.02L10 11.168l3.71-3.938a.75.75 0 111.08 1.04l-4.25 4.5a.75.75 0 01-1.08 0l-4.25-4.5a.75.75 0 01.02-1.06z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n\nconst CheckIcon = ({ className }: { className?: string }) => (\n <svg\n className={className}\n viewBox=\"0 0 12 10\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n >\n <path\n d=\"M1 5.5L4 8.5L11 1.5\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nexport const Select = forwardRef<HTMLButtonElement, SelectProps>(\n function Select(props, ref) {\n const {\n options,\n label,\n subtitle,\n placeholder = \"Select\",\n status = \"default\",\n size = \"md\",\n radius = \"xs\",\n helperText,\n disabled = false,\n className = \"\",\n wrapperClassName = \"\",\n multiple = false,\n } = props;\n\n const triggerId = React.useId();\n const listboxId = React.useId();\n const helperId = React.useId();\n\n const [isOpen, setIsOpen] = React.useState(false);\n const [activeIndex, setActiveIndex] = React.useState(-1);\n\n const wrapperRef = React.useRef<HTMLDivElement>(null);\n const innerRef = React.useRef<HTMLButtonElement>(null);\n const listboxRef = React.useRef<HTMLUListElement>(null);\n\n React.useImperativeHandle(ref, () => innerRef.current as HTMLButtonElement);\n\n // --- Selection state ---\n const [internalValue, setInternalValue] = React.useState<string[]>(() => {\n if (props.defaultValue !== undefined) {\n return Array.isArray(props.defaultValue)\n ? props.defaultValue\n : [props.defaultValue];\n }\n return [];\n });\n\n const isControlled = props.value !== undefined;\n const selectedValues: string[] = isControlled\n ? Array.isArray(props.value)\n ? props.value\n : props.value !== undefined\n ? [props.value]\n : []\n : internalValue;\n\n const enabledOptions = options.filter((o) => !o.disabled);\n\n const handleSelect = (optionValue: string) => {\n if (multiple) {\n const next = selectedValues.includes(optionValue)\n ? selectedValues.filter((v) => v !== optionValue)\n : [...selectedValues, optionValue];\n\n if (!isControlled) setInternalValue(next);\n (props as SelectMultipleProps).onChange?.(next);\n } else {\n const next = [optionValue];\n if (!isControlled) setInternalValue(next);\n (props as SelectSingleProps).onChange?.(optionValue);\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n // --- Display value ---\n const displayText = React.useMemo(() => {\n if (selectedValues.length === 0) return null;\n\n if (!multiple) {\n return options.find((o) => o.value === selectedValues[0])?.label ?? null;\n }\n\n const selectedLabels = selectedValues\n .map((v) => options.find((o) => o.value === v)?.label)\n .filter(Boolean);\n\n if (selectedLabels.length === 0) return null;\n if (selectedLabels.length === 1) return selectedLabels[0];\n return `${selectedLabels.length} selected`;\n }, [selectedValues, options, multiple]);\n\n // --- Close on outside click ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleClickOutside = (e: MouseEvent) => {\n if (wrapperRef.current && !wrapperRef.current.contains(e.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => document.removeEventListener(\"mousedown\", handleClickOutside);\n }, [isOpen]);\n\n // --- Close on Escape ---\n React.useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n setIsOpen(false);\n innerRef.current?.focus();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen]);\n\n // --- Scroll active option into view ---\n React.useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const listbox = listboxRef.current;\n if (!listbox) return;\n const activeEl = listbox.children[activeIndex] as HTMLElement | undefined;\n if (typeof activeEl?.scrollIntoView === \"function\") {\n activeEl.scrollIntoView({ block: \"nearest\" });\n }\n }, [activeIndex, isOpen]);\n\n // --- Reset active index when opening ---\n React.useEffect(() => {\n if (isOpen) {\n const firstSelectedIdx = options.findIndex(\n (o) => !o.disabled && selectedValues.includes(o.value),\n );\n setActiveIndex(firstSelectedIdx >= 0 ? firstSelectedIdx : 0);\n } else {\n setActiveIndex(-1);\n }\n }, [isOpen]);\n\n // --- Keyboard navigation ---\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if (disabled) return;\n\n switch (e.key) {\n case \"ArrowDown\":\n case \"Down\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev + 1; i < options.length; i++) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"ArrowUp\":\n case \"Up\": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n return;\n }\n setActiveIndex((prev) => {\n for (let i = prev - 1; i >= 0; i--) {\n if (!options[i].disabled) return i;\n }\n return prev;\n });\n break;\n }\n case \"Enter\":\n case \" \": {\n e.preventDefault();\n if (!isOpen) {\n setIsOpen(true);\n } else if (activeIndex >= 0 && !options[activeIndex].disabled) {\n handleSelect(options[activeIndex].value);\n }\n break;\n }\n case \"Home\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[0])\n : 0;\n setActiveIndex(idx);\n }\n break;\n }\n case \"End\": {\n e.preventDefault();\n if (isOpen) {\n const idx = enabledOptions.length > 0\n ? options.indexOf(enabledOptions[enabledOptions.length - 1])\n : options.length - 1;\n setActiveIndex(idx);\n }\n break;\n }\n case \"Tab\": {\n if (isOpen) setIsOpen(false);\n break;\n }\n default:\n break;\n }\n };\n\n return (\n <div\n ref={wrapperRef}\n className={[\n \"rh-relative rh-flex rh-flex-col rh-gap-1 rh-font-sans\",\n wrapperClassName,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Label + Subtitle */}\n {label && (\n <label\n id={`${triggerId}-label`}\n className=\"rh-flex rh-items-baseline rh-gap-1\"\n >\n <span className=\"rh-text-sm rh-font-medium rh-text-text\">\n {label}\n </span>\n {subtitle && (\n <span className=\"rh-text-sm rh-text-text-muted\">{subtitle}</span>\n )}\n </label>\n )}\n\n {/* Trigger */}\n <button\n ref={innerRef}\n id={triggerId}\n type=\"button\"\n role=\"combobox\"\n aria-expanded={isOpen}\n aria-haspopup=\"listbox\"\n aria-controls={listboxId}\n aria-labelledby={label ? `${triggerId}-label` : undefined}\n aria-describedby={helperText ? helperId : undefined}\n aria-invalid={status === \"error\" || undefined}\n aria-disabled={disabled || undefined}\n disabled={disabled}\n onClick={() => !disabled && setIsOpen((o) => !o)}\n onKeyDown={handleKeyDown}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-border rh-bg-surface rh-font-sans\",\n \"rh-transition-colors rh-duration-150\",\n \"rh-text-left rh-w-full\",\n statusClasses[status],\n radiusClasses[radius],\n sizeClasses[size],\n disabled\n ? \"rh-opacity-50 rh-cursor-not-allowed rh-bg-background\"\n : \"rh-cursor-pointer\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span\n className={[\n \"rh-flex-1 rh-truncate\",\n displayText ? \"rh-text-text\" : \"rh-text-text-muted\",\n ].join(\" \")}\n >\n {displayText ?? placeholder}\n </span>\n\n <ChevronIcon\n className={[\n \"rh-w-5 rh-h-5 rh-shrink-0 rh-text-text-muted rh-transition-transform rh-duration-150\",\n isOpen ? \"rh-rotate-180\" : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n </button>\n\n {/* Dropdown */}\n {isOpen && (\n <ul\n ref={listboxRef}\n id={listboxId}\n role=\"listbox\"\n aria-labelledby={label ? `${triggerId}-label` : triggerId}\n aria-multiselectable={multiple || undefined}\n tabIndex={-1}\n className={[\n \"rh-absolute rh-z-50 rh-w-full rh-mt-1\",\n \"rh-border rh-border-border rh-bg-surface\",\n \"rh-shadow-md rh-overflow-auto rh-max-h-60\",\n \"rh-py-1\",\n dropdownRadiusClasses[radius],\n ]\n .filter(Boolean)\n .join(\" \")}\n style={{ top: \"100%\" }}\n >\n {options.map((option, index) => {\n const isSelected = selectedValues.includes(option.value);\n const isActive = index === activeIndex;\n const isDisabled = option.disabled;\n\n return (\n <li\n key={option.value}\n id={`${listboxId}-option-${index}`}\n role=\"option\"\n aria-selected={isSelected}\n aria-disabled={isDisabled || undefined}\n onClick={() => {\n if (!isDisabled) handleSelect(option.value);\n }}\n onMouseEnter={() => {\n if (!isDisabled) setActiveIndex(index);\n }}\n className={[\n \"rh-flex rh-items-center rh-justify-between rh-gap-2\",\n \"rh-transition-colors rh-duration-150\",\n optionSizeClasses[size],\n isDisabled\n ? \"rh-opacity-50 rh-cursor-not-allowed\"\n : \"rh-cursor-pointer\",\n isActive && !isDisabled\n ? \"rh-bg-background\"\n : \"\",\n isSelected && !isActive\n ? \"rh-bg-primary/5\"\n : \"\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <span className=\"rh-flex-1 rh-truncate rh-text-text\">\n {option.label}\n </span>\n\n {multiple ? (\n <span\n className={[\n \"rh-inline-flex rh-items-center rh-justify-center\",\n \"rh-w-5 rh-h-5 rh-shrink-0\",\n \"rh-border rh-rounded-xxs rh-transition-colors rh-duration-150\",\n isSelected\n ? \"rh-bg-primary rh-border-primary rh-text-surface\"\n : \"rh-border-border rh-bg-surface\",\n ]\n .filter(Boolean)\n .join(\" \")}\n aria-hidden=\"true\"\n >\n {isSelected && (\n <CheckIcon className=\"rh-w-3 rh-h-3\" />\n )}\n </span>\n ) : (\n isSelected && (\n <CheckIcon className=\"rh-w-3.5 rh-h-3.5 rh-shrink-0 rh-text-primary\" />\n )\n )}\n </li>\n );\n })}\n </ul>\n )}\n\n {/* Helper text */}\n {helperText && (\n <span\n id={helperId}\n className={[\n \"rh-flex rh-items-center rh-gap-1 rh-text-xs\",\n helperStatusClasses[status],\n ].join(\" \")}\n >\n {helperText}\n </span>\n )}\n </div>\n );\n },\n);\n","import React, { forwardRef, useState, useRef, useCallback, useEffect } from \"react\";\n\nexport type TooltipVariant = \"light\" | \"default\" | \"dark\";\nexport type TooltipSize = \"sm\" | \"md\";\nexport type TooltipPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\nexport type TooltipProps = {\n /** Tooltip title text */\n title: string;\n /** Optional description text below the title */\n description?: string;\n /** Visual style variant */\n variant?: TooltipVariant;\n /** Tooltip size */\n size?: TooltipSize;\n /** Placement relative to the trigger element */\n placement?: TooltipPlacement;\n /** Show a close button (only for md size with description) */\n closable?: boolean;\n /** Show an icon before the title */\n icon?: React.ReactNode;\n /** Controlled open state */\n open?: boolean;\n /** Callback when open state changes */\n onOpenChange?: (open: boolean) => void;\n /** Delay before showing tooltip (ms) */\n enterDelay?: number;\n /** Delay before hiding tooltip (ms) */\n leaveDelay?: number;\n /** The trigger element */\n children: React.ReactElement;\n /** Additional className for the tooltip container */\n className?: string;\n};\n\nconst variantClasses: Record<TooltipVariant, string> = {\n light: \"rh-bg-surface rh-text-text rh-border rh-border-border rh-shadow-md\",\n default:\n \"rh-bg-primary/10 rh-text-text rh-border rh-border-primary/20 rh-shadow-md\",\n dark: \"rh-bg-primary rh-text-surface rh-shadow-md\",\n};\n\nconst arrowVariantClasses: Record<TooltipVariant, string> = {\n light: \"rh-border-border rh-bg-surface\",\n default: \"rh-border-primary/20 rh-bg-primary/10\",\n dark: \"rh-bg-primary\",\n};\n\nconst sizeClasses: Record<TooltipSize, string> = {\n sm: \"rh-px-3 rh-py-1.5 rh-text-xs\",\n md: \"rh-px-4 rh-py-3 rh-text-sm\",\n};\n\nconst tooltipPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-full rh-left-1/2 rh--translate-x-1/2 rh-mb-2\",\n \"top-start\": \"rh-bottom-full rh-left-0 rh-mb-2\",\n \"top-end\": \"rh-bottom-full rh-right-0 rh-mb-2\",\n bottom: \"rh-top-full rh-left-1/2 rh--translate-x-1/2 rh-mt-2\",\n \"bottom-start\": \"rh-top-full rh-left-0 rh-mt-2\",\n \"bottom-end\": \"rh-top-full rh-right-0 rh-mt-2\",\n left: \"rh-right-full rh-top-1/2 rh--translate-y-1/2 rh-mr-2\",\n \"left-start\": \"rh-right-full rh-top-0 rh-mr-2\",\n \"left-end\": \"rh-right-full rh-bottom-0 rh-mr-2\",\n right: \"rh-left-full rh-top-1/2 rh--translate-y-1/2 rh-ml-2\",\n \"right-start\": \"rh-left-full rh-top-0 rh-ml-2\",\n \"right-end\": \"rh-left-full rh-bottom-0 rh-ml-2\",\n};\n\nconst arrowPlacementClasses: Record<TooltipPlacement, string> = {\n top: \"rh-bottom-0 rh-left-1/2 rh--translate-x-1/2 rh-translate-y-1/2 rh-rotate-45\",\n \"top-start\": \"rh-bottom-0 rh-left-4 rh-translate-y-1/2 rh-rotate-45\",\n \"top-end\": \"rh-bottom-0 rh-right-4 rh-translate-y-1/2 rh-rotate-45\",\n bottom:\n \"rh-top-0 rh-left-1/2 rh--translate-x-1/2 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-start\": \"rh-top-0 rh-left-4 rh--translate-y-1/2 rh-rotate-45\",\n \"bottom-end\": \"rh-top-0 rh-right-4 rh--translate-y-1/2 rh-rotate-45\",\n left: \"rh-right-0 rh-top-1/2 rh--translate-y-1/2 rh-translate-x-1/2 rh-rotate-45\",\n \"left-start\": \"rh-right-0 rh-top-3 rh-translate-x-1/2 rh-rotate-45\",\n \"left-end\": \"rh-right-0 rh-bottom-3 rh-translate-x-1/2 rh-rotate-45\",\n right:\n \"rh-left-0 rh-top-1/2 rh--translate-y-1/2 rh--translate-x-1/2 rh-rotate-45\",\n \"right-start\": \"rh-left-0 rh-top-3 rh--translate-x-1/2 rh-rotate-45\",\n \"right-end\": \"rh-left-0 rh-bottom-3 rh--translate-x-1/2 rh-rotate-45\",\n};\n\nexport const Tooltip = forwardRef<HTMLDivElement, TooltipProps>(\n function Tooltip(\n {\n title,\n description,\n variant = \"light\",\n size = \"sm\",\n placement = \"top\",\n closable = false,\n icon,\n open: controlledOpen,\n onOpenChange,\n enterDelay = 100,\n leaveDelay = 150,\n children,\n className = \"\",\n },\n ref,\n ) {\n const [internalOpen, setInternalOpen] = useState(false);\n const enterTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const leaveTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const setOpen = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setInternalOpen(value);\n }\n onOpenChange?.(value);\n },\n [isControlled, onOpenChange],\n );\n\n const clearTimers = useCallback(() => {\n if (enterTimerRef.current) {\n clearTimeout(enterTimerRef.current);\n enterTimerRef.current = null;\n }\n if (leaveTimerRef.current) {\n clearTimeout(leaveTimerRef.current);\n leaveTimerRef.current = null;\n }\n }, []);\n\n const handleEnter = useCallback(() => {\n clearTimers();\n enterTimerRef.current = setTimeout(() => {\n setOpen(true);\n }, enterDelay);\n }, [clearTimers, enterDelay, setOpen]);\n\n const handleLeave = useCallback(() => {\n clearTimers();\n leaveTimerRef.current = setTimeout(() => {\n setOpen(false);\n }, leaveDelay);\n }, [clearTimers, leaveDelay, setOpen]);\n\n const handleClose = useCallback(() => {\n clearTimers();\n setOpen(false);\n }, [clearTimers, setOpen]);\n\n useEffect(() => {\n return () => clearTimers();\n }, [clearTimers]);\n\n const triggerChild = React.Children.only(children);\n\n const triggerElement = React.cloneElement(triggerChild, {\n onMouseEnter: (e: React.MouseEvent) => {\n handleEnter();\n triggerChild.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleLeave();\n triggerChild.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleEnter();\n triggerChild.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleLeave();\n triggerChild.props.onBlur?.(e);\n },\n \"aria-describedby\": isOpen ? \"rh-tooltip\" : undefined,\n } as React.HTMLAttributes<HTMLElement>);\n\n const showCloseButton = closable && size === \"md\" && description;\n\n const arrowBorderClass =\n variant === \"dark\" ? \"\" : \"rh-border-b rh-border-r\";\n\n return (\n <div\n className=\"rh-relative rh-inline-flex\"\n onMouseEnter={handleEnter}\n onMouseLeave={handleLeave}\n >\n {triggerElement}\n {isOpen && (\n <div\n ref={ref}\n id=\"rh-tooltip\"\n role=\"tooltip\"\n className={[\n \"rh-absolute rh-z-50 rh-w-max rh-max-w-xs rh-rounded-xs\",\n tooltipPlacementClasses[placement],\n variantClasses[variant],\n sizeClasses[size],\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {/* Arrow */}\n <span\n aria-hidden=\"true\"\n className={[\n \"rh-absolute rh-w-2.5 rh-h-2.5\",\n arrowBorderClass,\n arrowVariantClasses[variant],\n arrowPlacementClasses[placement],\n ]\n .filter(Boolean)\n .join(\" \")}\n />\n\n {/* Content */}\n <div className=\"rh-relative rh-flex rh-items-start rh-gap-2\">\n {icon && (\n <span className=\"rh-flex-shrink-0 rh-mt-0.5\" aria-hidden=\"true\">\n {icon}\n </span>\n )}\n\n <div className=\"rh-flex-1 rh-min-w-0\">\n <p\n className={[\n \"rh-font-semibold rh-leading-tight\",\n size === \"sm\" ? \"rh-text-xs\" : \"rh-text-sm\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {title}\n </p>\n {description && size === \"md\" && (\n <p\n className={[\n \"rh-mt-1 rh-text-xs rh-leading-normal\",\n variant === \"dark\"\n ? \"rh-text-surface/80\"\n : \"rh-text-text-muted\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n {description}\n </p>\n )}\n </div>\n\n {showCloseButton && (\n <button\n type=\"button\"\n aria-label=\"Close tooltip\"\n onClick={handleClose}\n className={[\n \"rh-flex-shrink-0 rh-ml-1 rh-p-0.5 rh-rounded-xxs\",\n \"rh-transition-colors rh-duration-150\",\n \"focus-visible:rh-outline-none focus-visible:rh-ring-2 focus-visible:rh-ring-ring\",\n variant === \"dark\"\n ? \"rh-text-surface/80 hover:rh-text-surface\"\n : \"rh-text-text-muted hover:rh-text-text\",\n ]\n .filter(Boolean)\n .join(\" \")}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 20 20\"\n fill=\"currentColor\"\n className=\"rh-w-4 rh-h-4\"\n aria-hidden=\"true\"\n >\n <path d=\"M6.28 5.22a.75.75 0 00-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 101.06 1.06L10 11.06l3.72 3.72a.75.75 0 101.06-1.06L11.06 10l3.72-3.72a.75.75 0 00-1.06-1.06L10 8.94 6.28 5.22z\" />\n </svg>\n </button>\n )}\n </div>\n </div>\n )}\n </div>\n );\n },\n);\n"]}
@@ -0,0 +1,3 @@
1
+ :root{--rh-primary:34 120 90;--rh-primary-hover:28 100 75;--rh-secondary:55 65 81;--rh-secondary-hover:45 55 72;--rh-danger:211 47 47;--rh-danger-hover:183 28 28;--rh-warning:237 137 54;--rh-success:34 150 90;--rh-text:17 24 39;--rh-text-muted:107 114 128;--rh-surface:255 255 255;--rh-background:249 250 251;--rh-border:209 213 219;--rh-ring:34 120 90;--rh-space-1:4px;--rh-space-2:8px;--rh-space-3:12px;--rh-space-4:16px;--rh-space-5:20px;--rh-space-6:24px;--rh-radius-xxs:4px;--rh-radius-xs:8px;--rh-radius-sm:12px;--rh-radius-md:16px;--rh-radius-lg:24px;--rh-radius-xl:32px;--rh-radius-full:9999px;--rh-border-width-sm:1px;--rh-border-width-md:2px;--rh-border-width-lg:3px;--rh-input-height-sm:32px;--rh-input-height-md:40px;--rh-input-height-lg:48px;--rh-input-px-sm:10px;--rh-input-px-md:14px;--rh-input-px-lg:16px;--rh-font-family:"Inter",system-ui,-apple-system,sans-serif;--rh-font-size-xs:0.75rem;--rh-font-size-sm:0.875rem;--rh-font-size-md:1rem;--rh-font-size-lg:1.125rem;--rh-transition-fast:150ms ease;--rh-transition-normal:200ms ease;--rh-shadow-sm:0 1px 2px 0 rgba(0,0,0,.05);--rh-shadow-md:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1)}.rh-root *,.rh-root :after,.rh-root :before{box-sizing:border-box}.rh-root button{cursor:pointer}.rh-root button,.rh-root input,.rh-root select,.rh-root textarea{font-family:inherit}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }
2
+
3
+ /*! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--rh-font-family);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.rh-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.rh-pointer-events-none{pointer-events:none}.rh-pointer-events-auto{pointer-events:auto}.rh-fixed{position:fixed}.rh-absolute{position:absolute}.rh-relative{position:relative}.rh-bottom-0{bottom:0}.rh-bottom-3{bottom:.75rem}.rh-bottom-4{bottom:1rem}.rh-bottom-full{bottom:100%}.rh-left-0{left:0}.rh-left-1\/2{left:50%}.rh-left-4{left:1rem}.rh-left-full{left:100%}.rh-right-0{right:0}.rh-right-4{right:1rem}.rh-right-full{right:100%}.rh-top-0{top:0}.rh-top-1\/2{top:50%}.rh-top-3{top:.75rem}.rh-top-4{top:1rem}.rh-top-full{top:100%}.rh-z-50{z-index:50}.rh-z-\[9999\]{z-index:9999}.rh-col-span-1{grid-column:span 1/span 1}.rh-mb-2{margin-bottom:.5rem}.rh-mb-4{margin-bottom:1rem}.rh-ml-1{margin-left:.25rem}.rh-ml-2{margin-left:.5rem}.rh-mr-2{margin-right:.5rem}.rh-mt-0\.5{margin-top:.125rem}.rh-mt-1{margin-top:.25rem}.rh-mt-2{margin-top:.5rem}.rh-mt-4{margin-top:1rem}.rh-inline-block{display:inline-block}.rh-flex{display:flex}.rh-inline-flex{display:inline-flex}.rh-grid{display:grid}.rh-h-10{height:2.5rem}.rh-h-12{height:3rem}.rh-h-2\.5{height:.625rem}.rh-h-3{height:.75rem}.rh-h-3\.5{height:.875rem}.rh-h-4{height:1rem}.rh-h-5{height:1.25rem}.rh-h-6{height:1.5rem}.rh-h-8{height:2rem}.rh-h-input-lg{height:var(--rh-input-height-lg,48px)}.rh-h-input-md{height:var(--rh-input-height-md,40px)}.rh-h-input-sm{height:var(--rh-input-height-sm,32px)}.rh-max-h-60{max-height:15rem}.rh-min-h-\[32px\]{min-height:32px}.rh-min-h-\[40px\]{min-height:40px}.rh-min-h-\[48px\]{min-height:48px}.rh-min-h-screen{min-height:100vh}.rh-w-10{width:2.5rem}.rh-w-12{width:3rem}.rh-w-2\.5{width:.625rem}.rh-w-3{width:.75rem}.rh-w-3\.5{width:.875rem}.rh-w-4{width:1rem}.rh-w-5{width:1.25rem}.rh-w-6{width:1.5rem}.rh-w-8{width:2rem}.rh-w-80{width:20rem}.rh-w-full{width:100%}.rh-w-max{width:-moz-max-content;width:max-content}.rh-min-w-0{min-width:0}.rh-max-w-xs{max-width:20rem}.rh-flex-1{flex:1 1 0%}.rh-flex-shrink-0,.rh-shrink-0{flex-shrink:0}.rh--translate-x-1\/2{--tw-translate-x:-50%}.rh--translate-x-1\/2,.rh--translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rh--translate-y-1\/2{--tw-translate-y:-50%}.rh-translate-x-1\/2{--tw-translate-x:50%}.rh-translate-x-1\/2,.rh-translate-y-1\/2{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rh-translate-y-1\/2{--tw-translate-y:50%}.rh-rotate-180{--tw-rotate:180deg}.rh-rotate-180,.rh-rotate-45{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rh-rotate-45{--tw-rotate:45deg}@keyframes rh-spin{to{transform:rotate(1turn)}}.rh-animate-spin{animation:rh-spin 1s linear infinite}@keyframes rh-toast-in-bottom{0%{opacity:0;transform:translateY(110%)}to{opacity:1;transform:translateY(0)}}.rh-animate-toast-in-bottom{animation:rh-toast-in-bottom .25s ease forwards}@keyframes rh-toast-in-left{0%{opacity:0;transform:translateX(-110%)}to{opacity:1;transform:translateX(0)}}.rh-animate-toast-in-left{animation:rh-toast-in-left .25s ease forwards}@keyframes rh-toast-in-right{0%{opacity:0;transform:translateX(110%)}to{opacity:1;transform:translateX(0)}}.rh-animate-toast-in-right{animation:rh-toast-in-right .25s ease forwards}@keyframes rh-toast-in-top{0%{opacity:0;transform:translateY(-110%)}to{opacity:1;transform:translateY(0)}}.rh-animate-toast-in-top{animation:rh-toast-in-top .25s ease forwards}@keyframes rh-toast-out-bottom{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(110%)}}.rh-animate-toast-out-bottom{animation:rh-toast-out-bottom .2s ease forwards}@keyframes rh-toast-out-left{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(-110%)}}.rh-animate-toast-out-left{animation:rh-toast-out-left .2s ease forwards}@keyframes rh-toast-out-right{0%{opacity:1;transform:translateX(0)}to{opacity:0;transform:translateX(110%)}}.rh-animate-toast-out-right{animation:rh-toast-out-right .2s ease forwards}@keyframes rh-toast-out-top{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-110%)}}.rh-animate-toast-out-top{animation:rh-toast-out-top .2s ease forwards}.rh-cursor-not-allowed{cursor:not-allowed}.rh-cursor-pointer{cursor:pointer}.rh-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.rh-grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.rh-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.rh-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.rh-grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.rh-flex-col{flex-direction:column}.rh-flex-wrap{flex-wrap:wrap}.rh-items-start{align-items:flex-start}.rh-items-end{align-items:flex-end}.rh-items-center{align-items:center}.rh-items-baseline{align-items:baseline}.rh-justify-center{justify-content:center}.rh-justify-between{justify-content:space-between}.rh-gap-1{gap:.25rem}.rh-gap-2{gap:.5rem}.rh-gap-3{gap:.75rem}.rh-gap-6{gap:1.5rem}.rh-overflow-auto{overflow:auto}.rh-overflow-hidden,.rh-truncate{overflow:hidden}.rh-truncate{text-overflow:ellipsis;white-space:nowrap}.rh-rounded-full{border-radius:9999px}.rh-rounded-lg{border-radius:var(--rh-radius-lg,24px)}.rh-rounded-md{border-radius:var(--rh-radius-md,16px)}.rh-rounded-none{border-radius:0}.rh-rounded-sm{border-radius:var(--rh-radius-sm,12px)}.rh-rounded-xl{border-radius:var(--rh-radius-xl,32px)}.rh-rounded-xs{border-radius:var(--rh-radius-xs,8px)}.rh-rounded-xxs{border-radius:var(--rh-radius-xxs,4px)}.rh-border{border-width:1px}.rh-border-b{border-bottom-width:1px}.rh-border-r{border-right-width:1px}.rh-border-blue-200{--tw-border-opacity:1;border-color:rgb(191 219 254/var(--tw-border-opacity,1))}.rh-border-border{--tw-border-opacity:1;border-color:rgb(var(--rh-border)/var(--tw-border-opacity,1))}.rh-border-danger{--tw-border-opacity:1;border-color:rgb(var(--rh-danger)/var(--tw-border-opacity,1))}.rh-border-gray-200{--tw-border-opacity:1;border-color:rgb(229 231 235/var(--tw-border-opacity,1))}.rh-border-green-200{--tw-border-opacity:1;border-color:rgb(187 247 208/var(--tw-border-opacity,1))}.rh-border-primary{--tw-border-opacity:1;border-color:rgb(var(--rh-primary)/var(--tw-border-opacity,1))}.rh-border-primary\/20{border-color:rgb(var(--rh-primary)/.2)}.rh-border-red-200{--tw-border-opacity:1;border-color:rgb(254 202 202/var(--tw-border-opacity,1))}.rh-border-secondary{--tw-border-opacity:1;border-color:rgb(var(--rh-secondary)/var(--tw-border-opacity,1))}.rh-border-success{--tw-border-opacity:1;border-color:rgb(var(--rh-success)/var(--tw-border-opacity,1))}.rh-border-transparent{border-color:transparent}.rh-border-warning{--tw-border-opacity:1;border-color:rgb(var(--rh-warning)/var(--tw-border-opacity,1))}.rh-border-yellow-200{--tw-border-opacity:1;border-color:rgb(254 240 138/var(--tw-border-opacity,1))}.rh-bg-\[rgb\(var\(--rh-danger\)\)\]{background-color:rgb(var(--rh-danger))}.rh-bg-\[rgb\(var\(--rh-success\)\)\]{background-color:rgb(var(--rh-success))}.rh-bg-background{--tw-bg-opacity:1;background-color:rgb(var(--rh-background)/var(--tw-bg-opacity,1))}.rh-bg-blue-50{--tw-bg-opacity:1;background-color:rgb(239 246 255/var(--tw-bg-opacity,1))}.rh-bg-blue-600{--tw-bg-opacity:1;background-color:rgb(37 99 235/var(--tw-bg-opacity,1))}.rh-bg-danger{--tw-bg-opacity:1;background-color:rgb(var(--rh-danger)/var(--tw-bg-opacity,1))}.rh-bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.rh-bg-gray-900{--tw-bg-opacity:1;background-color:rgb(17 24 39/var(--tw-bg-opacity,1))}.rh-bg-green-50{--tw-bg-opacity:1;background-color:rgb(240 253 244/var(--tw-bg-opacity,1))}.rh-bg-primary{--tw-bg-opacity:1;background-color:rgb(var(--rh-primary)/var(--tw-bg-opacity,1))}.rh-bg-primary\/10{background-color:rgb(var(--rh-primary)/.1)}.rh-bg-primary\/5{background-color:rgb(var(--rh-primary)/.05)}.rh-bg-red-50{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity,1))}.rh-bg-secondary{--tw-bg-opacity:1;background-color:rgb(var(--rh-secondary)/var(--tw-bg-opacity,1))}.rh-bg-success{--tw-bg-opacity:1;background-color:rgb(var(--rh-success)/var(--tw-bg-opacity,1))}.rh-bg-surface{--tw-bg-opacity:1;background-color:rgb(var(--rh-surface)/var(--tw-bg-opacity,1))}.rh-bg-transparent{background-color:transparent}.rh-bg-warning{--tw-bg-opacity:1;background-color:rgb(var(--rh-warning)/var(--tw-bg-opacity,1))}.rh-bg-yellow-50{--tw-bg-opacity:1;background-color:rgb(254 252 232/var(--tw-bg-opacity,1))}.rh-bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.rh-p-0\.5{padding:.125rem}.rh-p-4{padding:1rem}.rh-p-5{padding:1.25rem}.rh-p-8{padding:2rem}.rh-px-3{padding-left:.75rem;padding-right:.75rem}.rh-px-4{padding-left:1rem;padding-right:1rem}.rh-px-5{padding-left:1.25rem;padding-right:1.25rem}.rh-px-8{padding-left:2rem;padding-right:2rem}.rh-px-input-x-lg{padding-left:var(--rh-input-px-lg,16px);padding-right:var(--rh-input-px-lg,16px)}.rh-px-input-x-md{padding-left:var(--rh-input-px-md,14px);padding-right:var(--rh-input-px-md,14px)}.rh-px-input-x-sm{padding-left:var(--rh-input-px-sm,10px);padding-right:var(--rh-input-px-sm,10px)}.rh-py-1{padding-top:.25rem;padding-bottom:.25rem}.rh-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.rh-py-2{padding-top:.5rem;padding-bottom:.5rem}.rh-py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.rh-py-3{padding-top:.75rem;padding-bottom:.75rem}.rh-py-4{padding-top:1rem;padding-bottom:1rem}.rh-py-5{padding-top:1.25rem;padding-bottom:1.25rem}.rh-text-left{text-align:left}.rh-font-sans{font-family:var(--rh-font-family)}.rh-text-\[10px\]{font-size:10px}.rh-text-base{font-size:1rem;line-height:1.5rem}.rh-text-lg{font-size:1.125rem;line-height:1.75rem}.rh-text-sm{font-size:.875rem;line-height:1.25rem}.rh-text-xl{font-size:1.25rem;line-height:1.75rem}.rh-text-xs{font-size:.75rem;line-height:1rem}.rh-font-bold{font-weight:700}.rh-font-medium{font-weight:500}.rh-font-semibold{font-weight:600}.rh-uppercase{text-transform:uppercase}.rh-leading-normal{line-height:1.5}.rh-leading-tight{line-height:1.25}.rh-tracking-widest{letter-spacing:.1em}.rh-text-blue-500{--tw-text-opacity:1;color:rgb(59 130 246/var(--tw-text-opacity,1))}.rh-text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.rh-text-blue-700{--tw-text-opacity:1;color:rgb(29 78 216/var(--tw-text-opacity,1))}.rh-text-blue-900{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.rh-text-danger{--tw-text-opacity:1;color:rgb(var(--rh-danger)/var(--tw-text-opacity,1))}.rh-text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.rh-text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.rh-text-gray-700{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.rh-text-gray-900{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.rh-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.rh-text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.rh-text-green-700{--tw-text-opacity:1;color:rgb(21 128 61/var(--tw-text-opacity,1))}.rh-text-green-900{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.rh-text-primary{--tw-text-opacity:1;color:rgb(var(--rh-primary)/var(--tw-text-opacity,1))}.rh-text-red-500{--tw-text-opacity:1;color:rgb(239 68 68/var(--tw-text-opacity,1))}.rh-text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.rh-text-red-700{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity,1))}.rh-text-red-900{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.rh-text-secondary{--tw-text-opacity:1;color:rgb(var(--rh-secondary)/var(--tw-text-opacity,1))}.rh-text-success{--tw-text-opacity:1;color:rgb(var(--rh-success)/var(--tw-text-opacity,1))}.rh-text-surface{--tw-text-opacity:1;color:rgb(var(--rh-surface)/var(--tw-text-opacity,1))}.rh-text-surface\/80{color:rgb(var(--rh-surface)/.8)}.rh-text-text{--tw-text-opacity:1;color:rgb(var(--rh-text)/var(--tw-text-opacity,1))}.rh-text-text-muted{--tw-text-opacity:1;color:rgb(var(--rh-text-muted)/var(--tw-text-opacity,1))}.rh-text-transparent{color:transparent}.rh-text-warning{--tw-text-opacity:1;color:rgb(var(--rh-warning)/var(--tw-text-opacity,1))}.rh-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.rh-text-white\/80{color:hsla(0,0%,100%,.8)}.rh-text-yellow-500{--tw-text-opacity:1;color:rgb(234 179 8/var(--tw-text-opacity,1))}.rh-text-yellow-600{--tw-text-opacity:1;color:rgb(202 138 4/var(--tw-text-opacity,1))}.rh-text-yellow-700{--tw-text-opacity:1;color:rgb(161 98 7/var(--tw-text-opacity,1))}.rh-text-yellow-900{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.rh-underline{text-decoration-line:underline}.rh-opacity-25{opacity:.25}.rh-opacity-50{opacity:.5}.rh-opacity-75{opacity:.75}.rh-shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.rh-outline-none{outline:2px solid transparent;outline-offset:2px}.rh-transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.rh-transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.rh-duration-150{transition-duration:.15s}.placeholder\:rh-text-text-muted::-moz-placeholder{--tw-text-opacity:1;color:rgb(var(--rh-text-muted)/var(--tw-text-opacity,1))}.placeholder\:rh-text-text-muted::placeholder{--tw-text-opacity:1;color:rgb(var(--rh-text-muted)/var(--tw-text-opacity,1))}.focus-within\:rh-ring-2:focus-within{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-within\:rh-ring-danger:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--rh-danger)/var(--tw-ring-opacity,1))}.focus-within\:rh-ring-ring:focus-within{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--rh-ring)/var(--tw-ring-opacity,1))}.focus-within\:rh-ring-offset-2:focus-within{--tw-ring-offset-width:2px}.hover\:rh-border-danger-hover:hover{--tw-border-opacity:1;border-color:rgb(var(--rh-danger-hover)/var(--tw-border-opacity,1))}.hover\:rh-border-primary:hover{--tw-border-opacity:1;border-color:rgb(var(--rh-primary)/var(--tw-border-opacity,1))}.hover\:rh-border-primary-hover:hover{--tw-border-opacity:1;border-color:rgb(var(--rh-primary-hover)/var(--tw-border-opacity,1))}.hover\:rh-border-secondary-hover:hover{--tw-border-opacity:1;border-color:rgb(var(--rh-secondary-hover)/var(--tw-border-opacity,1))}.hover\:rh-bg-danger:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-danger)/var(--tw-bg-opacity,1))}.hover\:rh-bg-danger-hover:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-danger-hover)/var(--tw-bg-opacity,1))}.hover\:rh-bg-danger\/10:hover{background-color:rgb(var(--rh-danger)/.1)}.hover\:rh-bg-primary:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-primary)/var(--tw-bg-opacity,1))}.hover\:rh-bg-primary-hover:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-primary-hover)/var(--tw-bg-opacity,1))}.hover\:rh-bg-primary\/10:hover{background-color:rgb(var(--rh-primary)/.1)}.hover\:rh-bg-secondary:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-secondary)/var(--tw-bg-opacity,1))}.hover\:rh-bg-secondary-hover:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-secondary-hover)/var(--tw-bg-opacity,1))}.hover\:rh-bg-secondary\/10:hover{background-color:rgb(var(--rh-secondary)/.1)}.hover\:rh-bg-success:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-success)/var(--tw-bg-opacity,1))}.hover\:rh-bg-success\/10:hover{background-color:rgb(var(--rh-success)/.1)}.hover\:rh-bg-warning:hover{--tw-bg-opacity:1;background-color:rgb(var(--rh-warning)/var(--tw-bg-opacity,1))}.hover\:rh-bg-warning\/10:hover{background-color:rgb(var(--rh-warning)/.1)}.hover\:rh-text-blue-800:hover{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.hover\:rh-text-blue-900:hover{--tw-text-opacity:1;color:rgb(30 58 138/var(--tw-text-opacity,1))}.hover\:rh-text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity,1))}.hover\:rh-text-gray-900:hover{--tw-text-opacity:1;color:rgb(17 24 39/var(--tw-text-opacity,1))}.hover\:rh-text-green-800:hover{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.hover\:rh-text-green-900:hover{--tw-text-opacity:1;color:rgb(20 83 45/var(--tw-text-opacity,1))}.hover\:rh-text-red-800:hover{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.hover\:rh-text-red-900:hover{--tw-text-opacity:1;color:rgb(127 29 29/var(--tw-text-opacity,1))}.hover\:rh-text-surface:hover{--tw-text-opacity:1;color:rgb(var(--rh-surface)/var(--tw-text-opacity,1))}.hover\:rh-text-text:hover{--tw-text-opacity:1;color:rgb(var(--rh-text)/var(--tw-text-opacity,1))}.hover\:rh-text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.hover\:rh-text-white\/80:hover{color:hsla(0,0%,100%,.8)}.hover\:rh-text-yellow-800:hover{--tw-text-opacity:1;color:rgb(133 77 14/var(--tw-text-opacity,1))}.hover\:rh-text-yellow-900:hover{--tw-text-opacity:1;color:rgb(113 63 18/var(--tw-text-opacity,1))}.focus-visible\:rh-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:rh-ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:rh-ring-ring:focus-visible{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--rh-ring)/var(--tw-ring-opacity,1))}.focus-visible\:rh-ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:rh-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.rh-peer:focus-visible~.peer-focus-visible\:rh-ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.rh-peer:focus-visible~.peer-focus-visible\:rh-ring-ring{--tw-ring-opacity:1;--tw-ring-color:rgb(var(--rh-ring)/var(--tw-ring-opacity,1))}.rh-peer:focus-visible~.peer-focus-visible\:rh-ring-offset-2{--tw-ring-offset-width:2px}@media (min-width:640px){.sm\:rh-col-span-2{grid-column:span 2/span 2}.sm\:rh-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1280px){.xl\:rh-col-span-3{grid-column:span 3/span 3}.xl\:rh-grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@rehagro/ui",
3
+ "version": "0.1.0",
4
+ "author": "Rehagro's Development Team",
5
+ "description": "Rehagro Design System - React component library",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
14
+ },
15
+ "./styles.css": "./dist/styles.css"
16
+ },
17
+ "files": [
18
+ "dist"
19
+ ],
20
+ "sideEffects": [
21
+ "*.css"
22
+ ],
23
+ "peerDependencies": {
24
+ "react": ">=18",
25
+ "react-dom": ">=18"
26
+ },
27
+ "devDependencies": {
28
+ "@storybook/addon-essentials": "^8.4.0",
29
+ "@storybook/react": "^8.4.0",
30
+ "@storybook/react-vite": "^8.4.0",
31
+ "@testing-library/jest-dom": "^6.6.0",
32
+ "@testing-library/react": "^16.1.0",
33
+ "@types/react": "^18.3.0",
34
+ "@types/react-dom": "^18.3.0",
35
+ "@testing-library/user-event": "^14.5.0",
36
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
37
+ "@typescript-eslint/parser": "^8.0.0",
38
+ "autoprefixer": "^10.4.0",
39
+ "eslint": "^8.57.0",
40
+ "eslint-config-prettier": "^9.1.0",
41
+ "eslint-plugin-react-hooks": "^5.0.0",
42
+ "jsdom": "^25.0.0",
43
+ "postcss": "^8.4.0",
44
+ "prettier": "^3.4.0",
45
+ "react": "^18.3.0",
46
+ "react-dom": "^18.3.0",
47
+ "storybook": "^8.4.0",
48
+ "tailwindcss": "^3.4.0",
49
+ "tsup": "^8.3.0",
50
+ "typescript": "^5.6.0",
51
+ "vitest": "^2.1.0"
52
+ },
53
+ "scripts": {
54
+ "build": "tsup && tailwindcss -i src/styles/styles.css -o dist/styles.css --minify",
55
+ "typecheck": "tsc --noEmit",
56
+ "lint": "eslint src/",
57
+ "format": "prettier --write src/",
58
+ "test": "vitest run",
59
+ "test:watch": "vitest",
60
+ "storybook": "storybook dev -p 6006",
61
+ "storybook:build": "storybook build"
62
+ }
63
+ }