infinity-ui-elements 1.8.9 → 1.8.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/icons.tsx","../src/lib/utils.ts","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Link/Link.tsx","../src/components/Alert/Alert.tsx","../src/components/Text/Text.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../node_modules/mimic-function/index.js","../node_modules/memoize/distribution/index.js","../node_modules/get-user-locale/dist/index.js","../node_modules/@wojtekmaj/date-utils/dist/index.js","../node_modules/react-calendar/dist/shared/const.js","../node_modules/react-calendar/dist/shared/dateFormatter.js","../node_modules/react-calendar/dist/shared/dates.js","../node_modules/react-calendar/dist/Calendar/Navigation.js","../node_modules/react-calendar/dist/Flex.js","../node_modules/react-calendar/dist/shared/utils.js","../node_modules/react-calendar/dist/TileGroup.js","../node_modules/react-calendar/dist/Tile.js","../node_modules/react-calendar/dist/CenturyView/Decade.js","../node_modules/react-calendar/dist/CenturyView/Decades.js","../node_modules/react-calendar/dist/CenturyView.js","../node_modules/react-calendar/dist/DecadeView/Year.js","../node_modules/react-calendar/dist/DecadeView/Years.js","../node_modules/react-calendar/dist/DecadeView.js","../node_modules/react-calendar/dist/YearView/Month.js","../node_modules/react-calendar/dist/YearView/Months.js","../node_modules/react-calendar/dist/YearView.js","../node_modules/react-calendar/dist/MonthView/Day.js","../node_modules/react-calendar/dist/MonthView/Days.js","../node_modules/react-calendar/dist/MonthView/Weekdays.js","../node_modules/react-calendar/dist/MonthView/WeekNumber.js","../node_modules/react-calendar/dist/MonthView/WeekNumbers.js","../node_modules/react-calendar/dist/MonthView.js","../node_modules/react-calendar/dist/Calendar.js","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Divider/Divider.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Modal/Modal.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/TextField/TextField.tsx","../src/components/SearchableDropdown/SearchableDropdown.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/tableVariants.ts","../src/components/Table/TableHeader.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/tableHelpers.tsx","../src/components/Table/Table.tsx","../src/components/Table/TableDetailPanel.tsx","../src/components/Table/TableCellTypes.tsx","../src/components/TabItem/TabItem.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import * as React from \"react\";\n\n/**\n * Icon component props\n */\nexport interface IconProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n}\n\n/**\n * ==============================================\n * HOW TO ADD A NEW ICON:\n * ==============================================\n *\n * 1. Add your SVG file to: src/assets/icons/{iconName}.svg\n *\n * 2. Copy the SVG content from the file\n *\n * 3. Add it to the iconRegistry below:\n * iconName: `<svg>...</svg>`,\n *\n * 4. Use it anywhere in your app:\n * <Icon name=\"iconName\" size={24} />\n *\n * The Icon component will automatically:\n * - Replace hardcoded colors with currentColor\n * - Allow you to control color via className or style\n * - Resize based on the size prop\n * ==============================================\n */\n\n/**\n * Icon registry - maps icon names to their SVG content\n * Add your icons here by copying the SVG content from your icon files\n */\nconst iconRegistry = {\n // Tick/Check icon\n tick: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Alias: check points to the same icon as tick\n check: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n add: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n<path d=\"M12.9 11.0999L21 11.0997V12.8997L12.9 12.8999V21H11.1V12.8999L3.00004 12.9001L3 11.1001L11.1 11.0999L11.0999 3.00001L12.8999 3L12.9 11.0999Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Info icon\n info: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 22.5C6.20101 22.5 1.5 17.7989 1.5 12C1.5 6.20101 6.20101 1.5 12 1.5C17.7989 1.5 22.5 6.20101 22.5 12C22.5 17.7989 17.7989 22.5 12 22.5ZM12 20.4C16.6392 20.4 20.4 16.6392 20.4 12C20.4 7.36081 16.6392 3.6 12 3.6C7.36081 3.6 3.6 7.36081 3.6 12C3.6 16.6392 7.36081 20.4 12 20.4ZM10.95 6.75H13.05V8.85H10.95V6.75ZM10.95 10.95H13.05V17.25H10.95V10.95Z\" fill=\"#081416\"/>\n</svg>\n`,\n\n // Exclamation/Warning icon\n exclamation: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM13 17H11V15H13V17ZM13 13H11V7H13V13Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Close/X icon\n close: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18 6L6 18M6 6L18 18\" stroke=\"#081416\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n};\n\n/**\n * Type for available icon names (with autocomplete support)\n */\nexport type IconName = keyof typeof iconRegistry;\n\n/**\n * Icon component that renders an SVG icon by name\n *\n * Features:\n * - ✓ Automatically converts hardcoded colors to currentColor\n * - ✓ Control color via className (e.g., \"text-blue-500\")\n * - ✓ Control color via style prop\n * - ✓ Customizable size\n * - ✓ TypeScript autocomplete for icon names\n * - ✓ All standard SVG props supported\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Icon name=\"tick\" size={24} />\n *\n * // With Tailwind color class\n * <Icon name=\"tick\" size={16} className=\"text-blue-500\" />\n *\n * // With inline styles\n * <Icon name=\"check\" size={20} style={{ color: 'red' }} />\n *\n * // With custom props\n * <Icon name=\"tick\" size={32} className=\"hover:text-green-600 transition-colors\" />\n * ```\n */\nexport interface DynamicIconProps\n extends Omit<\n React.SVGProps<SVGSVGElement>,\n \"ref\" | \"dangerouslySetInnerHTML\"\n > {\n /** Name of the icon to render */\n name: IconName;\n /** Size of the icon (width and height) */\n size?: number | string;\n}\n\nexport const Icon: React.FC<DynamicIconProps> = ({\n name,\n size = 24,\n className = \"\",\n style = {},\n ...props\n}) => {\n const svgContent = iconRegistry[name];\n\n if (!svgContent) {\n console.warn(\n `Icon \"${String(name)}\" not found in registry.\\n` +\n `Available icons: ${Object.keys(iconRegistry).join(\", \")}`\n );\n return null;\n }\n\n // Parse the SVG content\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgContent, \"image/svg+xml\");\n const svgElement = svgDoc.querySelector(\"svg\");\n\n if (!svgElement) {\n console.error(`Invalid SVG content for icon \"${String(name)}\"`);\n return null;\n }\n\n // Get the viewBox for proper scaling\n const viewBox = svgElement.getAttribute(\"viewBox\") || \"0 0 24 24\";\n\n // Get all SVG content as string and replace hardcoded colors with currentColor\n let innerSVG = svgElement.innerHTML;\n\n // Replace common hardcoded colors with currentColor\n // This allows the icon to inherit text color from parent\n innerSVG = innerSVG\n .replace(/fill=\"[^\"]*\"/g, 'fill=\"currentColor\"')\n .replace(/stroke=\"[^\"]*\"/g, 'stroke=\"currentColor\"');\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n dangerouslySetInnerHTML={{ __html: innerSVG }}\n />\n );\n};\n\n/**\n * Get all available icon names from the registry\n * @returns Array of registered icon names\n *\n * @example\n * ```tsx\n * const icons = getAvailableIcons();\n * console.log(icons); // ['tick', 'check', ...]\n * ```\n */\nexport function getAvailableIcons(): IconName[] {\n return Object.keys(iconRegistry) as IconName[];\n}\n\n/**\n * Check if an icon exists in the registry\n * @param name - Icon name to check\n * @returns true if the icon exists\n *\n * @example\n * ```tsx\n * if (hasIcon('tick')) {\n * // Icon exists\n * }\n * ```\n */\nexport function hasIcon(name: string): name is IconName {\n return name in iconRegistry;\n}\n\nexport { iconRegistry };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Define patterns for custom classes that should be preserved\n// This approach is more scalable than hardcoding individual class names\nconst CUSTOM_CLASS_PATTERNS = [\n // Custom font classes\n /^font-(functional|display)$/,\n // Custom font-size classes\n /^font-size-/,\n // Custom leading (line-height) classes\n /^leading-(00|25|50|75|100|200|300|400|500|600|700|800|900|1000|1100)$/,\n // Custom text utility classes (text-display, text-heading, text-body, text-caption variants)\n /^text-(display|heading|body|caption)(-\\w+)?(-\\w+)?$/,\n // Text weight classes\n /^text-weight-/,\n // Text color classes\n /^text-color-/,\n /^outline-width-/,\n /^border-width-/,\n // Custom spacing classes (example)\n // /^spacing-(xs|sm|md|lg|xl)$/,\n // Custom color classes (example)\n // /^color-(primary|secondary|accent)$/,\n // Any class that starts with 'custom-'\n /^custom-/,\n];\n\nfunction isCustomClass(className: string): boolean {\n return CUSTOM_CLASS_PATTERNS.some((pattern) => pattern.test(className));\n}\n\nexport function cn(...inputs: ClassValue[]) {\n // Use clsx first to combine classes, then use twMerge for standard Tailwind classes\n const combined = clsx(inputs);\n\n // Split classes and filter out our custom classes before merging\n const classes = combined.split(\" \");\n const customClasses = classes.filter((cls) => isCustomClass(cls));\n const standardClasses = classes.filter((cls) => !isCustomClass(cls));\n\n // Merge standard classes and add back custom classes\n const mergedStandard = twMerge(standardClasses.join(\" \"));\n\n return clsx(mergedStandard, customClasses);\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { PulseLoader, ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"items-center gap-3 justify-center whitespace-nowrap ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none\",\n {\n variants: {\n variant: {\n primary:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal hover:bg-action-fill-primary-hover\",\n secondary: \"border\",\n tertiary: \"hover:bg-accent hover:text-accent-foreground\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"md:h-[28px] px-3 rounded-medium text-body-small-medium\",\n small: \"md:h-[32px] px-4 rounded-medium text-body-small-medium\",\n medium: \"md:h-[36px] px-5 py-2 rounded-large text-body-medium-medium\",\n large: \"md:h-[44px] px-6 rounded-large text-body-large-medium\",\n },\n isIconOnly: {\n true: \"aspect-square p-0\",\n false: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n isFullWidth: {\n true: \"flex w-full\",\n false: \"flex w-fit\",\n },\n },\n compoundVariants: [\n // Primary variant colors\n {\n variant: \"primary\",\n color: \"primary\",\n class: `bg-action-fill-primary-default text-action-ink-on-primary-normal \n hover:bg-action-fill-primary-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled,\n active:bg-action-fill-primary-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"positive\",\n class: `bg-action-fill-positive-default text-action-ink-on-primary-normal \n hover:bg-action-fill-positive-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled\n active:bg-action-fill-positive-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"negative\",\n class: `bg-action-fill-negative-default text-action-ink-on-primary-normal \n hover:bg-action-fill-negative-hover \n disabled:bg-action-fill-negative-disabled\n disabled:text-action-ink-negative-disabled\n active:bg-action-fill-negative-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"notice\",\n class: `bg-action-fill-notice-default text-action-ink-on-primary-normal \n hover:bg-action-fill-notice-hover \n disabled:bg-action-fill-notice-disabled\n disabled:text-action-ink-notice-disabled\n active:bg-action-fill-notice-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"info\",\n class: `bg-action-fill-info-default text-action-ink-on-primary-normal \n hover:bg-action-fill-info-hover \n disabled:bg-action-fill-info-disabled\n disabled:text-action-ink-info-disabled\n active:bg-action-fill-info-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"neutral\",\n class: `bg-action-fill-neutral-default text-action-ink-on-primary-normal \n hover:bg-action-fill-neutral-hover \n disabled:bg-action-fill-neutral-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-neutral-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"white\",\n class: `bg-action-fill-white-default text-action-ink-neutral-subtle\n hover:bg-action-fill-white-hover \n disabled:bg-action-fill-white-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-white-activated\n `,\n },\n // Secondary variant colors\n {\n variant: \"secondary\",\n color: \"primary\",\n class: `\n border-action-outline-primary-faded \n text-action-ink-primary-normal \n hover:border-action-outline-primary-faded-hover \n hover:bg-action-fill-primary-faded-hover\n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-primary-disabled\n disabled:border-action-outline-primary-disabled\n active:border-action-outline-primary-faded-activated\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"positive\",\n class: `\n border-action-outline-positive-faded \n text-action-ink-positive-normal \n hover:border-action-outline-positive-faded-hover \n hover:bg-action-fill-positive-faded-hover \n disabled:bg-action-outline-positive-disabled\n disabled:text-action-ink-positive-disabled\n disabled:border-action-outline-positive-disabled\n active:border-action-outline-positive-faded-activated\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"negative\",\n class: `\n border-action-outline-negative-faded \n text-action-ink-negative-normal \n hover:border-action-outline-negative-faded-hover \n hover:bg-action-fill-negative-faded-hover \n disabled:bg-action-outline-negative-disabled\n disabled:text-action-ink-negative-disabled\n disabled:border-action-outline-negative-disabled\n active:border-action-outline-negative-faded-activated\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"notice\",\n class: `\n border-action-outline-notice-faded \n text-action-ink-notice-normal \n hover:border-action-outline-notice-faded-hover \n hover:bg-action-fill-notice-faded-hover \n disabled:bg-action-outline-notice-disabled\n disabled:text-action-ink-notice-disabled\n disabled:border-action-outline-notice-disabled\n active:border-action-outline-notice-faded-activated\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"info\",\n class: `border-action-outline-info-faded \n text-action-ink-info-normal \n hover:border-action-outline-info-faded-hover \n hover:bg-action-fill-info-faded-hover \n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-info-disabled\n disabled:border-action-outline-info-disabled\n active:border-action-outline-info-faded-activated\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"neutral\",\n class: `border-action-outline-neutral-faded \n text-action-ink-neutral-normal \n hover:bg-action-outline-neutral-faded-hover \n hover:bg-action-fill-neutral-faded-hover \n disabled:text-action-ink-neutral-disabled\n disabled:border-action-outline-neutral-disabled\n active:border-action-outline-neutral-faded-activated\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"white\",\n class: `border-action-outline-white-faded \n text-action-ink-on-primary-subtle\n hover:border-action-outline-white-faded-hover \n hover:bg-action-fill-white-faded-hover\n disabled:text-surface-ink-white-disabled\n disabled:border-action-outline-white-disabled\n active:border-action-outline-white-faded-activated\n active:bg-action-fill-white-faded-activated\n `,\n },\n // Tertiary variant colors\n {\n variant: \"tertiary\",\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:bg-action-fill-primary-faded \n disabled:text-action-ink-on-primary-muted\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:bg-action-fill-positive-faded \n disabled:text-action-ink-on-positive-muted\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:bg-action-fill-negative-faded \n disabled:text-action-ink-on-negative-muted\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:bg-action-fill-notice-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:bg-action-fill-info-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:bg-action-fill-neutral-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"white\",\n class: `text-action-ink-white-subtle\n hover:bg-action-white-faded-hover\n disabled:text-action-ink-white-disabled\n disabled:bg-action-fill-white-disabled\n active:bg-action-white-faded-activated\n `,\n },\n // Icon only sizing\n {\n isIconOnly: true,\n size: \"xsmall\",\n class: \"h-7 w-7\",\n },\n {\n isIconOnly: true,\n size: \"small\",\n class: \"h-8 w-8\",\n },\n {\n isIconOnly: true,\n size: \"medium\",\n class: \"h-9 w-9\",\n },\n {\n isIconOnly: true,\n size: \"large\",\n class: \"h-10 w-10\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isLoading: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n isFullWidth?: boolean;\n asChild?: boolean;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n color = \"primary\",\n size,\n isIconOnly,\n isLoading,\n asChild = false,\n leadingIcon,\n trailingIcon,\n isFullWidth = false,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const buttonContent = (\n <>\n {isLoading && !isIconOnly && (\n <PulseLoader color={getLoaderColor()} size={10} />\n )}\n {isLoading && isIconOnly && (\n <ClipLoader color={getLoaderColor()} size={20} />\n )}\n {!isLoading && leadingIcon && (\n <span className=\"mr-2\">{leadingIcon}</span>\n )}\n {!isIconOnly && !isLoading && children}\n {isIconOnly && !isLoading && children}\n {!isLoading && trailingIcon && <span>{trailingIcon}</span>}\n </>\n );\n\n return (\n <Comp\n className={cn(\n buttonVariants({\n variant,\n color,\n size,\n isIconOnly,\n isLoading,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon, type IconName } from \"../../lib/icons\";\n\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none p-0 border-0 bg-transparent\",\n {\n variants: {\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n color: \"primary\",\n size: \"medium\",\n isLoading: false,\n },\n }\n);\n\nexport interface IconButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isLoading?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n /** Icon name from the icon registry */\n icon?: IconName;\n /** Custom icon element (ReactNode) - alternative to icon prop */\n iconElement?: React.ReactNode;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n className,\n color = \"primary\",\n size = \"medium\",\n isLoading,\n asChild = false,\n icon,\n iconElement,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const getIconSize = () => {\n switch (size) {\n case \"xsmall\":\n return 16;\n case \"small\":\n return 18;\n case \"medium\":\n return 20;\n case \"large\":\n return 24;\n default:\n return 20;\n }\n };\n\n const getIconColorClass = () => {\n // Color classes with normal, hover, focus, and disabled states\n const colorMap: Record<string, string> = {\n primary:\n \"text-action-ink-primary-normal hover:text-action-ink-primary-subtle focus-visible:text-action-ink-primary-subtle disabled:text-action-ink-primary-muted\",\n positive:\n \"text-action-ink-positive-normal hover:text-action-ink-positive-subtle focus-visible:text-action-ink-positive-subtle disabled:text-action-ink-positive-muted\",\n negative:\n \"text-action-ink-negative-normal hover:text-action-ink-negative-subtle focus-visible:text-action-ink-negative-subtle disabled:text-action-ink-negative-muted\",\n notice:\n \"text-action-ink-notice-normal hover:text-action-ink-notice-subtle focus-visible:text-action-ink-notice-subtle disabled:text-action-ink-notice-muted\",\n info: \"text-action-ink-info-normal hover:text-action-ink-info-subtle focus-visible:text-action-ink-info-subtle disabled:text-action-ink-info-muted\",\n neutral:\n \"text-action-ink-neutral-normal hover:text-action-ink-neutral-subtle focus-visible:text-action-ink-neutral-subtle disabled:text-action-ink-neutral-muted\",\n white:\n \"text-surface-ink-white-subtle hover:text-surface-ink-white-normal focus-visible:text-surface-ink-white-normal disabled:text-surface-ink-white-muted\",\n };\n return colorMap[color] || colorMap.primary;\n };\n\n const buttonContent = (\n <>\n {isLoading ? (\n <ClipLoader color={getLoaderColor()} size={getIconSize()} />\n ) : icon ? (\n <Icon\n name={icon}\n size={getIconSize()}\n className={getIconColorClass()}\n />\n ) : iconElement ? (\n <span className={getIconColorClass()}>{iconElement}</span>\n ) : null}\n </>\n );\n\n return (\n <Comp\n className={cn(\n iconButtonVariants({\n color,\n size,\n isLoading,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ExternalLink } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none decoration-1 underline-offset-4\",\n {\n variants: {\n type: {\n anchor: \"hover:underline\",\n action: \"no-underline cursor-pointer\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"text-body-xsmall-medium gap-1\",\n small: \"text-body-small-medium gap-1\",\n medium: \"text-body-medium-medium gap-1.5\",\n large: \"text-body-large-medium gap-1.5\",\n },\n isIconOnly: {\n true: \"no-underline\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"cursor-pointer\",\n },\n },\n compoundVariants: [\n // Primary color variants\n {\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:text-action-ink-primary-subtle\n hover:decoration-action-outline-primary-hover \n disabled:text-action-ink-primary-disabled\n focus:text-action-ink-primary-hover\n `,\n },\n // Positive color variants\n {\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:text-action-ink-positive-subtle\n hover:decoration-action-outline-positive-hover \n hover:text-action-ink-positive-hover \n disabled:text-action-ink-positive-disabled\n focus:text-action-ink-positive-hover\n `,\n },\n // Negative color variants\n {\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:text-action-ink-negative-subtle\n hover:decoration-action-outline-negative-hover \n hover:text-action-ink-negative-hover \n disabled:text-action-ink-negative-disabled\n focus:text-action-ink-negative-hover\n `,\n },\n // Notice color variants\n {\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:text-action-ink-notice-subtle\n hover:decoration-action-outline-notice-hover \n hover:text-action-ink-notice-hover \n disabled:text-action-ink-notice-disabled\n focus:text-action-ink-notice-hover\n `,\n },\n // Info color variants\n {\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:text-action-ink-info-subtle\n hover:decoration-action-outline-info-hover \n hover:text-action-ink-info-hover \n disabled:text-action-ink-info-disabled\n focus:text-action-ink-info-hover\n `,\n },\n // Neutral color variants\n {\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:text-action-ink-neutral-subtle\n hover:decoration-action-outline-neutral-hover \n hover:text-action-ink-neutral-hover \n disabled:text-action-ink-neutral-disabled\n focus:text-action-ink-neutral-hover\n `,\n },\n {\n color: \"white\",\n class: `text-surface-ink-white-normal \n hover:text-surface-ink-white-subtle\n hover:text-action-ink-white-hover \n disabled:text-action-ink-white-muted\n focus:text-action-ink-white-hover\n `,\n },\n ],\n defaultVariants: {\n type: \"anchor\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\"> {\n type?: \"anchor\" | \"action\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n showIcon?: boolean;\n icon?: React.ReactNode;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n className,\n type = \"anchor\",\n color = \"primary\",\n size = \"medium\",\n isIconOnly = false,\n isDisabled = false,\n asChild = false,\n showIcon = false,\n icon,\n leadingIcon,\n trailingIcon,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"a\";\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // Icon size based on link size\n const iconSize = {\n xsmall: 12,\n small: 14,\n medium: 16,\n large: 18,\n }[size];\n\n // Determine what to show as trailing icon\n // Priority: trailingIcon > (showIcon && icon) > (showIcon && default ExternalLink)\n const finalTrailingIcon =\n trailingIcon || (showIcon && (icon || <ExternalLink size={iconSize} />));\n\n const linkContent = (\n <>\n {leadingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{leadingIcon}</span>\n )}\n {!isIconOnly && children}\n {isIconOnly && children}\n {finalTrailingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{finalTrailingIcon}</span>\n )}\n {isIconOnly &&\n (leadingIcon || finalTrailingIcon || (\n <ExternalLink size={iconSize} />\n ))}\n </>\n );\n\n return (\n <Comp\n className={cn(\n linkVariants({\n type,\n color,\n size,\n isIconOnly,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n onClick={handleClick}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n {...props}\n >\n {linkContent}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\nexport { Link, linkVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Icon } from \"../../lib/icons\";\nimport { Button } from \"../Button\";\nimport { IconButton } from \"../IconButton\";\nimport { Link } from \"../Link\";\nimport { cn } from \"../../lib/utils\";\n\nconst alertVariants = cva(\n \"relative flex gap-4 p-4 rounded-large transition-colors\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-subtle\",\n },\n // Intense emphasis\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-intense\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertIconVariants = cva(\n \"flex-shrink-0 rounded-full flex items-center justify-center mt-1\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"text-white\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - colored backgrounds with white icons\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-action-ink-positive-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \" text-action-ink-negative-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \" text-action-ink-notice-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \" text-action-ink-info-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \" text-action-ink-neutral-normal\",\n },\n // Intense emphasis - white backgrounds with colored icons\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \" text-action-fill-info-default\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \" text-action-fill-neutral-default\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertTextVariants = cva(\"\", {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - dark text\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"text-surface-ink-neutral-normal\",\n },\n // Intense emphasis - white text\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n});\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /**\n * The visual emphasis level of the alert\n */\n emphasis?: \"subtle\" | \"intense\";\n /**\n * The intent/type of the alert\n */\n intent?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * The title of the alert\n */\n title?: string;\n /**\n * The body content of the alert\n */\n children: React.ReactNode;\n /**\n * Whether the alert should take full width\n * When true, actions are placed to the right of the content\n * When false, actions are placed below the content\n */\n isFullWidth?: boolean;\n /**\n * Callback fired when the close button is clicked\n */\n onClose?: () => void;\n /**\n * Custom icon to display. If not provided, an icon will be automatically selected based on intent\n */\n icon?: React.ReactNode;\n /**\n * Action button text. If provided, a button will be automatically created based on the variant\n */\n actionButtonText?: string;\n /**\n * Callback fired when the action button is clicked\n */\n onActionButtonClick?: () => void;\n /**\n * Action link to display\n */\n actionLinkText?: string;\n /**\n * Callback fired when the action link is clicked\n */\n onActionLinkClick?: () => void;\n /**\n * Custom class name for the alert\n */\n className?: string;\n}\n\nconst getDefaultIcon = (\n intent: AlertProps[\"intent\"],\n emphasis: AlertProps[\"emphasis\"]\n) => {\n const iconSize = 16;\n const iconColor = emphasis === \"intense\" ? \"currentColor\" : \"currentColor\";\n\n switch (emphasis) {\n case \"intense\":\n return (\n <Icon\n name=\"info\"\n size={iconSize}\n className=\"text-white\"\n aria-hidden=\"true\"\n />\n );\n default:\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n }\n};\n\nconst getButtonColor = (\n intent: AlertProps[\"intent\"]\n): \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\" => {\n switch (intent) {\n case \"positive\":\n return \"positive\";\n case \"negative\":\n return \"negative\";\n case \"notice\":\n return \"notice\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n return \"neutral\";\n default:\n return \"neutral\";\n }\n};\n\nconst getActionButton = (\n actionButtonText: string | undefined,\n onActionButtonClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Button\n variant=\"secondary\"\n color=\"white\"\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Button\n variant=\"secondary\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n};\nconst getActionLink = (\n actionButtonText: string | undefined,\n onActionLinkClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Link\n type=\"action\"\n color=\"white\"\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Link\n type=\"action\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n};\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n emphasis = \"subtle\",\n intent = \"info\",\n title,\n children,\n isFullWidth = false,\n onClose,\n icon,\n actionButtonText,\n onActionButtonClick,\n actionLinkText,\n onActionLinkClick,\n ...props\n },\n ref\n ) => {\n const displayIcon = icon ?? getDefaultIcon(intent, emphasis);\n const actionButton = getActionButton(\n actionButtonText,\n onActionButtonClick,\n emphasis,\n intent\n );\n const actionLink = getActionLink(\n actionLinkText,\n onActionLinkClick,\n emphasis,\n intent\n );\n const hasActions = actionButton || actionLink;\n\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ emphasis, intent }), className)}\n role=\"alert\"\n {...props}\n >\n {/* Icon */}\n <div\n className={cn(\n alertIconVariants({ emphasis, intent }),\n \"h-5 w-5 shrink-0\"\n )}\n >\n {displayIcon}\n </div>\n\n {isFullWidth ? (\n /* Full Width Layout: Icon, Content, Actions/Close in one row */\n <div className=\"flex-1 min-w-0 flex items-center justify-between gap-4\">\n {/* Content: Title and Body */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n </div>\n {/* Actions and Close - aligned to the right, vertically centered */}\n <div className=\"flex items-center gap-4 shrink-0\">\n {hasActions && (\n <>\n {actionButton}\n {actionLink}\n </>\n )}\n {onClose && (\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n )}\n </div>\n </div>\n ) : (\n /* Not Full Width Layout: Icon and Content in row, Actions below, Close top-right */\n <div className=\"flex-1 min-w-0 relative\">\n {/* Close button - positioned top right */}\n {onClose && (\n <div className=\"absolute top-0 right-0\">\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex flex-col gap-3 pr-8\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n\n {/* Actions - below body text, left-aligned */}\n {hasActions && (\n <div className=\"flex items-center gap-4\">\n {actionButton}\n {actionLink}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert, alertVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Helper function to get the text utility class name\nfunction getTextClassName(\n variant: \"display\" | \"heading\" | \"body\" | \"caption\" = \"body\",\n size:\n | \"2xlarge\"\n | \"xlarge\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"xsmall\" = \"medium\",\n weight: \"regular\" | \"medium\" | \"semibold\" = \"regular\",\n color:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\" = \"default\"\n): string {\n // Build the base class name\n let baseClass = `text-${variant}`;\n\n // Add size\n if (size) {\n baseClass += `-${size}`;\n }\n\n // Add weight\n if (weight) {\n baseClass += `-${weight}`;\n }\n\n // Add color class separately\n const colorClass = `text-color-${color}`;\n\n return `${baseClass} ${colorClass}`;\n}\n\nexport interface TextProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\"> {\n children: React.ReactNode;\n variant?: \"display\" | \"heading\" | \"body\" | \"caption\";\n size?: \"2xlarge\" | \"xlarge\" | \"large\" | \"medium\" | \"small\" | \"xsmall\";\n weight?: \"regular\" | \"medium\" | \"semibold\";\n color?:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\";\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\" | \"label\";\n className?: string;\n}\n\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n (\n {\n className,\n variant = \"body\",\n size = \"medium\",\n weight = \"regular\",\n color = \"default\",\n as = \"p\",\n children,\n ...props\n },\n ref\n ) => {\n const Component = as;\n\n const textClass = getTextClassName(variant, size, weight, color);\n\n return React.createElement(\n Component,\n {\n className: cn(textClass, className),\n ref,\n ...props,\n },\n children\n );\n }\n);\n\nText.displayName = \"Text\";\n\nexport { Text };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text/Text\";\n\ntype AvatarColor = \"a1\" | \"a2\" | \"a3\" | \"a4\" | \"a5\";\ntype AvatarAppearance = \"default\" | \"inverse\";\n\nconst inverseColorClasses: Record<AvatarColor, string> = {\n a1: \"bg-avatar-fill-a1-on-bg text-avatar-fill-a1-bg\",\n a2: \"bg-avatar-fill-a2-on-bg text-avatar-fill-a2-bg\",\n a3: \"bg-avatar-fill-a3-on-bg text-avatar-fill-a3-bg\",\n a4: \"bg-avatar-fill-a4-on-bg text-avatar-fill-a4-bg\",\n a5: \"bg-avatar-fill-a5-on-bg text-avatar-fill-a5-bg\",\n};\n\nconst avatarVariants = cva(\n \"inline-flex items-center justify-center font-medium text-center select-none\",\n {\n variants: {\n color: {\n a1: \"bg-avatar-fill-a1-bg text-avatar-fill-a1-on-bg\",\n a2: \"bg-avatar-fill-a2-bg text-avatar-fill-a2-on-bg\",\n a3: \"bg-avatar-fill-a3-bg text-avatar-fill-a3-on-bg\",\n a4: \"bg-avatar-fill-a4-bg text-avatar-fill-a4-on-bg\",\n a5: \"bg-avatar-fill-a5-bg text-avatar-fill-a5-on-bg\",\n },\n size: {\n small: \"h-[24px] w-[24px] text-body-medium-regular rounded-large\",\n medium: \"h-[32px] w-[32px] text-body-medium-regular rounded-xlarge\",\n xlarge: \"h-[36px] w-[36px] text-body-medium-regular rounded-xlarge\",\n },\n },\n defaultVariants: {\n color: \"a1\",\n size: \"medium\",\n },\n }\n);\n\nconst statusVariants = cva(\n \"absolute flex items-center justify-center rounded-full border-2 border-surface-fill-neutral-intense\",\n {\n variants: {\n size: {\n small: \"h-5 w-5 -bottom-0.5 -right-0.5\",\n medium: \"h-6 w-6 -bottom-1 -right-1\",\n xlarge: \"h-6 w-6 -bottom-1 -right-1\",\n },\n statusColor: {\n positive: \"bg-action-fill-positive-default\",\n negative: \"bg-action-fill-negative-default\",\n notice: \"bg-action-fill-notice-default\",\n info: \"bg-action-fill-info-default\",\n neutral: \"bg-action-fill-neutral-default\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n statusColor: \"notice\",\n },\n }\n);\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof avatarVariants> {\n /**\n * The color variant of the avatar\n */\n color?: AvatarColor;\n /**\n * Whether to invert the background/text colors\n */\n appearance?: AvatarAppearance;\n /**\n * The size of the avatar\n */\n size?: \"small\" | \"medium\" | \"xlarge\";\n /**\n * The initials or text to display in the avatar\n */\n children?: React.ReactNode;\n /**\n * Image source for the avatar (takes precedence over children)\n */\n src?: string;\n /**\n * Alt text for the avatar image\n */\n alt?: string;\n /**\n * Whether to show a status indicator\n */\n showStatus?: boolean;\n /**\n * The color of the status indicator\n */\n statusColor?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * Custom icon or content for the status indicator\n */\n statusIcon?: React.ReactNode;\n /**\n * Optional text label to display next to the avatar\n */\n label?: string;\n /**\n * Optional trailing component (icon or other element) to display after the label\n */\n trailingComponent?: React.ReactNode;\n /**\n * Custom class name for the avatar\n */\n className?: string;\n /**\n * Custom class name for the container (when label or trailingComponent is provided)\n */\n containerClassName?: string;\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n className,\n appearance = \"default\",\n color,\n size,\n children,\n src,\n alt,\n showStatus = false,\n statusColor = \"notice\",\n statusIcon,\n label,\n trailingComponent,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = React.useState(false);\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n const getStatusIconSize = () => {\n switch (size) {\n case \"small\":\n return \"h-3.5 w-3.5\";\n case \"medium\":\n return \"h-4 w-4\";\n default:\n return \"h-4 w-4\";\n }\n };\n\n const getTextSize = () => {\n switch (size) {\n case \"small\":\n return \"small\";\n case \"medium\":\n return \"medium\";\n default:\n return \"medium\";\n }\n };\n\n const resolvedColor: AvatarColor = color ?? \"a1\";\n const avatarElement = (\n <div className=\"relative inline-block\">\n <div\n className={cn(\n avatarVariants({ color: resolvedColor, size }),\n appearance === \"inverse\"\n ? inverseColorClasses[resolvedColor]\n : undefined,\n className\n )}\n {...props}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt || \"Avatar\"}\n className={cn(\n \"h-full w-full object-cover\",\n size === \"small\" ? \"rounded-large\" : \"rounded-xlarge\"\n )}\n onError={handleImageError}\n />\n ) : (\n children\n )}\n </div>\n {showStatus && (\n <div className={cn(statusVariants({ size, statusColor }))}>\n {statusIcon && (\n <span\n className={cn(\n \"text-action-ink-on-primary-normal\",\n getStatusIconSize()\n )}\n >\n {statusIcon}\n </span>\n )}\n </div>\n )}\n </div>\n );\n\n // If no label or trailing component, return just the avatar\n if (!label && !trailingComponent) {\n return <div ref={ref}>{avatarElement}</div>;\n }\n\n // Otherwise, return avatar with label and/or trailing component\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex items-center gap-3\", containerClassName)}\n >\n {avatarElement}\n {label && (\n <Text\n variant=\"body\"\n size={getTextSize()}\n weight=\"medium\"\n color=\"default\"\n as=\"span\"\n >\n {label}\n </Text>\n )}\n {trailingComponent && (\n <span className=\"ml-auto\">{trailingComponent}</span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { Avatar, avatarVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center whitespace-nowrap transition-colors\",\n {\n variants: {\n variant: {\n light: \"\",\n filled: \"\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n size: {\n small:\n \"px-2 h-[var(--size-20)] gap-2 rounded-large text-body-small-medium\",\n medium:\n \"px-3 h-[var(--size-24)] gap-3 rounded-large text-body-medium-medium\",\n large:\n \"px-4 h-[var(--size-28)] gap-3 rounded-xlarge text-body-large-medium\",\n },\n },\n compoundVariants: [\n // Light variant colors\n {\n variant: \"light\",\n color: \"primary\",\n class: \"bg-action-fill-primary-faded text-action-ink-primary-normal\",\n },\n {\n variant: \"light\",\n color: \"positive\",\n class: \"bg-action-fill-positive-faded text-action-ink-positive-normal\",\n },\n {\n variant: \"light\",\n color: \"negative\",\n class: \"bg-action-fill-negative-faded text-action-ink-negative-normal\",\n },\n {\n variant: \"light\",\n color: \"notice\",\n class: \"bg-action-fill-notice-faded text-action-ink-notice-normal\",\n },\n {\n variant: \"light\",\n color: \"info\",\n class: \"bg-action-fill-info-faded text-action-ink-info-normal\",\n },\n {\n variant: \"light\",\n color: \"neutral\",\n class: \"bg-action-fill-neutral-faded text-action-ink-neutral-normal\",\n },\n // Filled variant colors\n {\n variant: \"filled\",\n color: \"primary\",\n class:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"positive\",\n class:\n \"bg-action-fill-positive-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"negative\",\n class:\n \"bg-action-fill-negative-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"notice\",\n class:\n \"bg-action-fill-notice-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"info\",\n class: \"bg-action-fill-info-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"neutral\",\n class:\n \"bg-action-fill-neutral-default text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n variant: \"light\",\n color: \"info\",\n size: \"medium\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Whether to show a dot indicator on the left side\n */\n showDot?: boolean;\n /**\n * Custom class name for the badge\n */\n className?: string;\n /**\n * Badge label/content\n */\n children: React.ReactNode;\n /**\n * The color variant of the badge\n */\n color?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (\n { className, variant, size, color, showDot = false, children, ...props },\n ref\n ) => {\n const getDotColor = () => {\n if (variant === \"filled\") {\n return \"bg-action-ink-on-primary-normal\";\n }\n // Light variant - use the corresponding action color\n switch (color) {\n case \"primary\":\n return \"bg-action-fill-primary-default\";\n case \"positive\":\n return \"bg-action-fill-positive-default\";\n case \"negative\":\n return \"bg-action-fill-negative-default\";\n case \"notice\":\n return \"bg-action-fill-notice-default\";\n case \"info\":\n return \"bg-action-fill-info-default\";\n case \"neutral\":\n return \"bg-action-fill-neutral-default\";\n default:\n return \"bg-action-fill-info-default\";\n }\n };\n\n const getDotSize = () => {\n if (size === \"small\") {\n return \"h-2 w-2\";\n }\n if (size === \"medium\") {\n return \"h-[6px] w-[6px]\";\n }\n return \"h-3 w-3\";\n };\n\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant, size, color }), className)}\n {...props}\n >\n {showDot && (\n <span\n className={cn(\"rounded-full\", getDotColor(), getDotSize())}\n aria-hidden=\"true\"\n />\n )}\n {children}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonGroupVariants = cva(\"inline-flex\", {\n variants: {\n variant: {\n attached: \"\",\n separated: \"\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isFullWidth: {\n true: \"w-full\",\n false: \"w-fit\",\n },\n isDisabled: {\n true: \"pointer-events-none opacity-50\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"separated\",\n orientation: \"horizontal\",\n class: \"gap-2\",\n },\n {\n variant: \"separated\",\n orientation: \"vertical\",\n class: \"gap-2\",\n },\n ],\n defaultVariants: {\n variant: \"attached\",\n orientation: \"horizontal\",\n size: \"medium\",\n isFullWidth: false,\n isDisabled: false,\n },\n});\n\nexport interface ButtonGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof buttonGroupVariants> {\n children: React.ReactNode;\n variant?: \"attached\" | \"separated\";\n isDisabled?: boolean;\n isFullWidth?: boolean;\n /**\n * Value for controlled button group\n */\n value?: string | number;\n /**\n * Callback when value changes (for controlled mode)\n */\n onChange?: (value: string | number) => void;\n}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n className,\n variant = \"attached\",\n orientation = \"horizontal\",\n size = \"medium\",\n isDisabled = false,\n isFullWidth = false,\n value,\n onChange,\n children,\n ...props\n },\n ref\n ) => {\n const childrenArray = React.Children.toArray(children);\n const isControlled = value !== undefined && onChange !== undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n buttonGroupVariants({\n variant,\n orientation,\n size,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n role=\"group\"\n {...props}\n >\n {childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n const isFirst = index === 0;\n const isLast = index === childrenArray.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n // Get value from child props for controlled mode\n const childValue = child.props.value;\n const isSelected = isControlled && childValue === value;\n\n // Build classes to apply border radius removal and borders\n let groupClasses = \"\";\n\n // Only apply connected styling for \"attached\" variant\n if (variant === \"attached\") {\n if (orientation === \"horizontal\") {\n if (isFirst) {\n groupClasses = \"rounded-r-none border-r-0\";\n } else if (isLast) {\n groupClasses = \"rounded-l-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-r-0\";\n }\n } else {\n // vertical\n if (isFirst) {\n groupClasses = \"rounded-b-none border-b-0\";\n } else if (isLast) {\n groupClasses = \"rounded-t-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-b-0\";\n }\n }\n }\n\n // Determine the variant to use\n const childVariant = child.props.variant;\n const hasExplicitVariant = childVariant !== undefined;\n\n // For controlled mode with explicit variant, maintain the variant\n // and add styling classes for selected state\n let finalVariant = childVariant;\n let selectedStateClasses = \"\";\n\n if (isControlled) {\n if (hasExplicitVariant) {\n // Keep the child's variant and add selected state styling\n if (isSelected && childVariant === \"tertiary\") {\n selectedStateClasses = \"bg-action-fill-primary-faded\";\n } else if (isSelected && childVariant === \"secondary\") {\n selectedStateClasses =\n \"bg-action-fill-primary-faded border-action-outline-primary-faded\";\n }\n } else {\n // No explicit variant: use primary for selected, secondary for unselected\n finalVariant = isSelected ? \"primary\" : \"secondary\";\n }\n }\n\n // Clone child and add our classes and handlers\n return React.cloneElement(child, {\n ...child.props,\n className: cn(\n child.props.className,\n groupClasses,\n isFullWidth && \"flex-1\",\n // For attached variant, ensure proper layering\n variant === \"attached\" && \"relative\",\n variant === \"attached\" && !isSelected && \"hover:z-10 focus:z-10\",\n variant === \"attached\" && isSelected && \"z-20\",\n // Apply selected state classes for explicit variants\n selectedStateClasses\n ),\n disabled: isDisabled || child.props.disabled,\n size: size || child.props.size,\n // If controlled and has value, handle click\n onClick:\n isControlled && childValue !== undefined\n ? (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n if (!isDisabled && !child.props.disabled) {\n onChange(childValue);\n }\n }\n : child.props.onClick,\n variant: finalVariant,\n } as any);\n })}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n\nexport { ButtonGroup, buttonGroupVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormFooterProps {\n /**\n * Helper text to display on the left side\n */\n helperText?: string;\n /**\n * Trailing text to display on the right side (e.g., character count)\n */\n trailingText?: string;\n /**\n * Validation state that affects styling and icon display\n */\n validationState?: \"default\" | \"positive\" | \"negative\";\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the footer is in a disabled state\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the helper text\n */\n helperTextClassName?: string;\n /**\n * Custom class name for the trailing text\n */\n trailingTextClassName?: string;\n}\n\nconst FormFooter = React.forwardRef<HTMLDivElement, FormFooterProps>(\n (\n {\n helperText,\n trailingText,\n validationState = \"default\",\n size = \"medium\",\n isDisabled = false,\n className,\n helperTextClassName,\n trailingTextClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1\",\n },\n medium: {\n textClassName: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-1\",\n },\n large: {\n textClassName: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-1.5\",\n },\n } as const;\n\n const config = sizeConfig[size];\n\n // Determine text color based on validation state and disabled state\n const getTextColor = () => {\n if (isDisabled) return \"text-surface-ink-neutral-disabled\";\n if (validationState === \"positive\")\n return \"text-feedback-ink-positive-intense\";\n if (validationState === \"negative\")\n return \"text-feedback-ink-negative-subtle\";\n if (validationState === \"default\")\n return \"text-surface-ink-neutral-subtle\";\n return \"text-surface-ink-neutral-subtle\";\n };\n const helperTextColorClass = getTextColor();\n const trailingTextColorClass = getTextColor();\n\n // Don't render anything if there's no content\n if (!helperText && !trailingText) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n {helperText && (\n <div className={cn(\"flex items-center\", config.gap)}>\n {validationState === \"positive\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-positive-intense shrink-0\"\n >\n <path\n d=\"M3 7L6 10L11 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n {validationState === \"negative\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-negative-subtle shrink-0\"\n >\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M7 4V7.5M7 10V9.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n <span\n className={cn(\n config.textClassName,\n helperTextColorClass,\n \"italic font-size-100 leading-100\",\n helperTextClassName\n )}\n >\n {helperText}\n </span>\n </div>\n )}\n\n {trailingText && (\n <span\n className={cn(\n config.textClassName,\n trailingTextColorClass,\n \"font-size-100 leading-100 shrink-0\",\n trailingTextClassName\n )}\n >\n {trailingText}\n </span>\n )}\n </div>\n );\n }\n);\n\nFormFooter.displayName = \"FormFooter\";\n\nexport { FormFooter };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\nimport { Icon } from \"../../lib/icons\";\n\nconst checkboxVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 transition-all cursor-pointer box-border\",\n {\n variants: {\n size: {\n small: \"w-[10px] h-[10px] rounded-small border-[1.5px]\",\n medium: \"w-[12px] h-[12px] rounded-small border-[1.5px]\",\n large: \"w-[16px] h-[16px] rounded-medium border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover focus:ring-2 ring-action-outline-negative-faded-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isIndeterminate: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"border-action-outline-neutral-faded hover:bg-action-fill-neutral-faded hover:border-action-outline-neutral-faded\",\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover border-action-fill-primary-default\",\n },\n // Checked or Indeterminate state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n // Indeterminate state - none validation\n {\n isIndeterminate: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default border-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover\",\n },\n // Indeterminate state - error validation (same as checked error)\n {\n isIndeterminate: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isIndeterminate: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the checkbox\n */\n label?: string;\n /**\n * Error text to display below the checkbox\n */\n errorText?: string;\n /**\n * Size of the checkbox\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the checkbox\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the checkbox is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the checkbox is in an indeterminate state\n */\n isIndeterminate?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isIndeterminate = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rippleTimeoutRef = React.useRef<number | null>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n // Set indeterminate property on the input element\n React.useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n };\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled && !showRipple) {\n // Clear any existing timeout\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n\n setShowRipple(true);\n rippleTimeoutRef.current = setTimeout(() => {\n setShowRipple(false);\n rippleTimeoutRef.current = null;\n }, 400); // Match animation duration (0.4s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n triggerRipple();\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n triggerRipple();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 10,\n },\n medium: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 12,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n iconSize: 14,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col px-2\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"checkbox\"\n aria-checked={isIndeterminate ? \"mixed\" : isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n checkboxVariants({\n size,\n validationState,\n isChecked: isChecked && !isIndeterminate,\n isIndeterminate,\n isDisabled,\n }),\n className\n )}\n >\n {/* Checkmark Icon */}\n {isChecked && !isIndeterminate && (\n <Icon\n name=\"tick\"\n size={config.iconSize}\n className=\"text-action-ink-on-primary-normal\"\n />\n )}\n\n {/* Indeterminate Icon */}\n {isIndeterminate && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-action-ink-on-primary-normal\"\n >\n <path\n d=\"M3 6H9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst counterVariants = cva(\n \"inline-flex items-center justify-center transition-colors\",\n {\n variants: {\n size: {\n small:\n \"text-body-xsmall-medium rounded-small px-1 py-0.5 min-w-[20px] h-[16px]\",\n medium:\n \"text-body-small-medium rounded-medium px-2 py-1 min-w-[24px] h-[20px]\",\n large:\n \"text-body-medium-medium rounded-medium px-2 py-1 min-w-[28px] h-[24px]\",\n },\n color: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n information: \"\",\n neutral: \"\",\n primary: \"\",\n },\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n },\n compoundVariants: [\n // Positive - Subtle\n {\n color: \"positive\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-positive-subtle text-feedback-ink-positive-intense\",\n },\n // Positive - Intense\n {\n color: \"positive\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-positive-intense text-action-ink-on-primary-normal\",\n },\n // Negative - Subtle\n {\n color: \"negative\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-negative-subtle text-feedback-ink-negative-subtle\",\n },\n // Negative - Intense\n {\n color: \"negative\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-negative-intense text-action-ink-on-primary-normal\",\n },\n // Notice - Subtle\n {\n color: \"notice\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-notice-subtle text-feedback-ink-notice-subtle\",\n },\n // Notice - Intense\n {\n color: \"notice\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-notice-intense text-action-ink-on-primary-normal\",\n },\n // Information - Subtle\n {\n color: \"information\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-info-subtle text-feedback-ink-info-subtle\",\n },\n // Information - Intense\n {\n color: \"information\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-info-intense text-action-ink-on-primary-normal\",\n },\n // Neutral - Subtle\n {\n color: \"neutral\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-neutral-subtle text-surface-ink-neutral-normal\",\n },\n // Neutral - Intense\n {\n color: \"neutral\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-neutral-intense text-action-ink-on-primary-normal\",\n },\n // Primary - Subtle\n {\n color: \"primary\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-primary-subtle text-surface-ink-primary-normal\",\n },\n // Primary - Intense\n {\n color: \"primary\",\n emphasis: \"intense\",\n class:\n \"bg-surface-fill-primary-intense text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n color: \"neutral\",\n emphasis: \"subtle\",\n },\n }\n);\n\ntype CounterVariantProps = VariantProps<typeof counterVariants>;\nexport type CounterSize = NonNullable<CounterVariantProps[\"size\"]>;\nexport type CounterColor = NonNullable<CounterVariantProps[\"color\"]>;\nexport type CounterEmphasis = NonNullable<CounterVariantProps[\"emphasis\"]>;\n\nexport interface CounterProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /**\n * The numerical value to display\n */\n value: number | string;\n /**\n * Maximum value to display before showing overflow indicator (e.g., \"99+\")\n */\n max?: number;\n /**\n * Custom class name for the counter\n */\n className?: string;\n /**\n * Size of the counter\n */\n size?: CounterSize;\n /**\n * Color variant of the counter\n */\n color?: CounterColor;\n /**\n * Visual emphasis level\n */\n emphasis?: CounterEmphasis;\n}\n\nconst Counter = React.forwardRef<HTMLSpanElement, CounterProps>(\n (\n {\n value,\n max,\n size = \"medium\",\n color = \"neutral\",\n emphasis = \"subtle\",\n className,\n ...props\n },\n ref\n ) => {\n // Handle max value logic\n const displayValue = React.useMemo(() => {\n if (max !== undefined && typeof value === \"number\" && value > max) {\n return `${max}+`;\n }\n return value;\n }, [value, max]);\n\n return (\n <span\n ref={ref}\n className={cn(\n counterVariants({\n size,\n color,\n emphasis,\n }),\n className\n )}\n {...props}\n >\n {displayValue}\n </span>\n );\n }\n);\n\nCounter.displayName = \"Counter\";\n\nexport { Counter, counterVariants };\n","const copyProperty = (to, from, property, ignoreNonConfigurable) => {\n\t// `Function#length` should reflect the parameters of `to` not `from` since we keep its body.\n\t// `Function#prototype` is non-writable and non-configurable so can never be modified.\n\tif (property === 'length' || property === 'prototype') {\n\t\treturn;\n\t}\n\n\t// `Function#arguments` and `Function#caller` should not be copied. They were reported to be present in `Reflect.ownKeys` for some devices in React Native (#41), so we explicitly ignore them here.\n\tif (property === 'arguments' || property === 'caller') {\n\t\treturn;\n\t}\n\n\tconst toDescriptor = Object.getOwnPropertyDescriptor(to, property);\n\tconst fromDescriptor = Object.getOwnPropertyDescriptor(from, property);\n\n\tif (!canCopyProperty(toDescriptor, fromDescriptor) && ignoreNonConfigurable) {\n\t\treturn;\n\t}\n\n\tObject.defineProperty(to, property, fromDescriptor);\n};\n\n// `Object.defineProperty()` throws if the property exists, is not configurable and either:\n// - one its descriptors is changed\n// - it is non-writable and its value is changed\nconst canCopyProperty = function (toDescriptor, fromDescriptor) {\n\treturn toDescriptor === undefined || toDescriptor.configurable || (\n\t\ttoDescriptor.writable === fromDescriptor.writable\n\t\t&& toDescriptor.enumerable === fromDescriptor.enumerable\n\t\t&& toDescriptor.configurable === fromDescriptor.configurable\n\t\t&& (toDescriptor.writable || toDescriptor.value === fromDescriptor.value)\n\t);\n};\n\nconst changePrototype = (to, from) => {\n\tconst fromPrototype = Object.getPrototypeOf(from);\n\tif (fromPrototype === Object.getPrototypeOf(to)) {\n\t\treturn;\n\t}\n\n\tObject.setPrototypeOf(to, fromPrototype);\n};\n\nconst wrappedToString = (withName, fromBody) => `/* Wrapped ${withName}*/\\n${fromBody}`;\n\nconst toStringDescriptor = Object.getOwnPropertyDescriptor(Function.prototype, 'toString');\nconst toStringName = Object.getOwnPropertyDescriptor(Function.prototype.toString, 'name');\n\n// We call `from.toString()` early (not lazily) to ensure `from` can be garbage collected.\n// We use `bind()` instead of a closure for the same reason.\n// Calling `from.toString()` early also allows caching it in case `to.toString()` is called several times.\nconst changeToString = (to, from, name) => {\n\tconst withName = name === '' ? '' : `with ${name.trim()}() `;\n\tconst newToString = wrappedToString.bind(null, withName, from.toString());\n\t// Ensure `to.toString.toString` is non-enumerable and has the same `same`\n\tObject.defineProperty(newToString, 'name', toStringName);\n\tconst {writable, enumerable, configurable} = toStringDescriptor; // We destructue to avoid a potential `get` descriptor.\n\tObject.defineProperty(to, 'toString', {value: newToString, writable, enumerable, configurable});\n};\n\nexport default function mimicFunction(to, from, {ignoreNonConfigurable = false} = {}) {\n\tconst {name} = to;\n\n\tfor (const property of Reflect.ownKeys(from)) {\n\t\tcopyProperty(to, from, property, ignoreNonConfigurable);\n\t}\n\n\tchangePrototype(to, from);\n\tchangeToString(to, from, name);\n\n\treturn to;\n}\n","import mimicFunction from 'mimic-function';\nconst maxTimeoutValue = 2_147_483_647;\nconst cacheStore = new WeakMap();\nconst cacheTimerStore = new WeakMap();\nconst cacheKeyStore = new WeakMap();\nfunction getValidCacheItem(cache, key) {\n const item = cache.get(key);\n if (!item) {\n return undefined;\n }\n if (item.maxAge <= Date.now()) {\n cache.delete(key);\n return undefined;\n }\n return item;\n}\n/**\n[Memoize](https://en.wikipedia.org/wiki/Memoization) functions - An optimization used to speed up consecutive function calls by caching the result of calls with identical input.\n\n@param function_ - The function to be memoized.\n\n@example\n```\nimport memoize from 'memoize';\n\nlet index = 0;\nconst counter = () => ++index;\nconst memoized = memoize(counter);\n\nmemoized('foo');\n//=> 1\n\n// Cached as it's the same argument\nmemoized('foo');\n//=> 1\n\n// Not cached anymore as the arguments changed\nmemoized('bar');\n//=> 2\n\nmemoized('bar');\n//=> 2\n```\n*/\nexport default function memoize(function_, { cacheKey, cache = new Map(), maxAge, } = {}) {\n if (maxAge === 0) {\n return function_;\n }\n if (typeof maxAge === 'number' && Number.isFinite(maxAge)) {\n if (maxAge > maxTimeoutValue) {\n throw new TypeError(`The \\`maxAge\\` option cannot exceed ${maxTimeoutValue}.`);\n }\n if (maxAge < 0) {\n throw new TypeError('The `maxAge` option should not be a negative number.');\n }\n }\n const memoized = function (...arguments_) {\n const key = cacheKey ? cacheKey(arguments_) : arguments_[0];\n const cacheItem = getValidCacheItem(cache, key);\n if (cacheItem) {\n return cacheItem.data;\n }\n const result = function_.apply(this, arguments_);\n const computedMaxAge = typeof maxAge === 'function' ? maxAge(...arguments_) : maxAge;\n if (computedMaxAge !== undefined && computedMaxAge !== Number.POSITIVE_INFINITY) {\n if (!Number.isFinite(computedMaxAge)) {\n throw new TypeError('The `maxAge` function must return a finite number, `0`, or `Infinity`.');\n }\n if (computedMaxAge <= 0) {\n return result; // Do not cache\n }\n if (computedMaxAge > maxTimeoutValue) {\n throw new TypeError(`The \\`maxAge\\` function result cannot exceed ${maxTimeoutValue}.`);\n }\n }\n cache.set(key, {\n data: result,\n maxAge: (computedMaxAge === undefined || computedMaxAge === Number.POSITIVE_INFINITY)\n ? Number.POSITIVE_INFINITY\n : Date.now() + computedMaxAge,\n });\n if (computedMaxAge !== undefined && computedMaxAge !== Number.POSITIVE_INFINITY) {\n const timer = setTimeout(() => {\n cache.delete(key);\n cacheTimerStore.get(memoized)?.delete(timer);\n }, computedMaxAge);\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n timer.unref?.();\n const timers = cacheTimerStore.get(memoized) ?? new Set();\n timers.add(timer);\n cacheTimerStore.set(memoized, timers);\n }\n return result;\n };\n mimicFunction(memoized, function_, {\n ignoreNonConfigurable: true,\n });\n cacheStore.set(memoized, cache);\n cacheKeyStore.set(memoized, (cacheKey ?? ((arguments_) => arguments_[0])));\n return memoized;\n}\n/**\n@returns A [decorator](https://github.com/tc39/proposal-decorators) to memoize class methods or static class methods.\n\n@example\n```\nimport {memoizeDecorator} from 'memoize';\n\nclass Example {\n index = 0\n\n @memoizeDecorator()\n counter() {\n return ++this.index;\n }\n}\n\nclass ExampleWithOptions {\n index = 0\n\n @memoizeDecorator({maxAge: 1000})\n counter() {\n return ++this.index;\n }\n}\n```\n*/\nexport function memoizeDecorator(options = {}) {\n const instanceMap = new WeakMap();\n return (target, propertyKey, descriptor) => {\n const input = target[propertyKey]; // eslint-disable-line @typescript-eslint/no-unsafe-assignment\n if (typeof input !== 'function') {\n throw new TypeError('The decorated value must be a function');\n }\n delete descriptor.value;\n delete descriptor.writable;\n descriptor.get = function () {\n if (!instanceMap.has(this)) {\n const value = memoize(input, options);\n instanceMap.set(this, value);\n return value;\n }\n return instanceMap.get(this);\n };\n };\n}\n/**\nClear all cached data of a memoized function.\n\n@param function_ - The memoized function.\n*/\nexport function memoizeClear(function_) {\n const cache = cacheStore.get(function_);\n if (!cache) {\n throw new TypeError('Can\\'t clear a function that was not memoized!');\n }\n if (typeof cache.clear !== 'function') {\n throw new TypeError('The cache Map can\\'t be cleared!');\n }\n cache.clear();\n for (const timer of cacheTimerStore.get(function_) ?? []) {\n clearTimeout(timer);\n }\n cacheTimerStore.delete(function_);\n}\n/**\nCheck if a specific set of arguments is cached for a memoized function.\n\n@param function_ - The memoized function.\n@param arguments_ - The arguments to check.\n@returns `true` if the arguments are cached and not expired, `false` otherwise.\n\nUses the same argument processing as the memoized function, including any custom `cacheKey` function.\n\n@example\n```\nimport memoize, {memoizeIsCached} from 'memoize';\n\nconst expensive = memoize((a, b) => a + b, {cacheKey: JSON.stringify});\nexpensive(1, 2);\n\nmemoizeIsCached(expensive, 1, 2);\n//=> true\n\nmemoizeIsCached(expensive, 3, 4);\n//=> false\n```\n*/\nexport function memoizeIsCached(function_, ...arguments_) {\n const cacheKey = cacheKeyStore.get(function_);\n if (!cacheKey) {\n return false;\n }\n const cache = cacheStore.get(function_);\n const key = cacheKey(arguments_);\n const item = getValidCacheItem(cache, key);\n return item !== undefined;\n}\n","import memoize from 'memoize';\nfunction isString(el) {\n return typeof el === 'string';\n}\nfunction isUnique(el, index, arr) {\n return arr.indexOf(el) === index;\n}\nfunction isAllLowerCase(el) {\n return el.toLowerCase() === el;\n}\nfunction fixCommas(el) {\n return el.indexOf(',') === -1 ? el : el.split(',');\n}\nfunction normalizeLocale(locale) {\n if (!locale) {\n return locale;\n }\n if (locale === 'C' || locale === 'posix' || locale === 'POSIX') {\n return 'en-US';\n }\n // If there's a dot (.) in the locale, it's likely in the format of \"en-US.UTF-8\", so we only take the first part\n if (locale.indexOf('.') !== -1) {\n var _a = locale.split('.')[0], actualLocale = _a === void 0 ? '' : _a;\n return normalizeLocale(actualLocale);\n }\n // If there's an at sign (@) in the locale, it's likely in the format of \"en-US@posix\", so we only take the first part\n if (locale.indexOf('@') !== -1) {\n var _b = locale.split('@')[0], actualLocale = _b === void 0 ? '' : _b;\n return normalizeLocale(actualLocale);\n }\n // If there's a dash (-) in the locale and it's not all lower case, it's already in the format of \"en-US\", so we return it\n if (locale.indexOf('-') === -1 || !isAllLowerCase(locale)) {\n return locale;\n }\n var _c = locale.split('-'), splitEl1 = _c[0], _d = _c[1], splitEl2 = _d === void 0 ? '' : _d;\n return \"\".concat(splitEl1, \"-\").concat(splitEl2.toUpperCase());\n}\nfunction getUserLocalesInternal(_a) {\n var _b = _a === void 0 ? {} : _a, _c = _b.useFallbackLocale, useFallbackLocale = _c === void 0 ? true : _c, _d = _b.fallbackLocale, fallbackLocale = _d === void 0 ? 'en-US' : _d;\n var languageList = [];\n if (typeof navigator !== 'undefined') {\n var rawLanguages = navigator.languages || [];\n var languages = [];\n for (var _i = 0, rawLanguages_1 = rawLanguages; _i < rawLanguages_1.length; _i++) {\n var rawLanguagesItem = rawLanguages_1[_i];\n languages = languages.concat(fixCommas(rawLanguagesItem));\n }\n var rawLanguage = navigator.language;\n var language = rawLanguage ? fixCommas(rawLanguage) : rawLanguage;\n languageList = languageList.concat(languages, language);\n }\n if (useFallbackLocale) {\n languageList.push(fallbackLocale);\n }\n return languageList.filter(isString).map(normalizeLocale).filter(isUnique);\n}\nexport var getUserLocales = memoize(getUserLocalesInternal, { cacheKey: JSON.stringify });\nfunction getUserLocaleInternal(options) {\n return getUserLocales(options)[0] || null;\n}\nexport var getUserLocale = memoize(getUserLocaleInternal, { cacheKey: JSON.stringify });\nexport default getUserLocale;\n","/**\n * Utils\n */\nfunction makeGetEdgeOfNeighbor(getPeriod, getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborInternal(date, offset = defaultOffset) {\n const previousPeriod = getPeriod(date) + offset;\n return getEdgeOfPeriod(previousPeriod);\n };\n}\nfunction makeGetEnd(getBeginOfNextPeriod) {\n return function makeGetEndInternal(date) {\n return new Date(getBeginOfNextPeriod(date).getTime() - 1);\n };\n}\nfunction makeGetRange(getStart, getEnd) {\n return function makeGetRangeInternal(date) {\n return [getStart(date), getEnd(date)];\n };\n}\n/**\n * Simple getters - getting a property of a given point in time\n */\n/**\n * Gets year from a given date.\n *\n * @param {DateLike} date Date to get year from\n * @returns {number} Year\n */\nexport function getYear(date) {\n if (date instanceof Date) {\n return date.getFullYear();\n }\n if (typeof date === 'number') {\n return date;\n }\n const year = Number.parseInt(date, 10);\n if (typeof date === 'string' && !Number.isNaN(year)) {\n return year;\n }\n throw new Error(`Failed to get year from date: ${date}.`);\n}\n/**\n * Gets month from a given date.\n *\n * @param {Date} date Date to get month from\n * @returns {number} Month\n */\nexport function getMonth(date) {\n if (date instanceof Date) {\n return date.getMonth();\n }\n throw new Error(`Failed to get month from date: ${date}.`);\n}\n/**\n * Gets human-readable month from a given date.\n *\n * @param {Date} date Date to get human-readable month from\n * @returns {number} Human-readable month\n */\nexport function getMonthHuman(date) {\n if (date instanceof Date) {\n return date.getMonth() + 1;\n }\n throw new Error(`Failed to get human-readable month from date: ${date}.`);\n}\n/**\n * Gets day of the month from a given date.\n *\n * @param {Date} date Date to get day of the month from\n * @returns {number} Day of the month\n */\nexport function getDate(date) {\n if (date instanceof Date) {\n return date.getDate();\n }\n throw new Error(`Failed to get year from date: ${date}.`);\n}\n/**\n * Gets hours from a given date.\n *\n * @param {Date | string} date Date to get hours from\n * @returns {number} Hours\n */\nexport function getHours(date) {\n if (date instanceof Date) {\n return date.getHours();\n }\n if (typeof date === 'string') {\n const datePieces = date.split(':');\n if (datePieces.length >= 2) {\n const hoursString = datePieces[0];\n if (hoursString) {\n const hours = Number.parseInt(hoursString, 10);\n if (!Number.isNaN(hours)) {\n return hours;\n }\n }\n }\n }\n throw new Error(`Failed to get hours from date: ${date}.`);\n}\n/**\n * Gets minutes from a given date.\n *\n * @param {Date | string} date Date to get minutes from\n * @returns {number} Minutes\n */\nexport function getMinutes(date) {\n if (date instanceof Date) {\n return date.getMinutes();\n }\n if (typeof date === 'string') {\n const datePieces = date.split(':');\n if (datePieces.length >= 2) {\n const minutesString = datePieces[1] || '0';\n const minutes = Number.parseInt(minutesString, 10);\n if (!Number.isNaN(minutes)) {\n return minutes;\n }\n }\n }\n throw new Error(`Failed to get minutes from date: ${date}.`);\n}\n/**\n * Gets seconds from a given date.\n *\n * @param {Date | string} date Date to get seconds from\n * @returns {number} Seconds\n */\nexport function getSeconds(date) {\n if (date instanceof Date) {\n return date.getSeconds();\n }\n if (typeof date === 'string') {\n const datePieces = date.split(':');\n if (datePieces.length >= 2) {\n const secondsWithMillisecondsString = datePieces[2] || '0';\n const seconds = Number.parseInt(secondsWithMillisecondsString, 10);\n if (!Number.isNaN(seconds)) {\n return seconds;\n }\n }\n }\n throw new Error(`Failed to get seconds from date: ${date}.`);\n}\n/**\n * Gets milliseconds from a given date.\n *\n * @param {Date | string} date Date to get milliseconds from\n * @returns {number} Milliseconds\n */\nexport function getMilliseconds(date) {\n if (date instanceof Date) {\n return date.getMilliseconds();\n }\n if (typeof date === 'string') {\n const datePieces = date.split(':');\n if (datePieces.length >= 2) {\n const secondsWithMillisecondsString = datePieces[2] || '0';\n const millisecondsString = secondsWithMillisecondsString.split('.')[1] || '0';\n const milliseconds = Number.parseInt(millisecondsString, 10);\n if (!Number.isNaN(milliseconds)) {\n return milliseconds;\n }\n }\n }\n throw new Error(`Failed to get seconds from date: ${date}.`);\n}\n/**\n * Century\n */\n/**\n * Gets century start date from a given date.\n *\n * @param {DateLike} date Date to get century start from\n * @returns {Date} Century start date\n */\nexport function getCenturyStart(date) {\n const year = getYear(date);\n const centuryStartYear = year + ((-year + 1) % 100);\n const centuryStartDate = new Date();\n centuryStartDate.setFullYear(centuryStartYear, 0, 1);\n centuryStartDate.setHours(0, 0, 0, 0);\n return centuryStartDate;\n}\n/**\n * Gets previous century start date from a given date.\n *\n * @param {DateLike} date Date to get previous century start from\n * @param {number} [offset=-100] Offset in years to calculate previous century start from\n * @returns {Date} Previous century start date\n */\nexport const getPreviousCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, -100);\n/**\n * Gets next century start date from a given date.\n *\n * @param {DateLike} date Date to get next century start from\n * @param {number} [offset=100] Offset in years to calculate next century start from\n * @returns {Date} Next century start date\n */\nexport const getNextCenturyStart = makeGetEdgeOfNeighbor(getYear, getCenturyStart, 100);\n/**\n * Gets century end date from a given date.\n *\n * @param {DateLike} date Date to get century end from\n * @returns {Date} Century end date\n */\nexport const getCenturyEnd = makeGetEnd(getNextCenturyStart);\n/**\n * Gets previous century end date from a given date.\n *\n * @param {DateLike} date Date to get previous century end from\n * @param {number} [offset=-100] Offset in years to calculate previous century end from\n * @returns {Date} Previous century end date\n */\nexport const getPreviousCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, -100);\n/**\n * Gets next century end date from a given date.\n *\n * @param {DateLike} date Date to get next century end from\n * @param {number} [offset=100] Offset in years to calculate next century end from\n * @returns {Date} Next century end date\n */\nexport const getNextCenturyEnd = makeGetEdgeOfNeighbor(getYear, getCenturyEnd, 100);\n/**\n * Gets century start and end dates from a given date.\n *\n * @param {DateLike} date Date to get century start and end from\n * @returns {[Date, Date]} Century start and end dates\n */\nexport const getCenturyRange = makeGetRange(getCenturyStart, getCenturyEnd);\n/**\n * Decade\n */\n/**\n * Gets decade start date from a given date.\n *\n * @param {DateLike} date Date to get decade start from\n * @returns {Date} Decade start date\n */\nexport function getDecadeStart(date) {\n const year = getYear(date);\n const decadeStartYear = year + ((-year + 1) % 10);\n const decadeStartDate = new Date();\n decadeStartDate.setFullYear(decadeStartYear, 0, 1);\n decadeStartDate.setHours(0, 0, 0, 0);\n return decadeStartDate;\n}\n/**\n * Gets previous decade start date from a given date.\n *\n * @param {DateLike} date Date to get previous decade start from\n * @param {number} [offset=-10] Offset in years to calculate previous decade start from\n * @returns {Date} Previous decade start date\n */\nexport const getPreviousDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, -10);\n/**\n * Gets next decade start date from a given date.\n *\n * @param {DateLike} date Date to get next decade start from\n * @param {number} [offset=10] Offset in years to calculate next decade start from\n * @returns {Date} Next decade start date\n */\nexport const getNextDecadeStart = makeGetEdgeOfNeighbor(getYear, getDecadeStart, 10);\n/**\n * Gets decade end date from a given date.\n *\n * @param {DateLike} date Date to get decade end from\n * @returns {Date} Decade end date\n */\nexport const getDecadeEnd = makeGetEnd(getNextDecadeStart);\n/**\n * Gets previous decade end date from a given date.\n *\n * @param {DateLike} date Date to get previous decade end from\n * @param {number} [offset=-10] Offset in years to calculate previous decade end from\n * @returns {Date} Previous decade end date\n */\nexport const getPreviousDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, -10);\n/**\n * Gets next decade end date from a given date.\n *\n * @param {DateLike} date Date to get next decade end from\n * @param {number} [offset=10] Offset in years to calculate next decade end from\n * @returns {Date} Next decade end date\n */\nexport const getNextDecadeEnd = makeGetEdgeOfNeighbor(getYear, getDecadeEnd, 10);\n/**\n * Gets decade start and end dates from a given date.\n *\n * @param {DateLike} date Date to get decade start and end from\n * @returns {[Date, Date]} Decade start and end dates\n */\nexport const getDecadeRange = makeGetRange(getDecadeStart, getDecadeEnd);\n/**\n * Year\n */\n/**\n * Gets year start date from a given date.\n *\n * @param {DateLike} date Date to get year start from\n * @returns {Date} Year start date\n */\nexport function getYearStart(date) {\n const year = getYear(date);\n const yearStartDate = new Date();\n yearStartDate.setFullYear(year, 0, 1);\n yearStartDate.setHours(0, 0, 0, 0);\n return yearStartDate;\n}\n/**\n * Gets previous year start date from a given date.\n *\n * @param {DateLike} date Date to get previous year start from\n * @param {number} [offset=-1] Offset in years to calculate previous year start from\n * @returns {Date} Previous year start date\n */\nexport const getPreviousYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, -1);\n/**\n * Gets next year start date from a given date.\n *\n * @param {DateLike} date Date to get next year start from\n * @param {number} [offset=1] Offset in years to calculate next year start from\n * @returns {Date} Next year start date\n */\nexport const getNextYearStart = makeGetEdgeOfNeighbor(getYear, getYearStart, 1);\n/**\n * Gets year end date from a given date.\n *\n * @param {DateLike} date Date to get year end from\n * @returns {Date} Year end date\n */\nexport const getYearEnd = makeGetEnd(getNextYearStart);\n/**\n * Gets previous year end date from a given date.\n *\n * @param {DateLike} date Date to get previous year end from\n * @param {number} [offset=-1] Offset in years to calculate previous year end from\n * @returns {Date} Previous year end date\n */\nexport const getPreviousYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, -1);\n/**\n * Gets next year end date from a given date.\n *\n * @param {DateLike} date Date to get next year end from\n * @param {number} [offset=1] Offset in years to calculate next year end from\n * @returns {Date} Next year end date\n */\nexport const getNextYearEnd = makeGetEdgeOfNeighbor(getYear, getYearEnd, 1);\n/**\n * Gets year start and end dates from a given date.\n *\n * @param {DateLike} date Date to get year start and end from\n * @returns {[Date, Date]} Year start and end dates\n */\nexport const getYearRange = makeGetRange(getYearStart, getYearEnd);\n/**\n * Month\n */\nfunction makeGetEdgeOfNeighborMonth(getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborMonthInternal(date, offset = defaultOffset) {\n const year = getYear(date);\n const month = getMonth(date) + offset;\n const previousPeriod = new Date();\n previousPeriod.setFullYear(year, month, 1);\n previousPeriod.setHours(0, 0, 0, 0);\n return getEdgeOfPeriod(previousPeriod);\n };\n}\n/**\n * Gets month start date from a given date.\n *\n * @param {DateLike} date Date to get month start from\n * @returns {Date} Month start date\n */\nexport function getMonthStart(date) {\n const year = getYear(date);\n const month = getMonth(date);\n const monthStartDate = new Date();\n monthStartDate.setFullYear(year, month, 1);\n monthStartDate.setHours(0, 0, 0, 0);\n return monthStartDate;\n}\n/**\n * Gets previous month start date from a given date.\n *\n * @param {Date} date Date to get previous month start from\n * @param {number} [offset=-1] Offset in months to calculate previous month start from\n * @returns {Date} Previous month start date\n */\nexport const getPreviousMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, -1);\n/**\n * Gets next month start date from a given date.\n *\n * @param {Date} date Date to get next month start from\n * @param {number} [offset=1] Offset in months to calculate next month start from\n * @returns {Date} Next month start date\n */\nexport const getNextMonthStart = makeGetEdgeOfNeighborMonth(getMonthStart, 1);\n/**\n * Gets month end date from a given date.\n *\n * @param {Date} date Date to get month end from\n * @returns {Date} Month end date\n */\nexport const getMonthEnd = makeGetEnd(getNextMonthStart);\n/**\n * Gets previous month end date from a given date.\n *\n * @param {Date} date Date to get previous month end from\n * @param {number} [offset=-1] Offset in months to calculate previous month end from\n * @returns {Date} Previous month end date\n */\nexport const getPreviousMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, -1);\n/**\n * Gets next month end date from a given date.\n *\n * @param {Date} date Date to get next month end from\n * @param {number} [offset=1] Offset in months to calculate next month end from\n * @returns {Date} Next month end date\n */\nexport const getNextMonthEnd = makeGetEdgeOfNeighborMonth(getMonthEnd, 1);\n/**\n * Gets month start and end dates from a given date.\n *\n * @param {Date} date Date to get month start and end from\n * @returns {[Date, Date]} Month start and end dates\n */\nexport const getMonthRange = makeGetRange(getMonthStart, getMonthEnd);\n/**\n * Day\n */\nfunction makeGetEdgeOfNeighborDay(getEdgeOfPeriod, defaultOffset) {\n return function makeGetEdgeOfNeighborDayInternal(date, offset = defaultOffset) {\n const year = getYear(date);\n const month = getMonth(date);\n const day = getDate(date) + offset;\n const previousPeriod = new Date();\n previousPeriod.setFullYear(year, month, day);\n previousPeriod.setHours(0, 0, 0, 0);\n return getEdgeOfPeriod(previousPeriod);\n };\n}\n/**\n * Gets day start date from a given date.\n *\n * @param {DateLike} date Date to get day start from\n * @returns {Date} Day start date\n */\nexport function getDayStart(date) {\n const year = getYear(date);\n const month = getMonth(date);\n const day = getDate(date);\n const dayStartDate = new Date();\n dayStartDate.setFullYear(year, month, day);\n dayStartDate.setHours(0, 0, 0, 0);\n return dayStartDate;\n}\n/**\n * Gets previous day start date from a given date.\n *\n * @param {Date} date Date to get previous day start from\n * @param {number} [offset=-1] Offset in days to calculate previous day start from\n * @returns {Date} Previous day start date\n */\nexport const getPreviousDayStart = makeGetEdgeOfNeighborDay(getDayStart, -1);\n/**\n * Gets next day start date from a given date.\n *\n * @param {Date} date Date to get next day start from\n * @param {number} [offset=1] Offset in days to calculate next day start from\n * @returns {Date} Next day start date\n */\nexport const getNextDayStart = makeGetEdgeOfNeighborDay(getDayStart, 1);\n/**\n * Gets day end date from a given date.\n *\n * @param {Date} date Date to get day end from\n * @returns {Date} Day end date\n */\nexport const getDayEnd = makeGetEnd(getNextDayStart);\n/**\n * Gets previous day end date from a given date.\n *\n * @param {DateLike} date Date to get previous day end from\n * @param {number} [offset=-1] Offset in days to calculate previous day end from\n * @returns {Date} Previous day end date\n */\nexport const getPreviousDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, -1);\n/**\n * Gets next day end date from a given date.\n *\n * @param {DateLike} date Date to get next day end from\n * @param {number} [offset=1] Offset in days to calculate next day end from\n * @returns {Date} Next day end date\n */\nexport const getNextDayEnd = makeGetEdgeOfNeighborDay(getDayEnd, 1);\n/**\n * Gets day start and end dates from a given date.\n *\n * @param {DateLike} date Date to get day start and end from\n * @returns {[Date, Date]} Day start and end dates\n */\nexport const getDayRange = makeGetRange(getDayStart, getDayEnd);\n/**\n * Other\n */\n/**\n * Returns a number of days in a month of a given date.\n *\n * @param {Date} date Date\n * @returns {number} Number of days in a month\n */\nexport function getDaysInMonth(date) {\n return getDate(getMonthEnd(date));\n}\nfunction padStart(num, val = 2) {\n const numStr = `${num}`;\n if (numStr.length >= val) {\n return num;\n }\n return `0000${numStr}`.slice(-val);\n}\n/**\n * Returns local hours and minutes (hh:mm).\n *\n * @param {Date | string} date Date to get hours and minutes from\n * @returns {string} Local hours and minutes\n */\nexport function getHoursMinutes(date) {\n const hours = padStart(getHours(date));\n const minutes = padStart(getMinutes(date));\n return `${hours}:${minutes}`;\n}\n/**\n * Returns local hours, minutes and seconds (hh:mm:ss).\n *\n * @param {Date | string} date Date to get hours, minutes and seconds from\n * @returns {string} Local hours, minutes and seconds\n */\nexport function getHoursMinutesSeconds(date) {\n const hours = padStart(getHours(date));\n const minutes = padStart(getMinutes(date));\n const seconds = padStart(getSeconds(date));\n return `${hours}:${minutes}:${seconds}`;\n}\n/**\n * Returns local month in ISO-like format (YYYY-MM).\n *\n * @param {Date} date Date to get month in ISO-like format from\n * @returns {string} Local month in ISO-like format\n */\nexport function getISOLocalMonth(date) {\n const year = padStart(getYear(date), 4);\n const month = padStart(getMonthHuman(date));\n return `${year}-${month}`;\n}\n/**\n * Returns local date in ISO-like format (YYYY-MM-DD).\n *\n * @param {Date} date Date to get date in ISO-like format from\n * @returns {string} Local date in ISO-like format\n */\nexport function getISOLocalDate(date) {\n const year = padStart(getYear(date), 4);\n const month = padStart(getMonthHuman(date));\n const day = padStart(getDate(date));\n return `${year}-${month}-${day}`;\n}\n/**\n * Returns local date & time in ISO-like format (YYYY-MM-DDThh:mm:ss).\n *\n * @param {Date} date Date to get date & time in ISO-like format from\n * @returns {string} Local date & time in ISO-like format\n */\nexport function getISOLocalDateTime(date) {\n return `${getISOLocalDate(date)}T${getHoursMinutesSeconds(date)}`;\n}\n","export var CALENDAR_TYPES = {\n GREGORY: 'gregory',\n HEBREW: 'hebrew',\n ISLAMIC: 'islamic',\n ISO_8601: 'iso8601',\n};\nexport var CALENDAR_TYPE_LOCALES = {\n gregory: [\n 'en-CA',\n 'en-US',\n 'es-AR',\n 'es-BO',\n 'es-CL',\n 'es-CO',\n 'es-CR',\n 'es-DO',\n 'es-EC',\n 'es-GT',\n 'es-HN',\n 'es-MX',\n 'es-NI',\n 'es-PA',\n 'es-PE',\n 'es-PR',\n 'es-SV',\n 'es-VE',\n 'pt-BR',\n ],\n hebrew: ['he', 'he-IL'],\n islamic: [\n // ar-LB, ar-MA intentionally missing\n 'ar',\n 'ar-AE',\n 'ar-BH',\n 'ar-DZ',\n 'ar-EG',\n 'ar-IQ',\n 'ar-JO',\n 'ar-KW',\n 'ar-LY',\n 'ar-OM',\n 'ar-QA',\n 'ar-SA',\n 'ar-SD',\n 'ar-SY',\n 'ar-YE',\n 'dv',\n 'dv-MV',\n 'ps',\n 'ps-AR',\n ],\n};\nexport var WEEKDAYS = [0, 1, 2, 3, 4, 5, 6];\n","import getUserLocale from 'get-user-locale';\nvar formatterCache = new Map();\nfunction getFormatter(options) {\n return function formatter(locale, date) {\n var localeWithDefault = locale || getUserLocale();\n if (!formatterCache.has(localeWithDefault)) {\n formatterCache.set(localeWithDefault, new Map());\n }\n var formatterCacheLocale = formatterCache.get(localeWithDefault);\n if (!formatterCacheLocale.has(options)) {\n formatterCacheLocale.set(options, new Intl.DateTimeFormat(localeWithDefault || undefined, options).format);\n }\n return formatterCacheLocale.get(options)(date);\n };\n}\n/**\n * Changes the hour in a Date to ensure right date formatting even if DST is messed up.\n * Workaround for bug in WebKit and Firefox with historical dates.\n * For more details, see:\n * https://bugs.chromium.org/p/chromium/issues/detail?id=750465\n * https://bugzilla.mozilla.org/show_bug.cgi?id=1385643\n *\n * @param {Date} date Date.\n * @returns {Date} Date with hour set to 12.\n */\nfunction toSafeHour(date) {\n var safeDate = new Date(date);\n return new Date(safeDate.setHours(12));\n}\nfunction getSafeFormatter(options) {\n return function (locale, date) { return getFormatter(options)(locale, toSafeHour(date)); };\n}\nvar formatDateOptions = {\n day: 'numeric',\n month: 'numeric',\n year: 'numeric',\n};\nvar formatDayOptions = { day: 'numeric' };\nvar formatLongDateOptions = {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n};\nvar formatMonthOptions = { month: 'long' };\nvar formatMonthYearOptions = {\n month: 'long',\n year: 'numeric',\n};\nvar formatShortWeekdayOptions = { weekday: 'short' };\nvar formatWeekdayOptions = { weekday: 'long' };\nvar formatYearOptions = { year: 'numeric' };\nexport var formatDate = getSafeFormatter(formatDateOptions);\nexport var formatDay = getSafeFormatter(formatDayOptions);\nexport var formatLongDate = getSafeFormatter(formatLongDateOptions);\nexport var formatMonth = getSafeFormatter(formatMonthOptions);\nexport var formatMonthYear = getSafeFormatter(formatMonthYearOptions);\nexport var formatShortWeekday = getSafeFormatter(formatShortWeekdayOptions);\nexport var formatWeekday = getSafeFormatter(formatWeekdayOptions);\nexport var formatYear = getSafeFormatter(formatYearOptions);\n","import { getYear, getMonth as getMonthIndex, getCenturyStart, getPreviousCenturyStart, getNextCenturyStart, getCenturyEnd, getPreviousCenturyEnd, getCenturyRange, getDecadeStart, getPreviousDecadeStart, getNextDecadeStart, getDecadeEnd, getPreviousDecadeEnd, getDecadeRange, getYearStart, getPreviousYearStart, getNextYearStart, getYearEnd, getPreviousYearEnd, getYearRange, getMonthStart, getPreviousMonthStart, getNextMonthStart, getMonthEnd, getPreviousMonthEnd, getMonthRange, getDayStart, getDayEnd, getDayRange, } from '@wojtekmaj/date-utils';\nimport { CALENDAR_TYPES, WEEKDAYS } from './const.js';\nimport { formatYear as defaultFormatYear } from './dateFormatter.js';\nvar SUNDAY = WEEKDAYS[0];\nvar FRIDAY = WEEKDAYS[5];\nvar SATURDAY = WEEKDAYS[6];\n/* Simple getters - getting a property of a given point in time */\n/**\n * Gets day of the week of a given date.\n * @param {Date} date Date.\n * @param {CalendarType} [calendarType=\"iso8601\"] Calendar type.\n * @returns {number} Day of the week.\n */\nexport function getDayOfWeek(date, calendarType) {\n if (calendarType === void 0) { calendarType = CALENDAR_TYPES.ISO_8601; }\n var weekday = date.getDay();\n switch (calendarType) {\n case CALENDAR_TYPES.ISO_8601:\n // Shifts days of the week so that Monday is 0, Sunday is 6\n return (weekday + 6) % 7;\n case CALENDAR_TYPES.ISLAMIC:\n return (weekday + 1) % 7;\n case CALENDAR_TYPES.HEBREW:\n case CALENDAR_TYPES.GREGORY:\n return weekday;\n default:\n throw new Error('Unsupported calendar type.');\n }\n}\n/**\n * Century\n */\n/**\n * Gets the year of the beginning of a century of a given date.\n * @param {Date} date Date.\n * @returns {number} Year of the beginning of a century.\n */\nexport function getBeginOfCenturyYear(date) {\n var beginOfCentury = getCenturyStart(date);\n return getYear(beginOfCentury);\n}\n/**\n * Decade\n */\n/**\n * Gets the year of the beginning of a decade of a given date.\n * @param {Date} date Date.\n * @returns {number} Year of the beginning of a decade.\n */\nexport function getBeginOfDecadeYear(date) {\n var beginOfDecade = getDecadeStart(date);\n return getYear(beginOfDecade);\n}\n/**\n * Week\n */\n/**\n * Returns the beginning of a given week.\n *\n * @param {Date} date Date.\n * @param {CalendarType} [calendarType=\"iso8601\"] Calendar type.\n * @returns {Date} Beginning of a given week.\n */\nexport function getBeginOfWeek(date, calendarType) {\n if (calendarType === void 0) { calendarType = CALENDAR_TYPES.ISO_8601; }\n var year = getYear(date);\n var monthIndex = getMonthIndex(date);\n var day = date.getDate() - getDayOfWeek(date, calendarType);\n return new Date(year, monthIndex, day);\n}\n/**\n * Gets week number according to ISO 8601 or US standard.\n * In ISO 8601, Arabic and Hebrew week 1 is the one with January 4.\n * In US calendar week 1 is the one with January 1.\n *\n * @param {Date} date Date.\n * @param {CalendarType} [calendarType=\"iso8601\"] Calendar type.\n * @returns {number} Week number.\n */\nexport function getWeekNumber(date, calendarType) {\n if (calendarType === void 0) { calendarType = CALENDAR_TYPES.ISO_8601; }\n var calendarTypeForWeekNumber = calendarType === CALENDAR_TYPES.GREGORY ? CALENDAR_TYPES.GREGORY : CALENDAR_TYPES.ISO_8601;\n var beginOfWeek = getBeginOfWeek(date, calendarType);\n var year = getYear(date) + 1;\n var dayInWeekOne;\n var beginOfFirstWeek;\n // Look for the first week one that does not come after a given date\n do {\n dayInWeekOne = new Date(year, 0, calendarTypeForWeekNumber === CALENDAR_TYPES.ISO_8601 ? 4 : 1);\n beginOfFirstWeek = getBeginOfWeek(dayInWeekOne, calendarType);\n year -= 1;\n } while (date < beginOfFirstWeek);\n return Math.round((beginOfWeek.getTime() - beginOfFirstWeek.getTime()) / (8.64e7 * 7)) + 1;\n}\n/**\n * Others\n */\n/**\n * Returns the beginning of a given range.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n * @returns {Date} Beginning of a given range.\n */\nexport function getBegin(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyStart(date);\n case 'decade':\n return getDecadeStart(date);\n case 'year':\n return getYearStart(date);\n case 'month':\n return getMonthStart(date);\n case 'day':\n return getDayStart(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Returns the beginning of a previous given range.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n * @returns {Date} Beginning of a previous given range.\n */\nexport function getBeginPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getPreviousCenturyStart(date);\n case 'decade':\n return getPreviousDecadeStart(date);\n case 'year':\n return getPreviousYearStart(date);\n case 'month':\n return getPreviousMonthStart(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Returns the beginning of a next given range.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n * @returns {Date} Beginning of a next given range.\n */\nexport function getBeginNext(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getNextCenturyStart(date);\n case 'decade':\n return getNextDecadeStart(date);\n case 'year':\n return getNextYearStart(date);\n case 'month':\n return getNextMonthStart(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getBeginPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getPreviousDecadeStart(date, -100);\n case 'year':\n return getPreviousYearStart(date, -10);\n case 'month':\n return getPreviousMonthStart(date, -12);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getBeginNext2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getNextDecadeStart(date, 100);\n case 'year':\n return getNextYearStart(date, 10);\n case 'month':\n return getNextMonthStart(date, 12);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Returns the end of a given range.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n * @returns {Date} End of a given range.\n */\nexport function getEnd(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyEnd(date);\n case 'decade':\n return getDecadeEnd(date);\n case 'year':\n return getYearEnd(date);\n case 'month':\n return getMonthEnd(date);\n case 'day':\n return getDayEnd(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Returns the end of a previous given range.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n * @returns {Date} End of a previous given range.\n */\nexport function getEndPrevious(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getPreviousCenturyEnd(date);\n case 'decade':\n return getPreviousDecadeEnd(date);\n case 'year':\n return getPreviousYearEnd(date);\n case 'month':\n return getPreviousMonthEnd(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\nexport function getEndPrevious2(rangeType, date) {\n switch (rangeType) {\n case 'decade':\n return getPreviousDecadeEnd(date, -100);\n case 'year':\n return getPreviousYearEnd(date, -10);\n case 'month':\n return getPreviousMonthEnd(date, -12);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Returns an array with the beginning and the end of a given range.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date Date.\n * @returns {Date[]} Beginning and end of a given range.\n */\nexport function getRange(rangeType, date) {\n switch (rangeType) {\n case 'century':\n return getCenturyRange(date);\n case 'decade':\n return getDecadeRange(date);\n case 'year':\n return getYearRange(date);\n case 'month':\n return getMonthRange(date);\n case 'day':\n return getDayRange(date);\n default:\n throw new Error(\"Invalid rangeType: \".concat(rangeType));\n }\n}\n/**\n * Creates a range out of two values, ensuring they are in order and covering entire period ranges.\n *\n * @param {RangeType} rangeType Range type (e.g. 'day')\n * @param {Date} date1 First date.\n * @param {Date} date2 Second date.\n * @returns {Date[]} Beginning and end of a given range.\n */\nexport function getValueRange(rangeType, date1, date2) {\n var rawNextValue = [date1, date2].sort(function (a, b) { return a.getTime() - b.getTime(); });\n return [getBegin(rangeType, rawNextValue[0]), getEnd(rangeType, rawNextValue[1])];\n}\nfunction toYearLabel(locale, formatYear, dates) {\n return dates.map(function (date) { return (formatYear || defaultFormatYear)(locale, date); }).join(' – ');\n}\n/**\n * @callback FormatYear\n * @param {string} locale Locale.\n * @param {Date} date Date.\n * @returns {string} Formatted year.\n */\n/**\n * Returns a string labelling a century of a given date.\n * For example, for 2017 it will return 2001-2100.\n *\n * @param {string} locale Locale.\n * @param {FormatYear} formatYear Function to format a year.\n * @param {Date|string|number} date Date or a year as a string or as a number.\n * @returns {string} String labelling a century of a given date.\n */\nexport function getCenturyLabel(locale, formatYear, date) {\n return toYearLabel(locale, formatYear, getCenturyRange(date));\n}\n/**\n * Returns a string labelling a decade of a given date.\n * For example, for 2017 it will return 2011-2020.\n *\n * @param {string} locale Locale.\n * @param {FormatYear} formatYear Function to format a year.\n * @param {Date|string|number} date Date or a year as a string or as a number.\n * @returns {string} String labelling a decade of a given date.\n */\nexport function getDecadeLabel(locale, formatYear, date) {\n return toYearLabel(locale, formatYear, getDecadeRange(date));\n}\n/**\n * Returns a boolean determining whether a given date is the current day of the week.\n *\n * @param {Date} date Date.\n * @returns {boolean} Whether a given date is the current day of the week.\n */\nexport function isCurrentDayOfWeek(date) {\n return date.getDay() === new Date().getDay();\n}\n/**\n * Returns a boolean determining whether a given date is a weekend day.\n *\n * @param {Date} date Date.\n * @param {CalendarType} [calendarType=\"iso8601\"] Calendar type.\n * @returns {boolean} Whether a given date is a weekend day.\n */\nexport function isWeekend(date, calendarType) {\n if (calendarType === void 0) { calendarType = CALENDAR_TYPES.ISO_8601; }\n var weekday = date.getDay();\n switch (calendarType) {\n case CALENDAR_TYPES.ISLAMIC:\n case CALENDAR_TYPES.HEBREW:\n return weekday === FRIDAY || weekday === SATURDAY;\n case CALENDAR_TYPES.ISO_8601:\n case CALENDAR_TYPES.GREGORY:\n return weekday === SATURDAY || weekday === SUNDAY;\n default:\n throw new Error('Unsupported calendar type.');\n }\n}\n","'use client';\nimport { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { getUserLocale } from 'get-user-locale';\nimport { getCenturyLabel, getDecadeLabel, getBeginNext, getBeginNext2, getBeginPrevious, getBeginPrevious2, getEndPrevious, getEndPrevious2, } from '../shared/dates.js';\nimport { formatMonthYear as defaultFormatMonthYear, formatYear as defaultFormatYear, } from '../shared/dateFormatter.js';\nvar className = 'react-calendar__navigation';\nexport default function Navigation(_a) {\n var activeStartDate = _a.activeStartDate, drillUp = _a.drillUp, _b = _a.formatMonthYear, formatMonthYear = _b === void 0 ? defaultFormatMonthYear : _b, _c = _a.formatYear, formatYear = _c === void 0 ? defaultFormatYear : _c, locale = _a.locale, maxDate = _a.maxDate, minDate = _a.minDate, _d = _a.navigationAriaLabel, navigationAriaLabel = _d === void 0 ? '' : _d, navigationAriaLive = _a.navigationAriaLive, navigationLabel = _a.navigationLabel, _e = _a.next2AriaLabel, next2AriaLabel = _e === void 0 ? '' : _e, _f = _a.next2Label, next2Label = _f === void 0 ? '»' : _f, _g = _a.nextAriaLabel, nextAriaLabel = _g === void 0 ? '' : _g, _h = _a.nextLabel, nextLabel = _h === void 0 ? '›' : _h, _j = _a.prev2AriaLabel, prev2AriaLabel = _j === void 0 ? '' : _j, _k = _a.prev2Label, prev2Label = _k === void 0 ? '«' : _k, _l = _a.prevAriaLabel, prevAriaLabel = _l === void 0 ? '' : _l, _m = _a.prevLabel, prevLabel = _m === void 0 ? '‹' : _m, setActiveStartDate = _a.setActiveStartDate, showDoubleView = _a.showDoubleView, view = _a.view, views = _a.views;\n var drillUpAvailable = views.indexOf(view) > 0;\n var shouldShowPrevNext2Buttons = view !== 'century';\n var previousActiveStartDate = getBeginPrevious(view, activeStartDate);\n var previousActiveStartDate2 = shouldShowPrevNext2Buttons\n ? getBeginPrevious2(view, activeStartDate)\n : undefined;\n var nextActiveStartDate = getBeginNext(view, activeStartDate);\n var nextActiveStartDate2 = shouldShowPrevNext2Buttons\n ? getBeginNext2(view, activeStartDate)\n : undefined;\n var prevButtonDisabled = (function () {\n if (previousActiveStartDate.getFullYear() < 0) {\n return true;\n }\n var previousActiveEndDate = getEndPrevious(view, activeStartDate);\n return minDate && minDate >= previousActiveEndDate;\n })();\n var prev2ButtonDisabled = shouldShowPrevNext2Buttons &&\n (function () {\n if (previousActiveStartDate2.getFullYear() < 0) {\n return true;\n }\n var previousActiveEndDate = getEndPrevious2(view, activeStartDate);\n return minDate && minDate >= previousActiveEndDate;\n })();\n var nextButtonDisabled = maxDate && maxDate < nextActiveStartDate;\n var next2ButtonDisabled = shouldShowPrevNext2Buttons && maxDate && maxDate < nextActiveStartDate2;\n function onClickPrevious() {\n setActiveStartDate(previousActiveStartDate, 'prev');\n }\n function onClickPrevious2() {\n setActiveStartDate(previousActiveStartDate2, 'prev2');\n }\n function onClickNext() {\n setActiveStartDate(nextActiveStartDate, 'next');\n }\n function onClickNext2() {\n setActiveStartDate(nextActiveStartDate2, 'next2');\n }\n function renderLabel(date) {\n var label = (function () {\n switch (view) {\n case 'century':\n return getCenturyLabel(locale, formatYear, date);\n case 'decade':\n return getDecadeLabel(locale, formatYear, date);\n case 'year':\n return formatYear(locale, date);\n case 'month':\n return formatMonthYear(locale, date);\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n })();\n return navigationLabel\n ? navigationLabel({\n date: date,\n label: label,\n locale: locale || getUserLocale() || undefined,\n view: view,\n })\n : label;\n }\n function renderButton() {\n var labelClassName = \"\".concat(className, \"__label\");\n return (_jsxs(\"button\", { \"aria-label\": navigationAriaLabel, \"aria-live\": navigationAriaLive, className: labelClassName, disabled: !drillUpAvailable, onClick: drillUp, style: { flexGrow: 1 }, type: \"button\", children: [_jsx(\"span\", { className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--from\"), children: renderLabel(activeStartDate) }), showDoubleView ? (_jsxs(_Fragment, { children: [_jsx(\"span\", { className: \"\".concat(labelClassName, \"__divider\"), children: \" \\u2013 \" }), _jsx(\"span\", { className: \"\".concat(labelClassName, \"__labelText \").concat(labelClassName, \"__labelText--to\"), children: renderLabel(nextActiveStartDate) })] })) : null] }));\n }\n return (_jsxs(\"div\", { className: className, children: [prev2Label !== null && shouldShowPrevNext2Buttons ? (_jsx(\"button\", { \"aria-label\": prev2AriaLabel, className: \"\".concat(className, \"__arrow \").concat(className, \"__prev2-button\"), disabled: prev2ButtonDisabled, onClick: onClickPrevious2, type: \"button\", children: prev2Label })) : null, prevLabel !== null && (_jsx(\"button\", { \"aria-label\": prevAriaLabel, className: \"\".concat(className, \"__arrow \").concat(className, \"__prev-button\"), disabled: prevButtonDisabled, onClick: onClickPrevious, type: \"button\", children: prevLabel })), renderButton(), nextLabel !== null && (_jsx(\"button\", { \"aria-label\": nextAriaLabel, className: \"\".concat(className, \"__arrow \").concat(className, \"__next-button\"), disabled: nextButtonDisabled, onClick: onClickNext, type: \"button\", children: nextLabel })), next2Label !== null && shouldShowPrevNext2Buttons ? (_jsx(\"button\", { \"aria-label\": next2AriaLabel, className: \"\".concat(className, \"__arrow \").concat(className, \"__next2-button\"), disabled: next2ButtonDisabled, onClick: onClickNext2, type: \"button\", children: next2Label })) : null] }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { Children, cloneElement } from 'react';\nfunction toPercent(num) {\n return \"\".concat(num, \"%\");\n}\nexport default function Flex(_a) {\n var children = _a.children, className = _a.className, count = _a.count, direction = _a.direction, offset = _a.offset, style = _a.style, wrap = _a.wrap, otherProps = __rest(_a, [\"children\", \"className\", \"count\", \"direction\", \"offset\", \"style\", \"wrap\"]);\n return (_jsx(\"div\", __assign({ className: className, style: __assign({ display: 'flex', flexDirection: direction, flexWrap: wrap ? 'wrap' : 'nowrap' }, style) }, otherProps, { children: Children.map(children, function (child, index) {\n var marginInlineStart = offset && index === 0 ? toPercent((100 * offset) / count) : null;\n return cloneElement(child, __assign(__assign({}, child.props), { style: {\n flexBasis: toPercent(100 / count),\n flexShrink: 0,\n flexGrow: 0,\n overflow: 'hidden',\n marginLeft: marginInlineStart,\n marginInlineStart: marginInlineStart,\n marginInlineEnd: 0,\n } }));\n }) })));\n}\n","import { getRange } from './dates.js';\n/**\n * Returns a value no smaller than min and no larger than max.\n *\n * @param {Date} value Value to return.\n * @param {Date} min Minimum return value.\n * @param {Date} max Maximum return value.\n * @returns {Date} Value between min and max.\n */\nexport function between(value, min, max) {\n if (min && min > value) {\n return min;\n }\n if (max && max < value) {\n return max;\n }\n return value;\n}\nexport function isValueWithinRange(value, range) {\n return range[0] <= value && range[1] >= value;\n}\nexport function isRangeWithinRange(greaterRange, smallerRange) {\n return greaterRange[0] <= smallerRange[0] && greaterRange[1] >= smallerRange[1];\n}\nexport function doRangesOverlap(range1, range2) {\n return isValueWithinRange(range1[0], range2) || isValueWithinRange(range1[1], range2);\n}\nfunction getRangeClassNames(valueRange, dateRange, baseClassName) {\n var isRange = doRangesOverlap(dateRange, valueRange);\n var classes = [];\n if (isRange) {\n classes.push(baseClassName);\n var isRangeStart = isValueWithinRange(valueRange[0], dateRange);\n var isRangeEnd = isValueWithinRange(valueRange[1], dateRange);\n if (isRangeStart) {\n classes.push(\"\".concat(baseClassName, \"Start\"));\n }\n if (isRangeEnd) {\n classes.push(\"\".concat(baseClassName, \"End\"));\n }\n if (isRangeStart && isRangeEnd) {\n classes.push(\"\".concat(baseClassName, \"BothEnds\"));\n }\n }\n return classes;\n}\nfunction isCompleteValue(value) {\n if (Array.isArray(value)) {\n return value[0] !== null && value[1] !== null;\n }\n return value !== null;\n}\nexport function getTileClasses(args) {\n if (!args) {\n throw new Error('args is required');\n }\n var value = args.value, date = args.date, hover = args.hover;\n var className = 'react-calendar__tile';\n var classes = [className];\n if (!date) {\n return classes;\n }\n var now = new Date();\n var dateRange = (function () {\n if (Array.isArray(date)) {\n return date;\n }\n var dateType = args.dateType;\n if (!dateType) {\n throw new Error('dateType is required when date is not an array of two dates');\n }\n return getRange(dateType, date);\n })();\n if (isValueWithinRange(now, dateRange)) {\n classes.push(\"\".concat(className, \"--now\"));\n }\n if (!value || !isCompleteValue(value)) {\n return classes;\n }\n var valueRange = (function () {\n if (Array.isArray(value)) {\n return value;\n }\n var valueType = args.valueType;\n if (!valueType) {\n throw new Error('valueType is required when value is not an array of two dates');\n }\n return getRange(valueType, value);\n })();\n if (isRangeWithinRange(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--active\"));\n }\n else if (doRangesOverlap(valueRange, dateRange)) {\n classes.push(\"\".concat(className, \"--hasActive\"));\n }\n var valueRangeClassNames = getRangeClassNames(valueRange, dateRange, \"\".concat(className, \"--range\"));\n classes.push.apply(classes, valueRangeClassNames);\n var valueArray = Array.isArray(value) ? value : [value];\n if (hover && valueArray.length === 1) {\n var hoverRange = hover > valueRange[0] ? [valueRange[0], hover] : [hover, valueRange[0]];\n var hoverRangeClassNames = getRangeClassNames(hoverRange, dateRange, \"\".concat(className, \"--hover\"));\n classes.push.apply(classes, hoverRangeClassNames);\n }\n return classes;\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport Flex from './Flex.js';\nimport { getTileClasses } from './shared/utils.js';\nexport default function TileGroup(_a) {\n var className = _a.className, _b = _a.count, count = _b === void 0 ? 3 : _b, dateTransform = _a.dateTransform, dateType = _a.dateType, end = _a.end, hover = _a.hover, offset = _a.offset, renderTile = _a.renderTile, start = _a.start, _c = _a.step, step = _c === void 0 ? 1 : _c, value = _a.value, valueType = _a.valueType;\n var tiles = [];\n for (var point = start; point <= end; point += step) {\n var date = dateTransform(point);\n tiles.push(renderTile({\n classes: getTileClasses({\n date: date,\n dateType: dateType,\n hover: hover,\n value: value,\n valueType: valueType,\n }),\n date: date,\n }));\n }\n return (_jsx(Flex, { className: className, count: count, offset: offset, wrap: true, children: tiles }));\n}\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useMemo } from 'react';\nimport clsx from 'clsx';\nexport default function Tile(props) {\n var activeStartDate = props.activeStartDate, children = props.children, classes = props.classes, date = props.date, formatAbbr = props.formatAbbr, locale = props.locale, maxDate = props.maxDate, maxDateTransform = props.maxDateTransform, minDate = props.minDate, minDateTransform = props.minDateTransform, onClick = props.onClick, onMouseOver = props.onMouseOver, style = props.style, tileClassNameProps = props.tileClassName, tileContentProps = props.tileContent, tileDisabled = props.tileDisabled, view = props.view;\n var tileClassName = useMemo(function () {\n var args = { activeStartDate: activeStartDate, date: date, view: view };\n return typeof tileClassNameProps === 'function' ? tileClassNameProps(args) : tileClassNameProps;\n }, [activeStartDate, date, tileClassNameProps, view]);\n var tileContent = useMemo(function () {\n var args = { activeStartDate: activeStartDate, date: date, view: view };\n return typeof tileContentProps === 'function' ? tileContentProps(args) : tileContentProps;\n }, [activeStartDate, date, tileContentProps, view]);\n return (_jsxs(\"button\", { className: clsx(classes, tileClassName), disabled: (minDate && minDateTransform(minDate) > date) ||\n (maxDate && maxDateTransform(maxDate) < date) ||\n (tileDisabled === null || tileDisabled === void 0 ? void 0 : tileDisabled({ activeStartDate: activeStartDate, date: date, view: view })), onClick: onClick ? function (event) { return onClick(date, event); } : undefined, onFocus: onMouseOver ? function () { return onMouseOver(date); } : undefined, onMouseOver: onMouseOver ? function () { return onMouseOver(date); } : undefined, style: style, type: \"button\", children: [formatAbbr ? _jsx(\"abbr\", { \"aria-label\": formatAbbr(locale, date), children: children }) : children, tileContent] }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getDecadeStart, getDecadeEnd, getCenturyStart } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile.js';\nimport { getDecadeLabel } from '../shared/dates.js';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter.js';\nvar className = 'react-calendar__century-view__decades__decade';\nexport default function Decade(_a) {\n var _b = _a.classes, classes = _b === void 0 ? [] : _b, currentCentury = _a.currentCentury, _c = _a.formatYear, formatYear = _c === void 0 ? defaultFormatYear : _c, otherProps = __rest(_a, [\"classes\", \"currentCentury\", \"formatYear\"]);\n var date = otherProps.date, locale = otherProps.locale;\n var classesProps = [];\n if (classes) {\n classesProps.push.apply(classesProps, classes);\n }\n if (className) {\n classesProps.push(className);\n }\n if (getCenturyStart(date).getFullYear() !== currentCentury) {\n classesProps.push(\"\".concat(className, \"--neighboringCentury\"));\n }\n return (_jsx(Tile, __assign({}, otherProps, { classes: classesProps, maxDateTransform: getDecadeEnd, minDateTransform: getDecadeStart, view: \"century\", children: getDecadeLabel(locale, formatYear, date) })));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getDecadeStart } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup.js';\nimport Decade from './Decade.js';\nimport { getBeginOfCenturyYear } from '../shared/dates.js';\nexport default function Decades(props) {\n var activeStartDate = props.activeStartDate, hover = props.hover, showNeighboringCentury = props.showNeighboringCentury, value = props.value, valueType = props.valueType, otherProps = __rest(props, [\"activeStartDate\", \"hover\", \"showNeighboringCentury\", \"value\", \"valueType\"]);\n var start = getBeginOfCenturyYear(activeStartDate);\n var end = start + (showNeighboringCentury ? 119 : 99);\n return (_jsx(TileGroup, { className: \"react-calendar__century-view__decades\", dateTransform: getDecadeStart, dateType: \"decade\", end: end, hover: hover, renderTile: function (_a) {\n var date = _a.date, otherTileProps = __rest(_a, [\"date\"]);\n return (_jsx(Decade, __assign({}, otherProps, otherTileProps, { activeStartDate: activeStartDate, currentCentury: start, date: date }), date.getTime()));\n }, start: start, step: 10, value: value, valueType: valueType }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport Decades from './CenturyView/Decades.js';\n/**\n * Displays a given century.\n */\nexport default function CenturyView(props) {\n function renderDecades() {\n return _jsx(Decades, __assign({}, props));\n }\n return _jsx(\"div\", { className: \"react-calendar__century-view\", children: renderDecades() });\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getYearStart, getYearEnd, getDecadeStart } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile.js';\nimport { formatYear as defaultFormatYear } from '../shared/dateFormatter.js';\nvar className = 'react-calendar__decade-view__years__year';\nexport default function Year(_a) {\n var _b = _a.classes, classes = _b === void 0 ? [] : _b, currentDecade = _a.currentDecade, _c = _a.formatYear, formatYear = _c === void 0 ? defaultFormatYear : _c, otherProps = __rest(_a, [\"classes\", \"currentDecade\", \"formatYear\"]);\n var date = otherProps.date, locale = otherProps.locale;\n var classesProps = [];\n if (classes) {\n classesProps.push.apply(classesProps, classes);\n }\n if (className) {\n classesProps.push(className);\n }\n if (getDecadeStart(date).getFullYear() !== currentDecade) {\n classesProps.push(\"\".concat(className, \"--neighboringDecade\"));\n }\n return (_jsx(Tile, __assign({}, otherProps, { classes: classesProps, maxDateTransform: getYearEnd, minDateTransform: getYearStart, view: \"decade\", children: formatYear(locale, date) })));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getYearStart } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup.js';\nimport Year from './Year.js';\nimport { getBeginOfDecadeYear } from '../shared/dates.js';\nexport default function Years(props) {\n var activeStartDate = props.activeStartDate, hover = props.hover, showNeighboringDecade = props.showNeighboringDecade, value = props.value, valueType = props.valueType, otherProps = __rest(props, [\"activeStartDate\", \"hover\", \"showNeighboringDecade\", \"value\", \"valueType\"]);\n var start = getBeginOfDecadeYear(activeStartDate);\n var end = start + (showNeighboringDecade ? 11 : 9);\n return (_jsx(TileGroup, { className: \"react-calendar__decade-view__years\", dateTransform: getYearStart, dateType: \"year\", end: end, hover: hover, renderTile: function (_a) {\n var date = _a.date, otherTileProps = __rest(_a, [\"date\"]);\n return (_jsx(Year, __assign({}, otherProps, otherTileProps, { activeStartDate: activeStartDate, currentDecade: start, date: date }), date.getTime()));\n }, start: start, value: value, valueType: valueType }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport Years from './DecadeView/Years.js';\n/**\n * Displays a given decade.\n */\nexport default function DecadeView(props) {\n function renderYears() {\n return _jsx(Years, __assign({}, props));\n }\n return _jsx(\"div\", { className: \"react-calendar__decade-view\", children: renderYears() });\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getMonthStart, getMonthEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile.js';\nimport { formatMonth as defaultFormatMonth, formatMonthYear as defaultFormatMonthYear, } from '../shared/dateFormatter.js';\nvar className = 'react-calendar__year-view__months__month';\nexport default function Month(_a) {\n var _b = _a.classes, classes = _b === void 0 ? [] : _b, _c = _a.formatMonth, formatMonth = _c === void 0 ? defaultFormatMonth : _c, _d = _a.formatMonthYear, formatMonthYear = _d === void 0 ? defaultFormatMonthYear : _d, otherProps = __rest(_a, [\"classes\", \"formatMonth\", \"formatMonthYear\"]);\n var date = otherProps.date, locale = otherProps.locale;\n return (_jsx(Tile, __assign({}, otherProps, { classes: __spreadArray(__spreadArray([], classes, true), [className], false), formatAbbr: formatMonthYear, maxDateTransform: getMonthEnd, minDateTransform: getMonthStart, view: \"year\", children: formatMonth(locale, date) })));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getMonthStart, getYear } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup.js';\nimport Month from './Month.js';\nexport default function Months(props) {\n var activeStartDate = props.activeStartDate, hover = props.hover, value = props.value, valueType = props.valueType, otherProps = __rest(props, [\"activeStartDate\", \"hover\", \"value\", \"valueType\"]);\n var start = 0;\n var end = 11;\n var year = getYear(activeStartDate);\n return (_jsx(TileGroup, { className: \"react-calendar__year-view__months\", dateTransform: function (monthIndex) {\n var date = new Date();\n date.setFullYear(year, monthIndex, 1);\n return getMonthStart(date);\n }, dateType: \"month\", end: end, hover: hover, renderTile: function (_a) {\n var date = _a.date, otherTileProps = __rest(_a, [\"date\"]);\n return (_jsx(Month, __assign({}, otherProps, otherTileProps, { activeStartDate: activeStartDate, date: date }), date.getTime()));\n }, start: start, value: value, valueType: valueType }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport Months from './YearView/Months.js';\n/**\n * Displays a given year.\n */\nexport default function YearView(props) {\n function renderMonths() {\n return _jsx(Months, __assign({}, props));\n }\n return _jsx(\"div\", { className: \"react-calendar__year-view\", children: renderMonths() });\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getDayStart, getDayEnd } from '@wojtekmaj/date-utils';\nimport Tile from '../Tile.js';\nimport { isWeekend } from '../shared/dates.js';\nimport { formatDay as defaultFormatDay, formatLongDate as defaultFormatLongDate, } from '../shared/dateFormatter.js';\nvar className = 'react-calendar__month-view__days__day';\nexport default function Day(_a) {\n var calendarType = _a.calendarType, _b = _a.classes, classes = _b === void 0 ? [] : _b, currentMonthIndex = _a.currentMonthIndex, _c = _a.formatDay, formatDay = _c === void 0 ? defaultFormatDay : _c, _d = _a.formatLongDate, formatLongDate = _d === void 0 ? defaultFormatLongDate : _d, otherProps = __rest(_a, [\"calendarType\", \"classes\", \"currentMonthIndex\", \"formatDay\", \"formatLongDate\"]);\n var date = otherProps.date, locale = otherProps.locale;\n var classesProps = [];\n if (classes) {\n classesProps.push.apply(classesProps, classes);\n }\n if (className) {\n classesProps.push(className);\n }\n if (isWeekend(date, calendarType)) {\n classesProps.push(\"\".concat(className, \"--weekend\"));\n }\n if (date.getMonth() !== currentMonthIndex) {\n classesProps.push(\"\".concat(className, \"--neighboringMonth\"));\n }\n return (_jsx(Tile, __assign({}, otherProps, { classes: classesProps, formatAbbr: formatLongDate, maxDateTransform: getDayEnd, minDateTransform: getDayStart, view: \"month\", children: formatDay(locale, date) })));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getYear, getMonth, getDaysInMonth, getDayStart } from '@wojtekmaj/date-utils';\nimport TileGroup from '../TileGroup.js';\nimport Day from './Day.js';\nimport { getDayOfWeek } from '../shared/dates.js';\nexport default function Days(props) {\n var activeStartDate = props.activeStartDate, calendarType = props.calendarType, hover = props.hover, showFixedNumberOfWeeks = props.showFixedNumberOfWeeks, showNeighboringMonth = props.showNeighboringMonth, value = props.value, valueType = props.valueType, otherProps = __rest(props, [\"activeStartDate\", \"calendarType\", \"hover\", \"showFixedNumberOfWeeks\", \"showNeighboringMonth\", \"value\", \"valueType\"]);\n var year = getYear(activeStartDate);\n var monthIndex = getMonth(activeStartDate);\n var hasFixedNumberOfWeeks = showFixedNumberOfWeeks || showNeighboringMonth;\n var dayOfWeek = getDayOfWeek(activeStartDate, calendarType);\n var offset = hasFixedNumberOfWeeks ? 0 : dayOfWeek;\n /**\n * Defines on which day of the month the grid shall start. If we simply show current\n * month, we obviously start on day one, but if showNeighboringMonth is set to\n * true, we need to find the beginning of the week the first day of the month is in.\n */\n var start = (hasFixedNumberOfWeeks ? -dayOfWeek : 0) + 1;\n /**\n * Defines on which day of the month the grid shall end. If we simply show current\n * month, we need to stop on the last day of the month, but if showNeighboringMonth\n * is set to true, we need to find the end of the week the last day of the month is in.\n */\n var end = (function () {\n if (showFixedNumberOfWeeks) {\n // Always show 6 weeks\n return start + 6 * 7 - 1;\n }\n var daysInMonth = getDaysInMonth(activeStartDate);\n if (showNeighboringMonth) {\n var activeEndDate = new Date();\n activeEndDate.setFullYear(year, monthIndex, daysInMonth);\n activeEndDate.setHours(0, 0, 0, 0);\n var daysUntilEndOfTheWeek = 7 - getDayOfWeek(activeEndDate, calendarType) - 1;\n return daysInMonth + daysUntilEndOfTheWeek;\n }\n return daysInMonth;\n })();\n return (_jsx(TileGroup, { className: \"react-calendar__month-view__days\", count: 7, dateTransform: function (day) {\n var date = new Date();\n date.setFullYear(year, monthIndex, day);\n return getDayStart(date);\n }, dateType: \"day\", hover: hover, end: end, renderTile: function (_a) {\n var date = _a.date, otherTileProps = __rest(_a, [\"date\"]);\n return (_jsx(Day, __assign({}, otherProps, otherTileProps, { activeStartDate: activeStartDate, calendarType: calendarType, currentMonthIndex: monthIndex, date: date }), date.getTime()));\n }, offset: offset, start: start, value: value, valueType: valueType }));\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport { getYear, getMonth, getMonthStart } from '@wojtekmaj/date-utils';\nimport Flex from '../Flex.js';\nimport { getDayOfWeek, isCurrentDayOfWeek, isWeekend } from '../shared/dates.js';\nimport { formatShortWeekday as defaultFormatShortWeekday, formatWeekday as defaultFormatWeekday, } from '../shared/dateFormatter.js';\nvar className = 'react-calendar__month-view__weekdays';\nvar weekdayClassName = \"\".concat(className, \"__weekday\");\nexport default function Weekdays(props) {\n var calendarType = props.calendarType, _a = props.formatShortWeekday, formatShortWeekday = _a === void 0 ? defaultFormatShortWeekday : _a, _b = props.formatWeekday, formatWeekday = _b === void 0 ? defaultFormatWeekday : _b, locale = props.locale, onMouseLeave = props.onMouseLeave;\n var anyDate = new Date();\n var beginOfMonth = getMonthStart(anyDate);\n var year = getYear(beginOfMonth);\n var monthIndex = getMonth(beginOfMonth);\n var weekdays = [];\n for (var weekday = 1; weekday <= 7; weekday += 1) {\n var weekdayDate = new Date(year, monthIndex, weekday - getDayOfWeek(beginOfMonth, calendarType));\n var abbr = formatWeekday(locale, weekdayDate);\n weekdays.push(_jsx(\"div\", { className: clsx(weekdayClassName, isCurrentDayOfWeek(weekdayDate) && \"\".concat(weekdayClassName, \"--current\"), isWeekend(weekdayDate, calendarType) && \"\".concat(weekdayClassName, \"--weekend\")), children: _jsx(\"abbr\", { \"aria-label\": abbr, title: abbr, children: formatShortWeekday(locale, weekdayDate).replace('.', '') }) }, weekday));\n }\n return (_jsx(Flex, { className: className, count: 7, onFocus: onMouseLeave, onMouseOver: onMouseLeave, children: weekdays }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar className = 'react-calendar__tile';\nexport default function WeekNumber(props) {\n var onClickWeekNumber = props.onClickWeekNumber, weekNumber = props.weekNumber;\n var children = _jsx(\"span\", { children: weekNumber });\n if (onClickWeekNumber) {\n var date_1 = props.date, onClickWeekNumber_1 = props.onClickWeekNumber, weekNumber_1 = props.weekNumber, otherProps = __rest(props, [\"date\", \"onClickWeekNumber\", \"weekNumber\"]);\n return (_jsx(\"button\", __assign({}, otherProps, { className: className, onClick: function (event) { return onClickWeekNumber_1(weekNumber_1, date_1, event); }, type: \"button\", children: children })));\n // biome-ignore lint/style/noUselessElse: TypeScript is unhappy if we remove this else\n }\n else {\n var date = props.date, onClickWeekNumber_2 = props.onClickWeekNumber, weekNumber_2 = props.weekNumber, otherProps = __rest(props, [\"date\", \"onClickWeekNumber\", \"weekNumber\"]);\n return (_jsx(\"div\", __assign({}, otherProps, { className: className, children: children })));\n }\n}\n","import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { getYear, getMonth, getDate, getDaysInMonth } from '@wojtekmaj/date-utils';\nimport WeekNumber from './WeekNumber.js';\nimport Flex from '../Flex.js';\nimport { getBeginOfWeek, getDayOfWeek, getWeekNumber } from '../shared/dates.js';\nexport default function WeekNumbers(props) {\n var activeStartDate = props.activeStartDate, calendarType = props.calendarType, onClickWeekNumber = props.onClickWeekNumber, onMouseLeave = props.onMouseLeave, showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n var numberOfWeeks = (function () {\n if (showFixedNumberOfWeeks) {\n return 6;\n }\n var numberOfDays = getDaysInMonth(activeStartDate);\n var startWeekday = getDayOfWeek(activeStartDate, calendarType);\n var days = numberOfDays - (7 - startWeekday);\n return 1 + Math.ceil(days / 7);\n })();\n var dates = (function () {\n var year = getYear(activeStartDate);\n var monthIndex = getMonth(activeStartDate);\n var day = getDate(activeStartDate);\n var result = [];\n for (var index = 0; index < numberOfWeeks; index += 1) {\n result.push(getBeginOfWeek(new Date(year, monthIndex, day + index * 7), calendarType));\n }\n return result;\n })();\n var weekNumbers = dates.map(function (date) { return getWeekNumber(date, calendarType); });\n return (_jsx(Flex, { className: \"react-calendar__month-view__weekNumbers\", count: numberOfWeeks, direction: \"column\", onFocus: onMouseLeave, onMouseOver: onMouseLeave, style: { flexBasis: 'calc(100% * (1 / 8)', flexShrink: 0 }, children: weekNumbers.map(function (weekNumber, weekIndex) {\n var date = dates[weekIndex];\n if (!date) {\n throw new Error('date is not defined');\n }\n return (_jsx(WeekNumber, { date: date, onClickWeekNumber: onClickWeekNumber, weekNumber: weekNumber }, weekNumber));\n }) }));\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport clsx from 'clsx';\nimport Days from './MonthView/Days.js';\nimport Weekdays from './MonthView/Weekdays.js';\nimport WeekNumbers from './MonthView/WeekNumbers.js';\nimport { CALENDAR_TYPES, CALENDAR_TYPE_LOCALES } from './shared/const.js';\nfunction getCalendarTypeFromLocale(locale) {\n if (locale) {\n for (var _i = 0, _a = Object.entries(CALENDAR_TYPE_LOCALES); _i < _a.length; _i++) {\n var _b = _a[_i], calendarType = _b[0], locales = _b[1];\n if (locales.includes(locale)) {\n return calendarType;\n }\n }\n }\n return CALENDAR_TYPES.ISO_8601;\n}\n/**\n * Displays a given month.\n */\nexport default function MonthView(props) {\n var activeStartDate = props.activeStartDate, locale = props.locale, onMouseLeave = props.onMouseLeave, showFixedNumberOfWeeks = props.showFixedNumberOfWeeks;\n var _a = props.calendarType, calendarType = _a === void 0 ? getCalendarTypeFromLocale(locale) : _a, formatShortWeekday = props.formatShortWeekday, formatWeekday = props.formatWeekday, onClickWeekNumber = props.onClickWeekNumber, showWeekNumbers = props.showWeekNumbers, childProps = __rest(props, [\"calendarType\", \"formatShortWeekday\", \"formatWeekday\", \"onClickWeekNumber\", \"showWeekNumbers\"]);\n function renderWeekdays() {\n return (_jsx(Weekdays, { calendarType: calendarType, formatShortWeekday: formatShortWeekday, formatWeekday: formatWeekday, locale: locale, onMouseLeave: onMouseLeave }));\n }\n function renderWeekNumbers() {\n if (!showWeekNumbers) {\n return null;\n }\n return (_jsx(WeekNumbers, { activeStartDate: activeStartDate, calendarType: calendarType, onClickWeekNumber: onClickWeekNumber, onMouseLeave: onMouseLeave, showFixedNumberOfWeeks: showFixedNumberOfWeeks }));\n }\n function renderDays() {\n return _jsx(Days, __assign({ calendarType: calendarType }, childProps));\n }\n var className = 'react-calendar__month-view';\n return (_jsx(\"div\", { className: clsx(className, showWeekNumbers ? \"\".concat(className, \"--weekNumbers\") : ''), children: _jsxs(\"div\", { style: {\n display: 'flex',\n alignItems: 'flex-end',\n }, children: [renderWeekNumbers(), _jsxs(\"div\", { style: {\n flexGrow: 1,\n width: '100%',\n }, children: [renderWeekdays(), renderDays()] })] }) }));\n}\n","'use client';\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { forwardRef, useCallback, useImperativeHandle, useState } from 'react';\nimport clsx from 'clsx';\nimport Navigation from './Calendar/Navigation.js';\nimport CenturyView from './CenturyView.js';\nimport DecadeView from './DecadeView.js';\nimport YearView from './YearView.js';\nimport MonthView from './MonthView.js';\nimport { getBegin, getBeginNext, getEnd, getValueRange } from './shared/dates.js';\nimport { between } from './shared/utils.js';\nvar baseClassName = 'react-calendar';\nvar allViews = ['century', 'decade', 'year', 'month'];\nvar allValueTypes = ['decade', 'year', 'month', 'day'];\nvar defaultMinDate = new Date();\ndefaultMinDate.setFullYear(1, 0, 1);\ndefaultMinDate.setHours(0, 0, 0, 0);\nvar defaultMaxDate = new Date(8.64e15);\nfunction toDate(value) {\n if (value instanceof Date) {\n return value;\n }\n return new Date(value);\n}\n/**\n * Returns views array with disallowed values cut off.\n */\nfunction getLimitedViews(minDetail, maxDetail) {\n return allViews.slice(allViews.indexOf(minDetail), allViews.indexOf(maxDetail) + 1);\n}\n/**\n * Determines whether a given view is allowed with currently applied settings.\n */\nfunction isViewAllowed(view, minDetail, maxDetail) {\n var views = getLimitedViews(minDetail, maxDetail);\n return views.indexOf(view) !== -1;\n}\n/**\n * Gets either provided view if allowed by minDetail and maxDetail, or gets\n * the default view if not allowed.\n */\nfunction getView(view, minDetail, maxDetail) {\n if (!view) {\n return maxDetail;\n }\n if (isViewAllowed(view, minDetail, maxDetail)) {\n return view;\n }\n return maxDetail;\n}\n/**\n * Returns value type that can be returned with currently applied settings.\n */\nfunction getValueType(view) {\n var index = allViews.indexOf(view);\n return allValueTypes[index];\n}\nfunction getValue(value, index) {\n var rawValue = Array.isArray(value) ? value[index] : value;\n if (!rawValue) {\n return null;\n }\n var valueDate = toDate(rawValue);\n if (Number.isNaN(valueDate.getTime())) {\n throw new Error(\"Invalid date: \".concat(value));\n }\n return valueDate;\n}\nfunction getDetailValue(_a, index) {\n var value = _a.value, minDate = _a.minDate, maxDate = _a.maxDate, maxDetail = _a.maxDetail;\n var valuePiece = getValue(value, index);\n if (!valuePiece) {\n return null;\n }\n var valueType = getValueType(maxDetail);\n var detailValueFrom = (function () {\n switch (index) {\n case 0:\n return getBegin(valueType, valuePiece);\n case 1:\n return getEnd(valueType, valuePiece);\n default:\n throw new Error(\"Invalid index value: \".concat(index));\n }\n })();\n return between(detailValueFrom, minDate, maxDate);\n}\nvar getDetailValueFrom = function (args) { return getDetailValue(args, 0); };\nvar getDetailValueTo = function (args) { return getDetailValue(args, 1); };\nvar getDetailValueArray = function (args) {\n return [getDetailValueFrom, getDetailValueTo].map(function (fn) { return fn(args); });\n};\nfunction getActiveStartDate(_a) {\n var maxDate = _a.maxDate, maxDetail = _a.maxDetail, minDate = _a.minDate, minDetail = _a.minDetail, value = _a.value, view = _a.view;\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = getDetailValueFrom({\n value: value,\n minDate: minDate,\n maxDate: maxDate,\n maxDetail: maxDetail,\n }) || new Date();\n return getBegin(rangeType, valueFrom);\n}\nfunction getInitialActiveStartDate(_a) {\n var activeStartDate = _a.activeStartDate, defaultActiveStartDate = _a.defaultActiveStartDate, defaultValue = _a.defaultValue, defaultView = _a.defaultView, maxDate = _a.maxDate, maxDetail = _a.maxDetail, minDate = _a.minDate, minDetail = _a.minDetail, value = _a.value, view = _a.view;\n var rangeType = getView(view, minDetail, maxDetail);\n var valueFrom = activeStartDate || defaultActiveStartDate;\n if (valueFrom) {\n return getBegin(rangeType, valueFrom);\n }\n return getActiveStartDate({\n maxDate: maxDate,\n maxDetail: maxDetail,\n minDate: minDate,\n minDetail: minDetail,\n value: value || defaultValue,\n view: view || defaultView,\n });\n}\nfunction getIsSingleValue(value) {\n return value && (!Array.isArray(value) || value.length === 1);\n}\nfunction areDatesEqual(date1, date2) {\n return date1 instanceof Date && date2 instanceof Date && date1.getTime() === date2.getTime();\n}\nvar Calendar = forwardRef(function Calendar(props, ref) {\n var activeStartDateProps = props.activeStartDate, allowPartialRange = props.allowPartialRange, calendarType = props.calendarType, className = props.className, defaultActiveStartDate = props.defaultActiveStartDate, defaultValue = props.defaultValue, defaultView = props.defaultView, formatDay = props.formatDay, formatLongDate = props.formatLongDate, formatMonth = props.formatMonth, formatMonthYear = props.formatMonthYear, formatShortWeekday = props.formatShortWeekday, formatWeekday = props.formatWeekday, formatYear = props.formatYear, _a = props.goToRangeStartOnSelect, goToRangeStartOnSelect = _a === void 0 ? true : _a, inputRef = props.inputRef, locale = props.locale, _b = props.maxDate, maxDate = _b === void 0 ? defaultMaxDate : _b, _c = props.maxDetail, maxDetail = _c === void 0 ? 'month' : _c, _d = props.minDate, minDate = _d === void 0 ? defaultMinDate : _d, _e = props.minDetail, minDetail = _e === void 0 ? 'century' : _e, navigationAriaLabel = props.navigationAriaLabel, navigationAriaLive = props.navigationAriaLive, navigationLabel = props.navigationLabel, next2AriaLabel = props.next2AriaLabel, next2Label = props.next2Label, nextAriaLabel = props.nextAriaLabel, nextLabel = props.nextLabel, onActiveStartDateChange = props.onActiveStartDateChange, onChangeProps = props.onChange, onClickDay = props.onClickDay, onClickDecade = props.onClickDecade, onClickMonth = props.onClickMonth, onClickWeekNumber = props.onClickWeekNumber, onClickYear = props.onClickYear, onDrillDown = props.onDrillDown, onDrillUp = props.onDrillUp, onViewChange = props.onViewChange, prev2AriaLabel = props.prev2AriaLabel, prev2Label = props.prev2Label, prevAriaLabel = props.prevAriaLabel, prevLabel = props.prevLabel, _f = props.returnValue, returnValue = _f === void 0 ? 'start' : _f, selectRange = props.selectRange, showDoubleView = props.showDoubleView, showFixedNumberOfWeeks = props.showFixedNumberOfWeeks, _g = props.showNavigation, showNavigation = _g === void 0 ? true : _g, showNeighboringCentury = props.showNeighboringCentury, showNeighboringDecade = props.showNeighboringDecade, _h = props.showNeighboringMonth, showNeighboringMonth = _h === void 0 ? true : _h, showWeekNumbers = props.showWeekNumbers, tileClassName = props.tileClassName, tileContent = props.tileContent, tileDisabled = props.tileDisabled, valueProps = props.value, viewProps = props.view;\n var _j = useState(defaultActiveStartDate), activeStartDateState = _j[0], setActiveStartDateState = _j[1];\n var _k = useState(null), hoverState = _k[0], setHoverState = _k[1];\n var _l = useState(Array.isArray(defaultValue)\n ? defaultValue.map(function (el) { return (el !== null ? toDate(el) : null); })\n : defaultValue !== null && defaultValue !== undefined\n ? toDate(defaultValue)\n : null), valueState = _l[0], setValueState = _l[1];\n var _m = useState(defaultView), viewState = _m[0], setViewState = _m[1];\n var activeStartDate = activeStartDateProps ||\n activeStartDateState ||\n getInitialActiveStartDate({\n activeStartDate: activeStartDateProps,\n defaultActiveStartDate: defaultActiveStartDate,\n defaultValue: defaultValue,\n defaultView: defaultView,\n maxDate: maxDate,\n maxDetail: maxDetail,\n minDate: minDate,\n minDetail: minDetail,\n value: valueProps,\n view: viewProps,\n });\n var value = (function () {\n var rawValue = (function () {\n // In the middle of range selection, use value from state\n if (selectRange && getIsSingleValue(valueState)) {\n return valueState;\n }\n return valueProps !== undefined ? valueProps : valueState;\n })();\n if (!rawValue) {\n return null;\n }\n return Array.isArray(rawValue)\n ? rawValue.map(function (el) { return (el !== null ? toDate(el) : null); })\n : rawValue !== null\n ? toDate(rawValue)\n : null;\n })();\n var valueType = getValueType(maxDetail);\n var view = getView(viewProps || viewState, minDetail, maxDetail);\n var views = getLimitedViews(minDetail, maxDetail);\n var hover = selectRange ? hoverState : null;\n var drillDownAvailable = views.indexOf(view) < views.length - 1;\n var drillUpAvailable = views.indexOf(view) > 0;\n var getProcessedValue = useCallback(function (value) {\n var processFunction = (function () {\n switch (returnValue) {\n case 'start':\n return getDetailValueFrom;\n case 'end':\n return getDetailValueTo;\n case 'range':\n return getDetailValueArray;\n default:\n throw new Error('Invalid returnValue.');\n }\n })();\n return processFunction({\n maxDate: maxDate,\n maxDetail: maxDetail,\n minDate: minDate,\n value: value,\n });\n }, [maxDate, maxDetail, minDate, returnValue]);\n var setActiveStartDate = useCallback(function (nextActiveStartDate, action) {\n setActiveStartDateState(nextActiveStartDate);\n var args = {\n action: action,\n activeStartDate: nextActiveStartDate,\n value: value,\n view: view,\n };\n if (onActiveStartDateChange && !areDatesEqual(activeStartDate, nextActiveStartDate)) {\n onActiveStartDateChange(args);\n }\n }, [activeStartDate, onActiveStartDateChange, value, view]);\n var onClickTile = useCallback(function (value, event) {\n var callback = (function () {\n switch (view) {\n case 'century':\n return onClickDecade;\n case 'decade':\n return onClickYear;\n case 'year':\n return onClickMonth;\n case 'month':\n return onClickDay;\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n })();\n if (callback)\n callback(value, event);\n }, [onClickDay, onClickDecade, onClickMonth, onClickYear, view]);\n var drillDown = useCallback(function (nextActiveStartDate, event) {\n if (!drillDownAvailable) {\n return;\n }\n onClickTile(nextActiveStartDate, event);\n var nextView = views[views.indexOf(view) + 1];\n if (!nextView) {\n throw new Error('Attempted to drill down from the lowest view.');\n }\n setActiveStartDateState(nextActiveStartDate);\n setViewState(nextView);\n var args = {\n action: 'drillDown',\n activeStartDate: nextActiveStartDate,\n value: value,\n view: nextView,\n };\n if (onActiveStartDateChange && !areDatesEqual(activeStartDate, nextActiveStartDate)) {\n onActiveStartDateChange(args);\n }\n if (onViewChange && view !== nextView) {\n onViewChange(args);\n }\n if (onDrillDown) {\n onDrillDown(args);\n }\n }, [\n activeStartDate,\n drillDownAvailable,\n onActiveStartDateChange,\n onClickTile,\n onDrillDown,\n onViewChange,\n value,\n view,\n views,\n ]);\n var drillUp = useCallback(function () {\n if (!drillUpAvailable) {\n return;\n }\n var nextView = views[views.indexOf(view) - 1];\n if (!nextView) {\n throw new Error('Attempted to drill up from the highest view.');\n }\n var nextActiveStartDate = getBegin(nextView, activeStartDate);\n setActiveStartDateState(nextActiveStartDate);\n setViewState(nextView);\n var args = {\n action: 'drillUp',\n activeStartDate: nextActiveStartDate,\n value: value,\n view: nextView,\n };\n if (onActiveStartDateChange && !areDatesEqual(activeStartDate, nextActiveStartDate)) {\n onActiveStartDateChange(args);\n }\n if (onViewChange && view !== nextView) {\n onViewChange(args);\n }\n if (onDrillUp) {\n onDrillUp(args);\n }\n }, [\n activeStartDate,\n drillUpAvailable,\n onActiveStartDateChange,\n onDrillUp,\n onViewChange,\n value,\n view,\n views,\n ]);\n var onChange = useCallback(function (rawNextValue, event) {\n var previousValue = value;\n onClickTile(rawNextValue, event);\n var isFirstValueInRange = selectRange && !getIsSingleValue(previousValue);\n var nextValue;\n if (selectRange) {\n // Range selection turned on\n if (isFirstValueInRange) {\n // Value has 0 or 2 elements - either way we're starting a new array\n // First value\n nextValue = getBegin(valueType, rawNextValue);\n }\n else {\n if (!previousValue) {\n throw new Error('previousValue is required');\n }\n if (Array.isArray(previousValue)) {\n throw new Error('previousValue must not be an array');\n }\n // Second value\n nextValue = getValueRange(valueType, previousValue, rawNextValue);\n }\n }\n else {\n // Range selection turned off\n nextValue = getProcessedValue(rawNextValue);\n }\n var nextActiveStartDate = \n // Range selection turned off\n !selectRange ||\n // Range selection turned on, first value\n isFirstValueInRange ||\n // Range selection turned on, second value, goToRangeStartOnSelect toggled on\n goToRangeStartOnSelect\n ? getActiveStartDate({\n maxDate: maxDate,\n maxDetail: maxDetail,\n minDate: minDate,\n minDetail: minDetail,\n value: nextValue,\n view: view,\n })\n : null;\n event.persist();\n setActiveStartDateState(nextActiveStartDate);\n setValueState(nextValue);\n var args = {\n action: 'onChange',\n activeStartDate: nextActiveStartDate,\n value: nextValue,\n view: view,\n };\n if (onActiveStartDateChange && !areDatesEqual(activeStartDate, nextActiveStartDate)) {\n onActiveStartDateChange(args);\n }\n if (onChangeProps) {\n if (selectRange) {\n var isSingleValue = getIsSingleValue(nextValue);\n if (!isSingleValue) {\n onChangeProps(nextValue || null, event);\n }\n else if (allowPartialRange) {\n if (Array.isArray(nextValue)) {\n throw new Error('value must not be an array');\n }\n onChangeProps([nextValue || null, null], event);\n }\n }\n else {\n onChangeProps(nextValue || null, event);\n }\n }\n }, [\n activeStartDate,\n allowPartialRange,\n getProcessedValue,\n goToRangeStartOnSelect,\n maxDate,\n maxDetail,\n minDate,\n minDetail,\n onActiveStartDateChange,\n onChangeProps,\n onClickTile,\n selectRange,\n value,\n valueType,\n view,\n ]);\n function onMouseOver(nextHover) {\n setHoverState(nextHover);\n }\n function onMouseLeave() {\n setHoverState(null);\n }\n useImperativeHandle(ref, function () { return ({\n activeStartDate: activeStartDate,\n drillDown: drillDown,\n drillUp: drillUp,\n onChange: onChange,\n setActiveStartDate: setActiveStartDate,\n value: value,\n view: view,\n }); }, [activeStartDate, drillDown, drillUp, onChange, setActiveStartDate, value, view]);\n function renderContent(next) {\n var currentActiveStartDate = next\n ? getBeginNext(view, activeStartDate)\n : getBegin(view, activeStartDate);\n var onClick = drillDownAvailable ? drillDown : onChange;\n var commonProps = {\n activeStartDate: currentActiveStartDate,\n hover: hover,\n locale: locale,\n maxDate: maxDate,\n minDate: minDate,\n onClick: onClick,\n onMouseOver: selectRange ? onMouseOver : undefined,\n tileClassName: tileClassName,\n tileContent: tileContent,\n tileDisabled: tileDisabled,\n value: value,\n valueType: valueType,\n };\n switch (view) {\n case 'century': {\n return (_jsx(CenturyView, __assign({ formatYear: formatYear, showNeighboringCentury: showNeighboringCentury }, commonProps)));\n }\n case 'decade': {\n return (_jsx(DecadeView, __assign({ formatYear: formatYear, showNeighboringDecade: showNeighboringDecade }, commonProps)));\n }\n case 'year': {\n return (_jsx(YearView, __assign({ formatMonth: formatMonth, formatMonthYear: formatMonthYear }, commonProps)));\n }\n case 'month': {\n return (_jsx(MonthView, __assign({ calendarType: calendarType, formatDay: formatDay, formatLongDate: formatLongDate, formatShortWeekday: formatShortWeekday, formatWeekday: formatWeekday, onClickWeekNumber: onClickWeekNumber, onMouseLeave: selectRange ? onMouseLeave : undefined, showFixedNumberOfWeeks: typeof showFixedNumberOfWeeks !== 'undefined'\n ? showFixedNumberOfWeeks\n : showDoubleView, showNeighboringMonth: showNeighboringMonth, showWeekNumbers: showWeekNumbers }, commonProps)));\n }\n default:\n throw new Error(\"Invalid view: \".concat(view, \".\"));\n }\n }\n function renderNavigation() {\n if (!showNavigation) {\n return null;\n }\n return (_jsx(Navigation, { activeStartDate: activeStartDate, drillUp: drillUp, formatMonthYear: formatMonthYear, formatYear: formatYear, locale: locale, maxDate: maxDate, minDate: minDate, navigationAriaLabel: navigationAriaLabel, navigationAriaLive: navigationAriaLive, navigationLabel: navigationLabel, next2AriaLabel: next2AriaLabel, next2Label: next2Label, nextAriaLabel: nextAriaLabel, nextLabel: nextLabel, prev2AriaLabel: prev2AriaLabel, prev2Label: prev2Label, prevAriaLabel: prevAriaLabel, prevLabel: prevLabel, setActiveStartDate: setActiveStartDate, showDoubleView: showDoubleView, view: view, views: views }));\n }\n var valueArray = Array.isArray(value) ? value : [value];\n return (_jsxs(\"div\", { className: clsx(baseClassName, selectRange && valueArray.length === 1 && \"\".concat(baseClassName, \"--selectRange\"), showDoubleView && \"\".concat(baseClassName, \"--doubleView\"), className), ref: inputRef, children: [renderNavigation(), _jsxs(\"div\", { className: \"\".concat(baseClassName, \"__viewContainer\"), onBlur: selectRange ? onMouseLeave : undefined, onMouseLeave: selectRange ? onMouseLeave : undefined, children: [renderContent(), showDoubleView ? renderContent(true) : null] })] }));\n});\nexport default Calendar;\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\n\nconst tooltipVariants = cva(\n \"fixed z-50 bg-popup-fill-intense text-action-ink-on-primary-normal rounded-medium border border-popup-outline-subtle flex flex-col p-4 rounded-xlarge min-w-[200px] max-w-[300px] transition-opacity duration-200\",\n {\n variants: {\n isVisible: {\n true: \"opacity-100 pointer-events-auto shadow-[0_4px_20px_rgba(0,0,0,0.15)]\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n isVisible: false,\n },\n }\n);\n\nconst tooltipArrowVariants = cva(\n \"absolute w-0 h-0 border-solid border-[6px] -translate-x-1/2\",\n {\n variants: {\n placement: {\n \"top-start\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n top: \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"top-end\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"bottom-start\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n bottom:\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n \"bottom-end\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n },\n },\n defaultVariants: {\n placement: \"top\",\n },\n }\n);\n\nexport interface TooltipProps {\n /**\n * The trigger element that the tooltip will attach to\n */\n children: React.ReactElement;\n /**\n * Heading text for the tooltip\n */\n heading?: string;\n /**\n * Description text for the tooltip\n */\n description: string;\n /**\n * Placement of the tooltip relative to the trigger\n */\n placement?:\n | \"top-start\"\n | \"top\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"bottom-end\";\n /**\n * Whether to show the arrow/anchor\n */\n showArrow?: boolean;\n /**\n * Custom class name for the tooltip container\n */\n className?: string;\n /**\n * Delay before showing tooltip (in milliseconds)\n */\n delay?: number;\n /**\n * Whether the tooltip is disabled\n */\n disabled?: boolean;\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n heading,\n description,\n placement = \"top\",\n showArrow = true,\n className,\n delay = 200,\n disabled = false,\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const [arrowPosition, setArrowPosition] = React.useState({ left: 0 });\n const [actualPlacement, setActualPlacement] = React.useState<\n \"top-start\" | \"top\" | \"top-end\" | \"bottom-start\" | \"bottom\" | \"bottom-end\"\n >(placement);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n\n const calculatePosition = React.useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const gap = 8; // 8px gap between trigger and tooltip\n const arrowSize = 6; // Size of the arrow\n const viewportPadding = 8; // Minimum padding from viewport edges\n\n let top = 0;\n let left = 0;\n let currentPlacement = placement;\n\n // Calculate initial position based on placement\n switch (placement) {\n case \"top-start\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.left;\n break;\n case \"top\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"top-end\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.left;\n break;\n case \"bottom\":\n top = triggerRect.bottom + gap + arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n }\n\n // Get viewport dimensions\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Adjust horizontal position to keep tooltip within viewport\n if (left < viewportPadding) {\n // Tooltip would overflow on the left\n left = viewportPadding;\n } else if (left + tooltipRect.width > viewportWidth - viewportPadding) {\n // Tooltip would overflow on the right\n left = viewportWidth - tooltipRect.width - viewportPadding;\n }\n\n // Adjust vertical position to keep tooltip within viewport\n if (top < viewportPadding) {\n // Tooltip would overflow at the top\n // Try to flip to bottom if there's more space there\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n if (spaceBelow > spaceAbove) {\n // Flip to bottom\n top = triggerRect.bottom + gap + arrowSize;\n // Update placement to reflect the flip\n if (placement === \"top-start\") currentPlacement = \"bottom-start\";\n else if (placement === \"top\") currentPlacement = \"bottom\";\n else if (placement === \"top-end\") currentPlacement = \"bottom-end\";\n } else {\n // Keep at top but adjust to stay in viewport\n top = viewportPadding;\n }\n } else if (top + tooltipRect.height > viewportHeight - viewportPadding) {\n // Tooltip would overflow at the bottom\n // Try to flip to top if there's more space there\n const spaceAbove = triggerRect.top;\n const spaceBelow = viewportHeight - triggerRect.bottom;\n\n if (spaceAbove > spaceBelow) {\n // Flip to top\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n // Update placement to reflect the flip\n if (placement === \"bottom-start\") currentPlacement = \"top-start\";\n else if (placement === \"bottom\") currentPlacement = \"top\";\n else if (placement === \"bottom-end\") currentPlacement = \"top-end\";\n } else {\n // Keep at bottom but adjust to stay in viewport\n top = viewportHeight - tooltipRect.height - viewportPadding;\n }\n }\n\n // Calculate arrow position relative to trigger\n // The arrow should point to the center of the trigger element\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const tooltipLeft = left;\n const arrowLeft = triggerCenterX - tooltipLeft;\n\n // Clamp arrow position to stay within tooltip bounds (with padding)\n const arrowPadding = 16; // Minimum distance from tooltip edges\n const clampedArrowLeft = Math.max(\n arrowPadding,\n Math.min(arrowLeft, tooltipRect.width - arrowPadding)\n );\n\n setPosition({ top, left });\n setArrowPosition({ left: clampedArrowLeft });\n setActualPlacement(currentPlacement);\n }, [placement]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n const handleFocus = () => {\n if (disabled) return;\n setIsVisible(true);\n };\n\n const handleBlur = () => {\n setIsVisible(false);\n };\n\n React.useEffect(() => {\n if (isVisible) {\n calculatePosition();\n window.addEventListener(\"scroll\", calculatePosition, true);\n window.addEventListener(\"resize\", calculatePosition);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", calculatePosition, true);\n window.removeEventListener(\"resize\", calculatePosition);\n };\n }, [isVisible, calculatePosition]);\n\n React.useEffect(() => {\n // Reset actualPlacement when placement prop changes\n setActualPlacement(placement);\n }, [placement]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n // Merge refs function\n const mergeRefs = (...refs: any[]) => {\n return (node: any) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as any).current = node;\n }\n });\n };\n };\n\n // Clone the child element and add event handlers\n const trigger = React.cloneElement(children, {\n ref: mergeRefs(triggerRef, (children as any).ref),\n onMouseEnter: (e: React.MouseEvent) => {\n handleMouseEnter();\n children.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleMouseLeave();\n children.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleFocus();\n children.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleBlur();\n children.props.onBlur?.(e);\n },\n \"aria-describedby\": isVisible ? \"tooltip-content\" : undefined,\n });\n\n return (\n <>\n {trigger}\n\n <div\n ref={mergeRefs(tooltipRef, ref)}\n id=\"tooltip-content\"\n role=\"tooltip\"\n className={cn(tooltipVariants({ isVisible }), className)}\n style={{\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n aria-hidden={!isVisible}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {showArrow && (\n <div\n className={cn(\n tooltipArrowVariants({ placement: actualPlacement })\n )}\n style={{\n left: `${arrowPosition.left}px`,\n }}\n />\n )}\n\n <div className=\"relative flex flex-col gap-2\">\n {heading && (\n <Text\n variant=\"body\"\n size=\"medium\"\n weight=\"semibold\"\n color=\"onPrimary\"\n >\n {heading}\n </Text>\n )}\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"onPrimary\"\n // className=\"flex gap-3\"\n >\n {description}\n </Text>\n </div>\n </div>\n </>\n );\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip, tooltipVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Link } from \"../Link\";\nimport { Icon } from \"../../lib\";\n\nexport interface FormHeaderProps {\n /**\n * The label text to display\n */\n label: string;\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether to show \"(optional)\" text after the label\n */\n isOptional?: boolean;\n /**\n * Whether to show \"*\" (required indicator) after the label\n */\n isRequired?: boolean;\n /**\n * Tooltip heading text\n */\n infoHeading?: string;\n /**\n * Tooltip description text - if provided, shows the info icon\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n * If provided, this will be rendered instead of the default Link with linkText\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text to display on the right side\n */\n linkText?: string;\n /**\n * Link href or onClick handler\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n /**\n * Leading icon for the link\n */\n linkLeadingIcon?: React.ReactNode;\n /**\n * Trailing icon for the link\n */\n linkTrailingIcon?: React.ReactNode;\n /**\n * HTML for attribute to associate with form input\n */\n htmlFor?: string;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the link\n */\n linkClassName?: string;\n}\n\nconst FormHeader = React.forwardRef<HTMLDivElement, FormHeaderProps>(\n (\n {\n label,\n size = \"medium\",\n isOptional = false,\n isRequired = false,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n linkLeadingIcon,\n linkTrailingIcon,\n htmlFor,\n className,\n labelClassName,\n linkClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-body-xsmall-semibold\",\n textClassNameRegular: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textClassName: \"text-body-small-semibold\",\n textClassNameRegular: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textClassName: \"text-body-medium-semibold\",\n textClassNameRegular: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-2.5\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n <div className={cn(\"flex items-center\", config.gap)}>\n <label\n htmlFor={htmlFor}\n className={cn(\"flex items-center\", labelClassName)}\n >\n <span\n className={cn(\n config.textClassName,\n \"text-surface-neutral-subtle\"\n )}\n >\n {label}\n </span>\n {isRequired && (\n <span\n className={cn(\n config.textClassName,\n \"text-color-negative ml-0.5\"\n )}\n >\n *\n </span>\n )}\n {isOptional && (\n <span\n className={cn(\n config.textClassNameRegular,\n \"text-surface-neutral-muted italic ml-1\"\n )}\n >\n (optional)\n </span>\n )}\n </label>\n {infoDescription && (\n <Tooltip description={infoDescription} heading={infoHeading}>\n <Icon name=\"info\" size={config.iconSize} />\n </Tooltip>\n )}\n </div>\n\n {LinkComponent\n ? LinkComponent\n : linkText && (\n <Link\n href={linkHref}\n onClick={onLinkClick}\n type=\"action\"\n color=\"primary\"\n size={size === \"large\" ? \"small\" : \"xsmall\"}\n leadingIcon={linkLeadingIcon}\n trailingIcon={linkTrailingIcon}\n >\n {linkText}\n </Link>\n )}\n </div>\n );\n }\n);\n\nFormHeader.displayName = \"FormHeader\";\n\nexport { FormHeader };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Calendar as CalendarIcon } from \"lucide-react\";\nimport Calendar from \"react-calendar\";\n// @ts-ignore - CSS import doesn't have type definitions\nimport \"react-calendar/dist/Calendar.css\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\n// Type for react-calendar's Value\n// ValuePiece = Date | null\n// Value = ValuePiece | Range<ValuePiece> = Date | null | [Date | null, Date | null]\ntype CalendarValue = Date | null | [Date | null, Date | null];\n\nconst datePickerVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface DatePickerProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n > {\n /**\n * Selected date (controlled)\n */\n value?: Date | string | null;\n /**\n * Default selected date (uncontrolled)\n */\n defaultValue?: Date | string | null;\n /**\n * Callback when date changes\n */\n onChange?: (date: Date | null) => void;\n /**\n * Placeholder text when no date is selected\n */\n placeholder?: string;\n /**\n * Label for the date picker\n */\n label?: string;\n /**\n * Helper text below the date picker\n */\n helperText?: string;\n /**\n * Error text (overrides helperText when present)\n */\n errorText?: string;\n /**\n * Success text (overrides helperText when present)\n */\n successText?: string;\n /**\n * Validation state for the date picker\n */\n validationState?: \"none\" | \"positive\" | \"negative\";\n /**\n * Whether the date picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the date picker is required\n */\n isRequired?: boolean;\n /**\n * Whether the date picker is optional\n */\n isOptional?: boolean;\n /**\n * Size of the date picker\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Show clear button when value is selected\n */\n showClearButton?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom class for the container\n */\n containerClassName?: string;\n /**\n * Custom class for the label\n */\n labelClassName?: string;\n /**\n * Custom class for the trigger button\n */\n triggerClassName?: string;\n /**\n * Custom class for the calendar popup\n */\n calendarClassName?: string;\n /**\n * Minimum selectable date\n */\n minDate?: Date | string;\n /**\n * Maximum selectable date\n */\n maxDate?: Date | string;\n /**\n * Date format function\n */\n formatDate?: (date: Date) => string;\n /**\n * Info heading for tooltip\n */\n infoHeading?: string;\n /**\n * Info description for tooltip\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text\n */\n linkText?: string;\n /**\n * Link href\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\n// Helper functions\nconst parseDate = (date: Date | string | null | undefined): Date | null => {\n if (!date) return null;\n if (date instanceof Date) return date;\n if (typeof date === \"string\") {\n const parsed = new Date(date);\n return isNaN(parsed.getTime()) ? null : parsed;\n }\n return null;\n};\n\nconst formatDateDefault = (date: Date): string => {\n return date.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n};\n\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n className,\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select a date\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n size = \"medium\",\n showClearButton = false,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n calendarClassName,\n minDate,\n maxDate,\n formatDate = formatDateDefault,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] =\n React.useState<Date | null>(parseDate(defaultValue));\n const [isOpen, setIsOpen] = React.useState(false);\n const datePickerRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n\n const value =\n controlledValue !== undefined\n ? parseDate(controlledValue)\n : uncontrolledValue;\n\n const hasValue = value !== null;\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleCalendarChange = (\n value: CalendarValue,\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n // react-calendar can return Date, Date[], or null\n // We only support single date selection, so we take the first date if it's an array\n if (!value) {\n if (controlledValue === undefined) {\n setUncontrolledValue(null);\n }\n onChange?.(null);\n setIsOpen(false);\n return;\n }\n\n const selectedDate = Array.isArray(value) ? value[0] : value;\n\n // Ensure we have a valid Date object\n if (selectedDate instanceof Date) {\n if (controlledValue === undefined) {\n setUncontrolledValue(selectedDate);\n }\n onChange?.(selectedDate);\n setIsOpen(false);\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n if (controlledValue === undefined) {\n setUncontrolledValue(null);\n }\n onChange?.(null);\n }\n };\n\n const updateDropdownPlacement = React.useCallback(() => {\n if (typeof window === \"undefined\") return;\n const trigger = datePickerRef.current;\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n const calendarHeight = calendarRef.current\n ? calendarRef.current.offsetHeight\n : 0;\n\n if (calendarHeight === 0) {\n setDropdownPlacement(spaceBelow >= spaceAbove ? \"bottom\" : \"top\");\n return;\n }\n\n if (spaceBelow >= calendarHeight || spaceBelow >= spaceAbove) {\n setDropdownPlacement(\"bottom\");\n } else {\n setDropdownPlacement(\"top\");\n }\n }, []);\n\n React.useEffect(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n let rafId = requestAnimationFrame(updateDropdownPlacement);\n\n const handleUpdate = () => updateDropdownPlacement();\n window.addEventListener(\"resize\", handleUpdate);\n window.addEventListener(\"scroll\", handleUpdate, true);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener(\"resize\", handleUpdate);\n window.removeEventListener(\"scroll\", handleUpdate, true);\n };\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n if (isOpen) {\n updateDropdownPlacement();\n }\n }, [isOpen, updateDropdownPlacement]);\n\n // Close calendar when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n datePickerRef.current &&\n !datePickerRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n const minDateParsed = parseDate(minDate);\n const maxDateParsed = parseDate(maxDate);\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={datePickerRef}\n className={cn(\n datePickerVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled ? toggleOpen : undefined}\n role=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n <CalendarIcon\n className={cn(\n \"shrink-0 w-4 h-4\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n />\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !hasValue && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {hasValue && value ? formatDate(value) : placeholder}\n </span>\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {/* Calendar Popup */}\n {isOpen && !isDisabled && (\n <div\n ref={calendarRef}\n className={cn(\n \"absolute z-50 left-0 bg-surface-fill-neutral-intense rounded-large shadow-lg p-4\",\n dropdownPlacement === \"bottom\"\n ? \"top-full mt-1\"\n : \"bottom-full mb-1\",\n calendarClassName\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"react-calendar-wrapper w-fit\">\n <Calendar\n onChange={handleCalendarChange}\n value={value ?? null}\n minDate={minDateParsed ?? undefined}\n maxDate={maxDateParsed ?? undefined}\n locale=\"en-US\"\n formatShortWeekday={(locale, date) => {\n const weekdayNames = [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\",\n ];\n return weekdayNames[date.getDay()];\n }}\n />\n </div>\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { datePickerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst dividerVariants = cva(\"\", {\n variants: {\n orientation: {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n },\n thickness: {\n thinner: \"\",\n thin: \"\",\n thick: \"\",\n thicker: \"\",\n },\n lineStyle: {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n },\n variant: {\n normal: \"\",\n subtle: \"\",\n muted: \"\",\n },\n },\n compoundVariants: [\n // Horizontal orientation with thickness\n {\n orientation: \"horizontal\",\n thickness: \"thinner\",\n class: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thin\",\n class: \"border-t-[1px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thick\",\n class: \"border-t-[2px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thicker\",\n class: \"border-t-[3px]\",\n },\n // Vertical orientation with thickness\n {\n orientation: \"vertical\",\n thickness: \"thinner\",\n class: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thin\",\n class: \"border-l-[1px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thick\",\n class: \"border-l-[2px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thicker\",\n class: \"border-l-[3px]\",\n },\n // Normal variant colors\n {\n variant: \"normal\",\n class: \"border-surface-outline-neutral-normal\",\n },\n // Subtle variant colors\n {\n variant: \"subtle\",\n class: \"border-surface-outline-neutral-subtle\",\n },\n // Muted variant colors\n {\n variant: \"muted\",\n class: \"border-surface-outline-neutral-muted\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n thickness: \"thin\",\n lineStyle: \"solid\",\n variant: \"normal\",\n },\n});\n\nexport interface DividerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dividerVariants> {\n /**\n * The orientation of the divider\n * @default \"horizontal\"\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * The thickness of the divider\n * @default \"thin\"\n */\n thickness?: \"thinner\" | \"thin\" | \"thick\" | \"thicker\";\n /**\n * The style of the divider line\n * @default \"solid\"\n */\n lineStyle?: \"solid\" | \"dashed\";\n /**\n * The color variant of the divider\n * @default \"normal\"\n */\n variant?: \"normal\" | \"subtle\" | \"muted\";\n /**\n * Custom class name for the divider\n */\n className?: string;\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n thickness = \"thin\",\n lineStyle = \"solid\",\n variant = \"normal\",\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n dividerVariants({ orientation, thickness, lineStyle, variant }),\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = \"Divider\";\n\nexport { Divider, dividerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\n\nconst listItemVariants = cva(\n \"flex items-start gap-3 p-3 rounded-medium transition-colors cursor-pointer\",\n {\n variants: {\n variant: {\n default: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded\n focus:ring-2\n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n bordered:\n \"border border-action-outline-primary-faded hover:bg-surface-fill-primary-subtle\",\n primary: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded \n focus:ring-2 \n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n negative: `hover:bg-action-fill-negative-faded \n focus:bg-action-fill-negative-faded \n focus:ring-2 ring-action-outline-negative-faded-hover\n border border-transparent\n `,\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n isSelected: {\n true: \"bg-action-fill-primary-faded border-action-outline-primary-faded\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n isDisabled: false,\n isSelected: false,\n },\n }\n);\n\nexport interface ListItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /**\n * Type of list item - determines if checkbox is shown\n */\n type?: \"single\" | \"multiple\";\n /**\n * Leading icon to display on the left\n */\n leadingIcon?: React.ReactNode;\n /**\n * Title text (required)\n */\n title: string;\n /**\n * Description text (optional)\n */\n description?: string;\n /**\n * Trailing icon to display on the right\n */\n trailingIcon?: React.ReactNode;\n /**\n * Whether to show the default chevron trailing icon\n */\n showChevron?: boolean;\n /**\n * Visual variant of the list item\n */\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n /**\n * Whether the list item is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the list item is selected (for multiple type)\n */\n isSelected?: boolean;\n /**\n * Callback when the list item selection changes\n */\n onSelectionChange?: (selected: boolean) => void;\n /**\n * Size of the checkbox (when type is multiple)\n */\n checkboxSize?: \"small\" | \"medium\" | \"large\";\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the content area\n */\n contentClassName?: string;\n}\n\nconst ChevronRightIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M7.5 15L12.5 10L7.5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ListItem = React.forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n className,\n type = \"single\",\n leadingIcon,\n title,\n description,\n trailingIcon,\n showChevron = true,\n variant = \"default\",\n isDisabled = false,\n isSelected = false,\n onSelectionChange,\n checkboxSize = \"small\",\n containerClassName,\n contentClassName,\n onClick,\n ...props\n },\n ref\n ) => {\n const [internalSelected, setInternalSelected] = React.useState(isSelected);\n\n // Sync internal state with prop\n React.useEffect(() => {\n setInternalSelected(isSelected);\n }, [isSelected]);\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n\n if (type === \"multiple\") {\n const newSelected = !internalSelected;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n }\n\n onClick?.(e);\n };\n\n const handleCheckboxChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n const newSelected = e.target.checked;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n isDisabled,\n isSelected: type === \"multiple\" ? internalSelected : false,\n }),\n containerClassName\n )}\n onClick={handleClick}\n role={type === \"multiple\" ? \"checkbox\" : \"button\"}\n aria-checked={type === \"multiple\" ? internalSelected : undefined}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n {...props}\n >\n {/* Checkbox for multiple type */}\n {type === \"multiple\" && (\n <Checkbox\n checked={internalSelected}\n onChange={handleCheckboxChange}\n isDisabled={isDisabled}\n size={checkboxSize}\n className=\"shrink-0 mt-0.5\"\n />\n )}\n\n {/* Leading Icon */}\n {leadingIcon && (\n <div\n className={cn(\n `shrink-0 flex items-center justify-center mt-0.5`,\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-subtle\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {leadingIcon}\n </div>\n )}\n\n {/* Content */}\n <div\n className={cn(\n \"flex-1 min-w-0 flex flex-col justify-center\",\n contentClassName\n )}\n >\n <div\n className={cn(\n \"text-body-medium-regular truncate\",\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-normal\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {title}\n </div>\n {description && (\n <div\n className={cn(\n \"text-body-small-regular text-surface-ink-neutral-muted mt-0.5 line-clamp-2\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {description}\n </div>\n )}\n </div>\n\n {/* Trailing Icon */}\n {(trailingIcon || showChevron) && (\n <div className=\"shrink-0 self-center text-action-ink-neutral-subtle\">\n {trailingIcon || <ChevronRightIcon />}\n </div>\n )}\n </div>\n );\n }\n);\n\nListItem.displayName = \"ListItem\";\n\nexport { ListItem, listItemVariants };\n","import * as React from \"react\";\nimport { Search, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { ListItem } from \"../ListItem\";\nimport { Button } from \"../Button\";\nimport { Divider } from \"../Divider\";\nimport { Text } from \"../Text\";\nimport { Link } from \"../Link\";\n\nexport interface DropdownMenuItem {\n value: string | number;\n label: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n onClick?: () => void;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nexport interface DropdownMenuProps {\n /**\n * Items to display in the dropdown\n */\n items?: DropdownMenuItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show the footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when menu should close\n */\n onClose?: () => void;\n /**\n * Focused item index (for keyboard navigation)\n */\n focusedIndex?: number;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Width of the dropdown menu\n */\n width?: \"auto\" | \"full\" | string;\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n footerLayout = \"horizontal\",\n onClose,\n focusedIndex = -1,\n className,\n width = \"auto\",\n },\n ref\n ) => {\n const renderContent = () => {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 px-6\">\n <Loader2 className=\"w-12 h-12 text-action-ink-primary-normal mb-4 animate-spin\" />\n </div>\n );\n }\n\n if (customContent) {\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-body-small-medium text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"px-1\">{customContent}</div>\n </div>\n );\n }\n\n if (isEmpty || items.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center py-8 px-6 text-center\">\n {emptyIcon || (\n <Search className=\"w-12 h-12 text-surface-ink-neutral-muted mb-4\" />\n )}\n <Text\n as=\"h3\"\n variant=\"body\"\n size=\"small\"\n weight=\"semibold\"\n className=\"text-surface-ink-neutral-normal mb-2\"\n >\n {emptyTitle}\n </Text>\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n className=\"text-surface-ink-neutral-muted mb-3\"\n >\n {emptyDescription}\n </Text>\n {emptyLinkText && (\n <Link\n type=\"anchor\"\n color=\"primary\"\n size=\"small\"\n onClick={onEmptyLinkClick}\n >\n {emptyLinkText}\n </Link>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"flex flex-col gap-1\">\n {items.map((item, index) => (\n <ListItem\n key={item.value}\n title={item.label}\n description={item.description}\n leadingIcon={item.leadingIcon}\n trailingIcon={item.trailingIcon}\n showChevron={showChevron}\n isDisabled={item.isDisabled}\n isSelected={index === focusedIndex}\n variant={item.variant}\n onClick={() => {\n item.onClick?.();\n onClose?.();\n }}\n containerClassName={cn(\n index === focusedIndex && \"bg-action-fill-primary-faded\"\n )}\n />\n ))}\n </div>\n </div>\n );\n };\n\n const widthClass =\n width === \"full\" ? \"w-full\" : width === \"auto\" ? \"w-auto\" : \"\";\n const footerVisible = showFooter ?? !disableFooter;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-white rounded-large overflow-hidden\",\n widthClass,\n className\n )}\n style={{\n boxShadow:\n \"0 1px 2px rgba(25, 25, 30, 0.1), 0 2px 6px rgba(25, 25, 30, 0.06)\",\n ...(width !== \"full\" && width !== \"auto\" ? { width } : {}),\n }}\n >\n {/* Content */}\n {renderContent()}\n\n {/* Footer */}\n {footerVisible && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex gap-3 p-4\",\n footerLayout === \"vertical\"\n ? \"flex-col\"\n : \"items-center flex-row\"\n )}\n >\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onSecondaryClick}\n >\n {secondaryButtonText}\n </Button>\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onPrimaryClick}\n >\n {primaryButtonText}\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nDropdownMenu.displayName = \"DropdownMenu\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"./DropdownMenu\";\n\nconst dropdownVariants = cva(\n \"bg-surface-fill-primary-normal border border-surface-outline-neutral-subtle rounded-large\",\n {\n variants: {\n size: {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport type DropdownItem = DropdownMenuItem;\n\nexport interface DropdownProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Trigger element that opens the dropdown\n */\n trigger?: React.ReactNode;\n /**\n * Items to display in the dropdown\n */\n items?: DropdownItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether dropdown is open (controlled)\n */\n open?: boolean;\n /**\n * Default open state (uncontrolled)\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Custom class for dropdown container\n */\n containerClassName?: string;\n /**\n * Custom class for dropdown menu\n */\n menuClassName?: string;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n}\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n className,\n trigger,\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n size = \"medium\",\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n containerClassName,\n menuClassName,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n ...props\n },\n ref\n ) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isOpen =\n controlledOpen !== undefined ? controlledOpen : uncontrolledOpen;\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n const handleOpenChange = (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n const sizeMap = {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n };\n\n return (\n <div\n ref={dropdownRef}\n className={cn(\"relative inline-block\", containerClassName)}\n {...props}\n >\n {/* Trigger */}\n {trigger && (\n <div onClick={toggleOpen} className=\"cursor-pointer\">\n {trigger}\n </div>\n )}\n\n {/* Dropdown Menu */}\n {isOpen && (\n <DropdownMenu\n ref={ref}\n items={items}\n customContent={customContent}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={isEmpty}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={showFooter}\n onClose={() => handleOpenChange(false)}\n className={cn(\"absolute z-50 mt-2\", menuClassName, className)}\n width={sizeMap[size]}\n />\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport { dropdownVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\n\nexport interface ModalProps {\n /**\n * Whether the modal is open\n */\n isOpen: boolean;\n /**\n * Callback when the modal should close\n */\n onClose?: () => void;\n /**\n * Modal title - optional\n */\n title?: string;\n /**\n * Modal description/subtitle - optional\n */\n description?: string;\n /**\n * Modal footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Modal body content\n */\n children: React.ReactNode;\n /**\n * Size variant\n */\n size?: \"small\" | \"medium\" | \"large\" | \"xlarge\";\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Whether clicking the overlay closes the modal\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the modal\n */\n closeOnEscape?: boolean;\n /**\n * Custom class name for the modal container\n */\n className?: string;\n /**\n * Custom class name for the modal content\n */\n contentClassName?: string;\n /**\n * Custom class name for the header\n */\n headerClassName?: string;\n /**\n * Custom class name for the body\n */\n bodyClassName?: string;\n /**\n * Custom class name for the footer\n */\n footerClassName?: string;\n /**\n * Custom class name for the overlay\n */\n overlayClassName?: string;\n /**\n * ARIA label for accessibility\n */\n ariaLabel?: string;\n /**\n * ARIA description for accessibility\n */\n ariaDescribedBy?: string;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n isOpen,\n onClose,\n title,\n description,\n footer,\n children,\n size = \"medium\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n contentClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n overlayClassName,\n ariaLabel,\n ariaDescribedBy,\n },\n ref\n ) => {\n const modalRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || modalRef;\n\n // Size configurations\n const sizeConfig = {\n small: \"max-w-sm\",\n medium: \"max-w-md\",\n large: \"max-w-lg\",\n xlarge: \"max-w-2xl\",\n };\n\n // Handle escape key\n React.useEffect(() => {\n if (!isOpen || !closeOnEscape || !onClose) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when modal is open\n React.useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget && onClose) {\n onClose();\n }\n };\n\n // Don't render if not open\n if (!isOpen) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Modal Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative w-full bg-white rounded-large shadow-xl transition-all\",\n \"flex flex-col max-h-[90vh]\",\n sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4 px-6 pt-6\",\n !description && \"pb-4\",\n description && \"pb-2\",\n headerClassName\n )}\n >\n <div className=\"flex-1\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"subtle\"\n className=\"mt-1\"\n >\n {description}\n </Text>\n )}\n </div>\n\n {showCloseButton && onClose && (\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n className=\"shrink-0\"\n />\n )}\n </div>\n )}\n\n {/* Header with close button only (no title/description) */}\n {!hasHeader && showCloseButton && onClose && (\n <div className=\"absolute top-4 right-4 z-10\">\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto px-6\",\n hasHeader ? \"py-4\" : \"pt-6 pb-4\",\n !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex items-center justify-end gap-3 px-6 py-4\",\n footerClassName\n )}\n >\n {footer}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nModal.displayName = \"Modal\";\n\nexport { Modal };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nexport interface SelectOption {\n value: string | number;\n label?: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nconst selectVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface SelectProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"prefix\"> {\n /**\n * Options to display in the select dropdown\n */\n options?: SelectOption[];\n /**\n * Selected value (controlled)\n */\n value?: string | number;\n /**\n * Default selected value (uncontrolled)\n */\n defaultValue?: string | number;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string | number, option: SelectOption) => void;\n /**\n * Placeholder text when no value is selected\n */\n placeholder?: string;\n /**\n * Label for the select\n */\n label?: string;\n /**\n * Helper text below the select\n */\n helperText?: string;\n /**\n * Error text (overrides helperText when present)\n */\n errorText?: string;\n /**\n * Success text (overrides helperText when present)\n */\n successText?: string;\n /**\n * Validation state for the select\n */\n validationState?: \"none\" | \"positive\" | \"negative\";\n /**\n * Whether the select is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the select is required\n */\n isRequired?: boolean;\n /**\n * Whether the select is optional\n */\n isOptional?: boolean;\n /**\n * Whether the select is in loading state\n */\n isLoading?: boolean;\n /**\n * Size of the select\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Prefix element (icon or text)\n */\n prefix?: React.ReactNode;\n /**\n * Suffix element (icon or text)\n */\n suffix?: React.ReactNode;\n /**\n * Show clear button when value is selected\n */\n showClearButton?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom class for the container\n */\n containerClassName?: string;\n /**\n * Custom class for the label\n */\n labelClassName?: string;\n /**\n * Custom class for the trigger button\n */\n triggerClassName?: string;\n /**\n * Custom class for the dropdown menu\n */\n menuClassName?: string;\n /**\n * Width of the dropdown menu\n */\n menuWidth?: \"auto\" | \"full\" | string;\n /**\n * Section heading for the dropdown\n */\n sectionHeading?: string;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Show search icon in empty state\n */\n emptyIcon?: React.ReactNode;\n /**\n * Info heading for tooltip\n */\n infoHeading?: string;\n /**\n * Info description for tooltip\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n * If provided, this will be rendered instead of the default Link with linkText\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text\n */\n linkText?: string;\n /**\n * Link href\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n isLoading = false,\n size = \"medium\",\n prefix,\n suffix,\n showClearButton = false,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n menuClassName,\n menuWidth = \"full\",\n sectionHeading,\n emptyTitle = \"No options available\",\n emptyDescription = \"There are no options to select from.\",\n emptyIcon,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\n string | number | undefined\n >(defaultValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n const selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Find the selected option\n const selectedOption = options.find((opt) => opt.value === value);\n const hasValue = value !== undefined && value !== \"\";\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled && !isLoading) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleSelect = (option: SelectOption) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(option.value);\n }\n onChange?.(option.value, option);\n setIsOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n if (controlledValue === undefined) {\n setUncontrolledValue(undefined);\n }\n onChange?.(\"\", {} as SelectOption);\n }\n };\n\n const updateDropdownPlacement = React.useCallback(() => {\n if (typeof window === \"undefined\") return;\n const trigger = selectRef.current;\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n const dropdownHeight = dropdownContainerRef.current\n ? dropdownContainerRef.current.offsetHeight\n : 0;\n\n if (dropdownHeight === 0) {\n setDropdownPlacement(spaceBelow >= spaceAbove ? \"bottom\" : \"top\");\n return;\n }\n\n if (spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove) {\n setDropdownPlacement(\"bottom\");\n } else {\n setDropdownPlacement(\"top\");\n }\n }, []);\n\n const attachDropdownListeners = React.useCallback(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n let rafId = requestAnimationFrame(updateDropdownPlacement);\n\n const handleUpdate = () => updateDropdownPlacement();\n window.addEventListener(\"resize\", handleUpdate);\n window.addEventListener(\"scroll\", handleUpdate, true);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener(\"resize\", handleUpdate);\n window.removeEventListener(\"scroll\", handleUpdate, true);\n };\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n const detach = attachDropdownListeners();\n return () => {\n detach?.();\n };\n }, [attachDropdownListeners]);\n\n React.useEffect(() => {\n if (isOpen) {\n updateDropdownPlacement();\n }\n }, [isOpen, options.length, updateDropdownPlacement]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n // Handle keyboard navigation\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isDisabled || isLoading) return;\n\n if (!isOpen && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n setIsOpen(true);\n return;\n }\n\n if (isOpen) {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const currentIndex = options.findIndex(\n (opt) => opt.value === value\n );\n const nextIndex =\n event.key === \"ArrowDown\"\n ? Math.min(currentIndex + 1, options.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (options[nextIndex] && !options[nextIndex].isDisabled) {\n handleSelect(options[nextIndex]);\n }\n }\n }\n };\n\n if (selectRef.current) {\n selectRef.current.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n selectRef.current?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }\n }, [isOpen, value, options, isDisabled, isLoading]);\n\n // Transform options to dropdown menu items\n const menuItems: DropdownMenuItem[] = options.map((option) => ({\n value: option.value,\n label: option.label ?? String(option.value),\n description: option.description,\n leadingIcon: option.leadingIcon,\n trailingIcon: option.trailingIcon,\n isDisabled: option.isDisabled,\n variant: option.variant,\n onClick: () => handleSelect(option),\n }));\n\n const widthStyle =\n menuWidth === \"full\" ? \"100%\" : menuWidth === \"auto\" ? \"auto\" : menuWidth;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={selectRef}\n className={cn(\n selectVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled && !isLoading ? toggleOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {isLoading ? \"Loading...\" : selectedOption?.label || placeholder}\n </span>\n\n {showClearButton && hasValue && !isDisabled && !isLoading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && !showClearButton && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n\n <ChevronDown\n className={cn(\n \"shrink-0 w-4 h-4 transition-transform\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\",\n isOpen && \"transform rotate-180\"\n )}\n />\n\n {/* Dropdown Menu */}\n {isOpen && !isDisabled && !isLoading && (\n <div\n ref={dropdownContainerRef}\n className={cn(\n \"absolute z-50 left-0 right-0\",\n dropdownPlacement === \"bottom\"\n ? \"top-full mt-1\"\n : \"bottom-full mb-1\"\n )}\n >\n <DropdownMenu\n ref={ref}\n items={menuItems}\n sectionHeading={sectionHeading}\n isEmpty={options.length === 0}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyIcon={emptyIcon}\n disableFooter={true}\n onClose={() => handleOpenChange(false)}\n className={menuClassName}\n width={widthStyle}\n />\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport { selectVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Select, type SelectOption } from \"../Select\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\n\nconst paginationVariants = cva(\n \"flex items-center gap-4 font-display text-body-medium-medium\",\n {\n variants: {\n size: {\n small: \"text-xs gap-2\",\n medium: \"text-sm gap-4\",\n large: \"text-base gap-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Current page number (1-indexed)\n */\n currentPage?: number;\n /**\n * Total number of pages\n */\n totalPages: number;\n /**\n * Rows per page value\n */\n rowsPerPage?: number;\n /**\n * Available options for rows per page\n */\n rowsPerPageOptions?: number[];\n /**\n * Show rows per page selector\n */\n showRowsPerPage?: boolean;\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n /**\n * Callback when rows per page changes\n */\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n /**\n * Size of the pagination controls\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Disable the pagination controls\n */\n isDisabled?: boolean;\n /**\n * Custom text for \"Row per page\" label\n */\n rowsPerPageLabel?: string;\n /**\n * Custom text for \"of\" label\n */\n ofLabel?: string;\n /**\n * Custom text for \"Prev\" button\n */\n prevLabel?: string;\n /**\n * Custom text for \"Next\" button\n */\n nextLabel?: string;\n /**\n * Show prev/next buttons\n */\n showPrevNext?: boolean;\n /**\n * Show page jumper (dropdown) instead of numbered buttons\n */\n showPageJumper?: boolean;\n /**\n * Show page number (used with showPageJumper=false)\n */\n showPageNumber?: boolean;\n /**\n * Page status for displaying page numbers\n */\n pageStatus?: \"none\" | \"first\" | \"middle\" | \"last\";\n /**\n * Maximum number of page buttons to show\n */\n maxPageButtons?: number;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage: controlledCurrentPage,\n totalPages,\n rowsPerPage: controlledRowsPerPage,\n rowsPerPageOptions = [5, 10, 15, 20, 25, 50, 100],\n showRowsPerPage = true,\n onPageChange,\n onRowsPerPageChange,\n size = \"medium\",\n isDisabled = false,\n rowsPerPageLabel = \"Row per page\",\n ofLabel = \"of\",\n prevLabel = \"Prev\",\n nextLabel = \"Next\",\n showPrevNext = true,\n showPageJumper = true,\n showPageNumber = true,\n pageStatus,\n maxPageButtons = 5,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCurrentPage, setUncontrolledCurrentPage] =\n React.useState(1);\n const [uncontrolledRowsPerPage, setUncontrolledRowsPerPage] =\n React.useState(rowsPerPageOptions[0] || 10);\n\n const currentPage =\n controlledCurrentPage !== undefined\n ? controlledCurrentPage\n : uncontrolledCurrentPage;\n\n const rowsPerPage =\n controlledRowsPerPage !== undefined\n ? controlledRowsPerPage\n : uncontrolledRowsPerPage;\n\n // Generate rows per page options\n const rowsPerPageSelectOptions: SelectOption[] = rowsPerPageOptions.map(\n (value) => {\n const valueStr = String(value);\n // Pad with leading zero if needed (manual implementation for compatibility)\n const label = valueStr.length < 2 ? \"0\" + valueStr : valueStr;\n return {\n id: `rows-${valueStr}`,\n value: valueStr,\n label: label,\n title: valueStr,\n };\n }\n );\n\n // Generate page options\n const pageOptions: SelectOption[] = Array.from(\n { length: totalPages },\n (_, i) => {\n const pageNum = i + 1;\n const pageStr = String(pageNum);\n return {\n id: `page-${pageStr}`,\n value: pageStr,\n label: pageStr,\n title: `Page ${pageNum}`,\n };\n }\n );\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > totalPages) return;\n if (controlledCurrentPage === undefined) {\n setUncontrolledCurrentPage(newPage);\n }\n onPageChange?.(newPage);\n };\n\n const handleRowsPerPageChange = (value: string | number) => {\n const newRowsPerPage =\n typeof value === \"string\" ? parseInt(value) : value;\n if (controlledRowsPerPage === undefined) {\n setUncontrolledRowsPerPage(newRowsPerPage);\n }\n onRowsPerPageChange?.(newRowsPerPage);\n // Reset to first page when rows per page changes\n handlePageChange(1);\n };\n\n const handlePrevPage = () => {\n handlePageChange(currentPage - 1);\n };\n\n const handleNextPage = () => {\n handlePageChange(currentPage + 1);\n };\n\n const isPrevDisabled = currentPage <= 1 || isDisabled;\n const isNextDisabled = currentPage >= totalPages || isDisabled;\n\n const selectSize =\n size === \"small\" ? \"small\" : size === \"large\" ? \"large\" : \"medium\";\n\n // Map pagination size to button size\n const buttonSize =\n size === \"small\" ? \"xsmall\" : size === \"large\" ? \"large\" : \"small\";\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= maxPageButtons) {\n // Show all pages if total is less than max\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n // Determine page status if not provided\n const effectivePageStatus =\n pageStatus ||\n (currentPage <= 2\n ? \"first\"\n : currentPage >= totalPages - 1\n ? \"last\"\n : \"middle\");\n\n if (effectivePageStatus === \"first\") {\n // Show first pages: 1, 2, 3, 4, 5\n return Array.from(\n { length: Math.min(maxPageButtons, totalPages) },\n (_, i) => i + 1\n );\n } else if (effectivePageStatus === \"last\") {\n // Show last pages\n const start = totalPages - maxPageButtons + 1;\n return Array.from({ length: maxPageButtons }, (_, i) => start + i);\n } else if (effectivePageStatus === \"middle\") {\n // Show pages around current page\n const halfMax = Math.floor(maxPageButtons / 2);\n let start = currentPage - halfMax;\n let end = currentPage + halfMax;\n\n // Adjust if at boundaries\n if (start < 1) {\n end += 1 - start;\n start = 1;\n }\n if (end > totalPages) {\n start -= end - totalPages;\n end = totalPages;\n }\n\n start = Math.max(1, start);\n end = Math.min(totalPages, end);\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n\n // pageStatus === \"none\" - don't show any page numbers\n return [];\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div\n ref={ref}\n className={cn(paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {rowsPerPageLabel}\n </span>\n <div className=\"w-[80px]\">\n <Select\n value={rowsPerPage.toString()}\n options={rowsPerPageSelectOptions}\n onChange={handleRowsPerPageChange}\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3 ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<ChevronLeft className=\"w-4 h-4\" />}\n aria-label=\"Previous page\"\n >\n {prevLabel}\n </Button>\n )}\n\n {showPageJumper ? (\n // Show page dropdown selector\n <div className=\"flex items-center gap-3\">\n <div className=\"w-[80px]\">\n <Select\n value={currentPage.toString()}\n options={pageOptions}\n onChange={(value) =>\n handlePageChange(\n typeof value === \"string\" ? parseInt(value) : value\n )\n }\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {ofLabel} {totalPages}\n </span>\n </div>\n ) : (\n // Show numbered page buttons\n showPageNumber &&\n pageNumbers.length > 0 && (\n <ButtonGroup\n variant=\"separated\"\n size={buttonSize}\n isDisabled={isDisabled}\n value={currentPage}\n onChange={(value) => handlePageChange(value as number)}\n >\n {pageNumbers.map((pageNum) => (\n <Button\n key={pageNum}\n value={pageNum}\n variant=\"tertiary\"\n color=\"primary\"\n aria-label={`Page ${pageNum}`}\n aria-current={pageNum === currentPage ? \"page\" : undefined}\n >\n {pageNum}\n </Button>\n ))}\n </ButtonGroup>\n )\n )}\n\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handleNextPage}\n isDisabled={isNextDisabled}\n trailingIcon={<ChevronRight className=\"w-4 h-4\" />}\n aria-label=\"Next page\"\n >\n {nextLabel}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { paginationVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst radioVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 border transition-all cursor-pointer rounded-full\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] border-[1.5px]\",\n medium: \"w-[16px] h-[16px] border-[1.5px]\",\n large: \"w-[20px] h-[20px] border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n isFocused: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class: `border-action-outline-neutral-faded \n hover:bg-action-fill-neutral-faded \n hover:border-action-outline-neutral-faded\n `,\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover border-action-fill-primary-default hover:border-action-fill-primary-hover\",\n },\n // Checked state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default hover:bg-action-fill-negative-hover border-action-fill-negative-default hover:border-action-fill-negative-hover\",\n },\n // Focused state - none validation\n {\n isFocused: true,\n validationState: \"none\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-primary-faded\",\n },\n // Focused state - error validation\n {\n isFocused: true,\n validationState: \"error\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-negative-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isDisabled: false,\n isFocused: false,\n },\n }\n);\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the radio button\n */\n label?: string;\n /**\n * Error text to display below the radio button\n */\n errorText?: string;\n /**\n * Size of the radio button\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the radio button\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio button is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled) {\n setShowRipple(true);\n setTimeout(() => {\n setShowRipple(false);\n }, 360); // Match animation duration (0.36s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current?.click();\n }\n };\n\n const handleFocus = () => {\n if (!isDisabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n innerCircleSize: 6,\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 7,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 8,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"radio\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n radioVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n className\n )}\n >\n {/* Inner White Circle (creates ring effect) */}\n {isChecked && (\n <div\n className=\"rounded-full bg-white transition-all\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport { Radio, radioVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n showClearButton?: boolean;\n onClear?: () => void;\n containerClassName?: string;\n labelClassName?: string;\n inputClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n prefix,\n suffix,\n showClearButton = false,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n onClear,\n containerClassName,\n labelClassName,\n inputClassName,\n className,\n value,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const inputValue = value !== undefined ? value : internalValue;\n const hasValue = inputValue && String(inputValue).length > 0;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(e.target.value);\n }\n };\n\n const handleClear = () => {\n if (onClear) {\n onClear();\n } else {\n setInternalValue(\"\");\n }\n // Focus the input after clearing\n const input = document.getElementById(props.id || \"\");\n if (input) {\n input.focus();\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textFieldVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <input\n ref={ref}\n value={inputValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display\",\n inputClassName\n )}\n {...props}\n />\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { TextField, textFieldVariants };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/utils\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\n\nexport interface SearchableDropdownItem extends DropdownMenuItem {\n [key: string]: any;\n}\n\nexport interface SearchableDropdownProps\n extends Omit<TextFieldProps, \"onChange\" | \"value\"> {\n /**\n * Items to display in the dropdown\n */\n items?: SearchableDropdownItem[];\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown menu width\n */\n dropdownWidth?: \"auto\" | \"full\";\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when search value changes\n */\n onSearchChange?: (value: string) => void;\n /**\n * Callback when item is selected\n */\n onItemSelect?: (item: SearchableDropdownItem) => void;\n /**\n * Custom filter function\n */\n filterFunction?: (item: SearchableDropdownItem, query: string) => boolean;\n /**\n * Search value (controlled)\n */\n searchValue?: string;\n /**\n * Default search value (uncontrolled)\n */\n defaultSearchValue?: string;\n /**\n * Custom class for dropdown menu\n */\n dropdownClassName?: string;\n /**\n * Minimum characters before showing dropdown\n */\n minSearchLength?: number;\n /**\n * Show dropdown on focus\n */\n showOnFocus?: boolean;\n /**\n * Show \"Add New\" option when search doesn't match any items\n */\n showAddNew?: boolean;\n}\n\nconst defaultFilter = (\n item: SearchableDropdownItem,\n query: string\n): boolean => {\n const searchQuery = query.toLowerCase();\n return (\n item.label.toLowerCase().includes(searchQuery) ||\n (item.description?.toLowerCase().includes(searchQuery) ?? false)\n );\n};\n\nexport const SearchableDropdown = React.forwardRef<\n HTMLInputElement,\n SearchableDropdownProps\n>(\n (\n {\n className,\n items = [],\n sectionHeading,\n isLoading = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n dropdownWidth = \"full\",\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n footerLayout = \"horizontal\",\n onSearchChange,\n onItemSelect,\n filterFunction = defaultFilter,\n searchValue: controlledSearchValue,\n defaultSearchValue = \"\",\n dropdownClassName,\n minSearchLength = 0,\n showOnFocus = true,\n showAddNew = false,\n containerClassName,\n ...textFieldProps\n },\n ref\n ) => {\n const [uncontrolledSearchValue, setUncontrolledSearchValue] =\n React.useState(defaultSearchValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [focusedIndex, setFocusedIndex] = React.useState(-1);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Update position when dropdown opens or window resizes\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const searchValue =\n controlledSearchValue !== undefined\n ? controlledSearchValue\n : uncontrolledSearchValue;\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newValue);\n }\n onSearchChange?.(newValue);\n\n // Show dropdown if minimum search length is met\n if (newValue.length >= minSearchLength) {\n setIsOpen(true);\n } else {\n setIsOpen(false);\n }\n };\n\n const handleFocus = () => {\n if (showOnFocus && searchValue.length >= minSearchLength) {\n setIsOpen(true);\n }\n };\n\n const handleItemSelect = (item: SearchableDropdownItem) => {\n onItemSelect?.(item);\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(item.label);\n }\n setIsOpen(false);\n inputRef.current?.focus();\n };\n\n // Filter items based on search\n const filteredItems = React.useMemo(() => {\n if (!searchValue) return items;\n return items.filter((item) => filterFunction(item, searchValue));\n }, [items, searchValue, filterFunction]);\n\n // Add \"Add New\" option if showAddNew is true and no items match\n const itemsWithAddNew = React.useMemo(() => {\n if (!showAddNew || !searchValue || filteredItems.length > 0) {\n return filteredItems;\n }\n\n const addNewItem: SearchableDropdownItem = {\n value: searchValue,\n label: `+ Add ${searchValue}`,\n variant: \"primary\",\n onClick: () => {\n const newItem: SearchableDropdownItem = {\n value: searchValue,\n label: searchValue,\n };\n onItemSelect?.(newItem);\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(searchValue);\n }\n setIsOpen(false);\n inputRef.current?.focus();\n },\n };\n\n return [addNewItem];\n }, [\n showAddNew,\n searchValue,\n filteredItems,\n onItemSelect,\n controlledSearchValue,\n ]);\n\n // Reset focused index when items change\n React.useEffect(() => {\n setFocusedIndex(-1);\n }, [itemsWithAddNew.length]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n menuRef.current &&\n !menuRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Handle keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!isOpen) {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\") {\n setIsOpen(true);\n e.preventDefault();\n }\n return;\n }\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setFocusedIndex((prev) =>\n prev < itemsWithAddNew.length - 1 ? prev + 1 : prev\n );\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setFocusedIndex((prev) => (prev > 0 ? prev - 1 : -1));\n break;\n case \"Enter\":\n e.preventDefault();\n if (focusedIndex >= 0 && itemsWithAddNew[focusedIndex]) {\n handleItemSelect(itemsWithAddNew[focusedIndex]);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setIsOpen(false);\n setFocusedIndex(-1);\n break;\n }\n };\n\n // Update items with onClick handlers that call handleItemSelect\n // Only add onClick if it doesn't already exist (for Add New items)\n const itemsWithHandlers = itemsWithAddNew.map((item) => ({\n ...item,\n onClick: item.onClick || (() => handleItemSelect(item)),\n }));\n\n const showDropdown = isOpen && searchValue.length >= minSearchLength;\n\n const dropdownMenu = showDropdown && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n top: `${position.top + 8}px`,\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: 9999,\n }}\n >\n <DropdownMenu\n items={itemsWithHandlers}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={itemsWithAddNew.length === 0 && !showAddNew}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={\n (primaryButtonText || secondaryButtonText) && !disableFooter\n ? true\n : false\n }\n footerLayout={footerLayout}\n onClose={() => setIsOpen(false)}\n focusedIndex={focusedIndex}\n className={dropdownClassName}\n width={dropdownWidth === \"full\" ? \"full\" : \"auto\"}\n />\n </div>\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n <TextField\n ref={inputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\n </div>\n\n {/* Dropdown Menu Portal */}\n {typeof document !== \"undefined\" &&\n dropdownMenu &&\n createPortal(dropdownMenu, document.body)}\n </>\n );\n }\n);\n\nSearchableDropdown.displayName = \"SearchableDropdown\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SkeletonVariant = \"rect\" | \"text\" | \"title\" | \"circle\";\ntype SkeletonAnimation = \"pulse\" | \"none\";\ntype SkeletonRounded = \"none\" | \"small\" | \"medium\" | \"large\" | \"full\";\n\nconst variantDefaults: Record<\n SkeletonVariant,\n { height: number | string; className: string }\n> = {\n rect: { height: 16, className: \"w-full rounded-large\" },\n text: { height: 12, className: \"w-full rounded-large\" },\n title: { height: 20, className: \"w-full rounded-large\" },\n circle: { height: 40, className: \"rounded-full aspect-square\" },\n};\n\nconst roundedClassNames: Record<SkeletonRounded, string> = {\n none: \"rounded-none\",\n small: \"rounded-small\",\n medium: \"rounded-medium\",\n large: \"rounded-large\",\n full: \"rounded-full\",\n};\n\nconst animationClassNames: Record<SkeletonAnimation, string | undefined> = {\n pulse: \"animate-skeleton\",\n none: undefined,\n};\n\nconst normalizeCssValue = (value?: number | string): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n return typeof value === \"number\" ? `${value}px` : value;\n};\n\nconst getLineWidths = (\n count: number,\n provided?: Array<number | string>\n): Array<string | undefined> => {\n if (provided && provided.length) {\n return Array.from({ length: count }, (_, index) =>\n normalizeCssValue(provided[index] ?? provided[provided.length - 1])\n );\n }\n\n if (count === 1) {\n return [\"100%\"];\n }\n\n return Array.from({ length: count }, (_, index) =>\n index === count - 1 ? \"60%\" : \"100%\"\n );\n};\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Visual variant that controls default sizing and shape.\n */\n variant?: SkeletonVariant;\n /**\n * Animation style applied to the skeleton.\n */\n animation?: SkeletonAnimation;\n /**\n * Number of lines to render for text-based skeletons.\n */\n lines?: number;\n /**\n * Optional width overrides for each line.\n */\n lineWidths?: Array<number | string>;\n /**\n * Gap between lines when rendering multiple.\n */\n lineGap?: number | string;\n /**\n * Width of the skeleton block (overrides the variant default).\n */\n width?: number | string;\n /**\n * Height of the skeleton block (overrides the variant default).\n */\n height?: number | string;\n /**\n * Additional class name applied to the container when multiple lines are rendered.\n */\n containerClassName?: string;\n /**\n * Optional inline styles for the container when rendering multiple lines.\n */\n containerStyle?: React.CSSProperties;\n /**\n * Border radius override for rectangular variants.\n */\n rounded?: SkeletonRounded;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n containerClassName,\n containerStyle,\n variant = \"rect\",\n animation = \"pulse\",\n lines = 1,\n lineWidths,\n lineGap = \"0.5rem\",\n width,\n height,\n rounded = \"large\",\n style,\n ...props\n },\n ref\n ) => {\n const resolvedLines = Math.max(1, lines);\n const baseVariant = variantDefaults[variant];\n\n const resolvedHeight =\n normalizeCssValue(height) ?? normalizeCssValue(baseVariant.height);\n const resolvedWidth =\n normalizeCssValue(width) ??\n (variant === \"circle\" ? resolvedHeight : undefined);\n\n const skeletonClasses = cn(\n \"block bg-surface-fill-neutral-subtle\",\n animationClassNames[animation],\n variant !== \"circle\" && roundedClassNames[rounded],\n baseVariant.className,\n className\n );\n\n if ((variant === \"text\" || variant === \"title\") && resolvedLines > 1) {\n const widths = getLineWidths(resolvedLines, lineWidths);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col\",\n containerClassName,\n animation === \"pulse\" ? \"animate-none\" : undefined\n )}\n style={{\n gap: normalizeCssValue(lineGap) ?? \"0.5rem\",\n ...containerStyle,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n >\n {widths.map((lineWidth, index) => (\n <span\n key={`skeleton-line-${index}`}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: lineWidth ?? resolvedWidth ?? \"100%\",\n ...style,\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: resolvedWidth ?? style?.width,\n ...style,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchVariants = cva(\n \"relative inline-flex items-center shrink-0 cursor-pointer rounded-full transition-all duration-200\",\n {\n variants: {\n size: {\n small: \"w-[20px] h-[12px]\",\n medium: \"w-[28px] h-[16px]\",\n large: \"w-[36px] h-[20px]\",\n },\n isChecked: {\n true: \"bg-action-fill-primary-default \",\n false: \"bg-surface-fill-neutral-subtle\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n isChecked: true,\n isDisabled: false,\n class: \"hover:bg-action-fill-primary-hover \",\n },\n {\n isChecked: false,\n isDisabled: false,\n class: \"hover:bg-action-fill-neutral-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n isDisabled: false,\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-neutral-00 shadow-sm transition-transform duration-200\",\n {\n variants: {\n size: {\n small: \"h-[8px] w-[8px]\",\n medium: \"h-[12px] w-[12px]\",\n large: \"h-[16px] w-[16px]\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Small size translations\n {\n size: \"small\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"small\",\n isChecked: true,\n class: \"translate-x-[10px]\",\n },\n // Medium size translations\n {\n size: \"medium\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"medium\",\n isChecked: true,\n class: \"translate-x-[14px]\",\n },\n // Large size translations\n {\n size: \"large\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"large\",\n isChecked: true,\n class: \"translate-x-[18px]\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the switch\n */\n label?: string;\n /**\n * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the switch is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the switch track\n */\n trackClassName?: string;\n /**\n * Custom class name for the switch thumb\n */\n thumbClassName?: string;\n}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = \"medium\",\n isDisabled = false,\n containerClassName,\n labelClassName,\n trackClassName,\n thumbClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"switch\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n <div\n className={cn(\n switchVariants({\n size,\n isChecked,\n isDisabled,\n }),\n trackClassName,\n className,\n \"focus-visible:ring-2 focus-visible:ring-action-outline-primary-faded focus-visible:ring-offset-2\"\n )}\n >\n <span\n className={cn(\n switchThumbVariants({\n size,\n isChecked,\n }),\n thumbClassName\n )}\n />\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\"w-full border-collapse\", {\n variants: {\n variant: {\n default: \"border-separate border-spacing-0\",\n bordered: \"border-separate border-spacing-0\",\n striped: \"border-separate border-spacing-0\",\n },\n size: {\n small: \"text-body-small-medium\",\n medium: \"text-body-medium-medium\",\n large: \"text-body-large-medium\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"medium\",\n },\n});\n\nexport const tableHeaderVariants = cva(\n \"text-body-medium-regular text-left text-surface-ink-neutral-normal border-b border-surface-outline-neutral-muted\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[32px]\",\n medium: \"px-4 py-3 h-[40px]\",\n large: \"px-6 py-4 h-[48px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport const tableCellVariants = cva(\n \"text-body-medium-regular border-b border-surface-outline-neutral-muted text-surface-ink-neutral-normal transition-colors duration-150\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[40px]\",\n medium: \"px-4 py-3 h-[72px]\",\n large: \"px-6 py-4 h-[56px]\",\n },\n state: {\n default: \"\",\n focus: \"\",\n // focus:\n // \"outline outline-2 outline-action-outline-primary-default outline-offset-[-2px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n state: \"default\",\n },\n }\n);\n","import * as React from \"react\";\nimport {\n flexRender,\n type Header,\n type HeaderGroup,\n} from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableHeaderVariants } from \"./tableVariants\";\n\ninterface TableHeaderProps<TData> {\n headerGroups: HeaderGroup<TData>[];\n enableRowSelection: boolean;\n enableSelectAll: boolean;\n showHeaderBackground: boolean;\n stickyHeader: boolean;\n size: \"small\" | \"medium\" | \"large\";\n headerClassName?: string;\n onToggleAllRows: (e?: unknown) => void;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n getColumnStyle: (\n columnId: string,\n fallback?: { width?: number; minWidth?: number; maxWidth?: number }\n ) => React.CSSProperties;\n}\n\nexport function TableHeader<TData>({\n headerGroups,\n enableRowSelection,\n enableSelectAll,\n showHeaderBackground,\n stickyHeader,\n size,\n headerClassName,\n onToggleAllRows,\n isAllRowsSelected,\n isSomeRowsSelected,\n getColumnStyle,\n}: TableHeaderProps<TData>) {\n const headerHeight =\n {\n small: 32,\n medium: 40,\n large: 48,\n }[size] ?? 40;\n\n return (\n <thead\n className={cn(\n showHeaderBackground ? \"bg-surface-fill-neutral-moderate\" : \"bg-white\",\n stickyHeader && \"sticky top-0 z-10\"\n )}\n >\n {headerGroups.map((headerGroup, groupIndex) => {\n const stickyTop = stickyHeader ? groupIndex * headerHeight : undefined;\n\n return (\n <tr key={headerGroup.id}>\n {enableRowSelection && enableSelectAll && (\n <th\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n stickyHeader && \"sticky z-20\",\n \"w-10 rounded-tl-xlarge rounded-bl-xlarge\",\n headerClassName\n )}\n style={{ top: stickyTop }}\n >\n <Checkbox\n checked={isAllRowsSelected}\n isIndeterminate={isSomeRowsSelected}\n onChange={onToggleAllRows}\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {headerGroup.headers.map((header, index) => {\n const isFirstColumn = index === 0;\n const isLastColumn = index === headerGroup.headers.length - 1;\n\n return (\n <th\n key={header.id}\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground &&\n \"bg-surface-fill-neutral-moderate border-none\",\n stickyHeader && \"sticky z-20\",\n !enableRowSelection && index === 0 && \"rounded-tl-xlarge \",\n isLastColumn && \"rounded-tr-xlarge\",\n header.column.columnDef.meta?.headerClassName,\n headerClassName\n )}\n style={{\n ...getColumnStyle(header.column.id, {\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize,\n maxWidth: header.column.columnDef.maxSize,\n }),\n top: stickyTop,\n ...(isFirstColumn && { paddingLeft: \"24px\" }),\n ...(isLastColumn && { paddingRight: \"24px\" }),\n }}\n >\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() &&\n \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {header.column.getCanSort() && (\n <span className=\"text-surface-ink-neutral-muted\">\n {{\n asc: \"↑\",\n desc: \"↓\",\n }[header.column.getIsSorted() as string] ?? \"↕\"}\n </span>\n )}\n </div>\n )}\n </th>\n );\n })}\n </tr>\n );\n })}\n </thead>\n );\n}\n","import * as React from \"react\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableCellVariants } from \"./tableVariants\";\n\ninterface TableBodyProps<TData> {\n rows: Row<TData>[];\n enableRowSelection: boolean;\n size: \"small\" | \"medium\" | \"large\";\n variant: \"default\" | \"bordered\" | \"striped\";\n showRowHover: boolean;\n cellClassName?: string;\n onRowClick?: (row: TData) => void;\n getRowClassName: (row: TData) => string;\n handleRowClick: (row: TData) => void;\n getColumnStyle: (\n columnId: string,\n fallback?: { width?: number; minWidth?: number; maxWidth?: number }\n ) => React.CSSProperties;\n}\n\ninterface CellState {\n rowId: string;\n cellId: string;\n}\n\nexport function TableBody<TData>({\n rows,\n enableRowSelection,\n size,\n variant,\n showRowHover,\n cellClassName,\n onRowClick,\n getRowClassName,\n handleRowClick,\n getColumnStyle,\n}: TableBodyProps<TData>) {\n const [focusedCell, setFocusedCell] = React.useState<CellState | null>(null);\n const [hoveredRow, setHoveredRow] = React.useState<string | null>(null);\n\n return (\n <tbody className={cn(\"bg-surface-fill-neutral-intense\")}>\n {rows.map((row) => {\n const isRowHovered = hoveredRow === row.id;\n const handleClick = () => handleRowClick(row.original);\n\n return (\n <tr\n key={row.id}\n className={cn(\n variant === \"striped\" &&\n row.index % 2 === 1 &&\n \"bg-surface-fill-neutral-moderate\",\n onRowClick && \"cursor-pointer\",\n isRowHovered &&\n showRowHover &&\n \"bg-surface-fill-neutral-moderate\",\n getRowClassName(row.original)\n )}\n onClick={handleClick}\n onMouseEnter={() => setHoveredRow(row.id)}\n onMouseLeave={() => setHoveredRow(null)}\n >\n {enableRowSelection && (\n <td\n className={cn(\n tableCellVariants({ size }),\n \"w-10\",\n cellClassName\n )}\n style={{\n paddingTop: \"20px\",\n paddingBottom: \"20px\",\n }}\n >\n <Checkbox\n checked={row.getIsSelected()}\n isIndeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onClick={(e) => e.stopPropagation()}\n aria-label={`Select row ${row.id}`}\n />\n </td>\n )}\n {row.getVisibleCells().map((cell, cellIndex) => {\n const isCellFocused =\n focusedCell?.rowId === row.id &&\n focusedCell?.cellId === cell.id;\n const cellState = isCellFocused ? \"focus\" : \"default\";\n const visibleCells = row.getVisibleCells();\n const isFirstCell = cellIndex === 0;\n const isLastCell = cellIndex === visibleCells.length - 1;\n\n return (\n <td\n key={cell.id}\n className={cn(\n tableCellVariants({ size, state: cellState }),\n cell.column.columnDef.meta?.cellClassName,\n cellClassName\n )}\n style={{\n ...getColumnStyle(cell.column.id, {\n width: cell.column.getSize(),\n minWidth: cell.column.columnDef.minSize,\n maxWidth: cell.column.columnDef.maxSize,\n }),\n paddingTop: \"20px\",\n paddingBottom: \"20px\",\n ...(isFirstCell && { paddingLeft: \"24px\" }),\n ...(isLastCell && { paddingRight: \"24px\" }),\n }}\n tabIndex={0}\n onFocus={() =>\n setFocusedCell({ rowId: row.id, cellId: cell.id })\n }\n onBlur={() => setFocusedCell(null)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\n\ninterface LoadingStateProps {\n colSpan: number;\n}\n\nexport function renderDefaultLoadingState({ colSpan }: LoadingStateProps) {\n return (\n <tr>\n <td\n colSpan={colSpan}\n className=\"text-center py-12 text-surface-ink-neutral-muted\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-6 w-6 border-b-2 border-action-fill-primary-default\" />\n <span>Loading...</span>\n </div>\n </td>\n </tr>\n );\n}\n\nexport function renderDefaultEmptyState({ colSpan }: LoadingStateProps) {\n return (\n <tr>\n <td\n colSpan={colSpan}\n className=\"text-center py-12 text-surface-ink-neutral-muted\"\n >\n No data available\n </td>\n </tr>\n );\n}\n","import * as React from \"react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { Table as TanStackTable, RowData } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { TableHeader } from \"./TableHeader\";\nimport { TableBody } from \"./TableBody\";\nimport { tableVariants, tableCellVariants } from \"./tableVariants\";\nimport {\n renderDefaultLoadingState,\n renderDefaultEmptyState,\n} from \"./tableHelpers\";\nimport { Skeleton } from \"../Skeleton\";\n\n// Extend TanStack Table types to support custom meta properties\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData, TValue> {\n headerClassName?: string;\n cellClassName?: string;\n }\n}\n\n// ==================== Types ====================\n\nexport interface TableProps<TData extends RowData>\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof tableVariants> {\n table: TanStackTable<TData>;\n enableRowSelection?: boolean;\n enableSelectAll?: boolean;\n isLoading?: boolean;\n loadingComponent?: React.ReactNode;\n emptyComponent?: React.ReactNode;\n wrapperClassName?: string;\n containerClassName?: string;\n enableHorizontalScroll?: boolean;\n stickyHeader?: boolean;\n maxHeight?: string | number;\n showRowHover?: boolean;\n onRowClick?: (row: TData) => void;\n rowClassName?: string | ((row: TData) => string);\n headerClassName?: string;\n cellClassName?: string;\n showHeaderBackground?: boolean;\n loading?: boolean;\n loadingSkeletonRows?: number;\n loadingSkeletonHeight?: number | string;\n columnWidths?: Partial<Record<string, string | number>>;\n columnMinWidths?: Partial<Record<string, string | number>>;\n columnMaxWidths?: Partial<Record<string, string | number>>;\n}\n\n// ==================== Component ====================\n\nfunction TableComponent<TData extends RowData>(\n {\n className,\n wrapperClassName,\n containerClassName,\n variant,\n size = \"medium\",\n table,\n enableRowSelection = false,\n enableSelectAll = false,\n isLoading = false,\n loading,\n loadingComponent,\n emptyComponent,\n enableHorizontalScroll = false,\n stickyHeader = false,\n maxHeight,\n showRowHover = true,\n onRowClick,\n rowClassName,\n headerClassName,\n cellClassName,\n showHeaderBackground = true,\n loadingSkeletonRows,\n loadingSkeletonHeight,\n columnWidths,\n columnMinWidths,\n columnMaxWidths,\n ...props\n }: TableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // ==================== Computed Values ====================\n\n const hasData = table.getRowModel().rows?.length > 0;\n const headerGroups = table.getHeaderGroups();\n\n const normalizeSizeValue = (value?: string | number) => {\n if (value === undefined) return undefined;\n return typeof value === \"number\" ? `${value}px` : value;\n };\n\n const getColumnStyle = React.useCallback(\n (\n columnId: string,\n fallback?: {\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n }\n ): React.CSSProperties => {\n const width = columnWidths?.[columnId] ?? fallback?.width ?? undefined;\n const minWidth =\n columnMinWidths?.[columnId] ?? fallback?.minWidth ?? undefined;\n const maxWidth =\n columnMaxWidths?.[columnId] ?? fallback?.maxWidth ?? undefined;\n\n return {\n width: normalizeSizeValue(width),\n minWidth: normalizeSizeValue(minWidth),\n maxWidth: normalizeSizeValue(maxWidth),\n };\n },\n [columnWidths, columnMinWidths, columnMaxWidths]\n );\n\n const containerStyle = React.useMemo(() => {\n if (!maxHeight) return undefined;\n return {\n maxHeight: typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight,\n };\n }, [maxHeight]);\n\n const resolvedLoading =\n typeof loading === \"boolean\" ? loading : Boolean(isLoading);\n\n const skeletonRowCount = loadingSkeletonRows ?? 5;\n\n const sizeKey = size || \"medium\";\n\n const skeletonHeightMap: Record<NonNullable<typeof sizeKey>, number> = {\n small: 16,\n medium: 20,\n large: 24,\n };\n\n const skeletonCellHeight = normalizeSizeValue(\n loadingSkeletonHeight ?? skeletonHeightMap[sizeKey]\n );\n\n const selectionSkeletonSize =\n sizeKey === \"small\" ? 14 : sizeKey === \"large\" ? 20 : 16;\n\n const renderSkeletonRows = React.useCallback(() => {\n const visibleColumns = table.getVisibleLeafColumns();\n\n if (visibleColumns.length === 0) {\n return renderDefaultLoadingState({\n colSpan: table.getAllColumns().length || 1,\n });\n }\n\n return Array.from({ length: skeletonRowCount }).map((_, rowIndex) => (\n <tr key={`skeleton-row-${rowIndex}`}>\n {enableRowSelection && (\n <td\n className={cn(\n tableCellVariants({ size: sizeKey }),\n \"w-10\",\n cellClassName\n )}\n >\n <Skeleton\n variant=\"circle\"\n width={selectionSkeletonSize}\n height={selectionSkeletonSize}\n />\n </td>\n )}\n {visibleColumns.map((column) => (\n <td\n key={`${column.id}-${rowIndex}`}\n className={cn(\n tableCellVariants({ size: sizeKey }),\n column.columnDef.meta?.cellClassName,\n cellClassName\n )}\n style={getColumnStyle(column.id, {\n width: column.getSize(),\n minWidth: column.columnDef.minSize,\n maxWidth: column.columnDef.maxSize,\n })}\n >\n <Skeleton\n className=\"w-full\"\n height={skeletonCellHeight}\n rounded=\"medium\"\n />\n </td>\n ))}\n </tr>\n ));\n }, [\n cellClassName,\n enableRowSelection,\n getColumnStyle,\n selectionSkeletonSize,\n sizeKey,\n skeletonCellHeight,\n skeletonRowCount,\n table,\n ]);\n\n const renderLoadingContent = React.useCallback(() => {\n if (loadingComponent) return loadingComponent;\n return renderSkeletonRows();\n }, [loadingComponent, renderSkeletonRows]);\n\n // ==================== Callbacks ====================\n\n const getRowClassName = React.useCallback(\n (row: TData): string => {\n if (typeof rowClassName === \"function\") {\n return rowClassName(row);\n }\n return rowClassName || \"\";\n },\n [rowClassName]\n );\n\n const handleRowClickInternal = React.useCallback(\n (row: TData) => {\n if (onRowClick) {\n onRowClick(row);\n }\n },\n [onRowClick]\n );\n\n // ==================== Render Helpers ====================\n\n const renderLoadingState = () => {\n if (loadingComponent) return loadingComponent;\n return renderDefaultLoadingState({ colSpan: table.getAllColumns().length });\n };\n\n const renderEmptyState = () => {\n if (emptyComponent) return emptyComponent;\n return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });\n };\n\n // ==================== Render ====================\n\n return (\n <div ref={ref} className={cn(\"w-full\", wrapperClassName)} {...props}>\n <div\n className={cn(\n \"relative\",\n enableHorizontalScroll ? \"overflow-x-auto\" : \"overflow-x-hidden\",\n maxHeight && \"overflow-y-auto\",\n containerClassName\n )}\n style={containerStyle}\n >\n <table className={cn(tableVariants({ variant, size }), className)}>\n <TableHeader\n headerGroups={headerGroups}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n showHeaderBackground={showHeaderBackground}\n stickyHeader={stickyHeader}\n size={size || \"medium\"}\n headerClassName={headerClassName}\n onToggleAllRows={(e) => table.getToggleAllRowsSelectedHandler()(e)}\n isAllRowsSelected={table.getIsAllRowsSelected()}\n isSomeRowsSelected={table.getIsSomeRowsSelected()}\n getColumnStyle={getColumnStyle}\n />\n\n {resolvedLoading ? (\n <tbody>{renderLoadingContent()}</tbody>\n ) : !hasData ? (\n <tbody>{renderEmptyState()}</tbody>\n ) : (\n <TableBody\n rows={table.getRowModel().rows}\n enableRowSelection={enableRowSelection}\n size={size || \"medium\"}\n variant={variant || \"default\"}\n showRowHover={showRowHover}\n cellClassName={cellClassName}\n onRowClick={onRowClick}\n getRowClassName={getRowClassName}\n handleRowClick={handleRowClickInternal}\n getColumnStyle={getColumnStyle}\n />\n )}\n </table>\n </div>\n </div>\n );\n}\n\n// ==================== Export ====================\n\nexport const Table = React.forwardRef(TableComponent) as <\n TData extends RowData\n>(\n props: TableProps<TData> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof TableComponent>;\n\n(Table as any).displayName = \"Table\";\n\nexport * from \"./tableVariants\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TableDetailPanelProps {\n /**\n * Whether the panel is open\n */\n isOpen: boolean;\n /**\n * Callback to close the panel\n */\n onClose?: () => void;\n /**\n * Content to display in the panel\n */\n children: React.ReactNode;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Panel width\n */\n width?: string | number;\n}\n\nexport const TableDetailPanel = React.forwardRef<\n HTMLDivElement,\n TableDetailPanelProps\n>(({ isOpen, onClose, children, className, width = \"400px\" }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"absolute top-0 right-0 h-full bg-white border border-surface-outline-neutral-muted transition-transform duration-300 ease-in-out overflow-auto\",\n isOpen ? \"translate-x-0\" : \"translate-x-full\",\n className\n )}\n style={{ width }}\n >\n {children}\n </div>\n );\n});\n\nTableDetailPanel.displayName = \"TableDetailPanel\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// ==================== Number Cell ====================\n\ninterface NumberCellProps {\n value: number;\n currency?: string;\n subtitle?: string;\n className?: string;\n}\n\nexport function NumberCell({\n value,\n currency,\n subtitle,\n className,\n}: NumberCellProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {currency}{\" \"}\n {value.toLocaleString(\"en-IN\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n );\n}\n\n// ==================== Icon Cell ====================\n\ninterface IconCellProps {\n icon: React.ReactNode;\n background?: \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\n className?: string;\n}\n\nexport function IconCell({\n icon,\n background = \"neutral\",\n className,\n}: IconCellProps) {\n const backgrounds = {\n neutral: \"bg-surface-fill-neutral-faded\",\n primary: \"bg-action-fill-primary-faded\",\n success: \"bg-action-fill-positive-faded\",\n warning: \"bg-action-fill-warning-faded\",\n danger: \"bg-action-fill-negative-faded\",\n };\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center w-10 h-10 rounded-medium\",\n backgrounds[background],\n className\n )}\n >\n {icon}\n </div>\n );\n}\n\n// ==================== Spacer Cell ====================\n\nexport function SpacerCell() {\n return <div className=\"w-full h-full\" />;\n}\n\n// ==================== Slot Cell ====================\n\ninterface SlotCellProps {\n onDragStart?: (e: React.DragEvent) => void;\n onDragEnd?: (e: React.DragEvent) => void;\n className?: string;\n}\n\nexport function SlotCell({ onDragStart, onDragEnd, className }: SlotCellProps) {\n return (\n <div\n draggable\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n className={cn(\n \"flex items-center justify-center cursor-grab active:cursor-grabbing\",\n className\n )}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"text-surface-ink-neutral-muted\"\n >\n <path\n d=\"M6 4C6 3.44772 5.55228 3 5 3C4.44772 3 4 3.44772 4 4C4 4.55228 4.44772 5 5 5C5.55228 5 6 4.55228 6 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 8C6 7.44772 5.55228 7 5 7C4.44772 7 4 7.44772 4 8C4 8.55228 4.44772 9 5 9C5.55228 9 6 8.55228 6 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13C5.55228 13 6 12.5523 6 12Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 4C12 3.44772 11.5523 3 11 3C10.4477 3 10 3.44772 10 4C10 4.55228 10.4477 5 11 5C11.5523 5 12 4.55228 12 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 8C12 7.44772 11.5523 7 11 7C10.4477 7 10 7.44772 10 8C10 8.55228 10.4477 9 11 9C11.5523 9 12 8.55228 12 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 12C12 11.4477 11.5523 11 11 11C10.4477 11 10 11.4477 10 12C10 12.5523 10.4477 13 11 13C11.5523 13 12 12.5523 12 12Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n );\n}\n\n// ==================== Avatar Cell ====================\n\ninterface AvatarCellProps {\n name: string;\n initials?: string;\n avatar?: string;\n subtitle?: string;\n color?: string;\n className?: string;\n}\n\nexport function AvatarCell({\n name,\n initials,\n avatar,\n subtitle,\n color = \"a1\",\n className,\n}: AvatarCellProps) {\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n {avatar ? (\n <img\n src={avatar}\n alt={name}\n className=\"w-10 h-10 rounded-full object-cover\"\n />\n ) : (\n <div\n className={cn(\n \"w-10 h-10 rounded-full flex items-center justify-center text-body-medium-medium\",\n `bg-${color}`\n )}\n >\n {initials || name.charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"flex flex-col\">\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {name}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst tabItemVariants = cva(\n `inline-flex items-center justify-center gap-3 whitespace-nowrap transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 relative cursor-pointer -mb-[1.5px]`,\n {\n variants: {\n variant: {\n bordered: \"border-b-[1.5px]\",\n borderless: \"border-b-[1.5px]\",\n },\n size: {\n small: \"px-2 py-3 h-9\",\n medium: \"px-3 py-4 h-11\",\n large: \"px-3 py-4 h-12\",\n },\n isSelected: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"\",\n },\n isFullWidth: {\n true: \"flex-1\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Bordered and borderless variants - not selected\n {\n variant: [\"bordered\", \"borderless\"],\n isSelected: false,\n isDisabled: false,\n class: `text-text-body-secondary \n border-b-transparent\n text-action-ink-neutral-muted\n hover:text-action-ink-neutral-subtle\n hover:border-b-action-outline-neutral-faded-hover`,\n },\n // Bordered variant - selected\n {\n variant: \"bordered\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Borderless variant - selected\n {\n variant: \"borderless\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Typography by size and selection\n {\n size: [\"small\", \"medium\"],\n isSelected: false,\n class: \"text-body-medium-medium\",\n },\n {\n size: [\"small\", \"medium\"],\n isSelected: true,\n class: \"text-body-medium-semibold\",\n },\n {\n size: \"large\",\n isSelected: false,\n class: \"text-body-large-medium\",\n },\n {\n size: \"large\",\n isSelected: true,\n class: \"text-body-large-semibold\",\n },\n // Bordered and borderless variants - disabled\n {\n variant: [\"bordered\", \"borderless\"],\n isDisabled: true,\n class: \"text-text-body-disabled border-b-transparent\",\n },\n ],\n defaultVariants: {\n variant: \"bordered\",\n size: \"large\",\n isSelected: false,\n isDisabled: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface TabItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is currently selected\n */\n isSelected?: boolean;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab size variant\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Whether the tab should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Click handler\n */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst TabItem = React.forwardRef<HTMLButtonElement, TabItemProps>(\n (\n {\n leadingComponent,\n title,\n trailingComponent,\n isSelected = false,\n isDisabled = false,\n size = \"large\",\n variant = \"bordered\",\n isFullWidth = false,\n className,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={cn(\n tabItemVariants({\n variant,\n size,\n isSelected,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n onClick={onClick}\n {...props}\n >\n {leadingComponent && (\n <span className=\"inline-flex items-center\">{leadingComponent}</span>\n )}\n <span className=\"inline-flex items-center\">{title}</span>\n {trailingComponent && (\n <span className=\"inline-flex items-center\">{trailingComponent}</span>\n )}\n </button>\n );\n }\n);\n\nTabItem.displayName = \"TabItem\";\n\nexport { TabItem, tabItemVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { TabItem, type TabItemProps } from \"../TabItem/TabItem\";\n\nexport interface Tab {\n /**\n * Unique identifier for the tab\n */\n id: string | number;\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab content to render when selected\n */\n content?: React.ReactNode;\n}\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Array of tab configurations\n */\n tabs: Tab[];\n /**\n * Currently selected tab ID\n */\n selectedTabId?: string | number;\n /**\n * Default selected tab ID (for uncontrolled mode)\n */\n defaultSelectedTabId?: string | number;\n /**\n * Callback when tab selection changes\n */\n onTabChange?: (tabId: string | number) => void;\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Tab size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether tabs should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name for the tabs container\n */\n className?: string;\n /**\n * Custom class name for the tab list\n */\n tabListClassName?: string;\n /**\n * Custom class name for the tab content area\n */\n contentClassName?: string;\n /**\n * Whether to render tab content\n */\n renderContent?: boolean;\n}\n\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n tabs,\n selectedTabId,\n defaultSelectedTabId,\n onTabChange,\n variant = \"bordered\",\n size = \"large\",\n isFullWidth = false,\n className,\n tabListClassName,\n contentClassName,\n renderContent = true,\n ...props\n },\n ref\n ) => {\n // Internal state for uncontrolled mode\n const [internalSelectedId, setInternalSelectedId] = React.useState<\n string | number\n >(defaultSelectedTabId || tabs[0]?.id || \"\");\n\n // Determine if component is controlled\n const isControlled = selectedTabId !== undefined;\n const activeTabId = isControlled ? selectedTabId : internalSelectedId;\n\n // Handle tab selection\n const handleTabClick = (tabId: string | number) => {\n if (!isControlled) {\n setInternalSelectedId(tabId);\n }\n onTabChange?.(tabId);\n };\n\n // Get the active tab content\n const activeTab = tabs.find((tab) => tab.id === activeTabId);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {/* Tab List */}\n <div\n role=\"tablist\"\n className={cn(\n \"inline-flex items-center gap-4\",\n {\n \"w-full\": isFullWidth,\n \"border-b border-b-[1.5px] border-surface-outline-neutral-muted\":\n variant === \"bordered\",\n },\n tabListClassName\n )}\n >\n {tabs.map((tab) => (\n <TabItem\n key={tab.id}\n id={String(tab.id)}\n leadingComponent={tab.leadingComponent}\n title={tab.title}\n trailingComponent={tab.trailingComponent}\n isSelected={tab.id === activeTabId}\n isDisabled={tab.isDisabled}\n variant={variant}\n size={size}\n isFullWidth={isFullWidth}\n onClick={() => !tab.isDisabled && handleTabClick(tab.id)}\n />\n ))}\n </div>\n\n {/* Tab Content */}\n {renderContent && activeTab?.content && (\n <div\n role=\"tabpanel\"\n className={cn(\"mt-4\", contentClassName)}\n aria-labelledby={String(activeTabId)}\n >\n {activeTab.content}\n </div>\n )}\n </div>\n );\n }\n);\n\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textAreaVariants = cva(\n \"relative flex flex-col border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"p-3 min-h-[56px] text-xs gap-2\",\n medium: \"p-4 min-h-[56px] text-sm gap-2\",\n large: \"p-5 min-h-[64px]text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n maxChar?: number;\n showCharCount?: boolean;\n containerClassName?: string;\n labelClassName?: string;\n textAreaClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n rows?: number;\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n maxChar,\n showCharCount = true,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n containerClassName,\n labelClassName,\n textAreaClassName,\n className,\n value,\n onChange,\n rows = 4,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const textAreaValue = value !== undefined ? value : internalValue;\n const currentLength = String(textAreaValue).length;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n\n // Prevent exceeding maxChar if specified\n if (maxChar && newValue.length > maxChar) {\n return;\n }\n\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(newValue);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n // Check if we're approaching or at the limit\n const isNearLimit = maxChar && currentLength >= maxChar * 0.9;\n const isAtLimit = maxChar && currentLength >= maxChar;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textAreaVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <textarea\n ref={ref}\n value={textAreaValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n rows={rows}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display resize-none\",\n size === \"small\" && \"text-xs\",\n size === \"medium\" && \"text-sm\",\n size === \"large\" && \"text-base\",\n textAreaClassName\n )}\n {...props}\n />\n </div>\n <FormFooter\n helperText={displayHelperText}\n trailingText={\n maxChar && showCharCount ? `${currentLength}/${maxChar}` : undefined\n }\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n trailingTextClassName={cn(\n \"transition-colors\",\n isAtLimit\n ? \"text-feedback-ink-negative-subtle\"\n : isNearLimit\n ? \"text-feedback-ink-warning-subtle\"\n : \"\"\n )}\n />\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport { TextArea, textAreaVariants };\n"],"names":["_jsx","clsx","twMerge","cva","React","Slot","_jsxs","_Fragment","PulseLoader","ClipLoader","ExternalLink","getMonthIndex","formatYear","defaultFormatYear","className","formatMonthYear","defaultFormatMonthYear","__assign","this","__rest","Children","cloneElement","useMemo","formatMonth","defaultFormatMonth","formatDay","defaultFormatDay","formatLongDate","defaultFormatLongDate","formatShortWeekday","defaultFormatShortWeekday","formatWeekday","defaultFormatWeekday","forwardRef","useState","useCallback","useImperativeHandle","CalendarIcon","Loader2","Search","ChevronDown","ChevronLeft","ChevronRight","createPortal","flexRender"],"mappings":"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","x_google_ignoreList":[13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/icons.tsx","../src/lib/utils.ts","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Link/Link.tsx","../src/components/Alert/Alert.tsx","../src/components/Amount/Amount.tsx","../src/components/Text/Text.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Divider/Divider.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Modal/Modal.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/TextField/TextField.tsx","../src/components/SearchableDropdown/SearchableDropdown.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/tableVariants.ts","../src/components/Table/TableHeader.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/tableHelpers.tsx","../src/components/Table/Table.tsx","../src/components/Table/TableDetailPanel.tsx","../src/components/Table/TableCellTypes.tsx","../src/components/TabItem/TabItem.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import * as React from \"react\";\n\n/**\n * Icon component props\n */\nexport interface IconProps extends React.SVGProps<SVGSVGElement> {\n size?: number | string;\n}\n\n/**\n * ==============================================\n * HOW TO ADD A NEW ICON:\n * ==============================================\n *\n * 1. Add your SVG file to: src/assets/icons/{iconName}.svg\n *\n * 2. Copy the SVG content from the file\n *\n * 3. Add it to the iconRegistry below:\n * iconName: `<svg>...</svg>`,\n *\n * 4. Use it anywhere in your app:\n * <Icon name=\"iconName\" size={24} />\n *\n * The Icon component will automatically:\n * - Replace hardcoded colors with currentColor\n * - Allow you to control color via className or style\n * - Resize based on the size prop\n * ==============================================\n */\n\n/**\n * Icon registry - maps icon names to their SVG content\n * Add your icons here by copying the SVG content from your icon files\n */\nconst iconRegistry = {\n // Tick/Check icon\n tick: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Alias: check points to the same icon as tick\n check: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n add: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n<path d=\"M12.9 11.0999L21 11.0997V12.8997L12.9 12.8999V21H11.1V12.8999L3.00004 12.9001L3 11.1001L11.1 11.0999L11.0999 3.00001L12.8999 3L12.9 11.0999Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Info icon\n info: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 22.5C6.20101 22.5 1.5 17.7989 1.5 12C1.5 6.20101 6.20101 1.5 12 1.5C17.7989 1.5 22.5 6.20101 22.5 12C22.5 17.7989 17.7989 22.5 12 22.5ZM12 20.4C16.6392 20.4 20.4 16.6392 20.4 12C20.4 7.36081 16.6392 3.6 12 3.6C7.36081 3.6 3.6 7.36081 3.6 12C3.6 16.6392 7.36081 20.4 12 20.4ZM10.95 6.75H13.05V8.85H10.95V6.75ZM10.95 10.95H13.05V17.25H10.95V10.95Z\" fill=\"#081416\"/>\n</svg>\n`,\n\n // Exclamation/Warning icon\n exclamation: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM13 17H11V15H13V17ZM13 13H11V7H13V13Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Close/X icon\n close: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18 6L6 18M6 6L18 18\" stroke=\"#081416\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n};\n\n/**\n * Type for available icon names (with autocomplete support)\n */\nexport type IconName = keyof typeof iconRegistry;\n\n/**\n * Icon component that renders an SVG icon by name\n *\n * Features:\n * - ✓ Automatically converts hardcoded colors to currentColor\n * - ✓ Control color via className (e.g., \"text-blue-500\")\n * - ✓ Control color via style prop\n * - ✓ Customizable size\n * - ✓ TypeScript autocomplete for icon names\n * - ✓ All standard SVG props supported\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Icon name=\"tick\" size={24} />\n *\n * // With Tailwind color class\n * <Icon name=\"tick\" size={16} className=\"text-blue-500\" />\n *\n * // With inline styles\n * <Icon name=\"check\" size={20} style={{ color: 'red' }} />\n *\n * // With custom props\n * <Icon name=\"tick\" size={32} className=\"hover:text-green-600 transition-colors\" />\n * ```\n */\nexport interface DynamicIconProps\n extends Omit<\n React.SVGProps<SVGSVGElement>,\n \"ref\" | \"dangerouslySetInnerHTML\"\n > {\n /** Name of the icon to render */\n name: IconName;\n /** Size of the icon (width and height) */\n size?: number | string;\n}\n\nexport const Icon: React.FC<DynamicIconProps> = ({\n name,\n size = 24,\n className = \"\",\n style = {},\n ...props\n}) => {\n const svgContent = iconRegistry[name];\n\n if (!svgContent) {\n console.warn(\n `Icon \"${String(name)}\" not found in registry.\\n` +\n `Available icons: ${Object.keys(iconRegistry).join(\", \")}`\n );\n return null;\n }\n\n // Parse the SVG content\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgContent, \"image/svg+xml\");\n const svgElement = svgDoc.querySelector(\"svg\");\n\n if (!svgElement) {\n console.error(`Invalid SVG content for icon \"${String(name)}\"`);\n return null;\n }\n\n // Get the viewBox for proper scaling\n const viewBox = svgElement.getAttribute(\"viewBox\") || \"0 0 24 24\";\n\n // Get all SVG content as string and replace hardcoded colors with currentColor\n let innerSVG = svgElement.innerHTML;\n\n // Replace common hardcoded colors with currentColor\n // This allows the icon to inherit text color from parent\n innerSVG = innerSVG\n .replace(/fill=\"[^\"]*\"/g, 'fill=\"currentColor\"')\n .replace(/stroke=\"[^\"]*\"/g, 'stroke=\"currentColor\"');\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n dangerouslySetInnerHTML={{ __html: innerSVG }}\n />\n );\n};\n\n/**\n * Get all available icon names from the registry\n * @returns Array of registered icon names\n *\n * @example\n * ```tsx\n * const icons = getAvailableIcons();\n * console.log(icons); // ['tick', 'check', ...]\n * ```\n */\nexport function getAvailableIcons(): IconName[] {\n return Object.keys(iconRegistry) as IconName[];\n}\n\n/**\n * Check if an icon exists in the registry\n * @param name - Icon name to check\n * @returns true if the icon exists\n *\n * @example\n * ```tsx\n * if (hasIcon('tick')) {\n * // Icon exists\n * }\n * ```\n */\nexport function hasIcon(name: string): name is IconName {\n return name in iconRegistry;\n}\n\nexport { iconRegistry };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Define patterns for custom classes that should be preserved\n// This approach is more scalable than hardcoding individual class names\nconst CUSTOM_CLASS_PATTERNS = [\n // Custom font classes\n /^font-(functional|display)$/,\n // Custom font-size classes\n /^font-size-/,\n // Custom leading (line-height) classes\n /^leading-(00|25|50|75|100|200|300|400|500|600|700|800|900|1000|1100)$/,\n // Custom text utility classes (text-display, text-heading, text-body, text-caption variants)\n /^text-(display|heading|body|caption)(-\\w+)?(-\\w+)?$/,\n // Text weight classes\n /^text-weight-/,\n // Text color classes\n /^text-color-/,\n /^outline-width-/,\n /^border-width-/,\n // Custom spacing classes (example)\n // /^spacing-(xs|sm|md|lg|xl)$/,\n // Custom color classes (example)\n // /^color-(primary|secondary|accent)$/,\n // Any class that starts with 'custom-'\n /^custom-/,\n];\n\nfunction isCustomClass(className: string): boolean {\n return CUSTOM_CLASS_PATTERNS.some((pattern) => pattern.test(className));\n}\n\nexport function cn(...inputs: ClassValue[]) {\n // Use clsx first to combine classes, then use twMerge for standard Tailwind classes\n const combined = clsx(inputs);\n\n // Split classes and filter out our custom classes before merging\n const classes = combined.split(\" \");\n const customClasses = classes.filter((cls) => isCustomClass(cls));\n const standardClasses = classes.filter((cls) => !isCustomClass(cls));\n\n // Merge standard classes and add back custom classes\n const mergedStandard = twMerge(standardClasses.join(\" \"));\n\n return clsx(mergedStandard, customClasses);\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { PulseLoader, ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"items-center gap-3 justify-center whitespace-nowrap ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none\",\n {\n variants: {\n variant: {\n primary:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal hover:bg-action-fill-primary-hover\",\n secondary: \"border\",\n tertiary: \"hover:bg-accent hover:text-accent-foreground\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"md:h-[28px] px-3 rounded-medium text-body-small-medium\",\n small: \"md:h-[32px] px-4 rounded-medium text-body-small-medium\",\n medium: \"md:h-[36px] px-5 py-2 rounded-large text-body-medium-medium\",\n large: \"md:h-[44px] px-6 rounded-large text-body-large-medium\",\n },\n isIconOnly: {\n true: \"aspect-square p-0\",\n false: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n isFullWidth: {\n true: \"flex w-full\",\n false: \"flex w-fit\",\n },\n },\n compoundVariants: [\n // Primary variant colors\n {\n variant: \"primary\",\n color: \"primary\",\n class: `bg-action-fill-primary-default text-action-ink-on-primary-normal \n hover:bg-action-fill-primary-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled,\n active:bg-action-fill-primary-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"positive\",\n class: `bg-action-fill-positive-default text-action-ink-on-primary-normal \n hover:bg-action-fill-positive-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled\n active:bg-action-fill-positive-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"negative\",\n class: `bg-action-fill-negative-default text-action-ink-on-primary-normal \n hover:bg-action-fill-negative-hover \n disabled:bg-action-fill-negative-disabled\n disabled:text-action-ink-negative-disabled\n active:bg-action-fill-negative-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"notice\",\n class: `bg-action-fill-notice-default text-action-ink-on-primary-normal \n hover:bg-action-fill-notice-hover \n disabled:bg-action-fill-notice-disabled\n disabled:text-action-ink-notice-disabled\n active:bg-action-fill-notice-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"info\",\n class: `bg-action-fill-info-default text-action-ink-on-primary-normal \n hover:bg-action-fill-info-hover \n disabled:bg-action-fill-info-disabled\n disabled:text-action-ink-info-disabled\n active:bg-action-fill-info-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"neutral\",\n class: `bg-action-fill-neutral-default text-action-ink-on-primary-normal \n hover:bg-action-fill-neutral-hover \n disabled:bg-action-fill-neutral-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-neutral-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"white\",\n class: `bg-action-fill-white-default text-action-ink-neutral-subtle\n hover:bg-action-fill-white-hover \n disabled:bg-action-fill-white-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-white-activated\n `,\n },\n // Secondary variant colors\n {\n variant: \"secondary\",\n color: \"primary\",\n class: `\n border-action-outline-primary-faded \n text-action-ink-primary-normal \n hover:border-action-outline-primary-faded-hover \n hover:bg-action-fill-primary-faded-hover\n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-primary-disabled\n disabled:border-action-outline-primary-disabled\n active:border-action-outline-primary-faded-activated\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"positive\",\n class: `\n border-action-outline-positive-faded \n text-action-ink-positive-normal \n hover:border-action-outline-positive-faded-hover \n hover:bg-action-fill-positive-faded-hover \n disabled:bg-action-outline-positive-disabled\n disabled:text-action-ink-positive-disabled\n disabled:border-action-outline-positive-disabled\n active:border-action-outline-positive-faded-activated\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"negative\",\n class: `\n border-action-outline-negative-faded \n text-action-ink-negative-normal \n hover:border-action-outline-negative-faded-hover \n hover:bg-action-fill-negative-faded-hover \n disabled:bg-action-outline-negative-disabled\n disabled:text-action-ink-negative-disabled\n disabled:border-action-outline-negative-disabled\n active:border-action-outline-negative-faded-activated\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"notice\",\n class: `\n border-action-outline-notice-faded \n text-action-ink-notice-normal \n hover:border-action-outline-notice-faded-hover \n hover:bg-action-fill-notice-faded-hover \n disabled:bg-action-outline-notice-disabled\n disabled:text-action-ink-notice-disabled\n disabled:border-action-outline-notice-disabled\n active:border-action-outline-notice-faded-activated\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"info\",\n class: `border-action-outline-info-faded \n text-action-ink-info-normal \n hover:border-action-outline-info-faded-hover \n hover:bg-action-fill-info-faded-hover \n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-info-disabled\n disabled:border-action-outline-info-disabled\n active:border-action-outline-info-faded-activated\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"neutral\",\n class: `border-action-outline-neutral-faded \n text-action-ink-neutral-normal \n hover:bg-action-outline-neutral-faded-hover \n hover:bg-action-fill-neutral-faded-hover \n disabled:text-action-ink-neutral-disabled\n disabled:border-action-outline-neutral-disabled\n active:border-action-outline-neutral-faded-activated\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"white\",\n class: `border-action-outline-white-faded \n text-action-ink-on-primary-subtle\n hover:border-action-outline-white-faded-hover \n hover:bg-action-fill-white-faded-hover\n disabled:text-surface-ink-white-disabled\n disabled:border-action-outline-white-disabled\n active:border-action-outline-white-faded-activated\n active:bg-action-fill-white-faded-activated\n `,\n },\n // Tertiary variant colors\n {\n variant: \"tertiary\",\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:bg-action-fill-primary-faded \n disabled:text-action-ink-on-primary-muted\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:bg-action-fill-positive-faded \n disabled:text-action-ink-on-positive-muted\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:bg-action-fill-negative-faded \n disabled:text-action-ink-on-negative-muted\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:bg-action-fill-notice-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:bg-action-fill-info-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:bg-action-fill-neutral-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"white\",\n class: `text-action-ink-white-subtle\n hover:bg-action-white-faded-hover\n disabled:text-action-ink-white-disabled\n disabled:bg-action-fill-white-disabled\n active:bg-action-white-faded-activated\n `,\n },\n // Icon only sizing\n {\n isIconOnly: true,\n size: \"xsmall\",\n class: \"h-7 w-7\",\n },\n {\n isIconOnly: true,\n size: \"small\",\n class: \"h-8 w-8\",\n },\n {\n isIconOnly: true,\n size: \"medium\",\n class: \"h-9 w-9\",\n },\n {\n isIconOnly: true,\n size: \"large\",\n class: \"h-10 w-10\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isLoading: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n isFullWidth?: boolean;\n asChild?: boolean;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n color = \"primary\",\n size,\n isIconOnly,\n isLoading,\n asChild = false,\n leadingIcon,\n trailingIcon,\n isFullWidth = false,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const buttonContent = (\n <>\n {isLoading && !isIconOnly && (\n <PulseLoader color={getLoaderColor()} size={10} />\n )}\n {isLoading && isIconOnly && (\n <ClipLoader color={getLoaderColor()} size={20} />\n )}\n {!isLoading && leadingIcon && (\n <span className=\"mr-2\">{leadingIcon}</span>\n )}\n {!isIconOnly && !isLoading && children}\n {isIconOnly && !isLoading && children}\n {!isLoading && trailingIcon && <span>{trailingIcon}</span>}\n </>\n );\n\n return (\n <Comp\n className={cn(\n buttonVariants({\n variant,\n color,\n size,\n isIconOnly,\n isLoading,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon, type IconName } from \"../../lib/icons\";\n\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none p-0 border-0 bg-transparent\",\n {\n variants: {\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n color: \"primary\",\n size: \"medium\",\n isLoading: false,\n },\n }\n);\n\nexport interface IconButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isLoading?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n /** Icon name from the icon registry */\n icon?: IconName;\n /** Custom icon element (ReactNode) - alternative to icon prop */\n iconElement?: React.ReactNode;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n className,\n color = \"primary\",\n size = \"medium\",\n isLoading,\n asChild = false,\n icon,\n iconElement,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const getIconSize = () => {\n switch (size) {\n case \"xsmall\":\n return 16;\n case \"small\":\n return 18;\n case \"medium\":\n return 20;\n case \"large\":\n return 24;\n default:\n return 20;\n }\n };\n\n const getIconColorClass = () => {\n // Color classes with normal, hover, focus, and disabled states\n const colorMap: Record<string, string> = {\n primary:\n \"text-action-ink-primary-normal hover:text-action-ink-primary-subtle focus-visible:text-action-ink-primary-subtle disabled:text-action-ink-primary-muted\",\n positive:\n \"text-action-ink-positive-normal hover:text-action-ink-positive-subtle focus-visible:text-action-ink-positive-subtle disabled:text-action-ink-positive-muted\",\n negative:\n \"text-action-ink-negative-normal hover:text-action-ink-negative-subtle focus-visible:text-action-ink-negative-subtle disabled:text-action-ink-negative-muted\",\n notice:\n \"text-action-ink-notice-normal hover:text-action-ink-notice-subtle focus-visible:text-action-ink-notice-subtle disabled:text-action-ink-notice-muted\",\n info: \"text-action-ink-info-normal hover:text-action-ink-info-subtle focus-visible:text-action-ink-info-subtle disabled:text-action-ink-info-muted\",\n neutral:\n \"text-action-ink-neutral-normal hover:text-action-ink-neutral-subtle focus-visible:text-action-ink-neutral-subtle disabled:text-action-ink-neutral-muted\",\n white:\n \"text-surface-ink-white-subtle hover:text-surface-ink-white-normal focus-visible:text-surface-ink-white-normal disabled:text-surface-ink-white-muted\",\n };\n return colorMap[color] || colorMap.primary;\n };\n\n const buttonContent = (\n <>\n {isLoading ? (\n <ClipLoader color={getLoaderColor()} size={getIconSize()} />\n ) : icon ? (\n <Icon\n name={icon}\n size={getIconSize()}\n className={getIconColorClass()}\n />\n ) : iconElement ? (\n <span className={getIconColorClass()}>{iconElement}</span>\n ) : null}\n </>\n );\n\n return (\n <Comp\n className={cn(\n iconButtonVariants({\n color,\n size,\n isLoading,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ExternalLink } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none decoration-1 underline-offset-4\",\n {\n variants: {\n type: {\n anchor: \"hover:underline\",\n action: \"no-underline cursor-pointer\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"text-body-xsmall-medium gap-1\",\n small: \"text-body-small-medium gap-1\",\n medium: \"text-body-medium-medium gap-1.5\",\n large: \"text-body-large-medium gap-1.5\",\n },\n isIconOnly: {\n true: \"no-underline\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"cursor-pointer\",\n },\n },\n compoundVariants: [\n // Primary color variants\n {\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:text-action-ink-primary-subtle\n hover:decoration-action-outline-primary-hover \n disabled:text-action-ink-primary-disabled\n focus:text-action-ink-primary-hover\n `,\n },\n // Positive color variants\n {\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:text-action-ink-positive-subtle\n hover:decoration-action-outline-positive-hover \n hover:text-action-ink-positive-hover \n disabled:text-action-ink-positive-disabled\n focus:text-action-ink-positive-hover\n `,\n },\n // Negative color variants\n {\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:text-action-ink-negative-subtle\n hover:decoration-action-outline-negative-hover \n hover:text-action-ink-negative-hover \n disabled:text-action-ink-negative-disabled\n focus:text-action-ink-negative-hover\n `,\n },\n // Notice color variants\n {\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:text-action-ink-notice-subtle\n hover:decoration-action-outline-notice-hover \n hover:text-action-ink-notice-hover \n disabled:text-action-ink-notice-disabled\n focus:text-action-ink-notice-hover\n `,\n },\n // Info color variants\n {\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:text-action-ink-info-subtle\n hover:decoration-action-outline-info-hover \n hover:text-action-ink-info-hover \n disabled:text-action-ink-info-disabled\n focus:text-action-ink-info-hover\n `,\n },\n // Neutral color variants\n {\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:text-action-ink-neutral-subtle\n hover:decoration-action-outline-neutral-hover \n hover:text-action-ink-neutral-hover \n disabled:text-action-ink-neutral-disabled\n focus:text-action-ink-neutral-hover\n `,\n },\n {\n color: \"white\",\n class: `text-surface-ink-white-normal \n hover:text-surface-ink-white-subtle\n hover:text-action-ink-white-hover \n disabled:text-action-ink-white-muted\n focus:text-action-ink-white-hover\n `,\n },\n ],\n defaultVariants: {\n type: \"anchor\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\"> {\n type?: \"anchor\" | \"action\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n showIcon?: boolean;\n icon?: React.ReactNode;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n className,\n type = \"anchor\",\n color = \"primary\",\n size = \"medium\",\n isIconOnly = false,\n isDisabled = false,\n asChild = false,\n showIcon = false,\n icon,\n leadingIcon,\n trailingIcon,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"a\";\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // Icon size based on link size\n const iconSize = {\n xsmall: 12,\n small: 14,\n medium: 16,\n large: 18,\n }[size];\n\n // Determine what to show as trailing icon\n // Priority: trailingIcon > (showIcon && icon) > (showIcon && default ExternalLink)\n const finalTrailingIcon =\n trailingIcon || (showIcon && (icon || <ExternalLink size={iconSize} />));\n\n const linkContent = (\n <>\n {leadingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{leadingIcon}</span>\n )}\n {!isIconOnly && children}\n {isIconOnly && children}\n {finalTrailingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{finalTrailingIcon}</span>\n )}\n {isIconOnly &&\n (leadingIcon || finalTrailingIcon || (\n <ExternalLink size={iconSize} />\n ))}\n </>\n );\n\n return (\n <Comp\n className={cn(\n linkVariants({\n type,\n color,\n size,\n isIconOnly,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n onClick={handleClick}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n {...props}\n >\n {linkContent}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\nexport { Link, linkVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Icon } from \"../../lib/icons\";\nimport { Button } from \"../Button\";\nimport { IconButton } from \"../IconButton\";\nimport { Link } from \"../Link\";\nimport { cn } from \"../../lib/utils\";\n\nconst alertVariants = cva(\n \"relative flex gap-4 p-4 rounded-large transition-colors\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-subtle\",\n },\n // Intense emphasis\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-intense\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertIconVariants = cva(\n \"flex-shrink-0 rounded-full flex items-center justify-center mt-1\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"text-white\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - colored backgrounds with white icons\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-action-ink-positive-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \" text-action-ink-negative-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \" text-action-ink-notice-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \" text-action-ink-info-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \" text-action-ink-neutral-normal\",\n },\n // Intense emphasis - white backgrounds with colored icons\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \" text-action-fill-info-default\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \" text-action-fill-neutral-default\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertTextVariants = cva(\"\", {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - dark text\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"text-surface-ink-neutral-normal\",\n },\n // Intense emphasis - white text\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n});\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /**\n * The visual emphasis level of the alert\n */\n emphasis?: \"subtle\" | \"intense\";\n /**\n * The intent/type of the alert\n */\n intent?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * The title of the alert\n */\n title?: string;\n /**\n * The body content of the alert\n */\n children: React.ReactNode;\n /**\n * Whether the alert should take full width\n * When true, actions are placed to the right of the content\n * When false, actions are placed below the content\n */\n isFullWidth?: boolean;\n /**\n * Callback fired when the close button is clicked\n */\n onClose?: () => void;\n /**\n * Custom icon to display. If not provided, an icon will be automatically selected based on intent\n */\n icon?: React.ReactNode;\n /**\n * Action button text. If provided, a button will be automatically created based on the variant\n */\n actionButtonText?: string;\n /**\n * Callback fired when the action button is clicked\n */\n onActionButtonClick?: () => void;\n /**\n * Action link to display\n */\n actionLinkText?: string;\n /**\n * Callback fired when the action link is clicked\n */\n onActionLinkClick?: () => void;\n /**\n * Custom class name for the alert\n */\n className?: string;\n}\n\nconst getDefaultIcon = (\n intent: AlertProps[\"intent\"],\n emphasis: AlertProps[\"emphasis\"]\n) => {\n const iconSize = 16;\n const iconColor = emphasis === \"intense\" ? \"currentColor\" : \"currentColor\";\n\n switch (emphasis) {\n case \"intense\":\n return (\n <Icon\n name=\"info\"\n size={iconSize}\n className=\"text-white\"\n aria-hidden=\"true\"\n />\n );\n default:\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n }\n};\n\nconst getButtonColor = (\n intent: AlertProps[\"intent\"]\n): \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\" => {\n switch (intent) {\n case \"positive\":\n return \"positive\";\n case \"negative\":\n return \"negative\";\n case \"notice\":\n return \"notice\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n return \"neutral\";\n default:\n return \"neutral\";\n }\n};\n\nconst getActionButton = (\n actionButtonText: string | undefined,\n onActionButtonClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Button\n variant=\"secondary\"\n color=\"white\"\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Button\n variant=\"secondary\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n};\nconst getActionLink = (\n actionButtonText: string | undefined,\n onActionLinkClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Link\n type=\"action\"\n color=\"white\"\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Link\n type=\"action\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n};\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n emphasis = \"subtle\",\n intent = \"info\",\n title,\n children,\n isFullWidth = false,\n onClose,\n icon,\n actionButtonText,\n onActionButtonClick,\n actionLinkText,\n onActionLinkClick,\n ...props\n },\n ref\n ) => {\n const displayIcon = icon ?? getDefaultIcon(intent, emphasis);\n const actionButton = getActionButton(\n actionButtonText,\n onActionButtonClick,\n emphasis,\n intent\n );\n const actionLink = getActionLink(\n actionLinkText,\n onActionLinkClick,\n emphasis,\n intent\n );\n const hasActions = actionButton || actionLink;\n\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ emphasis, intent }), className)}\n role=\"alert\"\n {...props}\n >\n {/* Icon */}\n <div\n className={cn(\n alertIconVariants({ emphasis, intent }),\n \"h-5 w-5 shrink-0\"\n )}\n >\n {displayIcon}\n </div>\n\n {isFullWidth ? (\n /* Full Width Layout: Icon, Content, Actions/Close in one row */\n <div className=\"flex-1 min-w-0 flex items-center justify-between gap-4\">\n {/* Content: Title and Body */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n </div>\n {/* Actions and Close - aligned to the right, vertically centered */}\n <div className=\"flex items-center gap-4 shrink-0\">\n {hasActions && (\n <>\n {actionButton}\n {actionLink}\n </>\n )}\n {onClose && (\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n )}\n </div>\n </div>\n ) : (\n /* Not Full Width Layout: Icon and Content in row, Actions below, Close top-right */\n <div className=\"flex-1 min-w-0 relative\">\n {/* Close button - positioned top right */}\n {onClose && (\n <div className=\"absolute top-0 right-0\">\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex flex-col gap-3 pr-8\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n\n {/* Actions - below body text, left-aligned */}\n {hasActions && (\n <div className=\"flex items-center gap-4\">\n {actionButton}\n {actionLink}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert, alertVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Type for NumberFormat parts (not available in ES6 lib)\ntype NumberFormatPart = {\n type:\n | \"currency\"\n | \"decimal\"\n | \"fraction\"\n | \"group\"\n | \"infinity\"\n | \"integer\"\n | \"literal\"\n | \"minus\"\n | \"nan\"\n | \"plus\"\n | \"percentSign\"\n | \"unit\";\n value: string;\n};\n\nexport interface AmountProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /**\n * The numeric amount value to display\n */\n value: number;\n /**\n * Currency code (e.g., \"USD\", \"INR\", \"EUR\", \"GBP\")\n */\n currency?: string;\n /**\n * Locale for number formatting (default: \"en-US\")\n */\n locale?: string;\n /**\n * Minimum number of decimal places (default: 2)\n */\n minimumFractionDigits?: number;\n /**\n * Maximum number of decimal places (default: 2)\n */\n maximumFractionDigits?: number;\n /**\n * Whether to show the currency code/symbol (default: true)\n */\n showCurrency?: boolean;\n /**\n * Custom className for the component\n */\n className?: string;\n}\n\n/**\n * Amount component that displays formatted currency amounts with decimal numbers in superscript.\n *\n * @example\n * ```tsx\n * <Amount value={1234.56} currency=\"USD\" />\n * // Renders: USD 1,234.<sup>56</sup>\n *\n * <Amount value={5000} currency=\"INR\" />\n * // Renders: INR 5,000.<sup>00</sup>\n * ```\n */\nconst Amount = React.forwardRef<HTMLSpanElement, AmountProps>(\n (\n {\n value,\n currency,\n locale = \"en-US\",\n minimumFractionDigits = 2,\n maximumFractionDigits = 2,\n showCurrency = true,\n className,\n ...props\n },\n ref\n ) => {\n // Parse the formatted amount into parts\n const parts = React.useMemo(() => {\n // Always format as a number (not currency style) to get number formatting\n const formatter = new Intl.NumberFormat(locale, {\n minimumFractionDigits,\n maximumFractionDigits,\n });\n\n // Use formatToParts to get structured parts\n const formattedParts = (\n formatter as Intl.NumberFormat & {\n formatToParts(value: number): NumberFormatPart[];\n }\n ).formatToParts(value);\n\n let integerPart = \"\";\n let decimalPart = \"\";\n let decimalSeparator = \".\";\n\n formattedParts.forEach((part: NumberFormatPart) => {\n switch (part.type) {\n case \"integer\":\n integerPart += part.value;\n break;\n case \"decimal\":\n decimalSeparator = part.value;\n break;\n case \"fraction\":\n decimalPart = part.value;\n break;\n case \"group\":\n integerPart += part.value;\n break;\n }\n });\n\n // Use currency code as prefix if provided and showCurrency is true\n const currencyPrefix = currency && showCurrency ? `${currency} ` : \"\";\n\n return {\n currency: currencyPrefix,\n integer: integerPart,\n decimal: decimalPart,\n decimalSeparator: decimalSeparator,\n hasDecimal: decimalPart.length > 0,\n };\n }, [\n value,\n currency,\n locale,\n minimumFractionDigits,\n maximumFractionDigits,\n showCurrency,\n ]);\n\n return (\n <span\n ref={ref}\n className={cn(\"inline-flex items-baseline\", className)}\n {...props}\n >\n {parts.currency && <span>{parts.currency}</span>}\n <span className=\"ml-[0.2em]\">{parts.integer}</span>\n {parts.hasDecimal && (\n <>\n <span className=\"mx-[0.05em]\">{parts.decimalSeparator}</span>\n <sup className=\"text-[0.75em] leading-none\">{parts.decimal}</sup>\n </>\n )}\n </span>\n );\n }\n);\n\nAmount.displayName = \"Amount\";\n\nexport { Amount };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Helper function to get the text utility class name\nfunction getTextClassName(\n variant: \"display\" | \"heading\" | \"body\" | \"caption\" = \"body\",\n size:\n | \"2xlarge\"\n | \"xlarge\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"xsmall\" = \"medium\",\n weight: \"regular\" | \"medium\" | \"semibold\" = \"regular\",\n color:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\" = \"default\"\n): string {\n // Build the base class name\n let baseClass = `text-${variant}`;\n\n // Add size\n if (size) {\n baseClass += `-${size}`;\n }\n\n // Add weight\n if (weight) {\n baseClass += `-${weight}`;\n }\n\n // Add color class separately\n const colorClass = `text-color-${color}`;\n\n return `${baseClass} ${colorClass}`;\n}\n\nexport interface TextProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\"> {\n children: React.ReactNode;\n variant?: \"display\" | \"heading\" | \"body\" | \"caption\";\n size?: \"2xlarge\" | \"xlarge\" | \"large\" | \"medium\" | \"small\" | \"xsmall\";\n weight?: \"regular\" | \"medium\" | \"semibold\";\n color?:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\";\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\" | \"label\";\n className?: string;\n}\n\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n (\n {\n className,\n variant = \"body\",\n size = \"medium\",\n weight = \"regular\",\n color = \"default\",\n as = \"p\",\n children,\n ...props\n },\n ref\n ) => {\n const Component = as;\n\n const textClass = getTextClassName(variant, size, weight, color);\n\n return React.createElement(\n Component,\n {\n className: cn(textClass, className),\n ref,\n ...props,\n },\n children\n );\n }\n);\n\nText.displayName = \"Text\";\n\nexport { Text };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text/Text\";\n\ntype AvatarColor = \"a1\" | \"a2\" | \"a3\" | \"a4\" | \"a5\";\ntype AvatarAppearance = \"default\" | \"inverse\";\n\nconst inverseColorClasses: Record<AvatarColor, string> = {\n a1: \"bg-avatar-fill-a1-on-bg text-avatar-fill-a1-bg\",\n a2: \"bg-avatar-fill-a2-on-bg text-avatar-fill-a2-bg\",\n a3: \"bg-avatar-fill-a3-on-bg text-avatar-fill-a3-bg\",\n a4: \"bg-avatar-fill-a4-on-bg text-avatar-fill-a4-bg\",\n a5: \"bg-avatar-fill-a5-on-bg text-avatar-fill-a5-bg\",\n};\n\nconst avatarVariants = cva(\n \"inline-flex items-center justify-center font-medium text-center select-none\",\n {\n variants: {\n color: {\n a1: \"bg-avatar-fill-a1-bg text-avatar-fill-a1-on-bg\",\n a2: \"bg-avatar-fill-a2-bg text-avatar-fill-a2-on-bg\",\n a3: \"bg-avatar-fill-a3-bg text-avatar-fill-a3-on-bg\",\n a4: \"bg-avatar-fill-a4-bg text-avatar-fill-a4-on-bg\",\n a5: \"bg-avatar-fill-a5-bg text-avatar-fill-a5-on-bg\",\n },\n size: {\n small: \"h-[24px] w-[24px] text-body-medium-regular rounded-large\",\n medium: \"h-[32px] w-[32px] text-body-medium-regular rounded-xlarge\",\n xlarge: \"h-[36px] w-[36px] text-body-medium-regular rounded-xlarge\",\n },\n },\n defaultVariants: {\n color: \"a1\",\n size: \"medium\",\n },\n }\n);\n\nconst statusVariants = cva(\n \"absolute flex items-center justify-center rounded-full border-2 border-surface-fill-neutral-intense\",\n {\n variants: {\n size: {\n small: \"h-5 w-5 -bottom-0.5 -right-0.5\",\n medium: \"h-6 w-6 -bottom-1 -right-1\",\n xlarge: \"h-6 w-6 -bottom-1 -right-1\",\n },\n statusColor: {\n positive: \"bg-action-fill-positive-default\",\n negative: \"bg-action-fill-negative-default\",\n notice: \"bg-action-fill-notice-default\",\n info: \"bg-action-fill-info-default\",\n neutral: \"bg-action-fill-neutral-default\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n statusColor: \"notice\",\n },\n }\n);\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof avatarVariants> {\n /**\n * The color variant of the avatar\n */\n color?: AvatarColor;\n /**\n * Whether to invert the background/text colors\n */\n appearance?: AvatarAppearance;\n /**\n * The size of the avatar\n */\n size?: \"small\" | \"medium\" | \"xlarge\";\n /**\n * The initials or text to display in the avatar\n */\n children?: React.ReactNode;\n /**\n * Image source for the avatar (takes precedence over children)\n */\n src?: string;\n /**\n * Alt text for the avatar image\n */\n alt?: string;\n /**\n * Whether to show a status indicator\n */\n showStatus?: boolean;\n /**\n * The color of the status indicator\n */\n statusColor?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * Custom icon or content for the status indicator\n */\n statusIcon?: React.ReactNode;\n /**\n * Optional text label to display next to the avatar\n */\n label?: string;\n /**\n * Optional trailing component (icon or other element) to display after the label\n */\n trailingComponent?: React.ReactNode;\n /**\n * Custom class name for the avatar\n */\n className?: string;\n /**\n * Custom class name for the container (when label or trailingComponent is provided)\n */\n containerClassName?: string;\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n className,\n appearance = \"default\",\n color,\n size,\n children,\n src,\n alt,\n showStatus = false,\n statusColor = \"notice\",\n statusIcon,\n label,\n trailingComponent,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = React.useState(false);\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n const getStatusIconSize = () => {\n switch (size) {\n case \"small\":\n return \"h-3.5 w-3.5\";\n case \"medium\":\n return \"h-4 w-4\";\n default:\n return \"h-4 w-4\";\n }\n };\n\n const getTextSize = () => {\n switch (size) {\n case \"small\":\n return \"small\";\n case \"medium\":\n return \"medium\";\n default:\n return \"medium\";\n }\n };\n\n const resolvedColor: AvatarColor = color ?? \"a1\";\n const avatarElement = (\n <div className=\"relative inline-block\">\n <div\n className={cn(\n avatarVariants({ color: resolvedColor, size }),\n appearance === \"inverse\"\n ? inverseColorClasses[resolvedColor]\n : undefined,\n className\n )}\n {...props}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt || \"Avatar\"}\n className={cn(\n \"h-full w-full object-cover\",\n size === \"small\" ? \"rounded-large\" : \"rounded-xlarge\"\n )}\n onError={handleImageError}\n />\n ) : (\n children\n )}\n </div>\n {showStatus && (\n <div className={cn(statusVariants({ size, statusColor }))}>\n {statusIcon && (\n <span\n className={cn(\n \"text-action-ink-on-primary-normal\",\n getStatusIconSize()\n )}\n >\n {statusIcon}\n </span>\n )}\n </div>\n )}\n </div>\n );\n\n // If no label or trailing component, return just the avatar\n if (!label && !trailingComponent) {\n return <div ref={ref}>{avatarElement}</div>;\n }\n\n // Otherwise, return avatar with label and/or trailing component\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex items-center gap-3\", containerClassName)}\n >\n {avatarElement}\n {label && (\n <Text\n variant=\"body\"\n size={getTextSize()}\n weight=\"medium\"\n color=\"default\"\n as=\"span\"\n >\n {label}\n </Text>\n )}\n {trailingComponent && (\n <span className=\"ml-auto\">{trailingComponent}</span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { Avatar, avatarVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center whitespace-nowrap transition-colors\",\n {\n variants: {\n variant: {\n light: \"\",\n filled: \"\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n size: {\n small:\n \"px-2 h-[var(--size-20)] gap-2 rounded-large text-body-small-medium\",\n medium:\n \"px-3 h-[var(--size-24)] gap-3 rounded-large text-body-medium-medium\",\n large:\n \"px-4 h-[var(--size-28)] gap-3 rounded-xlarge text-body-large-medium\",\n },\n },\n compoundVariants: [\n // Light variant colors\n {\n variant: \"light\",\n color: \"primary\",\n class: \"bg-action-fill-primary-faded text-action-ink-primary-normal\",\n },\n {\n variant: \"light\",\n color: \"positive\",\n class: \"bg-action-fill-positive-faded text-action-ink-positive-normal\",\n },\n {\n variant: \"light\",\n color: \"negative\",\n class: \"bg-action-fill-negative-faded text-action-ink-negative-normal\",\n },\n {\n variant: \"light\",\n color: \"notice\",\n class: \"bg-action-fill-notice-faded text-action-ink-notice-normal\",\n },\n {\n variant: \"light\",\n color: \"info\",\n class: \"bg-action-fill-info-faded text-action-ink-info-normal\",\n },\n {\n variant: \"light\",\n color: \"neutral\",\n class: \"bg-action-fill-neutral-faded text-action-ink-neutral-normal\",\n },\n // Filled variant colors\n {\n variant: \"filled\",\n color: \"primary\",\n class:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"positive\",\n class:\n \"bg-action-fill-positive-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"negative\",\n class:\n \"bg-action-fill-negative-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"notice\",\n class:\n \"bg-action-fill-notice-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"info\",\n class: \"bg-action-fill-info-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"neutral\",\n class:\n \"bg-action-fill-neutral-default text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n variant: \"light\",\n color: \"info\",\n size: \"medium\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Whether to show a dot indicator on the left side\n */\n showDot?: boolean;\n /**\n * Custom class name for the badge\n */\n className?: string;\n /**\n * Badge label/content\n */\n children: React.ReactNode;\n /**\n * The color variant of the badge\n */\n color?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (\n { className, variant, size, color, showDot = false, children, ...props },\n ref\n ) => {\n const getDotColor = () => {\n if (variant === \"filled\") {\n return \"bg-action-ink-on-primary-normal\";\n }\n // Light variant - use the corresponding action color\n switch (color) {\n case \"primary\":\n return \"bg-action-fill-primary-default\";\n case \"positive\":\n return \"bg-action-fill-positive-default\";\n case \"negative\":\n return \"bg-action-fill-negative-default\";\n case \"notice\":\n return \"bg-action-fill-notice-default\";\n case \"info\":\n return \"bg-action-fill-info-default\";\n case \"neutral\":\n return \"bg-action-fill-neutral-default\";\n default:\n return \"bg-action-fill-info-default\";\n }\n };\n\n const getDotSize = () => {\n if (size === \"small\") {\n return \"h-2 w-2\";\n }\n if (size === \"medium\") {\n return \"h-[6px] w-[6px]\";\n }\n return \"h-3 w-3\";\n };\n\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant, size, color }), className)}\n {...props}\n >\n {showDot && (\n <span\n className={cn(\"rounded-full\", getDotColor(), getDotSize())}\n aria-hidden=\"true\"\n />\n )}\n {children}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonGroupVariants = cva(\"inline-flex\", {\n variants: {\n variant: {\n attached: \"\",\n separated: \"\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isFullWidth: {\n true: \"w-full\",\n false: \"w-fit\",\n },\n isDisabled: {\n true: \"pointer-events-none opacity-50\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"separated\",\n orientation: \"horizontal\",\n class: \"gap-2\",\n },\n {\n variant: \"separated\",\n orientation: \"vertical\",\n class: \"gap-2\",\n },\n ],\n defaultVariants: {\n variant: \"attached\",\n orientation: \"horizontal\",\n size: \"medium\",\n isFullWidth: false,\n isDisabled: false,\n },\n});\n\nexport interface ButtonGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof buttonGroupVariants> {\n children: React.ReactNode;\n variant?: \"attached\" | \"separated\";\n isDisabled?: boolean;\n isFullWidth?: boolean;\n /**\n * Value for controlled button group\n */\n value?: string | number;\n /**\n * Callback when value changes (for controlled mode)\n */\n onChange?: (value: string | number) => void;\n}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n className,\n variant = \"attached\",\n orientation = \"horizontal\",\n size = \"medium\",\n isDisabled = false,\n isFullWidth = false,\n value,\n onChange,\n children,\n ...props\n },\n ref\n ) => {\n const childrenArray = React.Children.toArray(children);\n const isControlled = value !== undefined && onChange !== undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n buttonGroupVariants({\n variant,\n orientation,\n size,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n role=\"group\"\n {...props}\n >\n {childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n const isFirst = index === 0;\n const isLast = index === childrenArray.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n // Get value from child props for controlled mode\n const childValue = child.props.value;\n const isSelected = isControlled && childValue === value;\n\n // Build classes to apply border radius removal and borders\n let groupClasses = \"\";\n\n // Only apply connected styling for \"attached\" variant\n if (variant === \"attached\") {\n if (orientation === \"horizontal\") {\n if (isFirst) {\n groupClasses = \"rounded-r-none border-r-0\";\n } else if (isLast) {\n groupClasses = \"rounded-l-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-r-0\";\n }\n } else {\n // vertical\n if (isFirst) {\n groupClasses = \"rounded-b-none border-b-0\";\n } else if (isLast) {\n groupClasses = \"rounded-t-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-b-0\";\n }\n }\n }\n\n // Determine the variant to use\n const childVariant = child.props.variant;\n const hasExplicitVariant = childVariant !== undefined;\n\n // For controlled mode with explicit variant, maintain the variant\n // and add styling classes for selected state\n let finalVariant = childVariant;\n let selectedStateClasses = \"\";\n\n if (isControlled) {\n if (hasExplicitVariant) {\n // Keep the child's variant and add selected state styling\n if (isSelected && childVariant === \"tertiary\") {\n selectedStateClasses = \"bg-action-fill-primary-faded\";\n } else if (isSelected && childVariant === \"secondary\") {\n selectedStateClasses =\n \"bg-action-fill-primary-faded border-action-outline-primary-faded\";\n }\n } else {\n // No explicit variant: use primary for selected, secondary for unselected\n finalVariant = isSelected ? \"primary\" : \"secondary\";\n }\n }\n\n // Clone child and add our classes and handlers\n return React.cloneElement(child, {\n ...child.props,\n className: cn(\n child.props.className,\n groupClasses,\n isFullWidth && \"flex-1\",\n // For attached variant, ensure proper layering\n variant === \"attached\" && \"relative\",\n variant === \"attached\" && !isSelected && \"hover:z-10 focus:z-10\",\n variant === \"attached\" && isSelected && \"z-20\",\n // Apply selected state classes for explicit variants\n selectedStateClasses\n ),\n disabled: isDisabled || child.props.disabled,\n size: size || child.props.size,\n // If controlled and has value, handle click\n onClick:\n isControlled && childValue !== undefined\n ? (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n if (!isDisabled && !child.props.disabled) {\n onChange(childValue);\n }\n }\n : child.props.onClick,\n variant: finalVariant,\n } as any);\n })}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n\nexport { ButtonGroup, buttonGroupVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormFooterProps {\n /**\n * Helper text to display on the left side\n */\n helperText?: string;\n /**\n * Trailing text to display on the right side (e.g., character count)\n */\n trailingText?: string;\n /**\n * Validation state that affects styling and icon display\n */\n validationState?: \"default\" | \"positive\" | \"negative\";\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the footer is in a disabled state\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the helper text\n */\n helperTextClassName?: string;\n /**\n * Custom class name for the trailing text\n */\n trailingTextClassName?: string;\n}\n\nconst FormFooter = React.forwardRef<HTMLDivElement, FormFooterProps>(\n (\n {\n helperText,\n trailingText,\n validationState = \"default\",\n size = \"medium\",\n isDisabled = false,\n className,\n helperTextClassName,\n trailingTextClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1\",\n },\n medium: {\n textClassName: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-1\",\n },\n large: {\n textClassName: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-1.5\",\n },\n } as const;\n\n const config = sizeConfig[size];\n\n // Determine text color based on validation state and disabled state\n const getTextColor = () => {\n if (isDisabled) return \"text-surface-ink-neutral-disabled\";\n if (validationState === \"positive\")\n return \"text-feedback-ink-positive-intense\";\n if (validationState === \"negative\")\n return \"text-feedback-ink-negative-subtle\";\n if (validationState === \"default\")\n return \"text-surface-ink-neutral-subtle\";\n return \"text-surface-ink-neutral-subtle\";\n };\n const helperTextColorClass = getTextColor();\n const trailingTextColorClass = getTextColor();\n\n // Don't render anything if there's no content\n if (!helperText && !trailingText) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n {helperText && (\n <div className={cn(\"flex items-center\", config.gap)}>\n {validationState === \"positive\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-positive-intense shrink-0\"\n >\n <path\n d=\"M3 7L6 10L11 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n {validationState === \"negative\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-negative-subtle shrink-0\"\n >\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M7 4V7.5M7 10V9.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n <span\n className={cn(\n config.textClassName,\n helperTextColorClass,\n \"italic font-size-100 leading-100\",\n helperTextClassName\n )}\n >\n {helperText}\n </span>\n </div>\n )}\n\n {trailingText && (\n <span\n className={cn(\n config.textClassName,\n trailingTextColorClass,\n \"font-size-100 leading-100 shrink-0\",\n trailingTextClassName\n )}\n >\n {trailingText}\n </span>\n )}\n </div>\n );\n }\n);\n\nFormFooter.displayName = \"FormFooter\";\n\nexport { FormFooter };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\nimport { Icon } from \"../../lib/icons\";\n\nconst checkboxVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 transition-all cursor-pointer box-border\",\n {\n variants: {\n size: {\n small: \"w-[10px] h-[10px] rounded-small border-[1.5px]\",\n medium: \"w-[12px] h-[12px] rounded-small border-[1.5px]\",\n large: \"w-[16px] h-[16px] rounded-medium border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover focus:ring-2 ring-action-outline-negative-faded-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isIndeterminate: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"border-action-outline-neutral-faded hover:bg-action-fill-neutral-faded hover:border-action-outline-neutral-faded\",\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover border-action-fill-primary-default\",\n },\n // Checked or Indeterminate state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n // Indeterminate state - none validation\n {\n isIndeterminate: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default border-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover\",\n },\n // Indeterminate state - error validation (same as checked error)\n {\n isIndeterminate: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isIndeterminate: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the checkbox\n */\n label?: string;\n /**\n * Error text to display below the checkbox\n */\n errorText?: string;\n /**\n * Size of the checkbox\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the checkbox\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the checkbox is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the checkbox is in an indeterminate state\n */\n isIndeterminate?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isIndeterminate = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rippleTimeoutRef = React.useRef<number | null>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n // Set indeterminate property on the input element\n React.useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n };\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled && !showRipple) {\n // Clear any existing timeout\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n\n setShowRipple(true);\n rippleTimeoutRef.current = setTimeout(() => {\n setShowRipple(false);\n rippleTimeoutRef.current = null;\n }, 400); // Match animation duration (0.4s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n triggerRipple();\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n triggerRipple();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 10,\n },\n medium: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 12,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n iconSize: 14,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col px-2\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"checkbox\"\n aria-checked={isIndeterminate ? \"mixed\" : isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n checkboxVariants({\n size,\n validationState,\n isChecked: isChecked && !isIndeterminate,\n isIndeterminate,\n isDisabled,\n }),\n className\n )}\n >\n {/* Checkmark Icon */}\n {isChecked && !isIndeterminate && (\n <Icon\n name=\"tick\"\n size={config.iconSize}\n className=\"text-action-ink-on-primary-normal\"\n />\n )}\n\n {/* Indeterminate Icon */}\n {isIndeterminate && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-action-ink-on-primary-normal\"\n >\n <path\n d=\"M3 6H9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst counterVariants = cva(\n \"inline-flex items-center justify-center transition-colors\",\n {\n variants: {\n size: {\n small:\n \"text-body-xsmall-medium rounded-small px-1 py-0.5 min-w-[20px] h-[16px]\",\n medium:\n \"text-body-small-medium rounded-medium px-2 py-1 min-w-[24px] h-[20px]\",\n large:\n \"text-body-medium-medium rounded-medium px-2 py-1 min-w-[28px] h-[24px]\",\n },\n color: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n information: \"\",\n neutral: \"\",\n primary: \"\",\n },\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n },\n compoundVariants: [\n // Positive - Subtle\n {\n color: \"positive\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-positive-subtle text-feedback-ink-positive-intense\",\n },\n // Positive - Intense\n {\n color: \"positive\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-positive-intense text-action-ink-on-primary-normal\",\n },\n // Negative - Subtle\n {\n color: \"negative\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-negative-subtle text-feedback-ink-negative-subtle\",\n },\n // Negative - Intense\n {\n color: \"negative\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-negative-intense text-action-ink-on-primary-normal\",\n },\n // Notice - Subtle\n {\n color: \"notice\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-notice-subtle text-feedback-ink-notice-subtle\",\n },\n // Notice - Intense\n {\n color: \"notice\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-notice-intense text-action-ink-on-primary-normal\",\n },\n // Information - Subtle\n {\n color: \"information\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-info-subtle text-feedback-ink-info-subtle\",\n },\n // Information - Intense\n {\n color: \"information\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-info-intense text-action-ink-on-primary-normal\",\n },\n // Neutral - Subtle\n {\n color: \"neutral\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-neutral-subtle text-surface-ink-neutral-normal\",\n },\n // Neutral - Intense\n {\n color: \"neutral\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-neutral-intense text-action-ink-on-primary-normal\",\n },\n // Primary - Subtle\n {\n color: \"primary\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-primary-subtle text-surface-ink-primary-normal\",\n },\n // Primary - Intense\n {\n color: \"primary\",\n emphasis: \"intense\",\n class:\n \"bg-surface-fill-primary-intense text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n color: \"neutral\",\n emphasis: \"subtle\",\n },\n }\n);\n\ntype CounterVariantProps = VariantProps<typeof counterVariants>;\nexport type CounterSize = NonNullable<CounterVariantProps[\"size\"]>;\nexport type CounterColor = NonNullable<CounterVariantProps[\"color\"]>;\nexport type CounterEmphasis = NonNullable<CounterVariantProps[\"emphasis\"]>;\n\nexport interface CounterProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /**\n * The numerical value to display\n */\n value: number | string;\n /**\n * Maximum value to display before showing overflow indicator (e.g., \"99+\")\n */\n max?: number;\n /**\n * Custom class name for the counter\n */\n className?: string;\n /**\n * Size of the counter\n */\n size?: CounterSize;\n /**\n * Color variant of the counter\n */\n color?: CounterColor;\n /**\n * Visual emphasis level\n */\n emphasis?: CounterEmphasis;\n}\n\nconst Counter = React.forwardRef<HTMLSpanElement, CounterProps>(\n (\n {\n value,\n max,\n size = \"medium\",\n color = \"neutral\",\n emphasis = \"subtle\",\n className,\n ...props\n },\n ref\n ) => {\n // Handle max value logic\n const displayValue = React.useMemo(() => {\n if (max !== undefined && typeof value === \"number\" && value > max) {\n return `${max}+`;\n }\n return value;\n }, [value, max]);\n\n return (\n <span\n ref={ref}\n className={cn(\n counterVariants({\n size,\n color,\n emphasis,\n }),\n className\n )}\n {...props}\n >\n {displayValue}\n </span>\n );\n }\n);\n\nCounter.displayName = \"Counter\";\n\nexport { Counter, counterVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\n\nconst tooltipVariants = cva(\n \"fixed z-50 bg-popup-fill-intense text-action-ink-on-primary-normal rounded-medium border border-popup-outline-subtle flex flex-col p-4 rounded-xlarge min-w-[200px] max-w-[300px] transition-opacity duration-200\",\n {\n variants: {\n isVisible: {\n true: \"opacity-100 pointer-events-auto shadow-[0_4px_20px_rgba(0,0,0,0.15)]\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n isVisible: false,\n },\n }\n);\n\nconst tooltipArrowVariants = cva(\n \"absolute w-0 h-0 border-solid border-[6px] -translate-x-1/2\",\n {\n variants: {\n placement: {\n \"top-start\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n top: \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"top-end\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"bottom-start\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n bottom:\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n \"bottom-end\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n },\n },\n defaultVariants: {\n placement: \"top\",\n },\n }\n);\n\nexport interface TooltipProps {\n /**\n * The trigger element that the tooltip will attach to\n */\n children: React.ReactElement;\n /**\n * Heading text for the tooltip\n */\n heading?: string;\n /**\n * Description text for the tooltip\n */\n description: string;\n /**\n * Placement of the tooltip relative to the trigger\n */\n placement?:\n | \"top-start\"\n | \"top\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"bottom-end\";\n /**\n * Whether to show the arrow/anchor\n */\n showArrow?: boolean;\n /**\n * Custom class name for the tooltip container\n */\n className?: string;\n /**\n * Delay before showing tooltip (in milliseconds)\n */\n delay?: number;\n /**\n * Whether the tooltip is disabled\n */\n disabled?: boolean;\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n heading,\n description,\n placement = \"top\",\n showArrow = true,\n className,\n delay = 200,\n disabled = false,\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const [arrowPosition, setArrowPosition] = React.useState({ left: 0 });\n const [actualPlacement, setActualPlacement] = React.useState<\n \"top-start\" | \"top\" | \"top-end\" | \"bottom-start\" | \"bottom\" | \"bottom-end\"\n >(placement);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n\n const calculatePosition = React.useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const gap = 8; // 8px gap between trigger and tooltip\n const arrowSize = 6; // Size of the arrow\n const viewportPadding = 8; // Minimum padding from viewport edges\n\n let top = 0;\n let left = 0;\n let currentPlacement = placement;\n\n // Calculate initial position based on placement\n switch (placement) {\n case \"top-start\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.left;\n break;\n case \"top\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"top-end\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.left;\n break;\n case \"bottom\":\n top = triggerRect.bottom + gap + arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n }\n\n // Get viewport dimensions\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Adjust horizontal position to keep tooltip within viewport\n if (left < viewportPadding) {\n // Tooltip would overflow on the left\n left = viewportPadding;\n } else if (left + tooltipRect.width > viewportWidth - viewportPadding) {\n // Tooltip would overflow on the right\n left = viewportWidth - tooltipRect.width - viewportPadding;\n }\n\n // Adjust vertical position to keep tooltip within viewport\n if (top < viewportPadding) {\n // Tooltip would overflow at the top\n // Try to flip to bottom if there's more space there\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n if (spaceBelow > spaceAbove) {\n // Flip to bottom\n top = triggerRect.bottom + gap + arrowSize;\n // Update placement to reflect the flip\n if (placement === \"top-start\") currentPlacement = \"bottom-start\";\n else if (placement === \"top\") currentPlacement = \"bottom\";\n else if (placement === \"top-end\") currentPlacement = \"bottom-end\";\n } else {\n // Keep at top but adjust to stay in viewport\n top = viewportPadding;\n }\n } else if (top + tooltipRect.height > viewportHeight - viewportPadding) {\n // Tooltip would overflow at the bottom\n // Try to flip to top if there's more space there\n const spaceAbove = triggerRect.top;\n const spaceBelow = viewportHeight - triggerRect.bottom;\n\n if (spaceAbove > spaceBelow) {\n // Flip to top\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n // Update placement to reflect the flip\n if (placement === \"bottom-start\") currentPlacement = \"top-start\";\n else if (placement === \"bottom\") currentPlacement = \"top\";\n else if (placement === \"bottom-end\") currentPlacement = \"top-end\";\n } else {\n // Keep at bottom but adjust to stay in viewport\n top = viewportHeight - tooltipRect.height - viewportPadding;\n }\n }\n\n // Calculate arrow position relative to trigger\n // The arrow should point to the center of the trigger element\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const tooltipLeft = left;\n const arrowLeft = triggerCenterX - tooltipLeft;\n\n // Clamp arrow position to stay within tooltip bounds (with padding)\n const arrowPadding = 16; // Minimum distance from tooltip edges\n const clampedArrowLeft = Math.max(\n arrowPadding,\n Math.min(arrowLeft, tooltipRect.width - arrowPadding)\n );\n\n setPosition({ top, left });\n setArrowPosition({ left: clampedArrowLeft });\n setActualPlacement(currentPlacement);\n }, [placement]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n const handleFocus = () => {\n if (disabled) return;\n setIsVisible(true);\n };\n\n const handleBlur = () => {\n setIsVisible(false);\n };\n\n React.useEffect(() => {\n if (isVisible) {\n calculatePosition();\n window.addEventListener(\"scroll\", calculatePosition, true);\n window.addEventListener(\"resize\", calculatePosition);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", calculatePosition, true);\n window.removeEventListener(\"resize\", calculatePosition);\n };\n }, [isVisible, calculatePosition]);\n\n React.useEffect(() => {\n // Reset actualPlacement when placement prop changes\n setActualPlacement(placement);\n }, [placement]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n // Merge refs function\n const mergeRefs = (...refs: any[]) => {\n return (node: any) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as any).current = node;\n }\n });\n };\n };\n\n // Clone the child element and add event handlers\n const trigger = React.cloneElement(children, {\n ref: mergeRefs(triggerRef, (children as any).ref),\n onMouseEnter: (e: React.MouseEvent) => {\n handleMouseEnter();\n children.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleMouseLeave();\n children.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleFocus();\n children.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleBlur();\n children.props.onBlur?.(e);\n },\n \"aria-describedby\": isVisible ? \"tooltip-content\" : undefined,\n });\n\n return (\n <>\n {trigger}\n\n <div\n ref={mergeRefs(tooltipRef, ref)}\n id=\"tooltip-content\"\n role=\"tooltip\"\n className={cn(tooltipVariants({ isVisible }), className)}\n style={{\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n aria-hidden={!isVisible}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {showArrow && (\n <div\n className={cn(\n tooltipArrowVariants({ placement: actualPlacement })\n )}\n style={{\n left: `${arrowPosition.left}px`,\n }}\n />\n )}\n\n <div className=\"relative flex flex-col gap-2\">\n {heading && (\n <Text\n variant=\"body\"\n size=\"medium\"\n weight=\"semibold\"\n color=\"onPrimary\"\n >\n {heading}\n </Text>\n )}\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"onPrimary\"\n // className=\"flex gap-3\"\n >\n {description}\n </Text>\n </div>\n </div>\n </>\n );\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip, tooltipVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Link } from \"../Link\";\nimport { Icon } from \"../../lib\";\n\nexport interface FormHeaderProps {\n /**\n * The label text to display\n */\n label: string;\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether to show \"(optional)\" text after the label\n */\n isOptional?: boolean;\n /**\n * Whether to show \"*\" (required indicator) after the label\n */\n isRequired?: boolean;\n /**\n * Tooltip heading text\n */\n infoHeading?: string;\n /**\n * Tooltip description text - if provided, shows the info icon\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n * If provided, this will be rendered instead of the default Link with linkText\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text to display on the right side\n */\n linkText?: string;\n /**\n * Link href or onClick handler\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n /**\n * Leading icon for the link\n */\n linkLeadingIcon?: React.ReactNode;\n /**\n * Trailing icon for the link\n */\n linkTrailingIcon?: React.ReactNode;\n /**\n * HTML for attribute to associate with form input\n */\n htmlFor?: string;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the link\n */\n linkClassName?: string;\n}\n\nconst FormHeader = React.forwardRef<HTMLDivElement, FormHeaderProps>(\n (\n {\n label,\n size = \"medium\",\n isOptional = false,\n isRequired = false,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n linkLeadingIcon,\n linkTrailingIcon,\n htmlFor,\n className,\n labelClassName,\n linkClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-body-xsmall-semibold\",\n textClassNameRegular: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textClassName: \"text-body-small-semibold\",\n textClassNameRegular: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textClassName: \"text-body-medium-semibold\",\n textClassNameRegular: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-2.5\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n <div className={cn(\"flex items-center\", config.gap)}>\n <label\n htmlFor={htmlFor}\n className={cn(\"flex items-center\", labelClassName)}\n >\n <span\n className={cn(\n config.textClassName,\n \"text-surface-neutral-subtle\"\n )}\n >\n {label}\n </span>\n {isRequired && (\n <span\n className={cn(\n config.textClassName,\n \"text-color-negative ml-0.5\"\n )}\n >\n *\n </span>\n )}\n {isOptional && (\n <span\n className={cn(\n config.textClassNameRegular,\n \"text-surface-neutral-muted italic ml-1\"\n )}\n >\n (optional)\n </span>\n )}\n </label>\n {infoDescription && (\n <Tooltip description={infoDescription} heading={infoHeading}>\n <Icon name=\"info\" size={config.iconSize} />\n </Tooltip>\n )}\n </div>\n\n {LinkComponent\n ? LinkComponent\n : linkText && (\n <Link\n href={linkHref}\n onClick={onLinkClick}\n type=\"action\"\n color=\"primary\"\n size={size === \"large\" ? \"small\" : \"xsmall\"}\n leadingIcon={linkLeadingIcon}\n trailingIcon={linkTrailingIcon}\n >\n {linkText}\n </Link>\n )}\n </div>\n );\n }\n);\n\nFormHeader.displayName = \"FormHeader\";\n\nexport { FormHeader };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Calendar as CalendarIcon } from \"lucide-react\";\nimport Calendar from \"react-calendar\";\n// @ts-ignore - CSS import doesn't have type definitions\nimport \"react-calendar/dist/Calendar.css\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\n// Type for react-calendar's Value\n// ValuePiece = Date | null\n// Value = ValuePiece | Range<ValuePiece> = Date | null | [Date | null, Date | null]\ntype CalendarValue = Date | null | [Date | null, Date | null];\n\nconst datePickerVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface DatePickerProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n > {\n /**\n * Selected date (controlled)\n */\n value?: Date | string | null;\n /**\n * Default selected date (uncontrolled)\n */\n defaultValue?: Date | string | null;\n /**\n * Callback when date changes\n */\n onChange?: (date: Date | null) => void;\n /**\n * Placeholder text when no date is selected\n */\n placeholder?: string;\n /**\n * Label for the date picker\n */\n label?: string;\n /**\n * Helper text below the date picker\n */\n helperText?: string;\n /**\n * Error text (overrides helperText when present)\n */\n errorText?: string;\n /**\n * Success text (overrides helperText when present)\n */\n successText?: string;\n /**\n * Validation state for the date picker\n */\n validationState?: \"none\" | \"positive\" | \"negative\";\n /**\n * Whether the date picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the date picker is required\n */\n isRequired?: boolean;\n /**\n * Whether the date picker is optional\n */\n isOptional?: boolean;\n /**\n * Size of the date picker\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Show clear button when value is selected\n */\n showClearButton?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom class for the container\n */\n containerClassName?: string;\n /**\n * Custom class for the label\n */\n labelClassName?: string;\n /**\n * Custom class for the trigger button\n */\n triggerClassName?: string;\n /**\n * Custom class for the calendar popup\n */\n calendarClassName?: string;\n /**\n * Minimum selectable date\n */\n minDate?: Date | string;\n /**\n * Maximum selectable date\n */\n maxDate?: Date | string;\n /**\n * Date format function\n */\n formatDate?: (date: Date) => string;\n /**\n * Info heading for tooltip\n */\n infoHeading?: string;\n /**\n * Info description for tooltip\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text\n */\n linkText?: string;\n /**\n * Link href\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\n// Helper functions\nconst parseDate = (date: Date | string | null | undefined): Date | null => {\n if (!date) return null;\n if (date instanceof Date) return date;\n if (typeof date === \"string\") {\n const parsed = new Date(date);\n return isNaN(parsed.getTime()) ? null : parsed;\n }\n return null;\n};\n\nconst formatDateDefault = (date: Date): string => {\n return date.toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n};\n\nexport const DatePicker = React.forwardRef<HTMLDivElement, DatePickerProps>(\n (\n {\n className,\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select a date\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n size = \"medium\",\n showClearButton = false,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n calendarClassName,\n minDate,\n maxDate,\n formatDate = formatDateDefault,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] =\n React.useState<Date | null>(parseDate(defaultValue));\n const [isOpen, setIsOpen] = React.useState(false);\n const datePickerRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n\n const value =\n controlledValue !== undefined\n ? parseDate(controlledValue)\n : uncontrolledValue;\n\n const hasValue = value !== null;\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleCalendarChange = (\n value: CalendarValue,\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n // react-calendar can return Date, Date[], or null\n // We only support single date selection, so we take the first date if it's an array\n if (!value) {\n if (controlledValue === undefined) {\n setUncontrolledValue(null);\n }\n onChange?.(null);\n setIsOpen(false);\n return;\n }\n\n const selectedDate = Array.isArray(value) ? value[0] : value;\n\n // Ensure we have a valid Date object\n if (selectedDate instanceof Date) {\n if (controlledValue === undefined) {\n setUncontrolledValue(selectedDate);\n }\n onChange?.(selectedDate);\n setIsOpen(false);\n }\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n if (controlledValue === undefined) {\n setUncontrolledValue(null);\n }\n onChange?.(null);\n }\n };\n\n const updateDropdownPlacement = React.useCallback(() => {\n if (typeof window === \"undefined\") return;\n const trigger = datePickerRef.current;\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n const calendarHeight = calendarRef.current\n ? calendarRef.current.offsetHeight\n : 0;\n\n if (calendarHeight === 0) {\n setDropdownPlacement(spaceBelow >= spaceAbove ? \"bottom\" : \"top\");\n return;\n }\n\n if (spaceBelow >= calendarHeight || spaceBelow >= spaceAbove) {\n setDropdownPlacement(\"bottom\");\n } else {\n setDropdownPlacement(\"top\");\n }\n }, []);\n\n React.useEffect(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n let rafId = requestAnimationFrame(updateDropdownPlacement);\n\n const handleUpdate = () => updateDropdownPlacement();\n window.addEventListener(\"resize\", handleUpdate);\n window.addEventListener(\"scroll\", handleUpdate, true);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener(\"resize\", handleUpdate);\n window.removeEventListener(\"scroll\", handleUpdate, true);\n };\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n if (isOpen) {\n updateDropdownPlacement();\n }\n }, [isOpen, updateDropdownPlacement]);\n\n // Close calendar when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n datePickerRef.current &&\n !datePickerRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n const minDateParsed = parseDate(minDate);\n const maxDateParsed = parseDate(maxDate);\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={datePickerRef}\n className={cn(\n datePickerVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled ? toggleOpen : undefined}\n role=\"button\"\n aria-haspopup=\"dialog\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n <CalendarIcon\n className={cn(\n \"shrink-0 w-4 h-4\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n />\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !hasValue && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {hasValue && value ? formatDate(value) : placeholder}\n </span>\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {/* Calendar Popup */}\n {isOpen && !isDisabled && (\n <div\n ref={calendarRef}\n className={cn(\n \"absolute z-50 left-0 bg-surface-fill-neutral-intense rounded-large shadow-lg p-4\",\n dropdownPlacement === \"bottom\"\n ? \"top-full mt-1\"\n : \"bottom-full mb-1\",\n calendarClassName\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"react-calendar-wrapper w-fit\">\n <Calendar\n onChange={handleCalendarChange}\n value={value ?? null}\n minDate={minDateParsed ?? undefined}\n maxDate={maxDateParsed ?? undefined}\n locale=\"en-US\"\n formatShortWeekday={(locale, date) => {\n const weekdayNames = [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\",\n ];\n return weekdayNames[date.getDay()];\n }}\n />\n </div>\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nDatePicker.displayName = \"DatePicker\";\n\nexport { datePickerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst dividerVariants = cva(\"\", {\n variants: {\n orientation: {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n },\n thickness: {\n thinner: \"\",\n thin: \"\",\n thick: \"\",\n thicker: \"\",\n },\n lineStyle: {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n },\n variant: {\n normal: \"\",\n subtle: \"\",\n muted: \"\",\n },\n },\n compoundVariants: [\n // Horizontal orientation with thickness\n {\n orientation: \"horizontal\",\n thickness: \"thinner\",\n class: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thin\",\n class: \"border-t-[1px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thick\",\n class: \"border-t-[2px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thicker\",\n class: \"border-t-[3px]\",\n },\n // Vertical orientation with thickness\n {\n orientation: \"vertical\",\n thickness: \"thinner\",\n class: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thin\",\n class: \"border-l-[1px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thick\",\n class: \"border-l-[2px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thicker\",\n class: \"border-l-[3px]\",\n },\n // Normal variant colors\n {\n variant: \"normal\",\n class: \"border-surface-outline-neutral-normal\",\n },\n // Subtle variant colors\n {\n variant: \"subtle\",\n class: \"border-surface-outline-neutral-subtle\",\n },\n // Muted variant colors\n {\n variant: \"muted\",\n class: \"border-surface-outline-neutral-muted\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n thickness: \"thin\",\n lineStyle: \"solid\",\n variant: \"normal\",\n },\n});\n\nexport interface DividerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dividerVariants> {\n /**\n * The orientation of the divider\n * @default \"horizontal\"\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * The thickness of the divider\n * @default \"thin\"\n */\n thickness?: \"thinner\" | \"thin\" | \"thick\" | \"thicker\";\n /**\n * The style of the divider line\n * @default \"solid\"\n */\n lineStyle?: \"solid\" | \"dashed\";\n /**\n * The color variant of the divider\n * @default \"normal\"\n */\n variant?: \"normal\" | \"subtle\" | \"muted\";\n /**\n * Custom class name for the divider\n */\n className?: string;\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n thickness = \"thin\",\n lineStyle = \"solid\",\n variant = \"normal\",\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n dividerVariants({ orientation, thickness, lineStyle, variant }),\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = \"Divider\";\n\nexport { Divider, dividerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\n\nconst listItemVariants = cva(\n \"flex items-start gap-3 p-3 rounded-medium transition-colors cursor-pointer\",\n {\n variants: {\n variant: {\n default: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded\n focus:ring-2\n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n bordered:\n \"border border-action-outline-primary-faded hover:bg-surface-fill-primary-subtle\",\n primary: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded \n focus:ring-2 \n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n negative: `hover:bg-action-fill-negative-faded \n focus:bg-action-fill-negative-faded \n focus:ring-2 ring-action-outline-negative-faded-hover\n border border-transparent\n `,\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n isSelected: {\n true: \"bg-action-fill-primary-faded border-action-outline-primary-faded\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n isDisabled: false,\n isSelected: false,\n },\n }\n);\n\nexport interface ListItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /**\n * Type of list item - determines if checkbox is shown\n */\n type?: \"single\" | \"multiple\";\n /**\n * Leading icon to display on the left\n */\n leadingIcon?: React.ReactNode;\n /**\n * Title text (required)\n */\n title: string;\n /**\n * Description text (optional)\n */\n description?: string;\n /**\n * Trailing icon to display on the right\n */\n trailingIcon?: React.ReactNode;\n /**\n * Whether to show the default chevron trailing icon\n */\n showChevron?: boolean;\n /**\n * Visual variant of the list item\n */\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n /**\n * Whether the list item is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the list item is selected (for multiple type)\n */\n isSelected?: boolean;\n /**\n * Callback when the list item selection changes\n */\n onSelectionChange?: (selected: boolean) => void;\n /**\n * Size of the checkbox (when type is multiple)\n */\n checkboxSize?: \"small\" | \"medium\" | \"large\";\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the content area\n */\n contentClassName?: string;\n}\n\nconst ChevronRightIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M7.5 15L12.5 10L7.5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ListItem = React.forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n className,\n type = \"single\",\n leadingIcon,\n title,\n description,\n trailingIcon,\n showChevron = true,\n variant = \"default\",\n isDisabled = false,\n isSelected = false,\n onSelectionChange,\n checkboxSize = \"small\",\n containerClassName,\n contentClassName,\n onClick,\n ...props\n },\n ref\n ) => {\n const [internalSelected, setInternalSelected] = React.useState(isSelected);\n\n // Sync internal state with prop\n React.useEffect(() => {\n setInternalSelected(isSelected);\n }, [isSelected]);\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n\n if (type === \"multiple\") {\n const newSelected = !internalSelected;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n }\n\n onClick?.(e);\n };\n\n const handleCheckboxChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n const newSelected = e.target.checked;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n isDisabled,\n isSelected: type === \"multiple\" ? internalSelected : false,\n }),\n containerClassName\n )}\n onClick={handleClick}\n role={type === \"multiple\" ? \"checkbox\" : \"button\"}\n aria-checked={type === \"multiple\" ? internalSelected : undefined}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n {...props}\n >\n {/* Checkbox for multiple type */}\n {type === \"multiple\" && (\n <Checkbox\n checked={internalSelected}\n onChange={handleCheckboxChange}\n isDisabled={isDisabled}\n size={checkboxSize}\n className=\"shrink-0 mt-0.5\"\n />\n )}\n\n {/* Leading Icon */}\n {leadingIcon && (\n <div\n className={cn(\n `shrink-0 flex items-center justify-center mt-0.5`,\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-subtle\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {leadingIcon}\n </div>\n )}\n\n {/* Content */}\n <div\n className={cn(\n \"flex-1 min-w-0 flex flex-col justify-center\",\n contentClassName\n )}\n >\n <div\n className={cn(\n \"text-body-medium-regular truncate\",\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-normal\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {title}\n </div>\n {description && (\n <div\n className={cn(\n \"text-body-small-regular text-surface-ink-neutral-muted mt-0.5 line-clamp-2\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {description}\n </div>\n )}\n </div>\n\n {/* Trailing Icon */}\n {(trailingIcon || showChevron) && (\n <div className=\"shrink-0 self-center text-action-ink-neutral-subtle\">\n {trailingIcon || <ChevronRightIcon />}\n </div>\n )}\n </div>\n );\n }\n);\n\nListItem.displayName = \"ListItem\";\n\nexport { ListItem, listItemVariants };\n","import * as React from \"react\";\nimport { Search, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { ListItem } from \"../ListItem\";\nimport { Button } from \"../Button\";\nimport { Divider } from \"../Divider\";\nimport { Text } from \"../Text\";\nimport { Link } from \"../Link\";\n\nexport interface DropdownMenuItem {\n value: string | number;\n label: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n onClick?: () => void;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nexport interface DropdownMenuProps {\n /**\n * Items to display in the dropdown\n */\n items?: DropdownMenuItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show the footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when menu should close\n */\n onClose?: () => void;\n /**\n * Focused item index (for keyboard navigation)\n */\n focusedIndex?: number;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Width of the dropdown menu\n */\n width?: \"auto\" | \"full\" | string;\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n footerLayout = \"horizontal\",\n onClose,\n focusedIndex = -1,\n className,\n width = \"auto\",\n },\n ref\n ) => {\n const renderContent = () => {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 px-6\">\n <Loader2 className=\"w-12 h-12 text-action-ink-primary-normal mb-4 animate-spin\" />\n </div>\n );\n }\n\n if (customContent) {\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-body-small-medium text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"px-1\">{customContent}</div>\n </div>\n );\n }\n\n if (isEmpty || items.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center py-8 px-6 text-center\">\n {emptyIcon || (\n <Search className=\"w-12 h-12 text-surface-ink-neutral-muted mb-4\" />\n )}\n <Text\n as=\"h3\"\n variant=\"body\"\n size=\"small\"\n weight=\"semibold\"\n className=\"text-surface-ink-neutral-normal mb-2\"\n >\n {emptyTitle}\n </Text>\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n className=\"text-surface-ink-neutral-muted mb-3\"\n >\n {emptyDescription}\n </Text>\n {emptyLinkText && (\n <Link\n type=\"anchor\"\n color=\"primary\"\n size=\"small\"\n onClick={onEmptyLinkClick}\n >\n {emptyLinkText}\n </Link>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"flex flex-col gap-1\">\n {items.map((item, index) => (\n <ListItem\n key={item.value}\n title={item.label}\n description={item.description}\n leadingIcon={item.leadingIcon}\n trailingIcon={item.trailingIcon}\n showChevron={showChevron}\n isDisabled={item.isDisabled}\n isSelected={index === focusedIndex}\n variant={item.variant}\n onClick={() => {\n item.onClick?.();\n onClose?.();\n }}\n containerClassName={cn(\n index === focusedIndex && \"bg-action-fill-primary-faded\"\n )}\n />\n ))}\n </div>\n </div>\n );\n };\n\n const widthClass =\n width === \"full\" ? \"w-full\" : width === \"auto\" ? \"w-auto\" : \"\";\n const footerVisible = showFooter ?? !disableFooter;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-white rounded-large overflow-hidden\",\n widthClass,\n className\n )}\n style={{\n boxShadow:\n \"0 1px 2px rgba(25, 25, 30, 0.1), 0 2px 6px rgba(25, 25, 30, 0.06)\",\n ...(width !== \"full\" && width !== \"auto\" ? { width } : {}),\n }}\n >\n {/* Content */}\n {renderContent()}\n\n {/* Footer */}\n {footerVisible && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex gap-3 p-4\",\n footerLayout === \"vertical\"\n ? \"flex-col\"\n : \"items-center flex-row\"\n )}\n >\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onSecondaryClick}\n >\n {secondaryButtonText}\n </Button>\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onPrimaryClick}\n >\n {primaryButtonText}\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nDropdownMenu.displayName = \"DropdownMenu\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"./DropdownMenu\";\n\nconst dropdownVariants = cva(\n \"bg-surface-fill-primary-normal border border-surface-outline-neutral-subtle rounded-large\",\n {\n variants: {\n size: {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport type DropdownItem = DropdownMenuItem;\n\nexport interface DropdownProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Trigger element that opens the dropdown\n */\n trigger?: React.ReactNode;\n /**\n * Items to display in the dropdown\n */\n items?: DropdownItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether dropdown is open (controlled)\n */\n open?: boolean;\n /**\n * Default open state (uncontrolled)\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Custom class for dropdown container\n */\n containerClassName?: string;\n /**\n * Custom class for dropdown menu\n */\n menuClassName?: string;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n}\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n className,\n trigger,\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n size = \"medium\",\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n containerClassName,\n menuClassName,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n ...props\n },\n ref\n ) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isOpen =\n controlledOpen !== undefined ? controlledOpen : uncontrolledOpen;\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n const handleOpenChange = (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n const sizeMap = {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n };\n\n return (\n <div\n ref={dropdownRef}\n className={cn(\"relative inline-block\", containerClassName)}\n {...props}\n >\n {/* Trigger */}\n {trigger && (\n <div onClick={toggleOpen} className=\"cursor-pointer\">\n {trigger}\n </div>\n )}\n\n {/* Dropdown Menu */}\n {isOpen && (\n <DropdownMenu\n ref={ref}\n items={items}\n customContent={customContent}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={isEmpty}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={showFooter}\n onClose={() => handleOpenChange(false)}\n className={cn(\"absolute z-50 mt-2\", menuClassName, className)}\n width={sizeMap[size]}\n />\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport { dropdownVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\n\nexport interface ModalProps {\n /**\n * Whether the modal is open\n */\n isOpen: boolean;\n /**\n * Callback when the modal should close\n */\n onClose?: () => void;\n /**\n * Modal title - optional\n */\n title?: string;\n /**\n * Modal description/subtitle - optional\n */\n description?: string;\n /**\n * Modal footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Modal body content\n */\n children: React.ReactNode;\n /**\n * Size variant\n */\n size?: \"small\" | \"medium\" | \"large\" | \"xlarge\";\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Whether clicking the overlay closes the modal\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the modal\n */\n closeOnEscape?: boolean;\n /**\n * Custom class name for the modal container\n */\n className?: string;\n /**\n * Custom class name for the modal content\n */\n contentClassName?: string;\n /**\n * Custom class name for the header\n */\n headerClassName?: string;\n /**\n * Custom class name for the body\n */\n bodyClassName?: string;\n /**\n * Custom class name for the footer\n */\n footerClassName?: string;\n /**\n * Custom class name for the overlay\n */\n overlayClassName?: string;\n /**\n * ARIA label for accessibility\n */\n ariaLabel?: string;\n /**\n * ARIA description for accessibility\n */\n ariaDescribedBy?: string;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n isOpen,\n onClose,\n title,\n description,\n footer,\n children,\n size = \"medium\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n contentClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n overlayClassName,\n ariaLabel,\n ariaDescribedBy,\n },\n ref\n ) => {\n const modalRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || modalRef;\n\n // Size configurations\n const sizeConfig = {\n small: \"max-w-sm\",\n medium: \"max-w-md\",\n large: \"max-w-lg\",\n xlarge: \"max-w-2xl\",\n };\n\n // Handle escape key\n React.useEffect(() => {\n if (!isOpen || !closeOnEscape || !onClose) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when modal is open\n React.useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget && onClose) {\n onClose();\n }\n };\n\n // Don't render if not open\n if (!isOpen) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Modal Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative w-full bg-white rounded-large shadow-xl transition-all\",\n \"flex flex-col max-h-[90vh]\",\n sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4 px-6 pt-6\",\n !description && \"pb-4\",\n description && \"pb-2\",\n headerClassName\n )}\n >\n <div className=\"flex-1\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"subtle\"\n className=\"mt-1\"\n >\n {description}\n </Text>\n )}\n </div>\n\n {showCloseButton && onClose && (\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n className=\"shrink-0\"\n />\n )}\n </div>\n )}\n\n {/* Header with close button only (no title/description) */}\n {!hasHeader && showCloseButton && onClose && (\n <div className=\"absolute top-4 right-4 z-10\">\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto px-6\",\n hasHeader ? \"py-4\" : \"pt-6 pb-4\",\n !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex items-center justify-end gap-3 px-6 py-4\",\n footerClassName\n )}\n >\n {footer}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nModal.displayName = \"Modal\";\n\nexport { Modal };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nexport interface SelectOption {\n value: string | number;\n label?: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nconst selectVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface SelectProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"prefix\"> {\n /**\n * Options to display in the select dropdown\n */\n options?: SelectOption[];\n /**\n * Selected value (controlled)\n */\n value?: string | number;\n /**\n * Default selected value (uncontrolled)\n */\n defaultValue?: string | number;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string | number, option: SelectOption) => void;\n /**\n * Placeholder text when no value is selected\n */\n placeholder?: string;\n /**\n * Label for the select\n */\n label?: string;\n /**\n * Helper text below the select\n */\n helperText?: string;\n /**\n * Error text (overrides helperText when present)\n */\n errorText?: string;\n /**\n * Success text (overrides helperText when present)\n */\n successText?: string;\n /**\n * Validation state for the select\n */\n validationState?: \"none\" | \"positive\" | \"negative\";\n /**\n * Whether the select is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the select is required\n */\n isRequired?: boolean;\n /**\n * Whether the select is optional\n */\n isOptional?: boolean;\n /**\n * Whether the select is in loading state\n */\n isLoading?: boolean;\n /**\n * Size of the select\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Prefix element (icon or text)\n */\n prefix?: React.ReactNode;\n /**\n * Suffix element (icon or text)\n */\n suffix?: React.ReactNode;\n /**\n * Show clear button when value is selected\n */\n showClearButton?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom class for the container\n */\n containerClassName?: string;\n /**\n * Custom class for the label\n */\n labelClassName?: string;\n /**\n * Custom class for the trigger button\n */\n triggerClassName?: string;\n /**\n * Custom class for the dropdown menu\n */\n menuClassName?: string;\n /**\n * Width of the dropdown menu\n */\n menuWidth?: \"auto\" | \"full\" | string;\n /**\n * Section heading for the dropdown\n */\n sectionHeading?: string;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Show search icon in empty state\n */\n emptyIcon?: React.ReactNode;\n /**\n * Info heading for tooltip\n */\n infoHeading?: string;\n /**\n * Info description for tooltip\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n * If provided, this will be rendered instead of the default Link with linkText\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text\n */\n linkText?: string;\n /**\n * Link href\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n isLoading = false,\n size = \"medium\",\n prefix,\n suffix,\n showClearButton = false,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n menuClassName,\n menuWidth = \"full\",\n sectionHeading,\n emptyTitle = \"No options available\",\n emptyDescription = \"There are no options to select from.\",\n emptyIcon,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\n string | number | undefined\n >(defaultValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n const selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Find the selected option\n const selectedOption = options.find((opt) => opt.value === value);\n const hasValue = value !== undefined && value !== \"\";\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled && !isLoading) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleSelect = (option: SelectOption) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(option.value);\n }\n onChange?.(option.value, option);\n setIsOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n if (controlledValue === undefined) {\n setUncontrolledValue(undefined);\n }\n onChange?.(\"\", {} as SelectOption);\n }\n };\n\n const updateDropdownPlacement = React.useCallback(() => {\n if (typeof window === \"undefined\") return;\n const trigger = selectRef.current;\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n const dropdownHeight = dropdownContainerRef.current\n ? dropdownContainerRef.current.offsetHeight\n : 0;\n\n if (dropdownHeight === 0) {\n setDropdownPlacement(spaceBelow >= spaceAbove ? \"bottom\" : \"top\");\n return;\n }\n\n if (spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove) {\n setDropdownPlacement(\"bottom\");\n } else {\n setDropdownPlacement(\"top\");\n }\n }, []);\n\n const attachDropdownListeners = React.useCallback(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n let rafId = requestAnimationFrame(updateDropdownPlacement);\n\n const handleUpdate = () => updateDropdownPlacement();\n window.addEventListener(\"resize\", handleUpdate);\n window.addEventListener(\"scroll\", handleUpdate, true);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener(\"resize\", handleUpdate);\n window.removeEventListener(\"scroll\", handleUpdate, true);\n };\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n const detach = attachDropdownListeners();\n return () => {\n detach?.();\n };\n }, [attachDropdownListeners]);\n\n React.useEffect(() => {\n if (isOpen) {\n updateDropdownPlacement();\n }\n }, [isOpen, options.length, updateDropdownPlacement]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n // Handle keyboard navigation\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isDisabled || isLoading) return;\n\n if (!isOpen && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n setIsOpen(true);\n return;\n }\n\n if (isOpen) {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const currentIndex = options.findIndex(\n (opt) => opt.value === value\n );\n const nextIndex =\n event.key === \"ArrowDown\"\n ? Math.min(currentIndex + 1, options.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (options[nextIndex] && !options[nextIndex].isDisabled) {\n handleSelect(options[nextIndex]);\n }\n }\n }\n };\n\n if (selectRef.current) {\n selectRef.current.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n selectRef.current?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }\n }, [isOpen, value, options, isDisabled, isLoading]);\n\n // Transform options to dropdown menu items\n const menuItems: DropdownMenuItem[] = options.map((option) => ({\n value: option.value,\n label: option.label ?? String(option.value),\n description: option.description,\n leadingIcon: option.leadingIcon,\n trailingIcon: option.trailingIcon,\n isDisabled: option.isDisabled,\n variant: option.variant,\n onClick: () => handleSelect(option),\n }));\n\n const widthStyle =\n menuWidth === \"full\" ? \"100%\" : menuWidth === \"auto\" ? \"auto\" : menuWidth;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={selectRef}\n className={cn(\n selectVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled && !isLoading ? toggleOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {isLoading ? \"Loading...\" : selectedOption?.label || placeholder}\n </span>\n\n {showClearButton && hasValue && !isDisabled && !isLoading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && !showClearButton && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n\n <ChevronDown\n className={cn(\n \"shrink-0 w-4 h-4 transition-transform\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\",\n isOpen && \"transform rotate-180\"\n )}\n />\n\n {/* Dropdown Menu */}\n {isOpen && !isDisabled && !isLoading && (\n <div\n ref={dropdownContainerRef}\n className={cn(\n \"absolute z-50 left-0 right-0\",\n dropdownPlacement === \"bottom\"\n ? \"top-full mt-1\"\n : \"bottom-full mb-1\"\n )}\n >\n <DropdownMenu\n ref={ref}\n items={menuItems}\n sectionHeading={sectionHeading}\n isEmpty={options.length === 0}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyIcon={emptyIcon}\n disableFooter={true}\n onClose={() => handleOpenChange(false)}\n className={menuClassName}\n width={widthStyle}\n />\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport { selectVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Select, type SelectOption } from \"../Select\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\n\nconst paginationVariants = cva(\n \"flex items-center gap-4 font-display text-body-medium-medium\",\n {\n variants: {\n size: {\n small: \"text-xs gap-2\",\n medium: \"text-sm gap-4\",\n large: \"text-base gap-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Current page number (1-indexed)\n */\n currentPage?: number;\n /**\n * Total number of pages\n */\n totalPages: number;\n /**\n * Rows per page value\n */\n rowsPerPage?: number;\n /**\n * Available options for rows per page\n */\n rowsPerPageOptions?: number[];\n /**\n * Show rows per page selector\n */\n showRowsPerPage?: boolean;\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n /**\n * Callback when rows per page changes\n */\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n /**\n * Size of the pagination controls\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Disable the pagination controls\n */\n isDisabled?: boolean;\n /**\n * Custom text for \"Row per page\" label\n */\n rowsPerPageLabel?: string;\n /**\n * Custom text for \"of\" label\n */\n ofLabel?: string;\n /**\n * Custom text for \"Prev\" button\n */\n prevLabel?: string;\n /**\n * Custom text for \"Next\" button\n */\n nextLabel?: string;\n /**\n * Show prev/next buttons\n */\n showPrevNext?: boolean;\n /**\n * Show page jumper (dropdown) instead of numbered buttons\n */\n showPageJumper?: boolean;\n /**\n * Show page number (used with showPageJumper=false)\n */\n showPageNumber?: boolean;\n /**\n * Page status for displaying page numbers\n */\n pageStatus?: \"none\" | \"first\" | \"middle\" | \"last\";\n /**\n * Maximum number of page buttons to show\n */\n maxPageButtons?: number;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage: controlledCurrentPage,\n totalPages,\n rowsPerPage: controlledRowsPerPage,\n rowsPerPageOptions = [5, 10, 15, 20, 25, 50, 100],\n showRowsPerPage = true,\n onPageChange,\n onRowsPerPageChange,\n size = \"medium\",\n isDisabled = false,\n rowsPerPageLabel = \"Row per page\",\n ofLabel = \"of\",\n prevLabel = \"Prev\",\n nextLabel = \"Next\",\n showPrevNext = true,\n showPageJumper = true,\n showPageNumber = true,\n pageStatus,\n maxPageButtons = 5,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCurrentPage, setUncontrolledCurrentPage] =\n React.useState(1);\n const [uncontrolledRowsPerPage, setUncontrolledRowsPerPage] =\n React.useState(rowsPerPageOptions[0] || 10);\n\n const currentPage =\n controlledCurrentPage !== undefined\n ? controlledCurrentPage\n : uncontrolledCurrentPage;\n\n const rowsPerPage =\n controlledRowsPerPage !== undefined\n ? controlledRowsPerPage\n : uncontrolledRowsPerPage;\n\n // Generate rows per page options\n const rowsPerPageSelectOptions: SelectOption[] = rowsPerPageOptions.map(\n (value) => {\n const valueStr = String(value);\n // Pad with leading zero if needed (manual implementation for compatibility)\n const label = valueStr.length < 2 ? \"0\" + valueStr : valueStr;\n return {\n id: `rows-${valueStr}`,\n value: valueStr,\n label: label,\n title: valueStr,\n };\n }\n );\n\n // Generate page options\n const pageOptions: SelectOption[] = Array.from(\n { length: totalPages },\n (_, i) => {\n const pageNum = i + 1;\n const pageStr = String(pageNum);\n return {\n id: `page-${pageStr}`,\n value: pageStr,\n label: pageStr,\n title: `Page ${pageNum}`,\n };\n }\n );\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > totalPages) return;\n if (controlledCurrentPage === undefined) {\n setUncontrolledCurrentPage(newPage);\n }\n onPageChange?.(newPage);\n };\n\n const handleRowsPerPageChange = (value: string | number) => {\n const newRowsPerPage =\n typeof value === \"string\" ? parseInt(value) : value;\n if (controlledRowsPerPage === undefined) {\n setUncontrolledRowsPerPage(newRowsPerPage);\n }\n onRowsPerPageChange?.(newRowsPerPage);\n // Reset to first page when rows per page changes\n handlePageChange(1);\n };\n\n const handlePrevPage = () => {\n handlePageChange(currentPage - 1);\n };\n\n const handleNextPage = () => {\n handlePageChange(currentPage + 1);\n };\n\n const isPrevDisabled = currentPage <= 1 || isDisabled;\n const isNextDisabled = currentPage >= totalPages || isDisabled;\n\n const selectSize =\n size === \"small\" ? \"small\" : size === \"large\" ? \"large\" : \"medium\";\n\n // Map pagination size to button size\n const buttonSize =\n size === \"small\" ? \"xsmall\" : size === \"large\" ? \"large\" : \"small\";\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= maxPageButtons) {\n // Show all pages if total is less than max\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n // Determine page status if not provided\n const effectivePageStatus =\n pageStatus ||\n (currentPage <= 2\n ? \"first\"\n : currentPage >= totalPages - 1\n ? \"last\"\n : \"middle\");\n\n if (effectivePageStatus === \"first\") {\n // Show first pages: 1, 2, 3, 4, 5\n return Array.from(\n { length: Math.min(maxPageButtons, totalPages) },\n (_, i) => i + 1\n );\n } else if (effectivePageStatus === \"last\") {\n // Show last pages\n const start = totalPages - maxPageButtons + 1;\n return Array.from({ length: maxPageButtons }, (_, i) => start + i);\n } else if (effectivePageStatus === \"middle\") {\n // Show pages around current page\n const halfMax = Math.floor(maxPageButtons / 2);\n let start = currentPage - halfMax;\n let end = currentPage + halfMax;\n\n // Adjust if at boundaries\n if (start < 1) {\n end += 1 - start;\n start = 1;\n }\n if (end > totalPages) {\n start -= end - totalPages;\n end = totalPages;\n }\n\n start = Math.max(1, start);\n end = Math.min(totalPages, end);\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n\n // pageStatus === \"none\" - don't show any page numbers\n return [];\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div\n ref={ref}\n className={cn(paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {rowsPerPageLabel}\n </span>\n <div className=\"w-[80px]\">\n <Select\n value={rowsPerPage.toString()}\n options={rowsPerPageSelectOptions}\n onChange={handleRowsPerPageChange}\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3 ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<ChevronLeft className=\"w-4 h-4\" />}\n aria-label=\"Previous page\"\n >\n {prevLabel}\n </Button>\n )}\n\n {showPageJumper ? (\n // Show page dropdown selector\n <div className=\"flex items-center gap-3\">\n <div className=\"w-[80px]\">\n <Select\n value={currentPage.toString()}\n options={pageOptions}\n onChange={(value) =>\n handlePageChange(\n typeof value === \"string\" ? parseInt(value) : value\n )\n }\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {ofLabel} {totalPages}\n </span>\n </div>\n ) : (\n // Show numbered page buttons\n showPageNumber &&\n pageNumbers.length > 0 && (\n <ButtonGroup\n variant=\"separated\"\n size={buttonSize}\n isDisabled={isDisabled}\n value={currentPage}\n onChange={(value) => handlePageChange(value as number)}\n >\n {pageNumbers.map((pageNum) => (\n <Button\n key={pageNum}\n value={pageNum}\n variant=\"tertiary\"\n color=\"primary\"\n aria-label={`Page ${pageNum}`}\n aria-current={pageNum === currentPage ? \"page\" : undefined}\n >\n {pageNum}\n </Button>\n ))}\n </ButtonGroup>\n )\n )}\n\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handleNextPage}\n isDisabled={isNextDisabled}\n trailingIcon={<ChevronRight className=\"w-4 h-4\" />}\n aria-label=\"Next page\"\n >\n {nextLabel}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { paginationVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst radioVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 border transition-all cursor-pointer rounded-full\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] border-[1.5px]\",\n medium: \"w-[16px] h-[16px] border-[1.5px]\",\n large: \"w-[20px] h-[20px] border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n isFocused: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class: `border-action-outline-neutral-faded \n hover:bg-action-fill-neutral-faded \n hover:border-action-outline-neutral-faded\n `,\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover border-action-fill-primary-default hover:border-action-fill-primary-hover\",\n },\n // Checked state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default hover:bg-action-fill-negative-hover border-action-fill-negative-default hover:border-action-fill-negative-hover\",\n },\n // Focused state - none validation\n {\n isFocused: true,\n validationState: \"none\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-primary-faded\",\n },\n // Focused state - error validation\n {\n isFocused: true,\n validationState: \"error\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-negative-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isDisabled: false,\n isFocused: false,\n },\n }\n);\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the radio button\n */\n label?: string;\n /**\n * Error text to display below the radio button\n */\n errorText?: string;\n /**\n * Size of the radio button\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the radio button\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio button is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled) {\n setShowRipple(true);\n setTimeout(() => {\n setShowRipple(false);\n }, 360); // Match animation duration (0.36s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current?.click();\n }\n };\n\n const handleFocus = () => {\n if (!isDisabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n innerCircleSize: 6,\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 7,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 8,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"radio\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n radioVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n className\n )}\n >\n {/* Inner White Circle (creates ring effect) */}\n {isChecked && (\n <div\n className=\"rounded-full bg-white transition-all\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport { Radio, radioVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isLoading?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n showClearButton?: boolean;\n onClear?: () => void;\n containerClassName?: string;\n labelClassName?: string;\n inputClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isLoading = false,\n isRequired = false,\n isOptional = false,\n prefix,\n suffix,\n showClearButton = false,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n onClear,\n containerClassName,\n labelClassName,\n inputClassName,\n className,\n value,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const inputValue = value !== undefined ? value : internalValue;\n const hasValue = inputValue && String(inputValue).length > 0;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(e.target.value);\n }\n };\n\n const handleClear = () => {\n if (onClear) {\n onClear();\n } else {\n setInternalValue(\"\");\n }\n // Focus the input after clearing\n const input = document.getElementById(props.id || \"\");\n if (input) {\n input.focus();\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textFieldVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n isLoading && \"text-field-loading\",\n className\n )}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <input\n ref={ref}\n value={inputValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display\",\n inputClassName\n )}\n {...props}\n />\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { TextField, textFieldVariants };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/utils\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\n\nexport interface SearchableDropdownItem extends DropdownMenuItem {\n [key: string]: any;\n}\n\nexport interface SearchableDropdownProps\n extends Omit<TextFieldProps, \"onChange\" | \"value\"> {\n /**\n * Items to display in the dropdown\n */\n items?: SearchableDropdownItem[];\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown menu width\n */\n dropdownWidth?: \"auto\" | \"full\";\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when search value changes\n */\n onSearchChange?: (value: string) => void;\n /**\n * Callback when item is selected\n */\n onItemSelect?: (item: SearchableDropdownItem) => void;\n /**\n * Custom filter function\n */\n filterFunction?: (item: SearchableDropdownItem, query: string) => boolean;\n /**\n * Search value (controlled)\n */\n searchValue?: string;\n /**\n * Default search value (uncontrolled)\n */\n defaultSearchValue?: string;\n /**\n * Custom class for dropdown menu\n */\n dropdownClassName?: string;\n /**\n * Minimum characters before showing dropdown\n */\n minSearchLength?: number;\n /**\n * Show dropdown on focus\n */\n showOnFocus?: boolean;\n /**\n * Show \"Add New\" option when search doesn't match any items\n */\n showAddNew?: boolean;\n}\n\nconst defaultFilter = (\n item: SearchableDropdownItem,\n query: string\n): boolean => {\n const searchQuery = query.toLowerCase();\n return (\n item.label.toLowerCase().includes(searchQuery) ||\n (item.description?.toLowerCase().includes(searchQuery) ?? false)\n );\n};\n\nexport const SearchableDropdown = React.forwardRef<\n HTMLInputElement,\n SearchableDropdownProps\n>(\n (\n {\n className,\n items = [],\n sectionHeading,\n isLoading = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText,\n secondaryButtonText,\n onPrimaryClick,\n onSecondaryClick,\n dropdownWidth = \"full\",\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n footerLayout = \"horizontal\",\n onSearchChange,\n onItemSelect,\n filterFunction = defaultFilter,\n searchValue: controlledSearchValue,\n defaultSearchValue = \"\",\n dropdownClassName,\n minSearchLength = 0,\n showOnFocus = true,\n showAddNew = false,\n containerClassName,\n ...textFieldProps\n },\n ref\n ) => {\n const [uncontrolledSearchValue, setUncontrolledSearchValue] =\n React.useState(defaultSearchValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [focusedIndex, setFocusedIndex] = React.useState(-1);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Update position when dropdown opens or window resizes\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const searchValue =\n controlledSearchValue !== undefined\n ? controlledSearchValue\n : uncontrolledSearchValue;\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newValue);\n }\n onSearchChange?.(newValue);\n\n // Show dropdown if minimum search length is met\n if (newValue.length >= minSearchLength) {\n setIsOpen(true);\n } else {\n setIsOpen(false);\n }\n };\n\n const handleFocus = () => {\n if (showOnFocus && searchValue.length >= minSearchLength) {\n setIsOpen(true);\n }\n };\n\n const handleItemSelect = (item: SearchableDropdownItem) => {\n onItemSelect?.(item);\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(item.label);\n }\n setIsOpen(false);\n inputRef.current?.focus();\n };\n\n // Filter items based on search\n const filteredItems = React.useMemo(() => {\n if (!searchValue) return items;\n return items.filter((item) => filterFunction(item, searchValue));\n }, [items, searchValue, filterFunction]);\n\n // Add \"Add New\" option if showAddNew is true and no items match\n const itemsWithAddNew = React.useMemo(() => {\n if (!showAddNew || !searchValue || filteredItems.length > 0) {\n return filteredItems;\n }\n\n const addNewItem: SearchableDropdownItem = {\n value: searchValue,\n label: `+ Add ${searchValue}`,\n variant: \"primary\",\n onClick: () => {\n const newItem: SearchableDropdownItem = {\n value: searchValue,\n label: searchValue,\n };\n onItemSelect?.(newItem);\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(searchValue);\n }\n setIsOpen(false);\n inputRef.current?.focus();\n },\n };\n\n return [addNewItem];\n }, [\n showAddNew,\n searchValue,\n filteredItems,\n onItemSelect,\n controlledSearchValue,\n ]);\n\n // Reset focused index when items change\n React.useEffect(() => {\n setFocusedIndex(-1);\n }, [itemsWithAddNew.length]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n menuRef.current &&\n !menuRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Handle keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (!isOpen) {\n if (e.key === \"ArrowDown\" || e.key === \"Enter\") {\n setIsOpen(true);\n e.preventDefault();\n }\n return;\n }\n\n switch (e.key) {\n case \"ArrowDown\":\n e.preventDefault();\n setFocusedIndex((prev) =>\n prev < itemsWithAddNew.length - 1 ? prev + 1 : prev\n );\n break;\n case \"ArrowUp\":\n e.preventDefault();\n setFocusedIndex((prev) => (prev > 0 ? prev - 1 : -1));\n break;\n case \"Enter\":\n e.preventDefault();\n if (focusedIndex >= 0 && itemsWithAddNew[focusedIndex]) {\n handleItemSelect(itemsWithAddNew[focusedIndex]);\n }\n break;\n case \"Escape\":\n e.preventDefault();\n setIsOpen(false);\n setFocusedIndex(-1);\n break;\n }\n };\n\n // Update items with onClick handlers that call handleItemSelect\n // Only add onClick if it doesn't already exist (for Add New items)\n const itemsWithHandlers = itemsWithAddNew.map((item) => ({\n ...item,\n onClick: item.onClick || (() => handleItemSelect(item)),\n }));\n\n const showDropdown = isOpen && searchValue.length >= minSearchLength;\n\n const dropdownMenu = showDropdown && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n top: `${position.top + 8}px`,\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: 9999,\n }}\n >\n <DropdownMenu\n items={itemsWithHandlers}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={itemsWithAddNew.length === 0 && !showAddNew}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={\n (primaryButtonText || secondaryButtonText) && !disableFooter\n ? true\n : false\n }\n footerLayout={footerLayout}\n onClose={() => setIsOpen(false)}\n focusedIndex={focusedIndex}\n className={dropdownClassName}\n width={dropdownWidth === \"full\" ? \"full\" : \"auto\"}\n />\n </div>\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n <TextField\n ref={inputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\n </div>\n\n {/* Dropdown Menu Portal */}\n {typeof document !== \"undefined\" &&\n dropdownMenu &&\n createPortal(dropdownMenu, document.body)}\n </>\n );\n }\n);\n\nSearchableDropdown.displayName = \"SearchableDropdown\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SkeletonVariant = \"rect\" | \"text\" | \"title\" | \"circle\";\ntype SkeletonAnimation = \"pulse\" | \"none\";\ntype SkeletonRounded = \"none\" | \"small\" | \"medium\" | \"large\" | \"full\";\n\nconst variantDefaults: Record<\n SkeletonVariant,\n { height: number | string; className: string }\n> = {\n rect: { height: 16, className: \"w-full rounded-large\" },\n text: { height: 12, className: \"w-full rounded-large\" },\n title: { height: 20, className: \"w-full rounded-large\" },\n circle: { height: 40, className: \"rounded-full aspect-square\" },\n};\n\nconst roundedClassNames: Record<SkeletonRounded, string> = {\n none: \"rounded-none\",\n small: \"rounded-small\",\n medium: \"rounded-medium\",\n large: \"rounded-large\",\n full: \"rounded-full\",\n};\n\nconst animationClassNames: Record<SkeletonAnimation, string | undefined> = {\n pulse: \"animate-skeleton\",\n none: undefined,\n};\n\nconst normalizeCssValue = (value?: number | string): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n return typeof value === \"number\" ? `${value}px` : value;\n};\n\nconst getLineWidths = (\n count: number,\n provided?: Array<number | string>\n): Array<string | undefined> => {\n if (provided && provided.length) {\n return Array.from({ length: count }, (_, index) =>\n normalizeCssValue(provided[index] ?? provided[provided.length - 1])\n );\n }\n\n if (count === 1) {\n return [\"100%\"];\n }\n\n return Array.from({ length: count }, (_, index) =>\n index === count - 1 ? \"60%\" : \"100%\"\n );\n};\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Visual variant that controls default sizing and shape.\n */\n variant?: SkeletonVariant;\n /**\n * Animation style applied to the skeleton.\n */\n animation?: SkeletonAnimation;\n /**\n * Number of lines to render for text-based skeletons.\n */\n lines?: number;\n /**\n * Optional width overrides for each line.\n */\n lineWidths?: Array<number | string>;\n /**\n * Gap between lines when rendering multiple.\n */\n lineGap?: number | string;\n /**\n * Width of the skeleton block (overrides the variant default).\n */\n width?: number | string;\n /**\n * Height of the skeleton block (overrides the variant default).\n */\n height?: number | string;\n /**\n * Additional class name applied to the container when multiple lines are rendered.\n */\n containerClassName?: string;\n /**\n * Optional inline styles for the container when rendering multiple lines.\n */\n containerStyle?: React.CSSProperties;\n /**\n * Border radius override for rectangular variants.\n */\n rounded?: SkeletonRounded;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n containerClassName,\n containerStyle,\n variant = \"rect\",\n animation = \"pulse\",\n lines = 1,\n lineWidths,\n lineGap = \"0.5rem\",\n width,\n height,\n rounded = \"large\",\n style,\n ...props\n },\n ref\n ) => {\n const resolvedLines = Math.max(1, lines);\n const baseVariant = variantDefaults[variant];\n\n const resolvedHeight =\n normalizeCssValue(height) ?? normalizeCssValue(baseVariant.height);\n const resolvedWidth =\n normalizeCssValue(width) ??\n (variant === \"circle\" ? resolvedHeight : undefined);\n\n const skeletonClasses = cn(\n \"block bg-surface-fill-neutral-subtle\",\n animationClassNames[animation],\n variant !== \"circle\" && roundedClassNames[rounded],\n baseVariant.className,\n className\n );\n\n if ((variant === \"text\" || variant === \"title\") && resolvedLines > 1) {\n const widths = getLineWidths(resolvedLines, lineWidths);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col\",\n containerClassName,\n animation === \"pulse\" ? \"animate-none\" : undefined\n )}\n style={{\n gap: normalizeCssValue(lineGap) ?? \"0.5rem\",\n ...containerStyle,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n >\n {widths.map((lineWidth, index) => (\n <span\n key={`skeleton-line-${index}`}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: lineWidth ?? resolvedWidth ?? \"100%\",\n ...style,\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: resolvedWidth ?? style?.width,\n ...style,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchVariants = cva(\n \"relative inline-flex items-center shrink-0 cursor-pointer rounded-full transition-all duration-200\",\n {\n variants: {\n size: {\n small: \"w-[20px] h-[12px]\",\n medium: \"w-[28px] h-[16px]\",\n large: \"w-[36px] h-[20px]\",\n },\n isChecked: {\n true: \"bg-action-fill-primary-default \",\n false: \"bg-surface-fill-neutral-subtle\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n isChecked: true,\n isDisabled: false,\n class: \"hover:bg-action-fill-primary-hover \",\n },\n {\n isChecked: false,\n isDisabled: false,\n class: \"hover:bg-action-fill-neutral-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n isDisabled: false,\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-neutral-00 shadow-sm transition-transform duration-200\",\n {\n variants: {\n size: {\n small: \"h-[8px] w-[8px]\",\n medium: \"h-[12px] w-[12px]\",\n large: \"h-[16px] w-[16px]\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Small size translations\n {\n size: \"small\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"small\",\n isChecked: true,\n class: \"translate-x-[10px]\",\n },\n // Medium size translations\n {\n size: \"medium\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"medium\",\n isChecked: true,\n class: \"translate-x-[14px]\",\n },\n // Large size translations\n {\n size: \"large\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"large\",\n isChecked: true,\n class: \"translate-x-[18px]\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the switch\n */\n label?: string;\n /**\n * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the switch is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the switch track\n */\n trackClassName?: string;\n /**\n * Custom class name for the switch thumb\n */\n thumbClassName?: string;\n}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = \"medium\",\n isDisabled = false,\n containerClassName,\n labelClassName,\n trackClassName,\n thumbClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"switch\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n <div\n className={cn(\n switchVariants({\n size,\n isChecked,\n isDisabled,\n }),\n trackClassName,\n className,\n \"focus-visible:ring-2 focus-visible:ring-action-outline-primary-faded focus-visible:ring-offset-2\"\n )}\n >\n <span\n className={cn(\n switchThumbVariants({\n size,\n isChecked,\n }),\n thumbClassName\n )}\n />\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\"w-full border-collapse\", {\n variants: {\n variant: {\n default: \"border-separate border-spacing-0\",\n bordered: \"border-separate border-spacing-0\",\n striped: \"border-separate border-spacing-0\",\n },\n size: {\n small: \"text-body-small-medium\",\n medium: \"text-body-medium-medium\",\n large: \"text-body-large-medium\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"medium\",\n },\n});\n\nexport const tableHeaderVariants = cva(\n \"text-body-medium-regular text-left text-surface-ink-neutral-normal border-b border-surface-outline-neutral-muted\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[32px]\",\n medium: \"px-4 py-3 h-[40px]\",\n large: \"px-6 py-4 h-[48px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport const tableCellVariants = cva(\n \"text-body-medium-regular border-b border-surface-outline-neutral-muted text-surface-ink-neutral-normal transition-colors duration-150\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[40px]\",\n medium: \"px-4 py-3 h-[72px]\",\n large: \"px-6 py-4 h-[56px]\",\n },\n state: {\n default: \"\",\n focus: \"\",\n // focus:\n // \"outline outline-2 outline-action-outline-primary-default outline-offset-[-2px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n state: \"default\",\n },\n }\n);\n","import * as React from \"react\";\nimport {\n flexRender,\n type Header,\n type HeaderGroup,\n} from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableHeaderVariants } from \"./tableVariants\";\n\ninterface TableHeaderProps<TData> {\n headerGroups: HeaderGroup<TData>[];\n enableRowSelection: boolean;\n enableSelectAll: boolean;\n showHeaderBackground: boolean;\n stickyHeader: boolean;\n size: \"small\" | \"medium\" | \"large\";\n headerClassName?: string;\n onToggleAllRows: (e?: unknown) => void;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n getColumnStyle: (\n columnId: string,\n fallback?: { width?: number; minWidth?: number; maxWidth?: number }\n ) => React.CSSProperties;\n}\n\nexport function TableHeader<TData>({\n headerGroups,\n enableRowSelection,\n enableSelectAll,\n showHeaderBackground,\n stickyHeader,\n size,\n headerClassName,\n onToggleAllRows,\n isAllRowsSelected,\n isSomeRowsSelected,\n getColumnStyle,\n}: TableHeaderProps<TData>) {\n const headerHeight =\n {\n small: 32,\n medium: 40,\n large: 48,\n }[size] ?? 40;\n\n return (\n <thead\n className={cn(\n showHeaderBackground ? \"bg-surface-fill-neutral-moderate\" : \"bg-white\",\n stickyHeader && \"sticky top-0 z-10\"\n )}\n >\n {headerGroups.map((headerGroup, groupIndex) => {\n const stickyTop = stickyHeader ? groupIndex * headerHeight : undefined;\n\n return (\n <tr key={headerGroup.id}>\n {enableRowSelection && enableSelectAll && (\n <th\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n stickyHeader && \"sticky z-20\",\n \"w-10 rounded-tl-xlarge rounded-bl-xlarge\",\n headerClassName\n )}\n style={{ top: stickyTop }}\n >\n <Checkbox\n checked={isAllRowsSelected}\n isIndeterminate={isSomeRowsSelected}\n onChange={onToggleAllRows}\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {headerGroup.headers.map((header, index) => {\n const isFirstColumn = index === 0;\n const isLastColumn = index === headerGroup.headers.length - 1;\n\n return (\n <th\n key={header.id}\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground &&\n \"bg-surface-fill-neutral-moderate border-none\",\n stickyHeader && \"sticky z-20\",\n !enableRowSelection && index === 0 && \"rounded-tl-xlarge \",\n isLastColumn && \"rounded-tr-xlarge\",\n header.column.columnDef.meta?.headerClassName,\n headerClassName\n )}\n style={{\n ...getColumnStyle(header.column.id, {\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize,\n maxWidth: header.column.columnDef.maxSize,\n }),\n top: stickyTop,\n ...(isFirstColumn && { paddingLeft: \"24px\" }),\n ...(isLastColumn && { paddingRight: \"24px\" }),\n }}\n >\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() &&\n \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {header.column.getCanSort() && (\n <span className=\"text-surface-ink-neutral-muted\">\n {{\n asc: \"↑\",\n desc: \"↓\",\n }[header.column.getIsSorted() as string] ?? \"↕\"}\n </span>\n )}\n </div>\n )}\n </th>\n );\n })}\n </tr>\n );\n })}\n </thead>\n );\n}\n","import * as React from \"react\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableCellVariants } from \"./tableVariants\";\n\ninterface TableBodyProps<TData> {\n rows: Row<TData>[];\n enableRowSelection: boolean;\n size: \"small\" | \"medium\" | \"large\";\n variant: \"default\" | \"bordered\" | \"striped\";\n showRowHover: boolean;\n cellClassName?: string;\n onRowClick?: (row: TData) => void;\n getRowClassName: (row: TData) => string;\n handleRowClick: (row: TData) => void;\n getColumnStyle: (\n columnId: string,\n fallback?: { width?: number; minWidth?: number; maxWidth?: number }\n ) => React.CSSProperties;\n}\n\ninterface CellState {\n rowId: string;\n cellId: string;\n}\n\nexport function TableBody<TData>({\n rows,\n enableRowSelection,\n size,\n variant,\n showRowHover,\n cellClassName,\n onRowClick,\n getRowClassName,\n handleRowClick,\n getColumnStyle,\n}: TableBodyProps<TData>) {\n const [focusedCell, setFocusedCell] = React.useState<CellState | null>(null);\n const [hoveredRow, setHoveredRow] = React.useState<string | null>(null);\n\n return (\n <tbody className={cn(\"bg-surface-fill-neutral-intense\")}>\n {rows.map((row) => {\n const isRowHovered = hoveredRow === row.id;\n const handleClick = () => handleRowClick(row.original);\n\n return (\n <tr\n key={row.id}\n className={cn(\n variant === \"striped\" &&\n row.index % 2 === 1 &&\n \"bg-surface-fill-neutral-moderate\",\n onRowClick && \"cursor-pointer\",\n isRowHovered &&\n showRowHover &&\n \"bg-surface-fill-neutral-moderate\",\n getRowClassName(row.original)\n )}\n onClick={handleClick}\n onMouseEnter={() => setHoveredRow(row.id)}\n onMouseLeave={() => setHoveredRow(null)}\n >\n {enableRowSelection && (\n <td\n className={cn(\n tableCellVariants({ size }),\n \"w-10\",\n cellClassName\n )}\n style={{\n paddingTop: \"20px\",\n paddingBottom: \"20px\",\n }}\n >\n <Checkbox\n checked={row.getIsSelected()}\n isIndeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onClick={(e) => e.stopPropagation()}\n aria-label={`Select row ${row.id}`}\n />\n </td>\n )}\n {row.getVisibleCells().map((cell, cellIndex) => {\n const isCellFocused =\n focusedCell?.rowId === row.id &&\n focusedCell?.cellId === cell.id;\n const cellState = isCellFocused ? \"focus\" : \"default\";\n const visibleCells = row.getVisibleCells();\n const isFirstCell = cellIndex === 0;\n const isLastCell = cellIndex === visibleCells.length - 1;\n\n return (\n <td\n key={cell.id}\n className={cn(\n tableCellVariants({ size, state: cellState }),\n cell.column.columnDef.meta?.cellClassName,\n cellClassName\n )}\n style={{\n ...getColumnStyle(cell.column.id, {\n width: cell.column.getSize(),\n minWidth: cell.column.columnDef.minSize,\n maxWidth: cell.column.columnDef.maxSize,\n }),\n paddingTop: \"20px\",\n paddingBottom: \"20px\",\n ...(isFirstCell && { paddingLeft: \"24px\" }),\n ...(isLastCell && { paddingRight: \"24px\" }),\n }}\n tabIndex={0}\n onFocus={() =>\n setFocusedCell({ rowId: row.id, cellId: cell.id })\n }\n onBlur={() => setFocusedCell(null)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\n\ninterface LoadingStateProps {\n colSpan: number;\n}\n\nexport function renderDefaultLoadingState({ colSpan }: LoadingStateProps) {\n return (\n <tr>\n <td\n colSpan={colSpan}\n className=\"text-center py-12 text-surface-ink-neutral-muted\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-6 w-6 border-b-2 border-action-fill-primary-default\" />\n <span>Loading...</span>\n </div>\n </td>\n </tr>\n );\n}\n\nexport function renderDefaultEmptyState({ colSpan }: LoadingStateProps) {\n return (\n <tr>\n <td\n colSpan={colSpan}\n className=\"text-center py-12 text-surface-ink-neutral-muted\"\n >\n No data available\n </td>\n </tr>\n );\n}\n","import * as React from \"react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { Table as TanStackTable, RowData } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { TableHeader } from \"./TableHeader\";\nimport { TableBody } from \"./TableBody\";\nimport { tableVariants, tableCellVariants } from \"./tableVariants\";\nimport {\n renderDefaultLoadingState,\n renderDefaultEmptyState,\n} from \"./tableHelpers\";\nimport { Skeleton } from \"../Skeleton\";\n\n// Extend TanStack Table types to support custom meta properties\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData, TValue> {\n headerClassName?: string;\n cellClassName?: string;\n }\n}\n\n// ==================== Types ====================\n\nexport interface TableProps<TData extends RowData>\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof tableVariants> {\n table: TanStackTable<TData>;\n enableRowSelection?: boolean;\n enableSelectAll?: boolean;\n isLoading?: boolean;\n loadingComponent?: React.ReactNode;\n emptyComponent?: React.ReactNode;\n wrapperClassName?: string;\n containerClassName?: string;\n enableHorizontalScroll?: boolean;\n stickyHeader?: boolean;\n maxHeight?: string | number;\n showRowHover?: boolean;\n onRowClick?: (row: TData) => void;\n rowClassName?: string | ((row: TData) => string);\n headerClassName?: string;\n cellClassName?: string;\n showHeaderBackground?: boolean;\n loading?: boolean;\n loadingSkeletonRows?: number;\n loadingSkeletonHeight?: number | string;\n columnWidths?: Partial<Record<string, string | number>>;\n columnMinWidths?: Partial<Record<string, string | number>>;\n columnMaxWidths?: Partial<Record<string, string | number>>;\n}\n\n// ==================== Component ====================\n\nfunction TableComponent<TData extends RowData>(\n {\n className,\n wrapperClassName,\n containerClassName,\n variant,\n size = \"medium\",\n table,\n enableRowSelection = false,\n enableSelectAll = false,\n isLoading = false,\n loading,\n loadingComponent,\n emptyComponent,\n enableHorizontalScroll = false,\n stickyHeader = false,\n maxHeight,\n showRowHover = true,\n onRowClick,\n rowClassName,\n headerClassName,\n cellClassName,\n showHeaderBackground = true,\n loadingSkeletonRows,\n loadingSkeletonHeight,\n columnWidths,\n columnMinWidths,\n columnMaxWidths,\n ...props\n }: TableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // ==================== Computed Values ====================\n\n const hasData = table.getRowModel().rows?.length > 0;\n const headerGroups = table.getHeaderGroups();\n\n const normalizeSizeValue = (value?: string | number) => {\n if (value === undefined) return undefined;\n return typeof value === \"number\" ? `${value}px` : value;\n };\n\n const getColumnStyle = React.useCallback(\n (\n columnId: string,\n fallback?: {\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n }\n ): React.CSSProperties => {\n const width = columnWidths?.[columnId] ?? fallback?.width ?? undefined;\n const minWidth =\n columnMinWidths?.[columnId] ?? fallback?.minWidth ?? undefined;\n const maxWidth =\n columnMaxWidths?.[columnId] ?? fallback?.maxWidth ?? undefined;\n\n return {\n width: normalizeSizeValue(width),\n minWidth: normalizeSizeValue(minWidth),\n maxWidth: normalizeSizeValue(maxWidth),\n };\n },\n [columnWidths, columnMinWidths, columnMaxWidths]\n );\n\n const containerStyle = React.useMemo(() => {\n if (!maxHeight) return undefined;\n return {\n maxHeight: typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight,\n };\n }, [maxHeight]);\n\n const resolvedLoading =\n typeof loading === \"boolean\" ? loading : Boolean(isLoading);\n\n const skeletonRowCount = loadingSkeletonRows ?? 5;\n\n const sizeKey = size || \"medium\";\n\n const skeletonHeightMap: Record<NonNullable<typeof sizeKey>, number> = {\n small: 16,\n medium: 20,\n large: 24,\n };\n\n const skeletonCellHeight = normalizeSizeValue(\n loadingSkeletonHeight ?? skeletonHeightMap[sizeKey]\n );\n\n const selectionSkeletonSize =\n sizeKey === \"small\" ? 14 : sizeKey === \"large\" ? 20 : 16;\n\n const renderSkeletonRows = React.useCallback(() => {\n const visibleColumns = table.getVisibleLeafColumns();\n\n if (visibleColumns.length === 0) {\n return renderDefaultLoadingState({\n colSpan: table.getAllColumns().length || 1,\n });\n }\n\n return Array.from({ length: skeletonRowCount }).map((_, rowIndex) => (\n <tr key={`skeleton-row-${rowIndex}`}>\n {enableRowSelection && (\n <td\n className={cn(\n tableCellVariants({ size: sizeKey }),\n \"w-10\",\n cellClassName\n )}\n >\n <Skeleton\n variant=\"circle\"\n width={selectionSkeletonSize}\n height={selectionSkeletonSize}\n />\n </td>\n )}\n {visibleColumns.map((column) => (\n <td\n key={`${column.id}-${rowIndex}`}\n className={cn(\n tableCellVariants({ size: sizeKey }),\n column.columnDef.meta?.cellClassName,\n cellClassName\n )}\n style={getColumnStyle(column.id, {\n width: column.getSize(),\n minWidth: column.columnDef.minSize,\n maxWidth: column.columnDef.maxSize,\n })}\n >\n <Skeleton\n className=\"w-full\"\n height={skeletonCellHeight}\n rounded=\"medium\"\n />\n </td>\n ))}\n </tr>\n ));\n }, [\n cellClassName,\n enableRowSelection,\n getColumnStyle,\n selectionSkeletonSize,\n sizeKey,\n skeletonCellHeight,\n skeletonRowCount,\n table,\n ]);\n\n const renderLoadingContent = React.useCallback(() => {\n if (loadingComponent) return loadingComponent;\n return renderSkeletonRows();\n }, [loadingComponent, renderSkeletonRows]);\n\n // ==================== Callbacks ====================\n\n const getRowClassName = React.useCallback(\n (row: TData): string => {\n if (typeof rowClassName === \"function\") {\n return rowClassName(row);\n }\n return rowClassName || \"\";\n },\n [rowClassName]\n );\n\n const handleRowClickInternal = React.useCallback(\n (row: TData) => {\n if (onRowClick) {\n onRowClick(row);\n }\n },\n [onRowClick]\n );\n\n // ==================== Render Helpers ====================\n\n const renderLoadingState = () => {\n if (loadingComponent) return loadingComponent;\n return renderDefaultLoadingState({ colSpan: table.getAllColumns().length });\n };\n\n const renderEmptyState = () => {\n if (emptyComponent) return emptyComponent;\n return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });\n };\n\n // ==================== Render ====================\n\n return (\n <div ref={ref} className={cn(\"w-full\", wrapperClassName)} {...props}>\n <div\n className={cn(\n \"relative\",\n enableHorizontalScroll ? \"overflow-x-auto\" : \"overflow-x-hidden\",\n maxHeight && \"overflow-y-auto\",\n containerClassName\n )}\n style={containerStyle}\n >\n <table className={cn(tableVariants({ variant, size }), className)}>\n <TableHeader\n headerGroups={headerGroups}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n showHeaderBackground={showHeaderBackground}\n stickyHeader={stickyHeader}\n size={size || \"medium\"}\n headerClassName={headerClassName}\n onToggleAllRows={(e) => table.getToggleAllRowsSelectedHandler()(e)}\n isAllRowsSelected={table.getIsAllRowsSelected()}\n isSomeRowsSelected={table.getIsSomeRowsSelected()}\n getColumnStyle={getColumnStyle}\n />\n\n {resolvedLoading ? (\n <tbody>{renderLoadingContent()}</tbody>\n ) : !hasData ? (\n <tbody>{renderEmptyState()}</tbody>\n ) : (\n <TableBody\n rows={table.getRowModel().rows}\n enableRowSelection={enableRowSelection}\n size={size || \"medium\"}\n variant={variant || \"default\"}\n showRowHover={showRowHover}\n cellClassName={cellClassName}\n onRowClick={onRowClick}\n getRowClassName={getRowClassName}\n handleRowClick={handleRowClickInternal}\n getColumnStyle={getColumnStyle}\n />\n )}\n </table>\n </div>\n </div>\n );\n}\n\n// ==================== Export ====================\n\nexport const Table = React.forwardRef(TableComponent) as <\n TData extends RowData\n>(\n props: TableProps<TData> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof TableComponent>;\n\n(Table as any).displayName = \"Table\";\n\nexport * from \"./tableVariants\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TableDetailPanelProps {\n /**\n * Whether the panel is open\n */\n isOpen: boolean;\n /**\n * Callback to close the panel\n */\n onClose?: () => void;\n /**\n * Content to display in the panel\n */\n children: React.ReactNode;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Panel width\n */\n width?: string | number;\n}\n\nexport const TableDetailPanel = React.forwardRef<\n HTMLDivElement,\n TableDetailPanelProps\n>(({ isOpen, onClose, children, className, width = \"400px\" }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"absolute top-0 right-0 h-full bg-white border border-surface-outline-neutral-muted transition-transform duration-300 ease-in-out overflow-auto\",\n isOpen ? \"translate-x-0\" : \"translate-x-full\",\n className\n )}\n style={{ width }}\n >\n {children}\n </div>\n );\n});\n\nTableDetailPanel.displayName = \"TableDetailPanel\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// ==================== Number Cell ====================\n\ninterface NumberCellProps {\n value: number;\n currency?: string;\n subtitle?: string;\n className?: string;\n}\n\nexport function NumberCell({\n value,\n currency,\n subtitle,\n className,\n}: NumberCellProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {currency}{\" \"}\n {value.toLocaleString(\"en-IN\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n );\n}\n\n// ==================== Icon Cell ====================\n\ninterface IconCellProps {\n icon: React.ReactNode;\n background?: \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\n className?: string;\n}\n\nexport function IconCell({\n icon,\n background = \"neutral\",\n className,\n}: IconCellProps) {\n const backgrounds = {\n neutral: \"bg-surface-fill-neutral-faded\",\n primary: \"bg-action-fill-primary-faded\",\n success: \"bg-action-fill-positive-faded\",\n warning: \"bg-action-fill-warning-faded\",\n danger: \"bg-action-fill-negative-faded\",\n };\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center w-10 h-10 rounded-medium\",\n backgrounds[background],\n className\n )}\n >\n {icon}\n </div>\n );\n}\n\n// ==================== Spacer Cell ====================\n\nexport function SpacerCell() {\n return <div className=\"w-full h-full\" />;\n}\n\n// ==================== Slot Cell ====================\n\ninterface SlotCellProps {\n onDragStart?: (e: React.DragEvent) => void;\n onDragEnd?: (e: React.DragEvent) => void;\n className?: string;\n}\n\nexport function SlotCell({ onDragStart, onDragEnd, className }: SlotCellProps) {\n return (\n <div\n draggable\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n className={cn(\n \"flex items-center justify-center cursor-grab active:cursor-grabbing\",\n className\n )}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"text-surface-ink-neutral-muted\"\n >\n <path\n d=\"M6 4C6 3.44772 5.55228 3 5 3C4.44772 3 4 3.44772 4 4C4 4.55228 4.44772 5 5 5C5.55228 5 6 4.55228 6 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 8C6 7.44772 5.55228 7 5 7C4.44772 7 4 7.44772 4 8C4 8.55228 4.44772 9 5 9C5.55228 9 6 8.55228 6 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13C5.55228 13 6 12.5523 6 12Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 4C12 3.44772 11.5523 3 11 3C10.4477 3 10 3.44772 10 4C10 4.55228 10.4477 5 11 5C11.5523 5 12 4.55228 12 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 8C12 7.44772 11.5523 7 11 7C10.4477 7 10 7.44772 10 8C10 8.55228 10.4477 9 11 9C11.5523 9 12 8.55228 12 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 12C12 11.4477 11.5523 11 11 11C10.4477 11 10 11.4477 10 12C10 12.5523 10.4477 13 11 13C11.5523 13 12 12.5523 12 12Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n );\n}\n\n// ==================== Avatar Cell ====================\n\ninterface AvatarCellProps {\n name: string;\n initials?: string;\n avatar?: string;\n subtitle?: string;\n color?: string;\n className?: string;\n}\n\nexport function AvatarCell({\n name,\n initials,\n avatar,\n subtitle,\n color = \"a1\",\n className,\n}: AvatarCellProps) {\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n {avatar ? (\n <img\n src={avatar}\n alt={name}\n className=\"w-10 h-10 rounded-full object-cover\"\n />\n ) : (\n <div\n className={cn(\n \"w-10 h-10 rounded-full flex items-center justify-center text-body-medium-medium\",\n `bg-${color}`\n )}\n >\n {initials || name.charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"flex flex-col\">\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {name}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst tabItemVariants = cva(\n `inline-flex items-center justify-center gap-3 whitespace-nowrap transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 relative cursor-pointer -mb-[1.5px]`,\n {\n variants: {\n variant: {\n bordered: \"border-b-[1.5px]\",\n borderless: \"border-b-[1.5px]\",\n },\n size: {\n small: \"px-2 py-3 h-9\",\n medium: \"px-3 py-4 h-11\",\n large: \"px-3 py-4 h-12\",\n },\n isSelected: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"\",\n },\n isFullWidth: {\n true: \"flex-1\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Bordered and borderless variants - not selected\n {\n variant: [\"bordered\", \"borderless\"],\n isSelected: false,\n isDisabled: false,\n class: `text-text-body-secondary \n border-b-transparent\n text-action-ink-neutral-muted\n hover:text-action-ink-neutral-subtle\n hover:border-b-action-outline-neutral-faded-hover`,\n },\n // Bordered variant - selected\n {\n variant: \"bordered\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Borderless variant - selected\n {\n variant: \"borderless\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Typography by size and selection\n {\n size: [\"small\", \"medium\"],\n isSelected: false,\n class: \"text-body-medium-medium\",\n },\n {\n size: [\"small\", \"medium\"],\n isSelected: true,\n class: \"text-body-medium-semibold\",\n },\n {\n size: \"large\",\n isSelected: false,\n class: \"text-body-large-medium\",\n },\n {\n size: \"large\",\n isSelected: true,\n class: \"text-body-large-semibold\",\n },\n // Bordered and borderless variants - disabled\n {\n variant: [\"bordered\", \"borderless\"],\n isDisabled: true,\n class: \"text-text-body-disabled border-b-transparent\",\n },\n ],\n defaultVariants: {\n variant: \"bordered\",\n size: \"large\",\n isSelected: false,\n isDisabled: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface TabItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is currently selected\n */\n isSelected?: boolean;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab size variant\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Whether the tab should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Click handler\n */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst TabItem = React.forwardRef<HTMLButtonElement, TabItemProps>(\n (\n {\n leadingComponent,\n title,\n trailingComponent,\n isSelected = false,\n isDisabled = false,\n size = \"large\",\n variant = \"bordered\",\n isFullWidth = false,\n className,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={cn(\n tabItemVariants({\n variant,\n size,\n isSelected,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n onClick={onClick}\n {...props}\n >\n {leadingComponent && (\n <span className=\"inline-flex items-center\">{leadingComponent}</span>\n )}\n <span className=\"inline-flex items-center\">{title}</span>\n {trailingComponent && (\n <span className=\"inline-flex items-center\">{trailingComponent}</span>\n )}\n </button>\n );\n }\n);\n\nTabItem.displayName = \"TabItem\";\n\nexport { TabItem, tabItemVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { TabItem, type TabItemProps } from \"../TabItem/TabItem\";\n\nexport interface Tab {\n /**\n * Unique identifier for the tab\n */\n id: string | number;\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab content to render when selected\n */\n content?: React.ReactNode;\n}\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Array of tab configurations\n */\n tabs: Tab[];\n /**\n * Currently selected tab ID\n */\n selectedTabId?: string | number;\n /**\n * Default selected tab ID (for uncontrolled mode)\n */\n defaultSelectedTabId?: string | number;\n /**\n * Callback when tab selection changes\n */\n onTabChange?: (tabId: string | number) => void;\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Tab size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether tabs should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name for the tabs container\n */\n className?: string;\n /**\n * Custom class name for the tab list\n */\n tabListClassName?: string;\n /**\n * Custom class name for the tab content area\n */\n contentClassName?: string;\n /**\n * Whether to render tab content\n */\n renderContent?: boolean;\n}\n\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n tabs,\n selectedTabId,\n defaultSelectedTabId,\n onTabChange,\n variant = \"bordered\",\n size = \"large\",\n isFullWidth = false,\n className,\n tabListClassName,\n contentClassName,\n renderContent = true,\n ...props\n },\n ref\n ) => {\n // Internal state for uncontrolled mode\n const [internalSelectedId, setInternalSelectedId] = React.useState<\n string | number\n >(defaultSelectedTabId || tabs[0]?.id || \"\");\n\n // Determine if component is controlled\n const isControlled = selectedTabId !== undefined;\n const activeTabId = isControlled ? selectedTabId : internalSelectedId;\n\n // Handle tab selection\n const handleTabClick = (tabId: string | number) => {\n if (!isControlled) {\n setInternalSelectedId(tabId);\n }\n onTabChange?.(tabId);\n };\n\n // Get the active tab content\n const activeTab = tabs.find((tab) => tab.id === activeTabId);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {/* Tab List */}\n <div\n role=\"tablist\"\n className={cn(\n \"inline-flex items-center gap-4\",\n {\n \"w-full\": isFullWidth,\n \"border-b border-b-[1.5px] border-surface-outline-neutral-muted\":\n variant === \"bordered\",\n },\n tabListClassName\n )}\n >\n {tabs.map((tab) => (\n <TabItem\n key={tab.id}\n id={String(tab.id)}\n leadingComponent={tab.leadingComponent}\n title={tab.title}\n trailingComponent={tab.trailingComponent}\n isSelected={tab.id === activeTabId}\n isDisabled={tab.isDisabled}\n variant={variant}\n size={size}\n isFullWidth={isFullWidth}\n onClick={() => !tab.isDisabled && handleTabClick(tab.id)}\n />\n ))}\n </div>\n\n {/* Tab Content */}\n {renderContent && activeTab?.content && (\n <div\n role=\"tabpanel\"\n className={cn(\"mt-4\", contentClassName)}\n aria-labelledby={String(activeTabId)}\n >\n {activeTab.content}\n </div>\n )}\n </div>\n );\n }\n);\n\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textAreaVariants = cva(\n \"relative flex flex-col border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"p-3 min-h-[56px] text-xs gap-2\",\n medium: \"p-4 min-h-[56px] text-sm gap-2\",\n large: \"p-5 min-h-[64px]text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n maxChar?: number;\n showCharCount?: boolean;\n containerClassName?: string;\n labelClassName?: string;\n textAreaClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n rows?: number;\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n maxChar,\n showCharCount = true,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n containerClassName,\n labelClassName,\n textAreaClassName,\n className,\n value,\n onChange,\n rows = 4,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const textAreaValue = value !== undefined ? value : internalValue;\n const currentLength = String(textAreaValue).length;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n\n // Prevent exceeding maxChar if specified\n if (maxChar && newValue.length > maxChar) {\n return;\n }\n\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(newValue);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n // Check if we're approaching or at the limit\n const isNearLimit = maxChar && currentLength >= maxChar * 0.9;\n const isAtLimit = maxChar && currentLength >= maxChar;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textAreaVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <textarea\n ref={ref}\n value={textAreaValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n rows={rows}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display resize-none\",\n size === \"small\" && \"text-xs\",\n size === \"medium\" && \"text-sm\",\n size === \"large\" && \"text-base\",\n textAreaClassName\n )}\n {...props}\n />\n </div>\n <FormFooter\n helperText={displayHelperText}\n trailingText={\n maxChar && showCharCount ? `${currentLength}/${maxChar}` : undefined\n }\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n trailingTextClassName={cn(\n \"transition-colors\",\n isAtLimit\n ? \"text-feedback-ink-negative-subtle\"\n : isNearLimit\n ? \"text-feedback-ink-warning-subtle\"\n : \"\"\n )}\n />\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport { TextArea, textAreaVariants };\n"],"names":["_jsx","clsx","twMerge","cva","React","Slot","_jsxs","_Fragment","PulseLoader","ClipLoader","ExternalLink","CalendarIcon","Loader2","Search","ChevronDown","ChevronLeft","ChevronRight","createPortal","flexRender"],"mappings":"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"}