infinity-ui-elements 1.15.1 → 1.15.3
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/components/Select/Select.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +5 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.stories.d.ts +1 -0
- package/dist/components/Tooltip/Tooltip.stories.d.ts.map +1 -1
- package/dist/index.esm.js +89 -12
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +89 -12
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.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/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Text/Text.tsx","../src/components/Divider/Divider.tsx","../src/components/BottomSheet/BottomSheet.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-hover-card/dist/index.mjs","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/ListItem/ListItem.tsx","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/FileInput/FileInput.tsx","../src/components/Modal/Modal.tsx","../src/components/TextField/TextField.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/SearchableDropdown/SearchableDropdown.tsx","../src/components/SidePanel/SidePanel.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/SelectTextField/SelectTextField.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","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastProvider.tsx","../src/components/UploadBox/UploadBox.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=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.99907 1.77063L8.63188 2.42981L8.69829 2.49915L8.63188 2.56848L3.88188 7.50891L3.80962 7.58411L3.73833 7.50891L0.887741 4.54504L0.821335 4.47571L0.887741 4.40637L1.52153 3.74719L1.5938 3.672L1.66508 3.74719L3.80962 5.97766L7.85454 1.77063L7.9268 1.69543L7.99907 1.77063Z\" fill=\"white\" stroke=\"white\" stroke-width=\"0.2\"/>\n</svg>\n`,\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 upload: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4 19H20V12H22V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V12H4V19ZM13 9V16H11V9H6L12 3L18 9H13Z\" fill=\"#081416\"/>\n</svg>\n`,\n file: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M19.1111 21H4.88889C4.39797 21 4 20.5971 4 20.1V3.9C4 3.40295 4.39797 3 4.88889 3H19.1111C19.602 3 20 3.40295 20 3.9V20.1C20 20.5971 19.602 21 19.1111 21ZM18.2222 19.2V4.8H5.77778V19.2H18.2222ZM8.44444 9.3H15.5556V11.1H8.44444V9.3ZM8.44444 12.9H15.5556V14.7H8.44444V12.9Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronDown: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 13.7272L17.4445 8L19 9.63635L12 17L5 9.63635L6.55555 8L12 13.7272Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronUp: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 11.2727L6.55555 17L5 15.3637L12 8L19 15.3637L17.4445 17L12 11.2727Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronLeft: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.2727 12L17 17.4445L15.3637 19L8 12L15.3637 5L17 6.55555L11.2727 12Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronRight: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M13.7272 12L8 6.55555L9.63635 5L17 12L9.63635 19L8 17.4445L13.7272 12Z\" fill=\"#081416\"/>\n</svg>\n`,\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: \"h-[28px] px-3 rounded-medium text-body-small-medium\",\n small: \"h-[32px] px-4 rounded-medium text-body-small-medium\",\n medium: \"h-[36px] px-5 py-2 rounded-large text-body-medium-medium\",\n large: \"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: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: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: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: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: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-[28px] w-7\",\n },\n {\n isIconOnly: true,\n size: \"small\",\n class: \"h-[32px] w-8\",\n },\n {\n isIconOnly: true,\n size: \"medium\",\n class: \"h-[36px] w-9\",\n },\n {\n isIconOnly: true,\n size: \"large\",\n class: \"h-[44px] 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 { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\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 * Custom class name for the label\n */\n labelClassName?: 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 labelClassName,\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 getTextClass = () => {\n switch (size) {\n case \"small\":\n return \"text-body-small-medium text-color-default\";\n case \"medium\":\n return \"text-body-medium-medium text-color-default\";\n default:\n return \"text-body-medium-medium text-color-default\";\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 && <p className={cn(getTextClass(), labelClassName)}>{label}</p>}\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 * Leading icon to display before the badge content\n */\n leadingIcon?: React.ReactNode;\n /**\n * Trailing icon to display after the badge content\n */\n trailingIcon?: React.ReactNode;\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (\n { className, variant, size, color, showDot = false, leadingIcon, trailingIcon, 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 {leadingIcon && <span className=\"inline-flex\">{leadingIcon}</span>}\n {children}\n {trailingIcon && <span className=\"inline-flex\">{trailingIcon}</span>}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\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\";\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 { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\n\nexport interface BottomSheetProps {\n /**\n * Whether the bottom sheet is open\n */\n isOpen: boolean;\n /**\n * Callback when the bottom sheet should close\n */\n onClose?: () => void;\n /**\n * Bottom sheet title - optional\n */\n title?: string;\n /**\n * Bottom sheet description/subtitle - optional\n */\n description?: string;\n /**\n * Bottom sheet footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Bottom sheet body content\n */\n children: React.ReactNode;\n /**\n * Style variant - \"default\" applies default styles, \"unstyled\" removes all default styling\n */\n variant?: \"default\" | \"unstyled\";\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Whether to show the drag handle\n */\n showDragHandle?: boolean;\n /**\n * Whether clicking the overlay closes the bottom sheet\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the bottom sheet\n */\n closeOnEscape?: boolean;\n /**\n * Whether swiping down closes the bottom sheet\n */\n closeOnSwipeDown?: boolean;\n /**\n * Maximum height of the bottom sheet (percentage or specific value)\n */\n maxHeight?: string;\n /**\n * Custom class name for the bottom sheet container\n */\n className?: string;\n /**\n * Custom class name for the bottom sheet 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 BottomSheet = React.forwardRef<HTMLDivElement, BottomSheetProps>(\n (\n {\n isOpen,\n onClose,\n title,\n description,\n footer,\n children,\n variant = \"default\",\n showCloseButton = true,\n showDragHandle = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n closeOnSwipeDown = true,\n maxHeight = \"90vh\",\n className,\n contentClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n overlayClassName,\n ariaLabel,\n ariaDescribedBy,\n },\n ref\n ) => {\n const sheetRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || sheetRef;\n const [isClosing, setIsClosing] = React.useState(false);\n const [touchStart, setTouchStart] = React.useState<number | null>(null);\n const [touchEnd, setTouchEnd] = React.useState<number | null>(null);\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 handleClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when bottom sheet 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 // Reset closing state when opening\n React.useEffect(() => {\n if (isOpen) {\n setIsClosing(false);\n }\n }, [isOpen]);\n\n // Handle close with animation\n const handleClose = () => {\n if (!onClose) return;\n setIsClosing(true);\n // Wait for animation to complete before calling onClose\n setTimeout(() => {\n onClose();\n setIsClosing(false);\n }, 300); // Match animation duration\n };\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n handleClose();\n }\n };\n\n // Handle touch events for swipe down\n const handleTouchStart = (e: React.TouchEvent) => {\n if (!closeOnSwipeDown) return;\n setTouchEnd(null);\n setTouchStart(e.targetTouches[0].clientY);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!closeOnSwipeDown) return;\n setTouchEnd(e.targetTouches[0].clientY);\n };\n\n const handleTouchEnd = () => {\n if (!closeOnSwipeDown || !touchStart || !touchEnd) return;\n\n const distance = touchEnd - touchStart;\n const isSwipeDown = distance > 100; // Minimum swipe distance\n\n if (isSwipeDown) {\n handleClose();\n }\n\n setTouchStart(null);\n setTouchEnd(null);\n };\n\n // Don't render if not open and not closing\n if (!isOpen && !isClosing) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-9999 flex items-end justify-center\",\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 z-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300\",\n isClosing ? \"opacity-0\" : \"opacity-100\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Bottom Sheet Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative z-10 w-full transition-transform duration-300\",\n \"flex flex-col overflow-hidden\",\n variant === \"default\" && \"bg-white rounded-t-2xl shadow-xl\",\n isClosing ? \"animate-slide-out-bottom\" : \"animate-slide-in-bottom\",\n contentClassName\n )}\n style={{ maxHeight }}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n >\n {/* Drag Handle */}\n {showDragHandle && variant === \"default\" && (\n <div className=\"flex justify-center pt-3 pb-2\">\n <div className=\"w-10 h-1 bg-neutral-300 rounded-full\" />\n </div>\n )}\n\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4\",\n variant === \"default\" && \"px-6\",\n variant === \"default\" && !showDragHandle && \"pt-6\",\n variant === \"default\" && showDragHandle && \"pt-2\",\n variant === \"default\" && !description && \"pb-4\",\n variant === \"default\" && 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={handleClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close bottom sheet\"\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\n className={cn(\n \"absolute z-10\",\n variant === \"default\" && \"top-4 right-4\"\n )}\n >\n <IconButton\n icon=\"close\"\n onClick={handleClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close bottom sheet\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto\",\n variant === \"default\" && \"px-6\",\n variant === \"default\" && hasHeader && \"py-4\",\n variant === \"default\" && !hasHeader && !showDragHandle && \"pt-6 pb-4\",\n variant === \"default\" && !hasHeader && showDragHandle && \"pt-2 pb-4\",\n variant === \"default\" && !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n {variant === \"default\" && (\n <Divider thickness=\"thin\" variant=\"muted\" />\n )}\n <div\n className={cn(\n \"flex items-center justify-end gap-3\",\n variant === \"default\" && \"px-6 py-4\",\n footerClassName\n )}\n >\n {footer}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nBottomSheet.displayName = \"BottomSheet\";\n\nexport { BottomSheet };\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 (validationState === \"negative\")\n return \"text-feedback-ink-negative-subtle\";\n if (isDisabled) return \"text-surface-ink-neutral-disabled\";\n if (validationState === \"positive\")\n return \"text-feedback-ink-positive-intense\";\n\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-[14px] h-[14px] rounded-small border-[1.5px]\",\n medium: \"w-[16px] h-[16px] rounded-small border-[1.5px]\",\n large: \"w-[20px] h-[20px] 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\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 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 or entering indeterminate state (not unchecking)\n const willBeChecked = !isChecked || isIndeterminate;\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 or entering indeterminate state (not unchecking)\n const willBeChecked = !isChecked || isIndeterminate;\n if (willBeChecked) {\n triggerRipple();\n }\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: 7,\n },\n medium: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 9.6,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-medium-regular\",\n iconSize: 13.33,\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 py-0.5\", 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","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/hover-card.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { jsx } from \"react/jsx-runtime\";\nvar originalBodyUserSelect;\nvar HOVERCARD_NAME = \"HoverCard\";\nvar [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [HoverCardProvider, useHoverCardContext] = createHoverCardContext(HOVERCARD_NAME);\nvar HoverCard = (props) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const hasSelectionRef = React.useRef(false);\n const isPointerDownOnContentRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: HOVERCARD_NAME\n });\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }\n }, [closeDelay, setOpen]);\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n return /* @__PURE__ */ jsx(\n HoverCardProvider,\n {\n scope: __scopeHoverCard,\n open,\n onOpenChange: setOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n children: /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children })\n }\n );\n};\nHoverCard.displayName = HOVERCARD_NAME;\nvar TRIGGER_NAME = \"HoverCardTrigger\";\nvar HoverCardTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.a,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n ...triggerProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n onFocus: composeEventHandlers(props.onFocus, context.onOpen),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onTouchStart: composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())\n }\n ) });\n }\n);\nHoverCardTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"HoverCardPortal\";\nvar [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar HoverCardPortal = (props) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeHoverCard, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nHoverCardPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"HoverCardContent\";\nvar HoverCardContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(\n HoverCardContentImpl,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n ...contentProps,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n ref: forwardedRef\n }\n ) });\n }\n);\nHoverCardContent.displayName = CONTENT_NAME;\nvar HoverCardContentImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n body.style.userSelect = \"none\";\n body.style.webkitUserSelect = \"none\";\n return () => {\n body.style.userSelect = originalBodyUserSelect;\n body.style.webkitUserSelect = originalBodyUserSelect;\n };\n }\n }, [containSelection]);\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = () => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== \"\";\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n };\n document.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n document.removeEventListener(\"pointerup\", handlePointerUp);\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = false;\n };\n }\n }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute(\"tabindex\", \"-1\"));\n }\n });\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n }),\n onDismiss: context.onDismiss,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...contentProps,\n onPointerDown: composeEventHandlers(contentProps.onPointerDown, (event) => {\n if (event.currentTarget.contains(event.target)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n }),\n ref: composedRefs,\n style: {\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : void 0,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : void 0,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-hover-card-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-hover-card-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-hover-card-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-hover-card-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-hover-card-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n );\n});\nvar ARROW_NAME = \"HoverCardArrow\";\nvar HoverCardArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nHoverCardArrow.displayName = ARROW_NAME;\nfunction excludeTouch(eventHandler) {\n return (event) => event.pointerType === \"touch\" ? void 0 : eventHandler();\n}\nfunction getTabbableNodes(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nvar Root2 = HoverCard;\nvar Trigger = HoverCardTrigger;\nvar Portal = HoverCardPortal;\nvar Content2 = HoverCardContent;\nvar Arrow2 = HoverCardArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n HoverCard,\n HoverCardArrow,\n HoverCardContent,\n HoverCardPortal,\n HoverCardTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createHoverCardScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\n\nconst tooltipVariants = cva(\n \"z-[9998] bg-popup-fill-intense text-action-ink-on-primary-normal border border-popup-outline-subtle flex flex-col p-4 rounded-xlarge min-w-[200px] max-w-[300px] shadow-[0_4px_20px_rgba(0,0,0,0.15)]\"\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 { side, align } = React.useMemo(() => {\n switch (placement) {\n case \"top-start\":\n return { side: \"top\" as const, align: \"start\" as const };\n case \"top-end\":\n return { side: \"top\" as const, align: \"end\" as const };\n case \"bottom-start\":\n return { side: \"bottom\" as const, align: \"start\" as const };\n case \"bottom-end\":\n return { side: \"bottom\" as const, align: \"end\" as const };\n case \"bottom\":\n return { side: \"bottom\" as const, align: \"center\" as const };\n case \"top\":\n default:\n return { side: \"top\" as const, align: \"center\" as const };\n }\n }, [placement]);\n\n if (disabled) {\n return children;\n }\n\n return (\n <HoverCardPrimitive.Root openDelay={delay} closeDelay={250}>\n <HoverCardPrimitive.Trigger asChild>{children}</HoverCardPrimitive.Trigger>\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={ref}\n role=\"tooltip\"\n side={side}\n align={align}\n sideOffset={14}\n collisionPadding={8}\n className={cn(tooltipVariants(), className)}\n >\n {showArrow && (\n <HoverCardPrimitive.Arrow\n width={12}\n height={6}\n className=\"fill-popup-fill-intense\"\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 variant=\"body\" size=\"small\" weight=\"regular\" color=\"onPrimary\">\n {description}\n </Text>\n </div>\n </HoverCardPrimitive.Content>\n </HoverCardPrimitive.Portal>\n </HoverCardPrimitive.Root>\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-medium\",\n textClassNameRegular: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textClassName: \"text-body-small-medium\",\n textClassNameRegular: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textClassName: \"text-body-medium-medium\",\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-ink-neutral-muted 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 { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Calendar as CalendarIcon, X } 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-functional 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 * Date format pattern string (e.g., \"YYYY-MM-DD\", \"MM/DD/YYYY\")\n * If provided, this will be used instead of formatDate\n */\n format?: 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\n// Helper function to format date based on format string\nconst formatDateByPattern = (date: Date, format: string): string => {\n const day = date.getDate();\n const month = date.getMonth() + 1; // getMonth() returns 0-11\n const year = date.getFullYear();\n\n const monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n const monthNamesFull = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n\n const dayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n const dayNamesFull = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n // Pad numbers with leading zeros\n const pad = (n: number, length: number = 2): string => {\n const str = n.toString();\n if (str.length >= length) return str;\n return \"0\".repeat(length - str.length) + str;\n };\n\n let formatted = format;\n\n // Replace format patterns\n formatted = formatted.replace(/YYYY/g, year.toString());\n formatted = formatted.replace(/YY/g, year.toString().slice(-2));\n formatted = formatted.replace(/MMMM/g, monthNamesFull[month - 1]);\n formatted = formatted.replace(/MMM/g, monthNames[month - 1]);\n formatted = formatted.replace(/MM/g, pad(month));\n formatted = formatted.replace(/M/g, month.toString());\n formatted = formatted.replace(/DDDD/g, dayNamesFull[date.getDay()]);\n formatted = formatted.replace(/DDD/g, dayNames[date.getDay()]);\n formatted = formatted.replace(/DD/g, pad(day));\n formatted = formatted.replace(/D/g, day.toString());\n\n return formatted;\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 = true,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n calendarClassName,\n minDate,\n maxDate,\n formatDate = formatDateDefault,\n format,\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 const [isInsideModal, setIsInsideModal] = React.useState(false);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n bottom: 0,\n });\n const [calendarHeight, setCalendarHeight] = React.useState(300); // Default height estimate\n\n const value =\n controlledValue !== undefined\n ? parseDate(controlledValue)\n : uncontrolledValue;\n\n const hasValue = value !== null;\n\n // Create a formatter function that uses format prop if provided, otherwise formatDate\n const formatDateValue = React.useCallback(\n (date: Date): string => {\n if (format) {\n return formatDateByPattern(date, format);\n }\n return formatDate(date);\n },\n [format, formatDate]\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 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 // Check if date picker is inside a modal\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n let element: HTMLElement | null = datePickerRef.current;\n let foundModal = false;\n while (element && !foundModal) {\n const styles = window.getComputedStyle(element);\n const zIndex = parseInt(styles.zIndex, 10);\n // Check if element has modal z-index (10000) or is a modal container\n if (zIndex === 10000 || element.getAttribute(\"role\") === \"dialog\") {\n foundModal = true;\n setIsInsideModal(true);\n break;\n }\n element = element.parentElement;\n }\n if (!foundModal) {\n setIsInsideModal(false);\n }\n }\n }, [isOpen]);\n\n // Update position when calendar opens or window resizes\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n const updatePosition = () => {\n const rect = datePickerRef.current?.getBoundingClientRect();\n if (rect) {\n setPosition({\n top: rect.top,\n left: rect.left,\n width: rect.width,\n bottom: rect.bottom,\n });\n // Update dropdown placement based on available space\n updateDropdownPlacement();\n }\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n\n // Use requestAnimationFrame to ensure calendar is rendered before calculating placement\n let rafId = requestAnimationFrame(() => {\n updateDropdownPlacement();\n });\n\n const handleUpdate = () => {\n updateDropdownPlacement();\n // Also update position when scrolling/resizing\n if (datePickerRef.current) {\n const rect = datePickerRef.current.getBoundingClientRect();\n setPosition({\n top: rect.top,\n left: rect.left,\n width: rect.width,\n bottom: rect.bottom,\n });\n }\n };\n\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 // Delay to ensure calendar is rendered\n const timer = setTimeout(() => {\n updateDropdownPlacement();\n }, 0);\n return () => clearTimeout(timer);\n }\n }, [isOpen, updateDropdownPlacement]);\n\n // Measure calendar height and adjust position after render\n React.useLayoutEffect(() => {\n if (isOpen && calendarRef.current && datePickerRef.current) {\n const measuredHeight = calendarRef.current.offsetHeight;\n setCalendarHeight(measuredHeight);\n\n const rect = datePickerRef.current.getBoundingClientRect();\n\n // Recalculate placement if needed based on actual calendar height\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n\n if (measuredHeight > spaceBelow && spaceAbove > spaceBelow) {\n setDropdownPlacement(\"top\");\n } else {\n setDropdownPlacement(\"bottom\");\n }\n\n // Update position\n setPosition({\n top: rect.top,\n left: rect.left,\n width: rect.width,\n bottom: rect.bottom,\n });\n }\n }, [isOpen]);\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 calendarRef.current &&\n !calendarRef.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 ? formatDateValue(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 aria-label=\"Clear date\"\n >\n <X className=\"w-4 h-4\" />\n </button>\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\n {/* Calendar Popup Portal */}\n {typeof document !== \"undefined\" &&\n isOpen &&\n !isDisabled &&\n (() => {\n // Calculate calendar position using fixed positioning (viewport-relative)\n const gap = 4; // 4px gap between trigger and calendar\n\n const calendarTop =\n dropdownPlacement === \"bottom\"\n ? position.bottom + gap\n : position.top - calendarHeight - gap;\n\n const calendarPopup = (\n <div\n ref={calendarRef}\n style={{\n position: \"fixed\",\n top: `${calendarTop}px`,\n left: `${position.left}px`,\n zIndex: isInsideModal ? 10001 : 9999,\n }}\n className={cn(\n \"bg-surface-fill-neutral-intense rounded-large shadow-lg p-4 w-fit\",\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 showNeighboringMonth={true}\n showFixedNumberOfWeeks={true}\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\n return createPortal(calendarPopup, document.body);\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\";\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 { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n Calendar as CalendarIcon,\n ChevronLeft,\n ChevronRight,\n} 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 { Button } from \"../Button\";\nimport { Icon } from \"../../lib/icons\";\nimport { ListItem } from \"../ListItem\";\n\nexport type DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\nexport type PresetOption = {\n label: string;\n value: string;\n getDateRange: () => DateRange;\n};\n\nconst dateRangePickerVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-functional font-size-100 leading-100 bg-surface-fill-neutral-intense\",\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 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: `\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 },\n },\n defaultVariants: {\n size: \"medium\",\n isDisabled: false,\n },\n }\n);\n\n// Default preset options\nconst defaultPresets: PresetOption[] = [\n {\n label: \"Today\",\n value: \"today\",\n getDateRange: () => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return { startDate: today, endDate: today };\n },\n },\n {\n label: \"Yesterday\",\n value: \"yesterday\",\n getDateRange: () => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n yesterday.setHours(0, 0, 0, 0);\n return { startDate: yesterday, endDate: yesterday };\n },\n },\n {\n label: \"Last 7 days\",\n value: \"last7days\",\n getDateRange: () => {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - 6);\n startDate.setHours(0, 0, 0, 0);\n return { startDate, endDate };\n },\n },\n {\n label: \"Last 30 days\",\n value: \"last30days\",\n getDateRange: () => {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - 29);\n startDate.setHours(0, 0, 0, 0);\n return { startDate, endDate };\n },\n },\n {\n label: \"Last 6 months\",\n value: \"last6months\",\n getDateRange: () => {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date();\n startDate.setMonth(startDate.getMonth() - 6);\n startDate.setHours(0, 0, 0, 0);\n return { startDate, endDate };\n },\n },\n {\n label: \"All time\",\n value: \"alltime\",\n getDateRange: () => {\n return { startDate: null, endDate: null };\n },\n },\n];\n\nexport interface DateRangePickerProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n > {\n /**\n * Selected date range (controlled)\n */\n value?: DateRange;\n /**\n * Default date range (uncontrolled)\n */\n defaultValue?: DateRange;\n /**\n * Callback when date range changes\n */\n onChange?: (dateRange: DateRange) => void;\n /**\n * Placeholder text when no date range is selected\n */\n placeholder?: string;\n /**\n * Whether the date range picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Size of the date range picker\n */\n size?: \"small\" | \"medium\" | \"large\";\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 * Preset options to show in the sidebar\n */\n presets?: PresetOption[];\n /**\n * Whether to show preset options\n */\n showPresets?: boolean;\n /**\n * Label for the trigger button when a preset is selected\n */\n selectedPresetLabel?: string;\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\nconst isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nconst formatMonthYear = (date: Date): string => {\n return date.toLocaleDateString(\"en-US\", {\n month: \"long\",\n year: \"numeric\",\n });\n};\n\nexport const DateRangePicker = React.forwardRef<\n HTMLDivElement,\n DateRangePickerProps\n>(\n (\n {\n className,\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select date range\",\n isDisabled = false,\n size = \"medium\",\n triggerClassName,\n calendarClassName,\n minDate,\n maxDate,\n formatDate = formatDateDefault,\n presets = defaultPresets,\n showPresets = true,\n selectedPresetLabel,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<DateRange>(\n defaultValue || { startDate: null, endDate: null }\n );\n const [tempValue, setTempValue] = React.useState<DateRange>(\n defaultValue || { startDate: null, endDate: null }\n );\n const [isOpen, setIsOpen] = React.useState(false);\n const [selectedPreset, setSelectedPreset] = React.useState<string | null>(\n null\n );\n const [startMonth, setStartMonth] = React.useState(new Date());\n const [endMonth, setEndMonth] = React.useState(() => {\n const nextMonth = new Date();\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n return nextMonth;\n });\n\n const datePickerRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n bottom: 0,\n });\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n const [isInsideModal, setIsInsideModal] = React.useState(false);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const hasValue = value.startDate !== null || value.endDate !== null;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled) {\n setIsOpen(newOpen);\n if (newOpen) {\n // Set temp value to current value when opening\n setTempValue(value);\n }\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handlePresetClick = (preset: PresetOption) => {\n const dateRange = preset.getDateRange();\n setTempValue(dateRange);\n setSelectedPreset(preset.value);\n };\n\n const handleStartDateChange = (\n value: Date | null | [Date | null, Date | null],\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n const selectedDate = Array.isArray(value) ? value[0] : value;\n if (!selectedDate) return;\n\n const newStartDate = new Date(selectedDate);\n newStartDate.setHours(0, 0, 0, 0);\n\n setTempValue((prev) => ({\n startDate: newStartDate,\n endDate: prev.endDate,\n }));\n setSelectedPreset(null);\n };\n\n const handleEndDateChange = (\n value: Date | null | [Date | null, Date | null],\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n const selectedDate = Array.isArray(value) ? value[0] : value;\n if (!selectedDate) return;\n\n const newEndDate = new Date(selectedDate);\n newEndDate.setHours(0, 0, 0, 0);\n\n setTempValue((prev) => ({\n startDate: prev.startDate,\n endDate: newEndDate,\n }));\n setSelectedPreset(null);\n };\n\n const handleApply = () => {\n if (controlledValue === undefined) {\n setUncontrolledValue(tempValue);\n }\n onChange?.(tempValue);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setTempValue(value);\n setIsOpen(false);\n };\n\n const handlePrevStartMonth = () => {\n const newMonth = new Date(startMonth);\n newMonth.setMonth(newMonth.getMonth() - 1);\n setStartMonth(newMonth);\n };\n\n const handleNextStartMonth = () => {\n const newMonth = new Date(startMonth);\n newMonth.setMonth(newMonth.getMonth() + 1);\n setStartMonth(newMonth);\n };\n\n const handlePrevEndMonth = () => {\n const newMonth = new Date(endMonth);\n newMonth.setMonth(newMonth.getMonth() - 1);\n setEndMonth(newMonth);\n };\n\n const handleNextEndMonth = () => {\n const newMonth = new Date(endMonth);\n newMonth.setMonth(newMonth.getMonth() + 1);\n setEndMonth(newMonth);\n };\n\n // Check if date picker is inside a modal\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n let element: HTMLElement | null = datePickerRef.current;\n let foundModal = false;\n while (element && !foundModal) {\n const styles = window.getComputedStyle(element);\n const zIndex = parseInt(styles.zIndex, 10);\n if (zIndex === 10000 || element.getAttribute(\"role\") === \"dialog\") {\n foundModal = true;\n setIsInsideModal(true);\n break;\n }\n element = element.parentElement;\n }\n if (!foundModal) {\n setIsInsideModal(false);\n }\n }\n }, [isOpen]);\n\n // Update position and placement when calendar opens or window resizes\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n const updatePosition = () => {\n const rect = datePickerRef.current?.getBoundingClientRect();\n const calendarHeight = calendarRef.current?.offsetHeight || 600; // Estimated height\n\n if (rect) {\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const gap = 4;\n\n // Calculate available space\n const spaceBelow = viewportHeight - rect.bottom - gap;\n const spaceAbove = rect.top - gap;\n\n // Determine vertical placement\n const placement =\n spaceBelow >= calendarHeight || spaceBelow >= spaceAbove\n ? \"bottom\"\n : \"top\";\n setDropdownPlacement(placement);\n\n // Calculate horizontal position\n let leftPosition = rect.left;\n const calendarWidth = calendarRef.current?.offsetWidth || 900; // Estimated width\n\n // Adjust if dropdown would overflow right edge\n if (leftPosition + calendarWidth > viewportWidth) {\n leftPosition = viewportWidth - calendarWidth - 10; // 10px margin from edge\n }\n\n // Ensure it doesn't overflow left edge\n if (leftPosition < 10) {\n leftPosition = 10;\n }\n\n setPosition({\n top: rect.top,\n left: leftPosition,\n width: rect.width,\n bottom: rect.bottom,\n });\n }\n };\n\n updatePosition();\n\n // Small delay to ensure calendar is rendered for accurate measurements\n const timeoutId = setTimeout(updatePosition, 10);\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }\n }, [isOpen]);\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 calendarRef.current &&\n !calendarRef.current.contains(event.target as Node)\n ) {\n handleCancel();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen, value]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleCancel();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen, value]);\n\n const minDateParsed = parseDate(minDate);\n const maxDateParsed = parseDate(maxDate);\n\n const getDisplayText = () => {\n if (selectedPresetLabel) {\n return selectedPresetLabel;\n }\n\n if (selectedPreset) {\n const preset = presets.find((p) => p.value === selectedPreset);\n if (preset) return preset.label;\n }\n\n if (!hasValue) {\n return placeholder;\n }\n\n if (value.startDate && value.endDate) {\n if (isSameDay(value.startDate, value.endDate)) {\n return formatDate(value.startDate);\n }\n return `${formatDate(value.startDate)} - ${formatDate(value.endDate)}`;\n }\n\n if (value.startDate) {\n return `From ${formatDate(value.startDate)}`;\n }\n\n if (value.endDate) {\n return `Until ${formatDate(value.endDate)}`;\n }\n\n return placeholder;\n };\n\n return (\n <div ref={datePickerRef} className={cn(\"relative w-fit\", className)}>\n <div\n className={cn(\n dateRangePickerVariants({\n size,\n isDisabled,\n }),\n \"cursor-pointer\",\n triggerClassName\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 : \"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 {getDisplayText()}\n </span>\n\n <Icon\n name=\"chevronDown\"\n size={16}\n className={cn(\n \"shrink-0 transition-transform\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-muted\",\n isOpen && \"rotate-180\"\n )}\n />\n </div>\n\n {/* Calendar Popup Portal */}\n {typeof document !== \"undefined\" &&\n isOpen &&\n !isDisabled &&\n (() => {\n const gap = 4;\n const calendarHeight = calendarRef.current?.offsetHeight || 0;\n\n // Calculate top position based on placement\n const calendarTop =\n dropdownPlacement === \"bottom\"\n ? position.bottom + gap\n : position.top - calendarHeight - gap;\n\n const calendarPopup = (\n <div\n ref={calendarRef}\n style={{\n position: \"fixed\",\n top: `${calendarTop}px`,\n left: `${position.left}px`,\n zIndex: isInsideModal ? 10001 : 9999,\n maxHeight:\n dropdownPlacement === \"bottom\"\n ? `${window.innerHeight - position.bottom - gap - 10}px`\n : `${position.top - gap - 10}px`,\n overflowY: \"auto\",\n }}\n className={cn(\n \"bg-surface-fill-neutral-intense rounded-large shadow-lg border border-surface-outline-neutral-subtle\",\n calendarClassName\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex\">\n {/* Presets Sidebar */}\n {showPresets && presets.length > 0 && (\n <div className=\"w-48 border-r border-surface-outline-neutral-subtle p-4 flex flex-col\">\n {presets.map((preset) => (\n <ListItem\n key={preset.value}\n title={preset.label}\n type=\"single\"\n showChevron={false}\n isSelected={selectedPreset === preset.value}\n onClick={() => handlePresetClick(preset)}\n containerClassName=\"mb-1 last:mb-0\"\n />\n ))}\n </div>\n )}\n\n {/* Calendars Section */}\n <div className=\"p-4\">\n <div className=\"flex gap-6\">\n {/* Start Date Calendar */}\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col px-3\">\n <p className=\"text-body-small-medium\">Start Date</p>\n </div>\n <div className=\"flex flex-col p-5 rounded-[8px] bg-surface-fill-neutral-moderate\">\n <div className=\"flex items-center justify-between mb-3 px-3\">\n <h3 className=\"text-body-small-medium font-medium text-surface-ink-neutral-normal\">\n {formatMonthYear(startMonth)}\n </h3>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={handlePrevStartMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n <button\n onClick={handleNextStartMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n </div>\n </div>\n <div className=\"date-range-calendar-wrapper\">\n <Calendar\n onChange={handleStartDateChange}\n value={tempValue.startDate}\n minDate={minDateParsed ?? undefined}\n maxDate={\n tempValue.endDate\n ? tempValue.endDate\n : maxDateParsed ?? undefined\n }\n activeStartDate={startMonth}\n onActiveStartDateChange={({\n activeStartDate,\n }) => {\n if (activeStartDate)\n setStartMonth(activeStartDate);\n }}\n locale=\"en-US\"\n showNavigation={false}\n showNeighboringMonth={true}\n showFixedNumberOfWeeks={true}\n formatShortWeekday={(locale, date) => {\n const weekdayNames = [\n \"SUN\",\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n ];\n return weekdayNames[date.getDay()];\n }}\n />\n </div>\n </div>\n </div>\n\n {/* End Date Calendar */}\n <div className=\"flex flex-col gap-3 \">\n <div className=\"flex flex-col px-3\">\n <p className=\"text-body-small-medium\">End Date</p>\n </div>\n <div className=\"flex flex-col p-5 rounded-[8px] bg-surface-fill-neutral-moderate\">\n <div className=\"flex items-center justify-between mb-3 px-3\">\n <h3 className=\"text-body-small-medium font-medium text-surface-ink-neutral-normal\">\n {formatMonthYear(endMonth)}\n </h3>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={handlePrevEndMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n <button\n onClick={handleNextEndMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n </div>\n </div>\n <div className=\"date-range-calendar-wrapper\">\n <Calendar\n onChange={handleEndDateChange}\n value={tempValue.endDate}\n minDate={\n tempValue.startDate\n ? tempValue.startDate\n : minDateParsed ?? undefined\n }\n maxDate={maxDateParsed ?? undefined}\n activeStartDate={endMonth}\n onActiveStartDateChange={({\n activeStartDate,\n }) => {\n if (activeStartDate)\n setEndMonth(activeStartDate);\n }}\n locale=\"en-US\"\n showNavigation={false}\n showNeighboringMonth={true}\n showFixedNumberOfWeeks={true}\n formatShortWeekday={(locale, date) => {\n const weekdayNames = [\n \"SUN\",\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n ];\n return weekdayNames[date.getDay()];\n }}\n />\n </div>\n </div>\n </div>\n </div>\n\n {/* Footer with Current Selection and Actions */}\n <div className=\"mt-4 pt-4 border-t border-surface-outline-neutral-subtle flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-2 h-2 rounded-full bg-action-fill-primary-default\"></div>\n <span className=\"text-sm text-surface-ink-neutral-normal\">\n {tempValue.startDate && tempValue.endDate\n ? isSameDay(tempValue.startDate, tempValue.endDate)\n ? \"Today\"\n : `${formatDate(\n tempValue.startDate\n )} - ${formatDate(tempValue.endDate)}`\n : tempValue.startDate\n ? `From ${formatDate(tempValue.startDate)}`\n : tempValue.endDate\n ? `Until ${formatDate(tempValue.endDate)}`\n : \"No selection\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"secondary\"\n color=\"neutral\"\n size=\"small\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"small\"\n onClick={handleApply}\n >\n Apply date range\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n\n return createPortal(calendarPopup, document.body);\n })()}\n </div>\n );\n }\n);\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { dateRangePickerVariants };\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 customContentClassName?: string;\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 * Max height of the dropdown menu (used for viewport constraint)\n */\n maxHeight?: string;\n /**\n * Whether to remove container styling (useful when nested in BottomSheet)\n */\n unstyled?: boolean;\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n items = [],\n customContent,\n customContentClassName,\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 maxHeight = \"400px\",\n unstyled = false,\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\n className={`py-3 px-3 overflow-y-auto ${customContentClassName}`}\n style={{ maxHeight }}\n >\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>{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 overflow-y-auto`} style={{ maxHeight }}>\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 !unstyled && \"bg-white rounded-large overflow-hidden\",\n unstyled && \"w-full\",\n widthClass,\n className\n )}\n style={{\n ...(!unstyled && {\n boxShadow:\n \"0 1px 2px rgba(25, 25, 30, 0.1), 0 2px 6px rgba(25, 25, 30, 0.06)\",\n }),\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 {onSecondaryClick && (\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onSecondaryClick}\n >\n {secondaryButtonText}\n </Button>\n )}\n {onPrimaryClick && (\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onPrimaryClick}\n >\n {primaryButtonText}\n </Button>\n )}\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\";\nimport { BottomSheet } from \"../BottomSheet\";\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 * Custom class name for custom content\n */\n customContentClassName?: string;\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 customContentClassName,\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 const menuRef = React.useRef<HTMLDivElement>(null);\n const [menuPosition, setMenuPosition] = React.useState({\n top: \"100%\",\n bottom: \"auto\",\n left: \"0\",\n right: \"auto\",\n maxHeight: \"400px\",\n });\n\n // Detect if we're on mobile (< 768px)\n const [isMobile, setIsMobile] = React.useState(false);\n \n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n \n // Check on mount\n checkMobile();\n \n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\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 // Calculate and adjust dropdown position to keep it within viewport\n React.useEffect(() => {\n if (!isOpen || !dropdownRef.current || !menuRef.current) return;\n\n const calculatePosition = () => {\n const triggerRect = dropdownRef.current!.getBoundingClientRect();\n const menuElement = menuRef.current!;\n\n // Get menu dimensions (use a temporary measurement if needed)\n const menuRect = menuElement.getBoundingClientRect();\n const menuHeight = menuRect.height || 400; // fallback to max-height\n const menuWidth = menuRect.width;\n\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n const spaceRight = viewportWidth - triggerRect.left;\n const spaceLeft = triggerRect.right;\n\n const position: {\n top: string;\n bottom: string;\n left: string;\n right: string;\n maxHeight: string;\n } = {\n top: \"auto\",\n bottom: \"auto\",\n left: \"auto\",\n right: \"auto\",\n maxHeight: \"400px\",\n };\n\n // Vertical positioning\n if (spaceBelow >= menuHeight || spaceBelow >= spaceAbove) {\n // Position below trigger\n position.top = \"100%\";\n position.bottom = \"auto\";\n position.maxHeight = `${Math.min(400, spaceBelow - 16)}px`;\n } else {\n // Position above trigger\n position.top = \"auto\";\n position.bottom = \"100%\";\n position.maxHeight = `${Math.min(400, spaceAbove - 16)}px`;\n }\n\n // Horizontal positioning\n if (spaceRight >= menuWidth) {\n // Align to left edge of trigger\n position.left = \"0\";\n position.right = \"auto\";\n } else if (spaceLeft >= menuWidth) {\n // Align to right edge of trigger\n position.left = \"auto\";\n position.right = \"0\";\n } else {\n // Not enough space on either side, try to center or align based on available space\n if (triggerRect.left + menuWidth > viewportWidth) {\n position.left = \"auto\";\n position.right = \"0\";\n } else {\n position.left = \"0\";\n position.right = \"auto\";\n }\n }\n\n setMenuPosition(position);\n };\n\n // Calculate position after menu is rendered\n calculatePosition();\n\n // Recalculate on window resize or scroll\n const handleResize = () => calculatePosition();\n const handleScroll = () => calculatePosition();\n\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleScroll, true);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleScroll, true);\n };\n }, [isOpen]);\n\n const sizeMap = {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n };\n\n // Render dropdown menu content wrapped in BottomSheet for mobile\n const renderDropdownContent = () => (\n <DropdownMenu\n ref={ref}\n items={items}\n customContent={customContent}\n customContentClassName={customContentClassName}\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={className}\n width={isMobile ? \"full\" : sizeMap[size]}\n maxHeight={menuPosition.maxHeight}\n unstyled={isMobile}\n />\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 {/* Mobile: BottomSheet */}\n {isMobile ? (\n <BottomSheet\n isOpen={isOpen}\n onClose={() => handleOpenChange(false)}\n title={sectionHeading}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\n /* Desktop: Regular Dropdown Menu */\n isOpen && (\n <div\n ref={menuRef}\n className={cn(\"absolute z-50\", menuClassName)}\n style={{\n top: menuPosition.top,\n bottom: menuPosition.bottom,\n left: menuPosition.left,\n right: menuPosition.right,\n marginTop: menuPosition.top === \"100%\" ? \"0.5rem\" : \"0\",\n marginBottom: menuPosition.bottom === \"100%\" ? \"0.5rem\" : \"0\",\n }}\n >\n {renderDropdownContent()}\n </div>\n )\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport { dropdownVariants };\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\";\nimport { Text } from \"../Text\";\nimport { Link } from \"../Link\";\nimport { IconButton } from \"../IconButton\";\n\nconst fileInputVariants = cva(\n \"relative flex items-center gap-3 border rounded-large transition-all font-functional 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 focus-within:border-action-outline-primary-default \n focus-within:bg-white!\n focus-within:ring-2 \n ring-surface-outline-primary-muted`,\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\n border-action-outline-neutral-disabled\n hover:border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense \n hover:bg-surface-fill-neutral-intense \n cursor-not-allowed`,\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface FileInputProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\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 accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n value?: File | File[] | null;\n onChange?: (files: File | File[] | null) => 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 buttonText?: string;\n placeholderText?: string;\n showClearButton?: boolean;\n onClear?: () => void;\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + \" \" + sizes[i];\n};\n\nconst FileInput = React.forwardRef<HTMLDivElement, FileInputProps>(\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 accept,\n multiple = false,\n maxSize,\n value,\n onChange,\n containerClassName,\n labelClassName,\n inputClassName,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n buttonText = \"Choose File\",\n placeholderText = \"No file chosen\",\n showClearButton = true,\n onClear,\n className,\n ...props\n },\n ref\n ) => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [selectedFiles, setSelectedFiles] = React.useState<File[]>([]);\n const [error, setError] = React.useState<string | null>(null);\n\n // Initialize from value prop\n React.useEffect(() => {\n if (value) {\n const filesArray = Array.isArray(value) ? value : [value];\n setSelectedFiles(filesArray);\n } else {\n setSelectedFiles([]);\n }\n }, [value]);\n\n const processFiles = (files: FileList | File[]): File[] => {\n const fileArray = Array.from(files);\n const validFiles: File[] = [];\n let currentError: string | null = null;\n\n fileArray.forEach((file) => {\n // Check file size\n if (maxSize && file.size > maxSize) {\n currentError = `File \"${\n file.name\n }\" exceeds maximum size of ${formatFileSize(maxSize)}`;\n setError(currentError);\n return;\n }\n\n // Check if file type is accepted\n if (accept) {\n const acceptedTypes = accept.split(\",\").map((type) => type.trim());\n const isAccepted = acceptedTypes.some((type) => {\n if (type.startsWith(\".\")) {\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n }\n if (type.includes(\"/*\")) {\n const baseType = type.split(\"/\")[0];\n return file.type.startsWith(baseType + \"/\");\n }\n return file.type === type;\n });\n\n if (!isAccepted) {\n currentError = `File type \"${file.type}\" is not accepted`;\n setError(currentError);\n return;\n }\n }\n\n validFiles.push(file);\n });\n\n if (currentError) {\n setError(currentError);\n } else {\n setError(null);\n }\n\n return validFiles;\n };\n\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const validFiles = processFiles(e.target.files);\n if (validFiles.length > 0) {\n const newFiles = multiple\n ? [...selectedFiles, ...validFiles]\n : validFiles;\n setSelectedFiles(newFiles);\n if (onChange) {\n onChange(multiple ? newFiles : newFiles[0] || null);\n }\n }\n // Reset input value to allow selecting the same file again\n e.target.value = \"\";\n }\n };\n\n const handleButtonClick = () => {\n if (!isDisabled && fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n const handleClear = () => {\n if (isDisabled) return;\n \n setSelectedFiles([]);\n setError(null);\n \n // Clear the file input\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n\n if (onClear) {\n onClear();\n }\n\n if (onChange) {\n onChange(null);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText || error;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n buttonSize: \"xsmall\" as const,\n },\n medium: {\n gap: \"gap-2\",\n buttonSize: \"small\" as const,\n },\n large: {\n gap: \"gap-3\",\n buttonSize: \"small\" as const,\n },\n };\n\n const config = sizeConfig[size];\n\n const getDisplayText = () => {\n if (selectedFiles.length === 0) {\n return placeholderText;\n }\n if (selectedFiles.length === 1) {\n return selectedFiles[0].name;\n }\n return `${selectedFiles.length} file(s) selected`;\n };\n\n const hasFiles = selectedFiles.length > 0;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full flex flex-col\",\n config.gap,\n containerClassName\n )}\n {...props}\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 className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n fileInputVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={isDisabled}\n onChange={handleFileInputChange}\n className=\"hidden\"\n aria-label={label || \"File upload\"}\n />\n\n <Link\n type=\"action\"\n color=\"primary\"\n size={config.buttonSize}\n onClick={handleButtonClick}\n isDisabled={isDisabled}\n className=\"shrink-0\"\n >\n {buttonText}\n </Link>\n\n <div className=\"flex-1 min-w-0\">\n <Text\n variant=\"body\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n className=\"truncate\"\n title={getDisplayText()}\n >\n {getDisplayText()}\n </Text>\n </div>\n\n {showClearButton && hasFiles && !isDisabled && (\n <IconButton\n icon=\"close\"\n size=\"xsmall\"\n onClick={handleClear}\n aria-label=\"Clear selected files\"\n className=\"shrink-0\"\n />\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText || undefined}\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\nFileInput.displayName = \"FileInput\";\n\nexport { FileInput, fileInputVariants };\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 * Style variant - \"default\" applies default styles, \"unstyled\" removes all default styling\n */\n variant?: \"default\" | \"unstyled\";\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 variant = \"default\",\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-9999 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 z-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 transition-all z-10\",\n \"flex flex-col max-h-[90vh]\",\n variant === \"default\" && \"w-full bg-white rounded-large shadow-xl\",\n variant === \"default\" && sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4\",\n variant === \"default\" && \"px-6 pt-6\",\n variant === \"default\" && !description && \"pb-4\",\n variant === \"default\" && 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\n className={cn(\n \"absolute z-10\",\n variant === \"default\" && \"top-4 right-4\"\n )}\n >\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\",\n variant === \"default\" && \"px-6\",\n variant === \"default\" && hasHeader && \"py-4\",\n variant === \"default\" && !hasHeader && \"pt-6 pb-4\",\n variant === \"default\" && !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n {variant === \"default\" && (\n <Divider thickness=\"thin\" variant=\"muted\" />\n )}\n <div\n className={cn(\n \"flex items-center justify-end gap-3\",\n variant === \"default\" && \"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 { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-3 border rounded-large transition-all font-functional 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 focus-within:border-action-outline-primary-default \n focus-within:bg-white!\n focus-within:ring-2 \n ring-surface-outline-primary-muted`,\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\n border-action-outline-neutral-disabled\n hover:border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense \n hover:bg-surface-fill-neutral-intense \n cursor-not-allowed`,\n false: \"\",\n },\n isReadOnly: {\n true: \"\",\n false:\n \"hover:border-action-outline-neutral-faded-hover hover:bg-action-fill-neutral-faded-hover\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n isReadOnly: 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 isReadOnly: props.readOnly,\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 \"w-full 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\",\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 { cn } from \"../../lib/utils\";\nimport { Icon } from \"../../lib/icons\";\nimport { TextField } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { BottomSheet } from \"../BottomSheet\";\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\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 * Show the selected option's leadingIcon in the input box\n * Only shown when an option is selected and has a leadingIcon\n */\n showLeadingIcon?: boolean;\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<HTMLInputElement, 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 showLeadingIcon = false,\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 [isMobile, setIsMobile] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Detect if we're on mobile (< 768px)\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n\n // Check on mount\n checkMobile();\n\n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\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 const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled && !isLoading) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleTriggerContainerClick = (\n event: React.MouseEvent<HTMLDivElement>\n ) => {\n if (isDisabled || isLoading) return;\n const target = event.target as HTMLElement;\n\n // Let clear/other explicit buttons and links behave normally.\n if (target.closest(\"button\") || target.closest(\"a\")) return;\n\n // Open the dropdown when clicking anywhere on the trigger area.\n handleOpenChange(true);\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 inputRef.current?.focus();\n };\n\n const handleClear = () => {\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 = containerRef.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 containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n dropdownContainerRef.current &&\n !dropdownContainerRef.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 const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\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((opt) => opt.value === value);\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 // 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 // Get the display value for the TextField\n const displayValue = isLoading ? \"Loading...\" : selectedOption?.label || \"\";\n\n // Build the prefix: either provided prefix or selected option's leadingIcon\n const displayPrefix = prefix\n ? prefix\n : showLeadingIcon && selectedOption?.leadingIcon\n ? selectedOption.leadingIcon\n : undefined;\n\n // Build the suffix: include both the optional suffix and the chevron icon\n const chevronIcon = (\n <Icon\n name={isOpen ? \"chevronUp\" : \"chevronDown\"}\n size={16}\n className=\"shrink-0 transition-colors\"\n />\n );\n\n const displaySuffix = suffix ? (\n <>\n {suffix}\n {chevronIcon}\n </>\n ) : (\n chevronIcon\n );\n\n // Render dropdown menu content\n const renderDropdownContent = () => (\n <DropdownMenu\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={isMobile ? \"full\" : widthStyle}\n unstyled={isMobile}\n />\n );\n\n return (\n <div\n ref={containerRef}\n className=\"relative w-full\"\n onClickCapture={handleTriggerContainerClick}\n >\n <TextField\n ref={inputRef}\n label={label}\n helperText={helperText}\n errorText={errorText}\n successText={successText}\n validationState={validationState}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isOptional={isOptional}\n isLoading={isLoading}\n size={size}\n prefix={displayPrefix}\n suffix={displaySuffix}\n showClearButton={showClearButton && hasValue && !isLoading}\n onClear={handleClear}\n placeholder={placeholder}\n value={displayValue}\n readOnly\n containerClassName={cn(\"w-full\", containerClassName)}\n labelClassName={labelClassName}\n className={cn(\"cursor-pointer\", triggerClassName, className)}\n inputClassName=\"cursor-pointer\"\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n onClick={() => handleOpenChange(true)}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n {...props}\n />\n\n {/* Mobile: BottomSheet, Desktop: Regular Dropdown */}\n {isOpen && !isDisabled && !isLoading && (\n isMobile ? (\n <BottomSheet\n isOpen={isOpen}\n onClose={() => handleOpenChange(false)}\n title={sectionHeading || label}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\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 {renderDropdownContent()}\n </div>\n )\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../../lib/icons\";\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(\"relative z-10\", paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"hidden md:!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 md:!ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<Icon name=\"chevronLeft\" size={16} />}\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={<Icon name=\"chevronRight\" size={16} />}\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-[10px] h-[10px] border-[1.5px]\",\n medium: \"w-[12px] h-[12px] border-[1.5px]\",\n large: \"w-[16px] h-[16px] 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 * Visual variant for the radio button\n */\n variant?: \"default\" | \"card\";\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 card wrapper (when variant=\"card\")\n */\n cardClassName?: 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 variant = \"default\",\n containerClassName,\n labelClassName,\n cardClassName,\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: 4,\n boundingBoxSize: \"w-[14px] h-[14px] p-1\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 5,\n boundingBoxSize: \"w-[16px] h-[16px] p-1\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 7,\n boundingBoxSize: \"w-[20px] h-[20px] p-1\",\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 const radioContent = (\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 {/* Bounding Box */}\n <div\n className={cn(\n \"inline-flex items-center justify-center shrink-0 box-border\",\n config.boundingBoxSize\n )}\n >\n {/* Radio Circle */}\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 box-border\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\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\n // Wrap in card container if variant is \"card\"\n if (variant === \"card\") {\n return (\n <div className={cn(\"inline-flex flex-col w-full\", containerClassName)}>\n <div\n className={cn(\n \"w-full border rounded-xlarge p-5 transition-all\",\n isChecked\n ? \"border-action-outline-primary-default bg-action-fill-primary-faded\"\n : \"border-surface-outline-neutral-subtle hover:border-surface-outline-neutral-normal hover:bg-surface-fill-neutral-faded\",\n isDisabled\n ? \"opacity-60 cursor-not-allowed\"\n : \"cursor-pointer\",\n cardClassName\n )}\n onClick={(e) => {\n if (!isDisabled) {\n // Prevent double-click if already clicking on the radio itself\n if (e.target === inputRef.current) return;\n inputRef.current?.click();\n }\n }}\n >\n {radioContent}\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 return (\n <div className={cn(`inline-flex flex-col ${variant === \"default\" ? \"w-auto\" : \"w-full\"}`, containerClassName)}>\n {radioContent}\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 { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\nimport { Radio, type RadioProps } from \"./Radio\";\n\nexport interface RadioOption {\n /**\n * The value of the radio option\n */\n value: string;\n /**\n * The label text for the radio option\n */\n label: string;\n /**\n * Whether this option is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the option container\n */\n containerClassName?: string;\n /**\n * Custom class name for the option label\n */\n labelClassName?: string;\n}\n\nexport interface RadioGroupProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n > {\n /**\n * Selected value (controlled)\n */\n value?: string;\n /**\n * Default selected value (uncontrolled)\n */\n defaultValue?: string;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string) => void;\n /**\n * Array of radio options\n */\n options?: RadioOption[];\n /**\n * Custom radio buttons as children (alternative to options)\n */\n children?: React.ReactNode;\n /**\n * Label for the radio group\n */\n label?: string;\n /**\n * Helper text below the radio group\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 radio group\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio group is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the radio group is required\n */\n isRequired?: boolean;\n /**\n * Whether the radio group is optional\n */\n isOptional?: boolean;\n /**\n * Size of the radio buttons\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Name attribute for the radio inputs (auto-generated if not provided)\n */\n name?: string;\n /**\n * Orientation of the radio group\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Spacing between radio options\n */\n spacing?: \"tight\" | \"normal\" | \"loose\";\n /**\n * Visual variant for the radio group\n */\n variant?: \"default\" | \"card\";\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 radio group wrapper\n */\n groupClassName?: string;\n /**\n * Custom class for each radio card container (when variant=\"card\")\n */\n cardClassName?: 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\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n options,\n children,\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n size = \"medium\",\n name: nameProp,\n orientation = \"vertical\",\n spacing = \"normal\",\n variant = \"default\",\n containerClassName,\n labelClassName,\n groupClassName,\n cardClassName,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n className,\n id,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\n string | undefined\n >(defaultValue);\n const groupId = React.useId();\n const name = nameProp || `radio-group-${groupId}`;\n const groupRef = React.useRef<HTMLDivElement>(null);\n const radioRefs = React.useRef<(HTMLInputElement | null)[]>([]);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText ? \"error\" : validationState;\n\n const handleChange = (optionValue: string) => {\n if (onChange) {\n onChange(optionValue);\n } else {\n setUncontrolledValue(optionValue);\n }\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n\n const currentIndex = radioRefs.current.findIndex(\n (ref) => ref === document.activeElement\n );\n\n if (currentIndex === -1) return;\n\n const direction =\n orientation === \"horizontal\"\n ? e.key === \"ArrowRight\"\n ? 1\n : e.key === \"ArrowLeft\"\n ? -1\n : 0\n : e.key === \"ArrowDown\"\n ? 1\n : e.key === \"ArrowUp\"\n ? -1\n : 0;\n\n if (direction === 0) return;\n\n e.preventDefault();\n\n // Find next enabled radio\n let nextIndex = currentIndex;\n const total = radioRefs.current.length;\n let attempts = 0;\n\n while (attempts < total) {\n nextIndex = (nextIndex + direction + total) % total;\n const nextRadio = radioRefs.current[nextIndex];\n\n if (nextRadio && !nextRadio.disabled) {\n nextRadio.focus();\n nextRadio.click();\n return;\n }\n\n attempts++;\n }\n };\n\n // Spacing configuration\n const spacingConfig = {\n tight: orientation === \"horizontal\" ? \"gap-3\" : \"gap-2\",\n normal: orientation === \"horizontal\" ? \"gap-4\" : \"gap-3\",\n loose: orientation === \"horizontal\" ? \"gap-6\" : \"gap-4\",\n };\n\n // Size configuration\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 // Render options from array\n const renderOptions = () => {\n if (!options) return null;\n\n return options.map((option, index) => {\n const isChecked = value === option.value;\n const optionDisabled = isDisabled || option.isDisabled;\n\n return (\n <Radio\n key={option.value}\n ref={(el) => {\n radioRefs.current[index] = el;\n }}\n name={name}\n value={option.value}\n label={option.label}\n checked={isChecked}\n onChange={(e) => {\n if (e.target.checked) {\n handleChange(option.value);\n }\n }}\n size={size}\n variant={variant}\n validationState={currentValidationState}\n isDisabled={optionDisabled}\n showErrorText={false}\n containerClassName={option.containerClassName}\n labelClassName={option.labelClassName}\n cardClassName={cardClassName}\n \n />\n );\n });\n };\n\n // Clone children and inject props\n const renderChildren = () => {\n if (!children) return null;\n\n return React.Children.map(children, (child, index) => {\n if (!React.isValidElement<RadioProps>(child)) {\n return child;\n }\n\n const childValue = child.props.value;\n const isChecked = value === childValue;\n const childDisabled = isDisabled || child.props.isDisabled;\n\n return React.cloneElement(child, {\n ...child.props,\n ref: (el: HTMLInputElement | null) => {\n radioRefs.current[index] = el;\n },\n name,\n checked: isChecked,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n handleChange(\n typeof childValue === \"string\"\n ? childValue\n : String(childValue || \"\")\n );\n }\n // Call original onChange if it exists\n if (child.props.onChange) {\n child.props.onChange(e);\n }\n },\n size: child.props.size || size,\n variant: child.props.variant || variant,\n validationState:\n child.props.validationState || currentValidationState,\n isDisabled: childDisabled,\n showErrorText: false,\n cardClassName: cardClassName,\n } as Partial<RadioProps>);\n });\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n {...props}\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={id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={groupRef}\n role=\"radiogroup\"\n aria-label={label}\n aria-required={isRequired}\n aria-invalid={currentValidationState === \"error\"}\n aria-disabled={isDisabled}\n className={cn(\n \"flex w-full\",\n orientation === \"horizontal\"\n ? \"flex-row items-center\"\n : \"flex-col items-start\",\n spacingConfig[spacing],\n groupClassName,\n className\n )}\n onKeyDown={handleKeyDown}\n id={id}\n >\n {options ? renderOptions() : renderChildren()}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState === \"error\"\n ? \"negative\"\n : \"default\"\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n\nexport { RadioGroup };\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\";\nimport { BottomSheet } from \"../BottomSheet\";\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 * If true, \"Add New\" option will only appear when no items match.\n * If false, \"Add New\" option will always appear at the top of the list.\n * @default true\n */\n showAddNewIfDoesNotMatch?: boolean;\n /**\n * Label for the \"Add New\" option (e.g., \"Client\", \"User\", \"Company\")\n * Used when showAddNew is true and showAddNewIfDoesNotMatch is false\n */\n addNewLabel?: string;\n /**\n * Callback when \"Add New\" option is clicked\n * @param value - The search text that the user typed\n */\n onAddNew?: (value: string) => void;\n /**\n * Selected value (controlled)\n * When provided, finds the matching item and pre-populates the search field with its label\n */\n value?: string | number;\n /**\n * Default selected value (uncontrolled)\n * When provided, finds the matching item and pre-populates the search field with its label\n */\n defaultValue?: string | number;\n /**\n * Callback when value changes\n */\n onChange?: (\n value: string | number | undefined,\n item: SearchableDropdownItem | undefined\n ) => void;\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 showAddNewIfDoesNotMatch = true,\n addNewLabel = \"Item\",\n onAddNew,\n containerClassName,\n value: controlledValue,\n defaultValue,\n onChange,\n ...textFieldProps\n },\n ref\n ) => {\n // Find the selected item based on value/defaultValue\n const findSelectedItem = React.useCallback(\n (\n val: string | number | undefined\n ): SearchableDropdownItem | undefined => {\n if (val === undefined || val === \"\") return undefined;\n return items.find((item) => item.value === val);\n },\n [items]\n );\n\n // Initialize uncontrolled value state\n const initialValue =\n controlledValue !== undefined ? controlledValue : defaultValue;\n const initialSelectedItem = findSelectedItem(initialValue);\n const initialSearchValue = initialSelectedItem\n ? initialSelectedItem.label\n : defaultSearchValue;\n\n const [uncontrolledSearchValue, setUncontrolledSearchValue] =\n React.useState(initialSearchValue);\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\n string | number | undefined\n >(defaultValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [focusedIndex, setFocusedIndex] = React.useState(-1);\n const [isInsideModal, setIsInsideModal] = React.useState(false);\n const [isMobile, setIsMobile] = React.useState(false);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const VIEWPORT_PADDING = 8;\n const MENU_MAX_HEIGHT = 400;\n const MIN_SPACE_TO_OPEN_BELOW = 200;\n\n const [position, setPosition] = React.useState<{\n top?: number;\n bottom?: number;\n left: number;\n width: number;\n maxHeight: number;\n }>({\n left: 0,\n width: 200,\n maxHeight: MENU_MAX_HEIGHT,\n });\n\n // Detect if we're on mobile (< 768px)\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n\n // Check on mount\n checkMobile();\n\n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Determine current value (controlled or uncontrolled)\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Sync search value when value prop changes\n React.useEffect(() => {\n const selectedItem = findSelectedItem(value);\n if (selectedItem) {\n const newSearchValue = selectedItem.label;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newSearchValue);\n }\n // If controlled, we still need to call onSearchChange to notify parent\n // but only if the search value is different\n if (\n controlledSearchValue !== undefined &&\n controlledSearchValue !== newSearchValue\n ) {\n onSearchChange?.(newSearchValue);\n }\n } else if (value === undefined || value === \"\") {\n // If value is cleared, clear search value too\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(\"\");\n } else {\n onSearchChange?.(\"\");\n }\n }\n }, [value, findSelectedItem, controlledSearchValue, onSearchChange]);\n\n // Check if dropdown is inside a modal\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n let element: HTMLElement | null = dropdownRef.current;\n let foundModal = false;\n while (element && !foundModal) {\n const styles = window.getComputedStyle(element);\n const zIndex = parseInt(styles.zIndex, 10);\n // Check if element has modal z-index (10000) or is a modal container\n if (zIndex === 10000 || element.getAttribute(\"role\") === \"dialog\") {\n foundModal = true;\n setIsInsideModal(true);\n break;\n }\n element = element.parentElement;\n }\n if (!foundModal) {\n setIsInsideModal(false);\n }\n }\n }, [isOpen]);\n\n // Update position when dropdown opens or window resizes - viewport coords, open above if not enough space below\n const updateMenuPosition = React.useCallback(() => {\n if (!dropdownRef.current) return;\n const rect = dropdownRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom - VIEWPORT_PADDING;\n const spaceAbove = rect.top - VIEWPORT_PADDING;\n\n const openAbove =\n spaceBelow < MIN_SPACE_TO_OPEN_BELOW || spaceBelow < spaceAbove;\n\n const menuLeft = Math.max(\n VIEWPORT_PADDING,\n Math.min(rect.left, viewportWidth - Math.max(rect.width, 200) - VIEWPORT_PADDING)\n );\n const menuWidth = Math.max(rect.width, 200);\n\n if (openAbove) {\n setPosition({\n bottom: viewportHeight - rect.top + VIEWPORT_PADDING,\n left: menuLeft,\n width: menuWidth,\n maxHeight: Math.max(120, Math.min(MENU_MAX_HEIGHT, spaceAbove)),\n });\n } else {\n setPosition({\n top: rect.bottom + VIEWPORT_PADDING,\n left: menuLeft,\n width: menuWidth,\n maxHeight: Math.max(120, Math.min(MENU_MAX_HEIGHT, spaceBelow)),\n });\n }\n }, []);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n updateMenuPosition();\n }\n }, [isOpen, updateMenuPosition]);\n\n React.useEffect(() => {\n if (!isOpen) return;\n window.addEventListener(\"resize\", updateMenuPosition);\n window.addEventListener(\"scroll\", updateMenuPosition, true);\n return () => {\n window.removeEventListener(\"resize\", updateMenuPosition);\n window.removeEventListener(\"scroll\", updateMenuPosition, true);\n };\n }, [isOpen, updateMenuPosition]);\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 // If user is typing and the search value no longer matches the selected item's label,\n // clear the value to indicate no item is selected\n const selectedItem = findSelectedItem(value);\n if (selectedItem && selectedItem.label !== newValue) {\n if (controlledValue === undefined) {\n setUncontrolledValue(undefined);\n }\n onChange?.(undefined, undefined);\n }\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\n // Update search value\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(item.label);\n } else {\n onSearchChange?.(item.label);\n }\n\n // Update value (controlled or uncontrolled)\n if (controlledValue === undefined) {\n setUncontrolledValue(item.value);\n }\n\n // Call onChange callback\n onChange?.(item.value, item);\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 based on showAddNew and showAddNewIfDoesNotMatch props\n const itemsWithAddNew = React.useMemo(() => {\n if (!showAddNew) {\n return filteredItems;\n }\n\n // When showAddNewIfDoesNotMatch is false, show \"Add New\" even without search value\n const shouldShowAddNew = showAddNewIfDoesNotMatch\n ? searchValue.length > 0\n : true;\n\n if (!shouldShowAddNew) {\n return filteredItems;\n }\n\n // Determine the label for \"Add New\" option\n const addNewDisplayLabel = searchValue\n ? `+ Add \"${searchValue}\"`\n : `+ Add New ${addNewLabel}`;\n\n const addNewItem: SearchableDropdownItem = {\n value: searchValue || `new-${addNewLabel}`,\n label: addNewDisplayLabel,\n variant: \"primary\",\n onClick: () => {\n if (onAddNew) {\n onAddNew(searchValue);\n // Don't update search value here - let parent handle it via onAddNew\n setIsOpen(false);\n inputRef.current?.focus();\n } else {\n // When onAddNew is not provided, create a new item and select it\n const newItem: SearchableDropdownItem = {\n value: searchValue,\n label: searchValue,\n };\n // Use handleItemSelect to ensure proper behavior\n handleItemSelect(newItem);\n }\n },\n };\n\n // If showAddNewIfDoesNotMatch is true, only show \"Add New\" when no items match\n // If false, always show \"Add New\" at the top\n if (showAddNewIfDoesNotMatch) {\n if (filteredItems.length > 0) {\n return filteredItems;\n }\n return [addNewItem];\n } else {\n // Always show \"Add New\" at the top\n return [addNewItem, ...filteredItems];\n }\n }, [\n showAddNew,\n showAddNewIfDoesNotMatch,\n addNewLabel,\n searchValue,\n filteredItems,\n onItemSelect,\n onAddNew,\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 // Always wrap onClick to ensure search value is updated with label\n const itemsWithHandlers = itemsWithAddNew.map((item) => {\n // Check if this is the \"Add New\" item (its onClick already handles selection properly)\n const isAddNewItem = showAddNew && item.label?.startsWith(\"+ Add\");\n\n return {\n ...item,\n onClick: () => {\n // Call the custom onClick if it exists (for Add New items, etc.)\n item.onClick?.();\n // Call handleItemSelect to update search value with label and close dropdown\n // Skip for \"Add New\" items since their onClick already handles everything\n if (!isAddNewItem) {\n handleItemSelect(item);\n }\n },\n };\n });\n\n const showDropdown = isOpen && searchValue.length >= minSearchLength;\n\n // Render dropdown menu content\n const renderDropdownContent = () => (\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={isMobile ? \"full\" : (dropdownWidth === \"full\" ? \"full\" : \"auto\")}\n maxHeight={`${position.maxHeight}px`}\n unstyled={isMobile}\n />\n );\n\n // Mobile: BottomSheet, Desktop: Regular Dropdown\n const dropdownMenu = showDropdown && (\n isMobile ? (\n <BottomSheet\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n title={sectionHeading}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {/* Search TextField inside BottomSheet for mobile */}\n <div className=\"mb-4\">\n <TextField\n value={searchValue}\n onChange={handleSearchChange}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n placeholder={textFieldProps.placeholder || \"Search...\"}\n {...textFieldProps}\n />\n </div>\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\n <div\n ref={menuRef}\n style={{\n position: \"fixed\",\n ...(position.top !== undefined && { top: `${position.top}px` }),\n ...(position.bottom !== undefined && {\n bottom: `${position.bottom}px`,\n }),\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: isInsideModal ? 10001 : 9999,\n }}\n >\n {renderDropdownContent()}\n </div>\n )\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n {/* Show TextField only on desktop, on mobile it's inside BottomSheet */}\n {!isMobile && (\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 )}\n\n {/* On mobile, show a trigger that opens the BottomSheet */}\n {isMobile && (\n <TextField\n ref={inputRef}\n value={searchValue}\n onFocus={() => {\n if (showOnFocus && searchValue.length >= minSearchLength) {\n setIsOpen(true);\n }\n }}\n onClick={() => setIsOpen(true)}\n readOnly\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\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\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\nimport { Icon } from \"../../lib/icons\";\nimport type { IconName } from \"../../lib/icons\";\n\nexport interface SidePanelProps {\n /**\n * Whether the side panel is open\n */\n isOpen: boolean;\n /**\n * Callback when the side panel should close\n */\n onClose?: () => void;\n /**\n * Side panel title - optional\n */\n title?: string;\n /**\n * Icon to display before the title - optional\n */\n titleIcon?: IconName | React.ReactNode;\n /**\n * Side panel description/subtitle - optional\n */\n description?: string;\n /**\n * Side panel footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Side panel body content\n */\n children: React.ReactNode;\n /**\n * Position from which the side panel appears\n */\n position?: \"left\" | \"right\" | \"center\";\n /**\n * Width variant or custom width\n */\n width?: \"small\" | \"medium\" | \"large\" | \"xlarge\" | string;\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Additional header actions (e.g., expand, minimize buttons) - optional\n */\n headerActions?: React.ReactNode;\n /**\n * Whether clicking the overlay closes the side panel\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the side panel\n */\n closeOnEscape?: boolean;\n /**\n * Custom class name for the side panel container\n */\n className?: string;\n /**\n * Custom class name for the side panel 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 SidePanel = React.forwardRef<HTMLDivElement, SidePanelProps>(\n (\n {\n isOpen,\n onClose,\n title,\n titleIcon,\n description,\n footer,\n children,\n position = \"right\",\n width = \"medium\",\n showCloseButton = true,\n headerActions,\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 panelRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || panelRef;\n const [isVisible, setIsVisible] = React.useState(false);\n const [shouldRender, setShouldRender] = React.useState(false);\n\n // Width configurations - full width on mobile, specified width on tablet/desktop\n const widthConfig = {\n small: \"w-full md:w-80\",\n medium: \"w-full md:w-96\",\n large: \"w-full md:w-[32rem]\",\n xlarge: \"w-full md:w-[40rem]\",\n };\n\n // Handle mounting and unmounting with animation\n React.useEffect(() => {\n if (isOpen) {\n setShouldRender(true);\n // Small delay to trigger animation\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n } else {\n setIsVisible(false);\n // Wait for animation to complete before unmounting\n const timer = setTimeout(() => {\n setShouldRender(false);\n }, 300); // Match animation duration\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // Position-based classes\n const positionClasses = {\n left: {\n container: \"justify-start\",\n panel: isVisible ? \"animate-slide-in-left\" : \"animate-slide-out-left\",\n },\n right: {\n container: \"justify-end\",\n panel: isVisible ? \"animate-slide-in-right\" : \"animate-slide-out-right\",\n },\n center: {\n container: \"justify-center items-center\",\n panel: isVisible ? \"animate-scale-in\" : \"animate-scale-out\",\n },\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 side panel 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 and animation is complete\n if (!shouldRender) return null;\n\n const hasHeader = title || description;\n const widthClass =\n width in widthConfig\n ? widthConfig[width as keyof typeof widthConfig]\n : width;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-9999 flex p-0 md:p-4\",\n positionClasses[position].container,\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay with blur */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300\",\n isVisible ? \"opacity-100\" : \"opacity-0\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Side Panel Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative bg-white shadow-2xl transition-transform duration-300 ease-out rounded-none md:rounded-large\",\n \"flex flex-col max-w-full overflow-hidden\",\n position === \"center\" ? \"max-h-[90vh]\" : \"h-full\",\n widthClass,\n positionClasses[position].panel,\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-center justify-between gap-4 px-7 py-5 shrink-0 border-b border-surface-outline-neutral-subtle\",\n headerClassName\n )}\n >\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {titleIcon && (\n <div className=\"flex items-center justify-center shrink-0\">\n {typeof titleIcon === \"string\" ? (\n <Icon name={titleIcon as IconName} size={20} />\n ) : (\n titleIcon\n )}\n </div>\n )}\n <div className=\"flex flex-col flex-1 min-w-0\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n className=\"truncate\"\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-0.5\"\n >\n {description}\n </Text>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n {headerActions}\n {showCloseButton && onClose && (\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close side panel\"\n />\n )}\n </div>\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 side panel\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto px-6\",\n hasHeader ? \"py-6\" : \"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 shrink-0\">\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\nSidePanel.displayName = \"SidePanel\";\n\nexport { SidePanel };\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\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\nimport type { SelectOption } from \"../Select\";\nimport { BottomSheet } from \"../BottomSheet\";\nimport { Icon } from \"../../lib\";\n\nexport interface SelectTextFieldProps\n extends Omit<\n TextFieldProps,\n \"suffix\" | \"onChange\" | \"value\" | \"defaultValue\"\n > {\n /**\n * Text input value (controlled)\n */\n textValue?: string;\n /**\n * Default text input value (uncontrolled)\n */\n defaultTextValue?: string;\n /**\n * Callback when text input changes\n */\n onTextChange?: (value: string) => void;\n /**\n * Options for the select dropdown\n */\n selectOptions?: SelectOption[];\n /**\n * Selected value for the select (controlled)\n */\n selectValue?: string | number;\n /**\n * Default selected value for the select (uncontrolled)\n */\n defaultSelectValue?: string | number;\n /**\n * Callback when select value changes\n */\n onSelectChange?: (value: string | number, option: SelectOption) => void;\n /**\n * Placeholder for the select dropdown\n */\n selectPlaceholder?: string;\n /**\n * Custom class for the select trigger\n */\n selectTriggerClassName?: string;\n /**\n * Custom class for the select dropdown menu\n */\n selectMenuClassName?: string;\n /**\n * Width of the select dropdown menu\n */\n selectMenuWidth?: \"auto\" | \"full\" | string;\n /**\n * Section heading for the select dropdown\n */\n selectSectionHeading?: string;\n /**\n * Empty state title for select\n */\n selectEmptyTitle?: string;\n /**\n * Empty state description for select\n */\n selectEmptyDescription?: string;\n /**\n * Empty state icon for select\n */\n selectEmptyIcon?: React.ReactNode;\n /**\n * Position of the select field relative to the text input\n * @default \"suffix\"\n */\n position?: \"prefix\" | \"suffix\";\n /**\n * Whether the select dropdown is disabled (independent of text field)\n * When true, only the select portion is disabled. Use `isDisabled` to disable both.\n * @default false\n */\n isSelectDisabled?: boolean;\n /**\n * Whether the text field is disabled (independent of select)\n * When true, only the text field portion is disabled. Use `isDisabled` to disable both.\n * @default false\n */\n isTextFieldDisabled?: boolean;\n}\n\nconst selectTriggerVariants = cva(\n \"flex items-center gap-2 transition-all font-functional font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"px-2 text-xs\",\n medium: \"px-2 text-sm\",\n large: \"px-3 text-base\",\n },\n validationState: {\n none: \"\",\n positive: \"\",\n negative: \"\",\n },\n isDisabled: {\n true: \"opacity-60 cursor-not-allowed\",\n false: \"cursor-pointer hover:opacity-80\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport const SelectTextField = React.forwardRef<\n HTMLInputElement,\n SelectTextFieldProps\n>(\n (\n {\n textValue: controlledTextValue,\n defaultTextValue,\n onTextChange,\n selectOptions = [],\n selectValue: controlledSelectValue,\n defaultSelectValue,\n onSelectChange,\n selectPlaceholder = \"Select\",\n selectTriggerClassName,\n selectMenuClassName,\n selectMenuWidth = \"auto\",\n selectSectionHeading,\n selectEmptyTitle = \"No options available\",\n selectEmptyDescription = \"There are no options to select from.\",\n selectEmptyIcon,\n position = \"suffix\",\n isSelectDisabled = false,\n isTextFieldDisabled = false,\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n size = \"medium\",\n containerClassName,\n labelClassName,\n inputClassName,\n className,\n ...textFieldProps\n },\n ref\n ) => {\n const valuesMatch = React.useCallback(\n (\n left: string | number | undefined,\n right: string | number | undefined\n ): boolean => {\n if (left === right) return true;\n if (left === undefined || right === undefined) return false;\n return String(left) === String(right);\n },\n []\n );\n\n const [uncontrolledTextValue, setUncontrolledTextValue] = React.useState(\n defaultTextValue || \"\"\n );\n const [uncontrolledSelectValue, setUncontrolledSelectValue] =\n React.useState<string | number | undefined>(defaultSelectValue);\n const [isSelectOpen, setIsSelectOpen] = React.useState(false);\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n const [isMobile, setIsMobile] = React.useState(false);\n const selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const componentRef = React.useRef<HTMLDivElement>(null);\n\n // Detect if we're on mobile (< 768px)\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n\n // Check on mount\n checkMobile();\n\n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\n\n const textValue =\n controlledTextValue !== undefined\n ? controlledTextValue\n : uncontrolledTextValue;\n const selectValue =\n controlledSelectValue !== undefined\n ? controlledSelectValue\n : uncontrolledSelectValue;\n\n // Compute effective disabled states\n // isDisabled disables both; individual props allow disabling each independently\n const effectiveSelectDisabled = isDisabled || isSelectDisabled;\n const effectiveTextFieldDisabled = isDisabled || isTextFieldDisabled;\n\n // Find the selected option (supports number/string equivalence like 1.14 vs \"1.14\")\n const selectedOption = selectOptions.find((opt) =>\n valuesMatch(opt.value as string | number | undefined, selectValue)\n );\n\n // Keep uncontrolled default in sync when defaultSelectValue changes\n React.useEffect(() => {\n if (controlledSelectValue === undefined) {\n setUncontrolledSelectValue(defaultSelectValue);\n }\n }, [controlledSelectValue, defaultSelectValue]);\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 handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onTextChange) {\n onTextChange(newValue);\n } else {\n setUncontrolledTextValue(newValue);\n }\n };\n\n const handleSelectOpenChange = (newOpen: boolean) => {\n if (!effectiveSelectDisabled) {\n setIsSelectOpen(newOpen);\n }\n };\n\n const toggleSelectOpen = () => {\n handleSelectOpenChange(!isSelectOpen);\n };\n\n const handleSelect = (option: SelectOption) => {\n if (controlledSelectValue === undefined) {\n setUncontrolledSelectValue(option.value);\n }\n onSelectChange?.(option.value, option);\n setIsSelectOpen(false);\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 (!isSelectOpen) 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 }, [isSelectOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n const detach = attachDropdownListeners();\n return () => {\n detach?.();\n };\n }, [attachDropdownListeners]);\n\n React.useEffect(() => {\n if (isSelectOpen) {\n updateDropdownPlacement();\n }\n }, [isSelectOpen, selectOptions.length, updateDropdownPlacement]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n if (\n selectRef.current &&\n !selectRef.current.contains(target) &&\n dropdownContainerRef.current &&\n !dropdownContainerRef.current.contains(target)\n ) {\n handleSelectOpenChange(false);\n }\n };\n\n if (isSelectOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isSelectOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleSelectOpenChange(false);\n }\n };\n\n if (isSelectOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isSelectOpen]);\n\n // Transform options to dropdown menu items\n const menuItems: DropdownMenuItem[] = selectOptions.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 selectMenuWidth === \"full\"\n ? \"100%\"\n : selectMenuWidth === \"auto\"\n ? \"auto\"\n : selectMenuWidth;\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 // Render dropdown menu content\n const renderDropdownContent = () => (\n <DropdownMenu\n items={menuItems}\n sectionHeading={selectSectionHeading}\n isEmpty={selectOptions.length === 0}\n emptyTitle={selectEmptyTitle}\n emptyDescription={selectEmptyDescription}\n emptyIcon={selectEmptyIcon}\n disableFooter={true}\n onClose={() => handleSelectOpenChange(false)}\n className={selectMenuClassName}\n width={isMobile ? \"full\" : widthStyle}\n unstyled={isMobile}\n />\n );\n\n // Create the select component (prefix or suffix)\n const selectComponent = (\n <div className={cn(\"relative flex items-stretch h-full\")}>\n <div\n ref={selectRef}\n className={cn(\n selectTriggerVariants({\n size,\n validationState: currentValidationState,\n isDisabled: effectiveSelectDisabled,\n }),\n \"h-full flex items-center self-stretch\",\n position === \"prefix\"\n ? \"border-r border-action-outline-neutral-faded\"\n : \"border-l border-action-outline-neutral-faded\",\n selectTriggerClassName,\n position === \"prefix\" ? \"pr-4\" : \"pl-4\"\n )}\n onClick={!effectiveSelectDisabled ? toggleSelectOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isSelectOpen}\n aria-disabled={effectiveSelectDisabled}\n >\n <span\n className={cn(\n \"text-left truncate max-w-[120px] whitespace-nowrap\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n effectiveSelectDisabled && \"text-surface-ink-neutral-disabled\",\n selectedOption && 'text-surface-ink-neutral-normal'\n )}\n >\n {selectedOption?.label || selectPlaceholder}\n </span>\n\n <Icon name='chevronDown'\n className={cn(\n \"shrink-0 transition-transform mt-1\",\n size === \"small\"\n ? \"w-3 h-3\"\n : size === \"medium\"\n ? \"w-3.5 h-3.5\"\n : \"w-4 h-4\",\n effectiveSelectDisabled\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 isSelectOpen && \"transform rotate-180\"\n )}\n\n />\n </div>\n\n {/* Mobile: BottomSheet, Desktop: Regular Dropdown */}\n {isSelectOpen && !effectiveSelectDisabled && (\n isMobile ? (\n <BottomSheet\n isOpen={isSelectOpen}\n onClose={() => handleSelectOpenChange(false)}\n title={selectSectionHeading || label}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\n <div\n ref={dropdownContainerRef}\n className={cn(\n \"absolute z-50\",\n position === \"prefix\" ? \"left-[-12px]\" : \"right-[-12px]\",\n dropdownPlacement === \"bottom\"\n ? \"top-[30px] mt-1\"\n : \"bottom-full mb-1\"\n )}\n >\n {renderDropdownContent()}\n </div>\n )\n )}\n </div>\n );\n\n return (\n <div\n ref={componentRef}\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={textFieldProps.infoHeading}\n infoDescription={textFieldProps.infoDescription}\n LinkComponent={textFieldProps.LinkComponent}\n linkText={textFieldProps.linkText}\n linkHref={textFieldProps.linkHref}\n onLinkClick={textFieldProps.onLinkClick}\n htmlFor={textFieldProps.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <TextField\n ref={ref}\n value={textValue}\n onChange={handleTextChange}\n {...(position === \"prefix\"\n ? { prefix: selectComponent }\n : { suffix: selectComponent })}\n size={size}\n validationState={currentValidationState}\n isDisabled={effectiveTextFieldDisabled}\n isRequired={isRequired}\n isOptional={isOptional}\n containerClassName=\"gap-0\"\n className={className}\n inputClassName={inputClassName}\n {...textFieldProps}\n />\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={effectiveSelectDisabled && effectiveTextFieldDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelectTextField.displayName = \"SelectTextField\";\n\nexport { selectTriggerVariants };\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 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 validationState: {\n none: \"\",\n error: \"\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed bg-surface-fill-neutral-moderate\",\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:\n \"bg-surface-fill-neutral-subtle hover:bg-action-fill-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\",\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\",\n },\n // Unchecked state - error validation\n {\n isChecked: false,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-surface-fill-neutral-subtle hover:bg-action-fill-neutral-faded\",\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\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-white 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 * Error text to display below the switch\n */\n errorText?: string;\n /**\n * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the switch\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the switch 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 * 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 errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\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 [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 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 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 },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-small-regular\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-medium-regular\",\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=\"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 {/* 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 switchVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n trackClassName,\n className\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\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\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 auto: \"text-body-medium-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 box-border\",\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 auto: \"px-4 py-3 h-[56px]\",\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 box-border\",\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 auto: \"px-4 py-3\",\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\" | \"auto\";\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 auto: 56,\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-[8]\"\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\" | \"auto\";\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: \"16px\",\n paddingBottom: \"16px\",\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: \"16px\",\n paddingBottom: \"16px\",\n ...(isFirstCell && { paddingLeft: \"24px\" }),\n ...(isLastCell && { paddingRight: \"16px\" }),\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 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 size?: \"small\" | \"medium\" | \"large\" | \"auto\";\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 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 // Resolve loading state: prefer 'loading' prop, fallback to 'isLoading' for backward compatibility\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<\n NonNullable<typeof sizeKey>,\n number | string\n > = {\n small: 16,\n medium: 20,\n large: 24,\n auto: \"auto\",\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 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 containerClassName\n )}\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 as \"small\" | \"medium\" | \"large\" | \"auto\"}\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-functional 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-neutral-faded-hover \n hover:bg-action-fill-neutral-faded-hover\n focus-within:border-action-outline-primary-default \n focus-within:bg-white!\n focus-within:ring-2 \n ring-surface-outline-primary-muted`,\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\n border-action-outline-neutral-disabled\n hover:border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense \n hover:bg-surface-fill-neutral-intense \n cursor-not-allowed`,\n false: \"\",\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 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","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Icon } from \"../../lib/icons\";\nimport { Button } from \"../Button\";\nimport { Link } from \"../Link\";\nimport { cn } from \"../../lib/utils\";\n\nconst toastVariants = cva(\n \"relative flex items-center gap-3 p-4 rounded-large shadow-lg min-w-[360px] max-w-[480px] transition-all\",\n {\n variants: {\n type: {\n information: \"\",\n promotional: \"bg-surface-fill-neutral-intense\",\n },\n intent: {\n neutral: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n },\n },\n compoundVariants: [\n // Information type with different intents\n {\n type: \"information\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-intense\",\n },\n {\n type: \"information\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-intense\",\n },\n {\n type: \"information\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-intense\",\n },\n {\n type: \"information\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-intense\",\n },\n {\n type: \"information\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-intense\",\n },\n ],\n defaultVariants: {\n type: \"information\",\n intent: \"neutral\",\n },\n }\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 flex items-center justify-center\",\n {\n variants: {\n type: {\n information: \"text-white\",\n promotional: \"text-action-ink-neutral-normal\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n }\n);\n\nconst toastTextVariants = cva(\"text-body-small-regular\", {\n variants: {\n type: {\n information: \"text-white\",\n promotional: \"text-surface-ink-neutral-normal\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n});\n\nconst toastLinkVariants = cva(\n \"text-body-small-medium cursor-pointer hover:underline\",\n {\n variants: {\n type: {\n information: \"text-white\",\n promotional:\n \"text-action-ink-primary-normal hover:text-action-ink-primary-subtle\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n }\n);\n\nconst toastCloseButtonVariants = cva(\n \"flex-shrink-0 cursor-pointer hover:opacity-75 transition-opacity\",\n {\n variants: {\n type: {\n information: \"text-white\",\n promotional: \"text-action-ink-neutral-subtle\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n }\n);\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"id\"> {\n /**\n * Unique identifier for the toast\n */\n id?: string;\n /**\n * Type of toast - determines behavior and styling\n * - information: Auto-dismisses after duration, colored background (default position: bottom-center)\n * - promotional: Stays until user dismisses, white background with more content (default position: bottom-right)\n */\n type?: \"information\" | \"promotional\";\n /**\n * Intent/theme of the toast (only applicable for information type)\n */\n intent?: \"neutral\" | \"positive\" | \"negative\" | \"notice\" | \"info\";\n /**\n * Position of the toast\n * - information type default: bottom-center\n * - promotional type default: bottom-right\n */\n position?:\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n /**\n * Icon to display. If not provided, an icon will be automatically selected based on intent\n */\n icon?: React.ReactNode;\n /**\n * Main message content (required for information type)\n */\n message?: string;\n /**\n * Optional heading (primarily for promotional type)\n */\n heading?: string;\n /**\n * Optional description (primarily for promotional type)\n */\n description?: string;\n /**\n * Link text to display on the right\n */\n linkText?: string;\n /**\n * Callback fired when the link is clicked\n */\n onLinkClick?: () => void;\n /**\n * Button text (for promotional type)\n */\n buttonText?: string;\n /**\n * Callback fired when the button is clicked\n */\n onButtonClick?: () => void;\n /**\n * Callback fired when the close button is clicked\n */\n onClose?: () => void;\n /**\n * Duration in milliseconds before auto-dismiss (only for information type)\n * @default 5000\n */\n duration?: number;\n /**\n * Whether to show the toast\n */\n isVisible?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n}\n\nconst getDefaultIcon = (\n type: ToastProps[\"type\"],\n intent: ToastProps[\"intent\"]\n): React.ReactNode => {\n const iconSize = 16;\n\n if (type === \"promotional\") {\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n }\n\n // Information type icons based on intent\n switch (intent) {\n case \"positive\":\n return <Icon name=\"check\" size={iconSize} aria-hidden=\"true\" />;\n case \"negative\":\n return <Icon name=\"exclamation\" size={iconSize} aria-hidden=\"true\" />;\n case \"notice\":\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n case \"info\":\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n case \"neutral\":\n default:\n return <Icon name=\"check\" size={iconSize} aria-hidden=\"true\" />;\n }\n};\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n className,\n type = \"information\",\n intent = \"neutral\",\n icon,\n message,\n heading,\n description,\n linkText,\n onLinkClick,\n buttonText,\n onButtonClick,\n onClose,\n duration = 5000,\n isVisible = true,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = React.useState(isVisible);\n const timerRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n setVisible(isVisible);\n }, [isVisible]);\n\n React.useEffect(() => {\n // Auto-dismiss only for information type\n if (type === \"information\" && visible && duration > 0) {\n timerRef.current = window.setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n }\n\n return () => {\n if (timerRef.current) {\n window.clearTimeout(timerRef.current);\n }\n };\n }, [type, visible, duration, onClose]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n const displayIcon = icon ?? getDefaultIcon(type, intent);\n\n if (!visible) {\n return null;\n }\n\n // Promotional type layout\n if (type === \"promotional\") {\n return (\n <div\n ref={ref}\n className={cn(\n toastVariants({ type, intent }),\n \"flex-row items-start gap-3\",\n className\n )}\n role=\"alert\"\n {...props}\n >\n <div className=\"py-1\">\n <div\n className={cn(toastIconVariants({ type }), \"h-5 w-5 shrink-0\")}\n >\n {displayIcon}\n </div>\n </div>\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-row items-center justify-between\">\n <div className=\"flex-1 min-w-0\">\n {heading && (\n <div className=\"text-body-small-semibold text-surface-ink-neutral-normal\">\n {heading}\n </div>\n )}\n </div>\n {onClose && (\n <div\n className={cn(toastCloseButtonVariants({ type }), \"h-5 w-5\")}\n onClick={handleClose}\n role=\"button\"\n aria-label=\"Close toast\"\n >\n <Icon name=\"close\" size={16} />\n </div>\n )}\n </div>\n {/* Description */}\n {description && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-subtle\">\n {description}\n </div>\n )}\n {/* Button */}\n {buttonText && (\n <div>\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"xsmall\"\n onClick={onButtonClick}\n >\n {buttonText}\n </Button>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Information type layout\n return (\n <div\n ref={ref}\n className={cn(toastVariants({ type, intent }), className)}\n role=\"alert\"\n {...props}\n >\n {/* Icon */}\n <div className={cn(toastIconVariants({ type }), \"h-5 w-5 shrink-0\")}>\n {displayIcon}\n </div>\n\n {/* Message */}\n <div className={cn(toastTextVariants({ type }), \"flex-1 min-w-0\")}>\n {message}\n </div>\n\n {/* Link (optional) */}\n {linkText && (\n <div\n className={cn(toastLinkVariants({ type }), \"shrink-0\")}\n onClick={onLinkClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onLinkClick?.();\n }\n }}\n >\n {linkText}\n </div>\n )}\n\n {/* Close button */}\n {onClose && (\n <div\n className={cn(toastCloseButtonVariants({ type }), \"h-5 w-5\")}\n onClick={handleClose}\n role=\"button\"\n aria-label=\"Close toast\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClose();\n }\n }}\n >\n <Icon name=\"close\" size={16} />\n </div>\n )}\n </div>\n );\n }\n);\n\nToast.displayName = \"Toast\";\n","import * as React from \"react\";\nimport { Toast, ToastProps } from \"./Toast\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ToastOptions extends Omit<ToastProps, \"isVisible\" | \"id\"> {\n /**\n * Unique identifier for the toast (auto-generated if not provided)\n */\n id?: string;\n}\n\nexport interface ToastInstance extends ToastOptions {\n id: string;\n isVisible: boolean;\n}\n\ninterface ToastContextType {\n /**\n * Show an information toast\n */\n showToast: (options: ToastOptions) => string;\n /**\n * Show a success toast (shorthand for positive intent)\n */\n success: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show an error toast (shorthand for negative intent)\n */\n error: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show a warning toast (shorthand for notice intent)\n */\n warning: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show an info toast (shorthand for info intent)\n */\n info: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show a promotional toast\n */\n promotional: (\n heading: string,\n description: string,\n options?: Partial<ToastOptions>\n ) => string;\n /**\n * Dismiss a specific toast by ID\n */\n dismiss: (id: string) => void;\n /**\n * Dismiss all toasts\n */\n dismissAll: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined\n);\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n /**\n * Maximum number of toasts to display at once\n * @default 5\n */\n maxToasts?: number;\n /**\n * Default duration for information toasts in milliseconds\n * @default 5000\n */\n defaultDuration?: number;\n}\n\nconst positionClasses = {\n \"top-left\": \"top-4 left-4\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2\",\n \"top-right\": \"top-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n \"bottom-center\": \"bottom-4 left-1/2 -translate-x-1/2\",\n \"bottom-right\": \"bottom-4 right-4\",\n};\n\nconst getDefaultPosition = (\n type?: \"information\" | \"promotional\"\n): \"bottom-center\" | \"bottom-right\" => {\n return type === \"promotional\" ? \"bottom-right\" : \"bottom-center\";\n};\n\nconst getAnimationClasses = (position: string, isVisible: boolean): string => {\n const isTop = position.startsWith(\"top\");\n const isBottom = position.startsWith(\"bottom\");\n\n if (!isVisible) {\n // Exit/hidden state - slide out\n if (isTop) {\n return \"-translate-y-[120%] pointer-events-none\";\n }\n if (isBottom) {\n return \"translate-y-[120%] pointer-events-none\";\n }\n // Fallback\n return \"translate-y-[120%] pointer-events-none\";\n }\n\n // Visible state - slide in\n return \"translate-y-0\";\n};\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n maxToasts = 5,\n defaultDuration = 5000,\n}) => {\n const [toasts, setToasts] = React.useState<ToastInstance[]>([]);\n const toastCounter = React.useRef(0);\n\n const generateId = () => {\n toastCounter.current += 1;\n return `toast-${Date.now()}-${toastCounter.current}`;\n };\n\n const showToast = React.useCallback(\n (options: ToastOptions): string => {\n const id = options.id || generateId();\n const toastType = options.type || \"information\";\n\n const newToast: ToastInstance = {\n ...options,\n id,\n isVisible: false, // Start hidden to trigger entry animation\n type: toastType,\n position: options.position || getDefaultPosition(toastType),\n duration:\n options.duration ??\n (toastType === \"promotional\" ? 0 : defaultDuration),\n };\n\n setToasts((prevToasts) => {\n const filtered = prevToasts.filter((t) => t.id !== id);\n const updated = [...filtered, newToast];\n // Keep only the most recent maxToasts\n return updated.slice(-maxToasts);\n });\n\n // Trigger entry animation after DOM update\n // Use setTimeout to ensure the initial hidden state is rendered first\n setTimeout(() => {\n setToasts((prevToasts) =>\n prevToasts.map((toast) =>\n toast.id === id ? { ...toast, isVisible: true } : toast\n )\n );\n }, 10);\n\n return id;\n },\n [maxToasts, defaultDuration]\n );\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((prevToasts) =>\n prevToasts.map((toast) =>\n toast.id === id ? { ...toast, isVisible: false } : toast\n )\n );\n\n // Remove toast after animation completes (500ms animation + 50ms buffer)\n setTimeout(() => {\n setToasts((prevToasts) => prevToasts.filter((toast) => toast.id !== id));\n }, 550);\n }, []);\n\n const dismissAll = React.useCallback(() => {\n setToasts((prevToasts) =>\n prevToasts.map((toast) => ({ ...toast, isVisible: false }))\n );\n\n // Remove all toasts after animation completes (500ms animation + 50ms buffer)\n setTimeout(() => {\n setToasts([]);\n }, 550);\n }, []);\n\n const success = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"positive\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const error = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"negative\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const warning = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"notice\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const info = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"info\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const promotional = React.useCallback(\n (\n heading: string,\n description: string,\n options?: Partial<ToastOptions>\n ): string => {\n return showToast({\n type: \"promotional\",\n heading,\n description,\n ...options,\n });\n },\n [showToast]\n );\n\n const contextValue = React.useMemo(\n () => ({\n showToast,\n success,\n error,\n warning,\n info,\n promotional,\n dismiss,\n dismissAll,\n }),\n [showToast, success, error, warning, info, promotional, dismiss, dismissAll]\n );\n\n // Group toasts by position\n const toastsByPosition = React.useMemo(() => {\n const grouped: Record<string, ToastInstance[]> = {};\n toasts.forEach((toast) => {\n const pos = toast.position || getDefaultPosition(toast.type);\n if (!grouped[pos]) {\n grouped[pos] = [];\n }\n grouped[pos].push(toast);\n });\n return grouped;\n }, [toasts]);\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n {/* Toast Containers - one for each position */}\n {(\n Object.keys(toastsByPosition) as Array<keyof typeof positionClasses>\n ).map((position) => {\n const positionToasts = toastsByPosition[position];\n if (!positionToasts) return null;\n\n return (\n <div\n key={position}\n className={`fixed z-10000 flex flex-col gap-3 ${positionClasses[position]}`}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n {positionToasts.map((toast: ToastInstance) => {\n const toastPosition =\n toast.position || getDefaultPosition(toast.type);\n const animationClasses = getAnimationClasses(\n toastPosition,\n toast.isVisible\n );\n return (\n <div\n key={toast.id}\n className={cn(\n \"will-change-transform transition-transform duration-200 ease-out\",\n animationClasses\n )}\n >\n <Toast\n {...toast}\n isVisible={toast.isVisible}\n onClose={() => {\n toast.onClose?.();\n dismiss(toast.id);\n }}\n />\n </div>\n );\n })}\n </div>\n );\n })}\n </ToastContext.Provider>\n );\n};\n\n/**\n * Hook to access toast functionality\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const toast = useToast();\n *\n * return (\n * <button onClick={() => toast.success(\"Saved successfully!\")}>\n * Save\n * </button>\n * );\n * }\n * ```\n */\nexport const useToast = (): ToastContextType => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\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\";\nimport { Icon } from \"../../lib\";\nimport { IconButton } from \"../IconButton\";\nimport { Text } from \"../Text\";\nimport { Button } from \"../Button\";\n\nconst uploadBoxVariants = cva(\n \"relative flex flex-col items-center justify-center border-2 border-dashed rounded-large transition-all font-display\",\n {\n variants: {\n size: {\n small: \"min-h-[120px] p-4 gap-2\",\n medium: \"min-h-[160px] p-6 gap-3\",\n large: \"min-h-[200px] p-8 gap-4\",\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 bg-surface-fill-neutral-intense`,\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 bg-surface-fill-neutral-intense`,\n negative: `\n 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 bg-surface-fill-neutral-intense`,\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 \n cursor-not-allowed \n opacity-60`,\n false: \"cursor-pointer\",\n },\n isDragging: {\n true: \"border-action-outline-primary-hover bg-action-fill-primary-faded\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n isDragging: false,\n },\n }\n);\n\nexport interface UploadedFile {\n file?: File;\n url?: string;\n name?: string;\n size?: number;\n preview?: string;\n id: string;\n}\n\nexport interface UploadBoxProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\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 accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n maxFiles?: number;\n value?: File | File[] | UploadedFile | UploadedFile[] | string | string[];\n onChange?: (files: File | File[] | null) => void;\n onFileRemove?: (file: File | UploadedFile) => void;\n containerClassName?: string;\n labelClassName?: string;\n uploadAreaClassName?: string;\n previewClassName?: 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 uploadText?: string;\n dragText?: string;\n showPreview?: boolean;\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + \" \" + sizes[i];\n};\n\nconst isImageFile = (file?: File, url?: string): boolean => {\n if (file) {\n return file.type.startsWith(\"image/\");\n }\n if (url) {\n const lowerUrl = url.toLowerCase();\n return (\n lowerUrl.match(/\\.(jpg|jpeg|png|gif|bmp|webp|svg)(\\?.*)?$/i) !== null ||\n url.match(/data:image\\//) !== null\n );\n }\n return false;\n};\n\nconst isPdfFile = (file?: File, url?: string): boolean => {\n if (file) {\n return file.type === \"application/pdf\";\n }\n if (url) {\n return url.toLowerCase().match(/\\.pdf(\\?.*)?$/i) !== null;\n }\n return false;\n};\n\nconst isPreviewable = (file?: File, url?: string): boolean => {\n return isImageFile(file, url) || isPdfFile(file, url);\n};\n\nconst getFileNameFromUrl = (url: string): string => {\n try {\n const urlObj = new URL(url);\n const pathname = urlObj.pathname;\n const fileName = pathname.split(\"/\").pop() || \"file\";\n return decodeURIComponent(fileName);\n } catch {\n // If URL parsing fails, try to extract from the string\n const parts = url.split(\"/\");\n const lastPart = parts[parts.length - 1] || \"file\";\n return decodeURIComponent(lastPart.split(\"?\")[0]);\n }\n};\n\n// Component to handle image preview with error fallback\nconst ImagePreview = ({ src, alt }: { src: string; alt: string }) => {\n const [hasError, setHasError] = React.useState(false);\n\n if (hasError) {\n return (\n <div className=\"shrink-0 w-16 h-16 rounded-medium flex items-center justify-center bg-surface-fill-neutral-subtle\">\n <Icon\n name=\"file\"\n size={24}\n className=\"text-surface-ink-neutral-subtle\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"shrink-0 w-16 h-16 rounded-medium overflow-hidden \">\n <img\n src={src}\n alt={alt}\n className=\"w-full h-full object-cover\"\n onError={() => setHasError(true)}\n />\n </div>\n );\n};\n\nconst UploadBox = React.forwardRef<HTMLDivElement, UploadBoxProps>(\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 accept,\n multiple = false,\n maxSize,\n maxFiles,\n value,\n onChange,\n onFileRemove,\n containerClassName,\n labelClassName,\n uploadAreaClassName,\n previewClassName,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n uploadText,\n dragText,\n showPreview = true,\n className,\n ...props\n },\n ref\n ) => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n const [uploadedFiles, setUploadedFiles] = React.useState<UploadedFile[]>(\n []\n );\n const [error, setError] = React.useState<string | null>(null);\n\n // Initialize uploaded files from value prop\n React.useEffect(() => {\n if (value) {\n const filesArray = Array.isArray(value) ? value : [value];\n const processedFiles = filesArray.map((item) => {\n if (item instanceof File) {\n const uploadedFile: UploadedFile = {\n file: item,\n name: item.name,\n size: item.size,\n id: `${item.name}-${item.size}-${item.lastModified}`,\n };\n if (isImageFile(item) && showPreview) {\n uploadedFile.preview = URL.createObjectURL(item);\n }\n return uploadedFile;\n } else if (typeof item === \"string\") {\n // It's a URL string\n const uploadedFile: UploadedFile = {\n url: item,\n name: getFileNameFromUrl(item),\n id: `url-${item}-${Date.now()}`,\n };\n // Always set preview for URLs when showPreview is true\n // The rendering logic will determine if it's an image or PDF\n if (showPreview) {\n uploadedFile.preview = item;\n }\n return uploadedFile;\n } else {\n // It's already an UploadedFile\n const uploadedFile = item as UploadedFile;\n // If it has a URL but no preview set, set it\n if (uploadedFile.url && !uploadedFile.preview && showPreview) {\n uploadedFile.preview = uploadedFile.url;\n }\n return uploadedFile;\n }\n });\n setUploadedFiles(processedFiles);\n } else {\n setUploadedFiles([]);\n }\n }, [value, showPreview]);\n\n // Cleanup preview URLs (only revoke object URLs, not regular URLs)\n React.useEffect(() => {\n return () => {\n uploadedFiles.forEach((uploadedFile) => {\n // Only revoke object URLs (created with URL.createObjectURL)\n // Regular URLs (http/https) should not be revoked\n if (\n uploadedFile.preview &&\n uploadedFile.preview.startsWith(\"blob:\")\n ) {\n URL.revokeObjectURL(uploadedFile.preview);\n }\n });\n };\n }, [uploadedFiles]);\n\n const processFiles = (files: FileList | File[]): File[] => {\n const fileArray = Array.from(files);\n const validFiles: File[] = [];\n let currentError: string | null = null;\n\n // Check max files limit\n if (maxFiles && uploadedFiles.length + fileArray.length > maxFiles) {\n currentError = `Maximum ${maxFiles} file(s) allowed`;\n setError(currentError);\n return validFiles;\n }\n\n fileArray.forEach((file) => {\n // Check file size\n if (maxSize && file.size > maxSize) {\n currentError = `File \"${\n file.name\n }\" exceeds maximum size of ${formatFileSize(maxSize)}`;\n setError(currentError);\n return;\n }\n\n // Check if file type is accepted\n if (accept) {\n const acceptedTypes = accept.split(\",\").map((type) => type.trim());\n const isAccepted = acceptedTypes.some((type) => {\n if (type.startsWith(\".\")) {\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n }\n if (type.includes(\"/*\")) {\n const baseType = type.split(\"/\")[0];\n return file.type.startsWith(baseType + \"/\");\n }\n return file.type === type;\n });\n\n if (!isAccepted) {\n currentError = `File type \"${file.type}\" is not accepted`;\n setError(currentError);\n return;\n }\n }\n\n validFiles.push(file);\n });\n\n if (currentError) {\n setError(currentError);\n } else {\n setError(null);\n }\n\n return validFiles;\n };\n\n const handleFiles = (files: File[]) => {\n if (files.length === 0) return;\n\n const newUploadedFiles: UploadedFile[] = files.map((file) => {\n const uploadedFile: UploadedFile = {\n file,\n id: `${file.name}-${file.size}-${file.lastModified}-${Date.now()}`,\n };\n\n if (isImageFile(file) && showPreview) {\n uploadedFile.preview = URL.createObjectURL(file);\n }\n\n return uploadedFile;\n });\n\n const updatedFiles = multiple\n ? [...uploadedFiles, ...newUploadedFiles]\n : newUploadedFiles;\n\n setUploadedFiles(updatedFiles);\n\n // Call onChange with File objects only (filter out URL-only items)\n if (onChange) {\n const filesToReturn = updatedFiles\n .map((uf) => uf.file)\n .filter((file): file is File => file !== undefined);\n onChange(multiple ? filesToReturn : filesToReturn[0] || null);\n }\n };\n\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const validFiles = processFiles(e.target.files);\n if (validFiles.length > 0) {\n handleFiles(validFiles);\n }\n // Reset input value to allow selecting the same file again\n e.target.value = \"\";\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!isDisabled) {\n setIsDragging(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n if (isDisabled) return;\n\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n const validFiles = processFiles(e.dataTransfer.files);\n if (validFiles.length > 0) {\n handleFiles(validFiles);\n }\n }\n };\n\n const handleClick = () => {\n if (!isDisabled && fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n const handleRemoveFile = (\n e: React.MouseEvent,\n uploadedFile: UploadedFile\n ) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n // Revoke preview URL if exists\n if (uploadedFile.preview) {\n URL.revokeObjectURL(uploadedFile.preview);\n }\n\n const updatedFiles = uploadedFiles.filter(\n (f) => f.id !== uploadedFile.id\n );\n setUploadedFiles(updatedFiles);\n\n if (onFileRemove) {\n onFileRemove(uploadedFile);\n }\n\n if (onChange) {\n // Only return File objects (filter out URL-only items)\n const filesToReturn = updatedFiles\n .map((uf) => uf.file)\n .filter((file): file is File => file !== undefined);\n onChange(multiple ? filesToReturn : filesToReturn[0] || null);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText || error;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n iconSize: 16,\n textSize: \"text-body-small-medium\",\n },\n medium: {\n gap: \"gap-2\",\n iconSize: 16,\n textSize: \"text-body-small-medium\",\n },\n large: {\n gap: \"gap-3\",\n iconSize: 16,\n textSize: \"text-body-small-medium\",\n },\n };\n\n const config = sizeConfig[size];\n\n const defaultUploadText = \"Click to upload or drag and drop\";\n const defaultDragText = \"Drop files here\";\n\n return (\n <div\n ref={ref}\n className={cn(\"w-full flex flex-col\", config.gap, containerClassName)}\n {...props}\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 className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n uploadBoxVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n isDragging,\n }),\n uploadAreaClassName,\n className\n )}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={handleClick}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={isDisabled}\n onChange={handleFileInputChange}\n className=\"hidden\"\n aria-label={label || \"File upload\"}\n />\n\n {uploadedFiles.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center gap-2 text-center\">\n <div className=\"flex items-center justify-center w-8 h-8 rounded-full bg-surface-fill-neutral-subtle\">\n <Icon name=\"upload\" size={config.iconSize} />\n </div>\n <div className=\"flex flex-col gap-1\">\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n color={isDisabled ? \"disabled\" : \"default\"}\n >\n {isDragging\n ? dragText || defaultDragText\n : uploadText || defaultUploadText}\n </Text>\n {accept && (\n <Text\n variant=\"caption\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n >\n Accepted: {accept}\n </Text>\n )}\n {maxSize && (\n <Text\n variant=\"caption\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n >\n Max size: {formatFileSize(maxSize)}\n </Text>\n )}\n </div>\n </div>\n ) : (\n <div className={cn(\"w-full flex flex-col gap-3\", previewClassName)}>\n {uploadedFiles.map((uploadedFile) => {\n const { file, url, preview, name, size, id } = uploadedFile;\n const fileName =\n name ||\n file?.name ||\n (url ? getFileNameFromUrl(url) : \"Unknown file\");\n const fileSize = size || file?.size;\n const canPreview = showPreview && preview;\n const isImage = isImageFile(file, url);\n const isPdf = isPdfFile(file, url);\n // For URLs, try to show as image if not explicitly a PDF\n // If it's a URL without extension, assume it might be an image\n // Always try to show URLs as images unless they're explicitly PDFs\n const shouldShowAsImage =\n canPreview && preview && (isImage || (url && !isPdf));\n\n return (\n <div\n key={id}\n className=\"flex items-start gap-3 p-3 border border-surface-outline-neutral-muted rounded-large bg-surface-fill-neutral-intense\"\n >\n {shouldShowAsImage ? (\n <ImagePreview src={preview} alt={fileName} />\n ) : canPreview && isPdf ? (\n <div className=\"shrink-0 w-16 h-16 rounded-medium border border-action-outline-neutral-faded flex items-center justify-center bg-surface-fill-neutral-subtle\">\n <Icon\n name=\"file\"\n size={24}\n className=\"text-surface-ink-neutral-subtle\"\n />\n </div>\n ) : (\n <div className=\"shrink-0 w-16 h-16 rounded-medium border border-action-outline-neutral-faded flex items-center justify-center bg-surface-fill-neutral-subtle\">\n <Icon\n name=\"file\"\n size={24}\n className=\"text-surface-ink-neutral-subtle\"\n />\n </div>\n )}\n\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n color={isDisabled ? \"disabled\" : \"default\"}\n as=\"span\"\n className=\"truncate\"\n title={fileName}\n >\n {fileName}\n </Text>\n </div>\n {fileSize !== undefined && (\n <Text\n variant=\"caption\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n as=\"span\"\n >\n {formatFileSize(fileSize)}\n </Text>\n )}\n </div>\n\n {!isDisabled && (\n <IconButton\n icon=\"close\"\n size=\"xsmall\"\n onClick={(e) => handleRemoveFile(e, uploadedFile)}\n aria-label={`Remove ${fileName}`}\n />\n )}\n </div>\n );\n })}\n\n {multiple && !isDisabled && (\n <Button\n variant=\"tertiary\"\n color=\"primary\"\n size=\"small\"\n onClick={handleClick}\n leadingIcon={<Icon name=\"add\" size={16} />}\n className=\"mt-2 w-fit\"\n >\n Add more files\n </Button>\n )}\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText || undefined}\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\nUploadBox.displayName = \"UploadBox\";\n\nexport { UploadBox, uploadBoxVariants };\n"],"names":["_jsx","_jsxs","_Fragment","getDefaultIcon","useLayoutEffect","computePosition","arrow","flip","hide","offset","shift","limitShift","size","getComputedStyle","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","Arrow","CONTENT_NAME","floatingUIarrow","ARROW_NAME","ArrowPrimitive.Root","Root2","PORTAL_NAME","Portal","ReactDOM","React2","PopperPrimitive.Root","PopperPrimitive.Anchor","PortalPrimitive","PopperPrimitive.Content","PopperPrimitive.Arrow","HoverCardPrimitive.Root","HoverCardPrimitive.Trigger","HoverCardPrimitive.Portal","HoverCardPrimitive.Content","HoverCardPrimitive.Arrow","parseDate","formatDateDefault","CalendarIcon","Calendar","formatFileSize"],"mappings":"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","x_google_ignoreList":[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]}
|
|
1
|
+
{"version":3,"file":"index.esm.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/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Text/Text.tsx","../src/components/Divider/Divider.tsx","../src/components/BottomSheet/BottomSheet.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../node_modules/@radix-ui/primitive/dist/index.mjs","../node_modules/@radix-ui/react-context/dist/index.mjs","../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs","../node_modules/@floating-ui/core/dist/floating-ui.core.mjs","../node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs","../node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs","../node_modules/@radix-ui/react-primitive/dist/index.mjs","../node_modules/@radix-ui/react-arrow/dist/index.mjs","../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../node_modules/@radix-ui/react-use-size/dist/index.mjs","../node_modules/@radix-ui/react-popper/dist/index.mjs","../node_modules/@radix-ui/react-portal/dist/index.mjs","../node_modules/@radix-ui/react-presence/dist/index.mjs","../node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs","../node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs","../node_modules/@radix-ui/react-hover-card/dist/index.mjs","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/ListItem/ListItem.tsx","../src/components/DateRangePicker/DateRangePicker.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/FileInput/FileInput.tsx","../src/components/Modal/Modal.tsx","../src/components/TextField/TextField.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/SearchableDropdown/SearchableDropdown.tsx","../src/components/SidePanel/SidePanel.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/SelectTextField/SelectTextField.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","../src/components/Toast/Toast.tsx","../src/components/Toast/ToastProvider.tsx","../src/components/UploadBox/UploadBox.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=\"10\" height=\"10\" viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M7.99907 1.77063L8.63188 2.42981L8.69829 2.49915L8.63188 2.56848L3.88188 7.50891L3.80962 7.58411L3.73833 7.50891L0.887741 4.54504L0.821335 4.47571L0.887741 4.40637L1.52153 3.74719L1.5938 3.672L1.66508 3.74719L3.80962 5.97766L7.85454 1.77063L7.9268 1.69543L7.99907 1.77063Z\" fill=\"white\" stroke=\"white\" stroke-width=\"0.2\"/>\n</svg>\n`,\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 upload: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4 19H20V12H22V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V12H4V19ZM13 9V16H11V9H6L12 3L18 9H13Z\" fill=\"#081416\"/>\n</svg>\n`,\n file: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M19.1111 21H4.88889C4.39797 21 4 20.5971 4 20.1V3.9C4 3.40295 4.39797 3 4.88889 3H19.1111C19.602 3 20 3.40295 20 3.9V20.1C20 20.5971 19.602 21 19.1111 21ZM18.2222 19.2V4.8H5.77778V19.2H18.2222ZM8.44444 9.3H15.5556V11.1H8.44444V9.3ZM8.44444 12.9H15.5556V14.7H8.44444V12.9Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronDown: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 13.7272L17.4445 8L19 9.63635L12 17L5 9.63635L6.55555 8L12 13.7272Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronUp: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 11.2727L6.55555 17L5 15.3637L12 8L19 15.3637L17.4445 17L12 11.2727Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronLeft: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M11.2727 12L17 17.4445L15.3637 19L8 12L15.3637 5L17 6.55555L11.2727 12Z\" fill=\"#081416\"/>\n</svg>\n`,\n chevronRight: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M13.7272 12L8 6.55555L9.63635 5L17 12L9.63635 19L8 17.4445L13.7272 12Z\" fill=\"#081416\"/>\n</svg>\n`,\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: \"h-[28px] px-3 rounded-medium text-body-small-medium\",\n small: \"h-[32px] px-4 rounded-medium text-body-small-medium\",\n medium: \"h-[36px] px-5 py-2 rounded-large text-body-medium-medium\",\n large: \"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: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: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: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: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: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-[28px] w-7\",\n },\n {\n isIconOnly: true,\n size: \"small\",\n class: \"h-[32px] w-8\",\n },\n {\n isIconOnly: true,\n size: \"medium\",\n class: \"h-[36px] w-9\",\n },\n {\n isIconOnly: true,\n size: \"large\",\n class: \"h-[44px] 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 { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\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 * Custom class name for the label\n */\n labelClassName?: 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 labelClassName,\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 getTextClass = () => {\n switch (size) {\n case \"small\":\n return \"text-body-small-medium text-color-default\";\n case \"medium\":\n return \"text-body-medium-medium text-color-default\";\n default:\n return \"text-body-medium-medium text-color-default\";\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 && <p className={cn(getTextClass(), labelClassName)}>{label}</p>}\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 * Leading icon to display before the badge content\n */\n leadingIcon?: React.ReactNode;\n /**\n * Trailing icon to display after the badge content\n */\n trailingIcon?: React.ReactNode;\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (\n { className, variant, size, color, showDot = false, leadingIcon, trailingIcon, 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 {leadingIcon && <span className=\"inline-flex\">{leadingIcon}</span>}\n {children}\n {trailingIcon && <span className=\"inline-flex\">{trailingIcon}</span>}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\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\";\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 { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\n\nexport interface BottomSheetProps {\n /**\n * Whether the bottom sheet is open\n */\n isOpen: boolean;\n /**\n * Callback when the bottom sheet should close\n */\n onClose?: () => void;\n /**\n * Bottom sheet title - optional\n */\n title?: string;\n /**\n * Bottom sheet description/subtitle - optional\n */\n description?: string;\n /**\n * Bottom sheet footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Bottom sheet body content\n */\n children: React.ReactNode;\n /**\n * Style variant - \"default\" applies default styles, \"unstyled\" removes all default styling\n */\n variant?: \"default\" | \"unstyled\";\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Whether to show the drag handle\n */\n showDragHandle?: boolean;\n /**\n * Whether clicking the overlay closes the bottom sheet\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the bottom sheet\n */\n closeOnEscape?: boolean;\n /**\n * Whether swiping down closes the bottom sheet\n */\n closeOnSwipeDown?: boolean;\n /**\n * Maximum height of the bottom sheet (percentage or specific value)\n */\n maxHeight?: string;\n /**\n * Custom class name for the bottom sheet container\n */\n className?: string;\n /**\n * Custom class name for the bottom sheet 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 BottomSheet = React.forwardRef<HTMLDivElement, BottomSheetProps>(\n (\n {\n isOpen,\n onClose,\n title,\n description,\n footer,\n children,\n variant = \"default\",\n showCloseButton = true,\n showDragHandle = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n closeOnSwipeDown = true,\n maxHeight = \"90vh\",\n className,\n contentClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n overlayClassName,\n ariaLabel,\n ariaDescribedBy,\n },\n ref\n ) => {\n const sheetRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || sheetRef;\n const [isClosing, setIsClosing] = React.useState(false);\n const [touchStart, setTouchStart] = React.useState<number | null>(null);\n const [touchEnd, setTouchEnd] = React.useState<number | null>(null);\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 handleClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when bottom sheet 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 // Reset closing state when opening\n React.useEffect(() => {\n if (isOpen) {\n setIsClosing(false);\n }\n }, [isOpen]);\n\n // Handle close with animation\n const handleClose = () => {\n if (!onClose) return;\n setIsClosing(true);\n // Wait for animation to complete before calling onClose\n setTimeout(() => {\n onClose();\n setIsClosing(false);\n }, 300); // Match animation duration\n };\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget) {\n handleClose();\n }\n };\n\n // Handle touch events for swipe down\n const handleTouchStart = (e: React.TouchEvent) => {\n if (!closeOnSwipeDown) return;\n setTouchEnd(null);\n setTouchStart(e.targetTouches[0].clientY);\n };\n\n const handleTouchMove = (e: React.TouchEvent) => {\n if (!closeOnSwipeDown) return;\n setTouchEnd(e.targetTouches[0].clientY);\n };\n\n const handleTouchEnd = () => {\n if (!closeOnSwipeDown || !touchStart || !touchEnd) return;\n\n const distance = touchEnd - touchStart;\n const isSwipeDown = distance > 100; // Minimum swipe distance\n\n if (isSwipeDown) {\n handleClose();\n }\n\n setTouchStart(null);\n setTouchEnd(null);\n };\n\n // Don't render if not open and not closing\n if (!isOpen && !isClosing) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-9999 flex items-end justify-center\",\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 z-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300\",\n isClosing ? \"opacity-0\" : \"opacity-100\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Bottom Sheet Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative z-10 w-full transition-transform duration-300\",\n \"flex flex-col overflow-hidden\",\n variant === \"default\" && \"bg-white rounded-t-2xl shadow-xl\",\n isClosing ? \"animate-slide-out-bottom\" : \"animate-slide-in-bottom\",\n contentClassName\n )}\n style={{ maxHeight }}\n onTouchStart={handleTouchStart}\n onTouchMove={handleTouchMove}\n onTouchEnd={handleTouchEnd}\n >\n {/* Drag Handle */}\n {showDragHandle && variant === \"default\" && (\n <div className=\"flex justify-center pt-3 pb-2\">\n <div className=\"w-10 h-1 bg-neutral-300 rounded-full\" />\n </div>\n )}\n\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4\",\n variant === \"default\" && \"px-6\",\n variant === \"default\" && !showDragHandle && \"pt-6\",\n variant === \"default\" && showDragHandle && \"pt-2\",\n variant === \"default\" && !description && \"pb-4\",\n variant === \"default\" && 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={handleClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close bottom sheet\"\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\n className={cn(\n \"absolute z-10\",\n variant === \"default\" && \"top-4 right-4\"\n )}\n >\n <IconButton\n icon=\"close\"\n onClick={handleClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close bottom sheet\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto\",\n variant === \"default\" && \"px-6\",\n variant === \"default\" && hasHeader && \"py-4\",\n variant === \"default\" && !hasHeader && !showDragHandle && \"pt-6 pb-4\",\n variant === \"default\" && !hasHeader && showDragHandle && \"pt-2 pb-4\",\n variant === \"default\" && !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n {variant === \"default\" && (\n <Divider thickness=\"thin\" variant=\"muted\" />\n )}\n <div\n className={cn(\n \"flex items-center justify-end gap-3\",\n variant === \"default\" && \"px-6 py-4\",\n footerClassName\n )}\n >\n {footer}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nBottomSheet.displayName = \"BottomSheet\";\n\nexport { BottomSheet };\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 (validationState === \"negative\")\n return \"text-feedback-ink-negative-subtle\";\n if (isDisabled) return \"text-surface-ink-neutral-disabled\";\n if (validationState === \"positive\")\n return \"text-feedback-ink-positive-intense\";\n\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-[14px] h-[14px] rounded-small border-[1.5px]\",\n medium: \"w-[16px] h-[16px] rounded-small border-[1.5px]\",\n large: \"w-[20px] h-[20px] 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\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 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 or entering indeterminate state (not unchecking)\n const willBeChecked = !isChecked || isIndeterminate;\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 or entering indeterminate state (not unchecking)\n const willBeChecked = !isChecked || isIndeterminate;\n if (willBeChecked) {\n triggerRipple();\n }\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: 7,\n },\n medium: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 9.6,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-medium-regular\",\n iconSize: 13.33,\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 py-0.5\", 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","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * Custom positioning reference element.\n * @see https://floating-ui.com/docs/virtual-elements\n */\n\nconst sides = ['top', 'right', 'bottom', 'left'];\nconst alignments = ['start', 'end'];\nconst placements = /*#__PURE__*/sides.reduce((acc, side) => acc.concat(side, side + \"-\" + alignments[0], side + \"-\" + alignments[1]), []);\nconst min = Math.min;\nconst max = Math.max;\nconst round = Math.round;\nconst floor = Math.floor;\nconst createCoords = v => ({\n x: v,\n y: v\n});\nconst oppositeSideMap = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nfunction clamp(start, value, end) {\n return max(start, min(value, end));\n}\nfunction evaluate(value, param) {\n return typeof value === 'function' ? value(param) : value;\n}\nfunction getSide(placement) {\n return placement.split('-')[0];\n}\nfunction getAlignment(placement) {\n return placement.split('-')[1];\n}\nfunction getOppositeAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}\nfunction getAxisLength(axis) {\n return axis === 'y' ? 'height' : 'width';\n}\nfunction getSideAxis(placement) {\n const firstChar = placement[0];\n return firstChar === 't' || firstChar === 'b' ? 'y' : 'x';\n}\nfunction getAlignmentAxis(placement) {\n return getOppositeAxis(getSideAxis(placement));\n}\nfunction getAlignmentSides(placement, rects, rtl) {\n if (rtl === void 0) {\n rtl = false;\n }\n const alignment = getAlignment(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const length = getAxisLength(alignmentAxis);\n let mainAlignmentSide = alignmentAxis === 'x' ? alignment === (rtl ? 'end' : 'start') ? 'right' : 'left' : alignment === 'start' ? 'bottom' : 'top';\n if (rects.reference[length] > rects.floating[length]) {\n mainAlignmentSide = getOppositePlacement(mainAlignmentSide);\n }\n return [mainAlignmentSide, getOppositePlacement(mainAlignmentSide)];\n}\nfunction getExpandedPlacements(placement) {\n const oppositePlacement = getOppositePlacement(placement);\n return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];\n}\nfunction getOppositeAlignmentPlacement(placement) {\n return placement.includes('start') ? placement.replace('start', 'end') : placement.replace('end', 'start');\n}\nconst lrPlacement = ['left', 'right'];\nconst rlPlacement = ['right', 'left'];\nconst tbPlacement = ['top', 'bottom'];\nconst btPlacement = ['bottom', 'top'];\nfunction getSideList(side, isStart, rtl) {\n switch (side) {\n case 'top':\n case 'bottom':\n if (rtl) return isStart ? rlPlacement : lrPlacement;\n return isStart ? lrPlacement : rlPlacement;\n case 'left':\n case 'right':\n return isStart ? tbPlacement : btPlacement;\n default:\n return [];\n }\n}\nfunction getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {\n const alignment = getAlignment(placement);\n let list = getSideList(getSide(placement), direction === 'start', rtl);\n if (alignment) {\n list = list.map(side => side + \"-\" + alignment);\n if (flipAlignment) {\n list = list.concat(list.map(getOppositeAlignmentPlacement));\n }\n }\n return list;\n}\nfunction getOppositePlacement(placement) {\n const side = getSide(placement);\n return oppositeSideMap[side] + placement.slice(side.length);\n}\nfunction expandPaddingObject(padding) {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n ...padding\n };\n}\nfunction getPaddingObject(padding) {\n return typeof padding !== 'number' ? expandPaddingObject(padding) : {\n top: padding,\n right: padding,\n bottom: padding,\n left: padding\n };\n}\nfunction rectToClientRect(rect) {\n const {\n x,\n y,\n width,\n height\n } = rect;\n return {\n width,\n height,\n top: y,\n left: x,\n right: x + width,\n bottom: y + height,\n x,\n y\n };\n}\n\nexport { alignments, clamp, createCoords, evaluate, expandPaddingObject, floor, getAlignment, getAlignmentAxis, getAlignmentSides, getAxisLength, getExpandedPlacements, getOppositeAlignmentPlacement, getOppositeAxis, getOppositeAxisPlacements, getOppositePlacement, getPaddingObject, getSide, getSideAxis, max, min, placements, rectToClientRect, round, sides };\n","import { getSideAxis, getAlignmentAxis, getAxisLength, getSide, getAlignment, evaluate, getPaddingObject, rectToClientRect, min, clamp, placements, getAlignmentSides, getOppositeAlignmentPlacement, getOppositePlacement, getExpandedPlacements, getOppositeAxisPlacements, sides, max, getOppositeAxis } from '@floating-ui/utils';\nexport { rectToClientRect } from '@floating-ui/utils';\n\nfunction computeCoordsFromPlacement(_ref, placement, rtl) {\n let {\n reference,\n floating\n } = _ref;\n const sideAxis = getSideAxis(placement);\n const alignmentAxis = getAlignmentAxis(placement);\n const alignLength = getAxisLength(alignmentAxis);\n const side = getSide(placement);\n const isVertical = sideAxis === 'y';\n const commonX = reference.x + reference.width / 2 - floating.width / 2;\n const commonY = reference.y + reference.height / 2 - floating.height / 2;\n const commonAlign = reference[alignLength] / 2 - floating[alignLength] / 2;\n let coords;\n switch (side) {\n case 'top':\n coords = {\n x: commonX,\n y: reference.y - floating.height\n };\n break;\n case 'bottom':\n coords = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n case 'right':\n coords = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n case 'left':\n coords = {\n x: reference.x - floating.width,\n y: commonY\n };\n break;\n default:\n coords = {\n x: reference.x,\n y: reference.y\n };\n }\n switch (getAlignment(placement)) {\n case 'start':\n coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n case 'end':\n coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);\n break;\n }\n return coords;\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nasync function detectOverflow(state, options) {\n var _await$platform$isEle;\n if (options === void 0) {\n options = {};\n }\n const {\n x,\n y,\n platform,\n rects,\n elements,\n strategy\n } = state;\n const {\n boundary = 'clippingAncestors',\n rootBoundary = 'viewport',\n elementContext = 'floating',\n altBoundary = false,\n padding = 0\n } = evaluate(options, state);\n const paddingObject = getPaddingObject(padding);\n const altContext = elementContext === 'floating' ? 'reference' : 'floating';\n const element = elements[altBoundary ? altContext : elementContext];\n const clippingClientRect = rectToClientRect(await platform.getClippingRect({\n element: ((_await$platform$isEle = await (platform.isElement == null ? void 0 : platform.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || (await (platform.getDocumentElement == null ? void 0 : platform.getDocumentElement(elements.floating))),\n boundary,\n rootBoundary,\n strategy\n }));\n const rect = elementContext === 'floating' ? {\n x,\n y,\n width: rects.floating.width,\n height: rects.floating.height\n } : rects.reference;\n const offsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(elements.floating));\n const offsetScale = (await (platform.isElement == null ? void 0 : platform.isElement(offsetParent))) ? (await (platform.getScale == null ? void 0 : platform.getScale(offsetParent))) || {\n x: 1,\n y: 1\n } : {\n x: 1,\n y: 1\n };\n const elementClientRect = rectToClientRect(platform.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform.convertOffsetParentRelativeRectToViewportRelativeRect({\n elements,\n rect,\n offsetParent,\n strategy\n }) : rect);\n return {\n top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,\n bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,\n left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,\n right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x\n };\n}\n\n// Maximum number of resets that can occur before bailing to avoid infinite reset loops.\nconst MAX_RESET_COUNT = 50;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n *\n * This export does not have any `platform` interface logic. You will need to\n * write one for the platform you are using Floating UI with.\n */\nconst computePosition = async (reference, floating, config) => {\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform\n } = config;\n const platformWithDetectOverflow = platform.detectOverflow ? platform : {\n ...platform,\n detectOverflow\n };\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(floating));\n let rects = await platform.getElementRects({\n reference,\n floating,\n strategy\n });\n let {\n x,\n y\n } = computeCoordsFromPlacement(rects, placement, rtl);\n let statefulPlacement = placement;\n let resetCount = 0;\n const middlewareData = {};\n for (let i = 0; i < middleware.length; i++) {\n const currentMiddleware = middleware[i];\n if (!currentMiddleware) {\n continue;\n }\n const {\n name,\n fn\n } = currentMiddleware;\n const {\n x: nextX,\n y: nextY,\n data,\n reset\n } = await fn({\n x,\n y,\n initialPlacement: placement,\n placement: statefulPlacement,\n strategy,\n middlewareData,\n rects,\n platform: platformWithDetectOverflow,\n elements: {\n reference,\n floating\n }\n });\n x = nextX != null ? nextX : x;\n y = nextY != null ? nextY : y;\n middlewareData[name] = {\n ...middlewareData[name],\n ...data\n };\n if (reset && resetCount < MAX_RESET_COUNT) {\n resetCount++;\n if (typeof reset === 'object') {\n if (reset.placement) {\n statefulPlacement = reset.placement;\n }\n if (reset.rects) {\n rects = reset.rects === true ? await platform.getElementRects({\n reference,\n floating,\n strategy\n }) : reset.rects;\n }\n ({\n x,\n y\n } = computeCoordsFromPlacement(rects, statefulPlacement, rtl));\n }\n i = -1;\n }\n }\n return {\n x,\n y,\n placement: statefulPlacement,\n strategy,\n middlewareData\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = options => ({\n name: 'arrow',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n platform,\n elements,\n middlewareData\n } = state;\n // Since `element` is required, we don't Partial<> the type.\n const {\n element,\n padding = 0\n } = evaluate(options, state) || {};\n if (element == null) {\n return {};\n }\n const paddingObject = getPaddingObject(padding);\n const coords = {\n x,\n y\n };\n const axis = getAlignmentAxis(placement);\n const length = getAxisLength(axis);\n const arrowDimensions = await platform.getDimensions(element);\n const isYAxis = axis === 'y';\n const minProp = isYAxis ? 'top' : 'left';\n const maxProp = isYAxis ? 'bottom' : 'right';\n const clientProp = isYAxis ? 'clientHeight' : 'clientWidth';\n const endDiff = rects.reference[length] + rects.reference[axis] - coords[axis] - rects.floating[length];\n const startDiff = coords[axis] - rects.reference[axis];\n const arrowOffsetParent = await (platform.getOffsetParent == null ? void 0 : platform.getOffsetParent(element));\n let clientSize = arrowOffsetParent ? arrowOffsetParent[clientProp] : 0;\n\n // DOM platform can return `window` as the `offsetParent`.\n if (!clientSize || !(await (platform.isElement == null ? void 0 : platform.isElement(arrowOffsetParent)))) {\n clientSize = elements.floating[clientProp] || rects.floating[length];\n }\n const centerToReference = endDiff / 2 - startDiff / 2;\n\n // If the padding is large enough that it causes the arrow to no longer be\n // centered, modify the padding so that it is centered.\n const largestPossiblePadding = clientSize / 2 - arrowDimensions[length] / 2 - 1;\n const minPadding = min(paddingObject[minProp], largestPossiblePadding);\n const maxPadding = min(paddingObject[maxProp], largestPossiblePadding);\n\n // Make sure the arrow doesn't overflow the floating element if the center\n // point is outside the floating element's bounds.\n const min$1 = minPadding;\n const max = clientSize - arrowDimensions[length] - maxPadding;\n const center = clientSize / 2 - arrowDimensions[length] / 2 + centerToReference;\n const offset = clamp(min$1, center, max);\n\n // If the reference is small enough that the arrow's padding causes it to\n // to point to nothing for an aligned placement, adjust the offset of the\n // floating element itself. To ensure `shift()` continues to take action,\n // a single reset is performed when this is true.\n const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset && rects.reference[length] / 2 - (center < min$1 ? minPadding : maxPadding) - arrowDimensions[length] / 2 < 0;\n const alignmentOffset = shouldAddOffset ? center < min$1 ? center - min$1 : center - max : 0;\n return {\n [axis]: coords[axis] + alignmentOffset,\n data: {\n [axis]: offset,\n centerOffset: center - offset - alignmentOffset,\n ...(shouldAddOffset && {\n alignmentOffset\n })\n },\n reset: shouldAddOffset\n };\n }\n});\n\nfunction getPlacementList(alignment, autoAlignment, allowedPlacements) {\n const allowedPlacementsSortedByAlignment = alignment ? [...allowedPlacements.filter(placement => getAlignment(placement) === alignment), ...allowedPlacements.filter(placement => getAlignment(placement) !== alignment)] : allowedPlacements.filter(placement => getSide(placement) === placement);\n return allowedPlacementsSortedByAlignment.filter(placement => {\n if (alignment) {\n return getAlignment(placement) === alignment || (autoAlignment ? getOppositeAlignmentPlacement(placement) !== placement : false);\n }\n return true;\n });\n}\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'autoPlacement',\n options,\n async fn(state) {\n var _middlewareData$autoP, _middlewareData$autoP2, _placementsThatFitOnE;\n const {\n rects,\n middlewareData,\n placement,\n platform,\n elements\n } = state;\n const {\n crossAxis = false,\n alignment,\n allowedPlacements = placements,\n autoAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n const placements$1 = alignment !== undefined || allowedPlacements === placements ? getPlacementList(alignment || null, autoAlignment, allowedPlacements) : allowedPlacements;\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const currentIndex = ((_middlewareData$autoP = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP.index) || 0;\n const currentPlacement = placements$1[currentIndex];\n if (currentPlacement == null) {\n return {};\n }\n const alignmentSides = getAlignmentSides(currentPlacement, rects, await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating)));\n\n // Make `computeCoords` start from the right place.\n if (placement !== currentPlacement) {\n return {\n reset: {\n placement: placements$1[0]\n }\n };\n }\n const currentOverflows = [overflow[getSide(currentPlacement)], overflow[alignmentSides[0]], overflow[alignmentSides[1]]];\n const allOverflows = [...(((_middlewareData$autoP2 = middlewareData.autoPlacement) == null ? void 0 : _middlewareData$autoP2.overflows) || []), {\n placement: currentPlacement,\n overflows: currentOverflows\n }];\n const nextPlacement = placements$1[currentIndex + 1];\n\n // There are more placements to check.\n if (nextPlacement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n const placementsSortedByMostSpace = allOverflows.map(d => {\n const alignment = getAlignment(d.placement);\n return [d.placement, alignment && crossAxis ?\n // Check along the mainAxis and main crossAxis side.\n d.overflows.slice(0, 2).reduce((acc, v) => acc + v, 0) :\n // Check only the mainAxis.\n d.overflows[0], d.overflows];\n }).sort((a, b) => a[1] - b[1]);\n const placementsThatFitOnEachSide = placementsSortedByMostSpace.filter(d => d[2].slice(0,\n // Aligned placements should not check their opposite crossAxis\n // side.\n getAlignment(d[0]) ? 2 : 3).every(v => v <= 0));\n const resetPlacement = ((_placementsThatFitOnE = placementsThatFitOnEachSide[0]) == null ? void 0 : _placementsThatFitOnE[0]) || placementsSortedByMostSpace[0][0];\n if (resetPlacement !== placement) {\n return {\n data: {\n index: currentIndex + 1,\n overflows: allOverflows\n },\n reset: {\n placement: resetPlacement\n }\n };\n }\n return {};\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'flip',\n options,\n async fn(state) {\n var _middlewareData$arrow, _middlewareData$flip;\n const {\n placement,\n middlewareData,\n rects,\n initialPlacement,\n platform,\n elements\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true,\n fallbackPlacements: specifiedFallbackPlacements,\n fallbackStrategy = 'bestFit',\n fallbackAxisSideDirection = 'none',\n flipAlignment = true,\n ...detectOverflowOptions\n } = evaluate(options, state);\n\n // If a reset by the arrow was caused due to an alignment offset being\n // added, we should skip any logic now since `flip()` has already done its\n // work.\n // https://github.com/floating-ui/floating-ui/issues/2549#issuecomment-1719601643\n if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n const side = getSide(placement);\n const initialSideAxis = getSideAxis(initialPlacement);\n const isBasePlacement = getSide(initialPlacement) === initialPlacement;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement(initialPlacement)] : getExpandedPlacements(initialPlacement));\n const hasFallbackAxisSideDirection = fallbackAxisSideDirection !== 'none';\n if (!specifiedFallbackPlacements && hasFallbackAxisSideDirection) {\n fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));\n }\n const placements = [initialPlacement, ...fallbackPlacements];\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const overflows = [];\n let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];\n if (checkMainAxis) {\n overflows.push(overflow[side]);\n }\n if (checkCrossAxis) {\n const sides = getAlignmentSides(placement, rects, rtl);\n overflows.push(overflow[sides[0]], overflow[sides[1]]);\n }\n overflowsData = [...overflowsData, {\n placement,\n overflows\n }];\n\n // One or more sides is overflowing.\n if (!overflows.every(side => side <= 0)) {\n var _middlewareData$flip2, _overflowsData$filter;\n const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;\n const nextPlacement = placements[nextIndex];\n if (nextPlacement) {\n const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;\n if (!ignoreCrossAxisOverflow ||\n // We leave the current main axis only if every placement on that axis\n // overflows the main axis.\n overflowsData.every(d => getSideAxis(d.placement) === initialSideAxis ? d.overflows[0] > 0 : true)) {\n // Try next placement and re-run the lifecycle.\n return {\n data: {\n index: nextIndex,\n overflows: overflowsData\n },\n reset: {\n placement: nextPlacement\n }\n };\n }\n }\n\n // First, find the candidates that fit on the mainAxis side of overflow,\n // then find the placement that fits the best on the main crossAxis side.\n let resetPlacement = (_overflowsData$filter = overflowsData.filter(d => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;\n\n // Otherwise fallback.\n if (!resetPlacement) {\n switch (fallbackStrategy) {\n case 'bestFit':\n {\n var _overflowsData$filter2;\n const placement = (_overflowsData$filter2 = overflowsData.filter(d => {\n if (hasFallbackAxisSideDirection) {\n const currentSideAxis = getSideAxis(d.placement);\n return currentSideAxis === initialSideAxis ||\n // Create a bias to the `y` side axis due to horizontal\n // reading directions favoring greater width.\n currentSideAxis === 'y';\n }\n return true;\n }).map(d => [d.placement, d.overflows.filter(overflow => overflow > 0).reduce((acc, overflow) => acc + overflow, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$filter2[0];\n if (placement) {\n resetPlacement = placement;\n }\n break;\n }\n case 'initialPlacement':\n resetPlacement = initialPlacement;\n break;\n }\n }\n if (placement !== resetPlacement) {\n return {\n reset: {\n placement: resetPlacement\n }\n };\n }\n }\n return {};\n }\n };\n};\n\nfunction getSideOffsets(overflow, rect) {\n return {\n top: overflow.top - rect.height,\n right: overflow.right - rect.width,\n bottom: overflow.bottom - rect.height,\n left: overflow.left - rect.width\n };\n}\nfunction isAnySideFullyClipped(overflow) {\n return sides.some(side => overflow[side] >= 0);\n}\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'hide',\n options,\n async fn(state) {\n const {\n rects,\n platform\n } = state;\n const {\n strategy = 'referenceHidden',\n ...detectOverflowOptions\n } = evaluate(options, state);\n switch (strategy) {\n case 'referenceHidden':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n elementContext: 'reference'\n });\n const offsets = getSideOffsets(overflow, rects.reference);\n return {\n data: {\n referenceHiddenOffsets: offsets,\n referenceHidden: isAnySideFullyClipped(offsets)\n }\n };\n }\n case 'escaped':\n {\n const overflow = await platform.detectOverflow(state, {\n ...detectOverflowOptions,\n altBoundary: true\n });\n const offsets = getSideOffsets(overflow, rects.floating);\n return {\n data: {\n escapedOffsets: offsets,\n escaped: isAnySideFullyClipped(offsets)\n }\n };\n }\n default:\n {\n return {};\n }\n }\n }\n };\n};\n\nfunction getBoundingRect(rects) {\n const minX = min(...rects.map(rect => rect.left));\n const minY = min(...rects.map(rect => rect.top));\n const maxX = max(...rects.map(rect => rect.right));\n const maxY = max(...rects.map(rect => rect.bottom));\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY\n };\n}\nfunction getRectsByLine(rects) {\n const sortedRects = rects.slice().sort((a, b) => a.y - b.y);\n const groups = [];\n let prevRect = null;\n for (let i = 0; i < sortedRects.length; i++) {\n const rect = sortedRects[i];\n if (!prevRect || rect.y - prevRect.y > prevRect.height / 2) {\n groups.push([rect]);\n } else {\n groups[groups.length - 1].push(rect);\n }\n prevRect = rect;\n }\n return groups.map(rect => rectToClientRect(getBoundingRect(rect)));\n}\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'inline',\n options,\n async fn(state) {\n const {\n placement,\n elements,\n rects,\n platform,\n strategy\n } = state;\n // A MouseEvent's client{X,Y} coords can be up to 2 pixels off a\n // ClientRect's bounds, despite the event listener being triggered. A\n // padding of 2 seems to handle this issue.\n const {\n padding = 2,\n x,\n y\n } = evaluate(options, state);\n const nativeClientRects = Array.from((await (platform.getClientRects == null ? void 0 : platform.getClientRects(elements.reference))) || []);\n const clientRects = getRectsByLine(nativeClientRects);\n const fallback = rectToClientRect(getBoundingRect(nativeClientRects));\n const paddingObject = getPaddingObject(padding);\n function getBoundingClientRect() {\n // There are two rects and they are disjoined.\n if (clientRects.length === 2 && clientRects[0].left > clientRects[1].right && x != null && y != null) {\n // Find the first rect in which the point is fully inside.\n return clientRects.find(rect => x > rect.left - paddingObject.left && x < rect.right + paddingObject.right && y > rect.top - paddingObject.top && y < rect.bottom + paddingObject.bottom) || fallback;\n }\n\n // There are 2 or more connected rects.\n if (clientRects.length >= 2) {\n if (getSideAxis(placement) === 'y') {\n const firstRect = clientRects[0];\n const lastRect = clientRects[clientRects.length - 1];\n const isTop = getSide(placement) === 'top';\n const top = firstRect.top;\n const bottom = lastRect.bottom;\n const left = isTop ? firstRect.left : lastRect.left;\n const right = isTop ? firstRect.right : lastRect.right;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n const isLeftSide = getSide(placement) === 'left';\n const maxRight = max(...clientRects.map(rect => rect.right));\n const minLeft = min(...clientRects.map(rect => rect.left));\n const measureRects = clientRects.filter(rect => isLeftSide ? rect.left === minLeft : rect.right === maxRight);\n const top = measureRects[0].top;\n const bottom = measureRects[measureRects.length - 1].bottom;\n const left = minLeft;\n const right = maxRight;\n const width = right - left;\n const height = bottom - top;\n return {\n top,\n bottom,\n left,\n right,\n width,\n height,\n x: left,\n y: top\n };\n }\n return fallback;\n }\n const resetRects = await platform.getElementRects({\n reference: {\n getBoundingClientRect\n },\n floating: elements.floating,\n strategy\n });\n if (rects.reference.x !== resetRects.reference.x || rects.reference.y !== resetRects.reference.y || rects.reference.width !== resetRects.reference.width || rects.reference.height !== resetRects.reference.height) {\n return {\n reset: {\n rects: resetRects\n }\n };\n }\n return {};\n }\n };\n};\n\nconst originSides = /*#__PURE__*/new Set(['left', 'top']);\n\n// For type backwards-compatibility, the `OffsetOptions` type was also\n// Derivable.\n\nasync function convertValueToCoords(state, options) {\n const {\n placement,\n platform,\n elements\n } = state;\n const rtl = await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating));\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isVertical = getSideAxis(placement) === 'y';\n const mainAxisMulti = originSides.has(side) ? -1 : 1;\n const crossAxisMulti = rtl && isVertical ? -1 : 1;\n const rawValue = evaluate(options, state);\n\n // eslint-disable-next-line prefer-const\n let {\n mainAxis,\n crossAxis,\n alignmentAxis\n } = typeof rawValue === 'number' ? {\n mainAxis: rawValue,\n crossAxis: 0,\n alignmentAxis: null\n } : {\n mainAxis: rawValue.mainAxis || 0,\n crossAxis: rawValue.crossAxis || 0,\n alignmentAxis: rawValue.alignmentAxis\n };\n if (alignment && typeof alignmentAxis === 'number') {\n crossAxis = alignment === 'end' ? alignmentAxis * -1 : alignmentAxis;\n }\n return isVertical ? {\n x: crossAxis * crossAxisMulti,\n y: mainAxis * mainAxisMulti\n } : {\n x: mainAxis * mainAxisMulti,\n y: crossAxis * crossAxisMulti\n };\n}\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = function (options) {\n if (options === void 0) {\n options = 0;\n }\n return {\n name: 'offset',\n options,\n async fn(state) {\n var _middlewareData$offse, _middlewareData$arrow;\n const {\n x,\n y,\n placement,\n middlewareData\n } = state;\n const diffCoords = await convertValueToCoords(state, options);\n\n // If the placement is the same and the arrow caused an alignment offset\n // then we don't need to change the positioning coordinates.\n if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {\n return {};\n }\n return {\n x: x + diffCoords.x,\n y: y + diffCoords.y,\n data: {\n ...diffCoords,\n placement\n }\n };\n }\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'shift',\n options,\n async fn(state) {\n const {\n x,\n y,\n placement,\n platform\n } = state;\n const {\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = false,\n limiter = {\n fn: _ref => {\n let {\n x,\n y\n } = _ref;\n return {\n x,\n y\n };\n }\n },\n ...detectOverflowOptions\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const crossAxis = getSideAxis(getSide(placement));\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n if (checkMainAxis) {\n const minSide = mainAxis === 'y' ? 'top' : 'left';\n const maxSide = mainAxis === 'y' ? 'bottom' : 'right';\n const min = mainAxisCoord + overflow[minSide];\n const max = mainAxisCoord - overflow[maxSide];\n mainAxisCoord = clamp(min, mainAxisCoord, max);\n }\n if (checkCrossAxis) {\n const minSide = crossAxis === 'y' ? 'top' : 'left';\n const maxSide = crossAxis === 'y' ? 'bottom' : 'right';\n const min = crossAxisCoord + overflow[minSide];\n const max = crossAxisCoord - overflow[maxSide];\n crossAxisCoord = clamp(min, crossAxisCoord, max);\n }\n const limitedCoords = limiter.fn({\n ...state,\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n });\n return {\n ...limitedCoords,\n data: {\n x: limitedCoords.x - x,\n y: limitedCoords.y - y,\n enabled: {\n [mainAxis]: checkMainAxis,\n [crossAxis]: checkCrossAxis\n }\n }\n };\n }\n };\n};\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n options,\n fn(state) {\n const {\n x,\n y,\n placement,\n rects,\n middlewareData\n } = state;\n const {\n offset = 0,\n mainAxis: checkMainAxis = true,\n crossAxis: checkCrossAxis = true\n } = evaluate(options, state);\n const coords = {\n x,\n y\n };\n const crossAxis = getSideAxis(placement);\n const mainAxis = getOppositeAxis(crossAxis);\n let mainAxisCoord = coords[mainAxis];\n let crossAxisCoord = coords[crossAxis];\n const rawOffset = evaluate(offset, state);\n const computedOffset = typeof rawOffset === 'number' ? {\n mainAxis: rawOffset,\n crossAxis: 0\n } : {\n mainAxis: 0,\n crossAxis: 0,\n ...rawOffset\n };\n if (checkMainAxis) {\n const len = mainAxis === 'y' ? 'height' : 'width';\n const limitMin = rects.reference[mainAxis] - rects.floating[len] + computedOffset.mainAxis;\n const limitMax = rects.reference[mainAxis] + rects.reference[len] - computedOffset.mainAxis;\n if (mainAxisCoord < limitMin) {\n mainAxisCoord = limitMin;\n } else if (mainAxisCoord > limitMax) {\n mainAxisCoord = limitMax;\n }\n }\n if (checkCrossAxis) {\n var _middlewareData$offse, _middlewareData$offse2;\n const len = mainAxis === 'y' ? 'width' : 'height';\n const isOriginSide = originSides.has(getSide(placement));\n const limitMin = rects.reference[crossAxis] - rects.floating[len] + (isOriginSide ? ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse[crossAxis]) || 0 : 0) + (isOriginSide ? 0 : computedOffset.crossAxis);\n const limitMax = rects.reference[crossAxis] + rects.reference[len] + (isOriginSide ? 0 : ((_middlewareData$offse2 = middlewareData.offset) == null ? void 0 : _middlewareData$offse2[crossAxis]) || 0) - (isOriginSide ? computedOffset.crossAxis : 0);\n if (crossAxisCoord < limitMin) {\n crossAxisCoord = limitMin;\n } else if (crossAxisCoord > limitMax) {\n crossAxisCoord = limitMax;\n }\n }\n return {\n [mainAxis]: mainAxisCoord,\n [crossAxis]: crossAxisCoord\n };\n }\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = function (options) {\n if (options === void 0) {\n options = {};\n }\n return {\n name: 'size',\n options,\n async fn(state) {\n var _state$middlewareData, _state$middlewareData2;\n const {\n placement,\n rects,\n platform,\n elements\n } = state;\n const {\n apply = () => {},\n ...detectOverflowOptions\n } = evaluate(options, state);\n const overflow = await platform.detectOverflow(state, detectOverflowOptions);\n const side = getSide(placement);\n const alignment = getAlignment(placement);\n const isYAxis = getSideAxis(placement) === 'y';\n const {\n width,\n height\n } = rects.floating;\n let heightSide;\n let widthSide;\n if (side === 'top' || side === 'bottom') {\n heightSide = side;\n widthSide = alignment === ((await (platform.isRTL == null ? void 0 : platform.isRTL(elements.floating))) ? 'start' : 'end') ? 'left' : 'right';\n } else {\n widthSide = side;\n heightSide = alignment === 'end' ? 'top' : 'bottom';\n }\n const maximumClippingHeight = height - overflow.top - overflow.bottom;\n const maximumClippingWidth = width - overflow.left - overflow.right;\n const overflowAvailableHeight = min(height - overflow[heightSide], maximumClippingHeight);\n const overflowAvailableWidth = min(width - overflow[widthSide], maximumClippingWidth);\n const noShift = !state.middlewareData.shift;\n let availableHeight = overflowAvailableHeight;\n let availableWidth = overflowAvailableWidth;\n if ((_state$middlewareData = state.middlewareData.shift) != null && _state$middlewareData.enabled.x) {\n availableWidth = maximumClippingWidth;\n }\n if ((_state$middlewareData2 = state.middlewareData.shift) != null && _state$middlewareData2.enabled.y) {\n availableHeight = maximumClippingHeight;\n }\n if (noShift && !alignment) {\n const xMin = max(overflow.left, 0);\n const xMax = max(overflow.right, 0);\n const yMin = max(overflow.top, 0);\n const yMax = max(overflow.bottom, 0);\n if (isYAxis) {\n availableWidth = width - 2 * (xMin !== 0 || xMax !== 0 ? xMin + xMax : max(overflow.left, overflow.right));\n } else {\n availableHeight = height - 2 * (yMin !== 0 || yMax !== 0 ? yMin + yMax : max(overflow.top, overflow.bottom));\n }\n }\n await apply({\n ...state,\n availableWidth,\n availableHeight\n });\n const nextDimensions = await platform.getDimensions(elements.floating);\n if (width !== nextDimensions.width || height !== nextDimensions.height) {\n return {\n reset: {\n rects: true\n }\n };\n }\n return {};\n }\n };\n};\n\nexport { arrow, autoPlacement, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, shift, size };\n","function hasWindow() {\n return typeof window !== 'undefined';\n}\nfunction getNodeName(node) {\n if (isNode(node)) {\n return (node.nodeName || '').toLowerCase();\n }\n // Mocked nodes in testing environments may not be instances of Node. By\n // returning `#document` an infinite loop won't occur.\n // https://github.com/floating-ui/floating-ui/issues/2317\n return '#document';\n}\nfunction getWindow(node) {\n var _node$ownerDocument;\n return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;\n}\nfunction getDocumentElement(node) {\n var _ref;\n return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;\n}\nfunction isNode(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Node || value instanceof getWindow(value).Node;\n}\nfunction isElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof Element || value instanceof getWindow(value).Element;\n}\nfunction isHTMLElement(value) {\n if (!hasWindow()) {\n return false;\n }\n return value instanceof HTMLElement || value instanceof getWindow(value).HTMLElement;\n}\nfunction isShadowRoot(value) {\n if (!hasWindow() || typeof ShadowRoot === 'undefined') {\n return false;\n }\n return value instanceof ShadowRoot || value instanceof getWindow(value).ShadowRoot;\n}\nfunction isOverflowElement(element) {\n const {\n overflow,\n overflowX,\n overflowY,\n display\n } = getComputedStyle(element);\n return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && display !== 'inline' && display !== 'contents';\n}\nfunction isTableElement(element) {\n return /^(table|td|th)$/.test(getNodeName(element));\n}\nfunction isTopLayer(element) {\n try {\n if (element.matches(':popover-open')) {\n return true;\n }\n } catch (_e) {\n // no-op\n }\n try {\n return element.matches(':modal');\n } catch (_e) {\n return false;\n }\n}\nconst willChangeRe = /transform|translate|scale|rotate|perspective|filter/;\nconst containRe = /paint|layout|strict|content/;\nconst isNotNone = value => !!value && value !== 'none';\nlet isWebKitValue;\nfunction isContainingBlock(elementOrCss) {\n const css = isElement(elementOrCss) ? getComputedStyle(elementOrCss) : elementOrCss;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n // https://drafts.csswg.org/css-transforms-2/#individual-transforms\n return isNotNone(css.transform) || isNotNone(css.translate) || isNotNone(css.scale) || isNotNone(css.rotate) || isNotNone(css.perspective) || !isWebKit() && (isNotNone(css.backdropFilter) || isNotNone(css.filter)) || willChangeRe.test(css.willChange || '') || containRe.test(css.contain || '');\n}\nfunction getContainingBlock(element) {\n let currentNode = getParentNode(element);\n while (isHTMLElement(currentNode) && !isLastTraversableNode(currentNode)) {\n if (isContainingBlock(currentNode)) {\n return currentNode;\n } else if (isTopLayer(currentNode)) {\n return null;\n }\n currentNode = getParentNode(currentNode);\n }\n return null;\n}\nfunction isWebKit() {\n if (isWebKitValue == null) {\n isWebKitValue = typeof CSS !== 'undefined' && CSS.supports && CSS.supports('-webkit-backdrop-filter', 'none');\n }\n return isWebKitValue;\n}\nfunction isLastTraversableNode(node) {\n return /^(html|body|#document)$/.test(getNodeName(node));\n}\nfunction getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}\nfunction getNodeScroll(element) {\n if (isElement(element)) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n }\n return {\n scrollLeft: element.scrollX,\n scrollTop: element.scrollY\n };\n}\nfunction getParentNode(node) {\n if (getNodeName(node) === 'html') {\n return node;\n }\n const result =\n // Step into the shadow DOM of the parent of a slotted node.\n node.assignedSlot ||\n // DOM Element detected.\n node.parentNode ||\n // ShadowRoot detected.\n isShadowRoot(node) && node.host ||\n // Fallback.\n getDocumentElement(node);\n return isShadowRoot(result) ? result.host : result;\n}\nfunction getNearestOverflowAncestor(node) {\n const parentNode = getParentNode(node);\n if (isLastTraversableNode(parentNode)) {\n return node.ownerDocument ? node.ownerDocument.body : node.body;\n }\n if (isHTMLElement(parentNode) && isOverflowElement(parentNode)) {\n return parentNode;\n }\n return getNearestOverflowAncestor(parentNode);\n}\nfunction getOverflowAncestors(node, list, traverseIframes) {\n var _node$ownerDocument2;\n if (list === void 0) {\n list = [];\n }\n if (traverseIframes === void 0) {\n traverseIframes = true;\n }\n const scrollableAncestor = getNearestOverflowAncestor(node);\n const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);\n const win = getWindow(scrollableAncestor);\n if (isBody) {\n const frameElement = getFrameElement(win);\n return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], frameElement && traverseIframes ? getOverflowAncestors(frameElement) : []);\n } else {\n return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));\n }\n}\nfunction getFrameElement(win) {\n return win.parent && Object.getPrototypeOf(win.parent) ? win.frameElement : null;\n}\n\nexport { getComputedStyle, getContainingBlock, getDocumentElement, getFrameElement, getNearestOverflowAncestor, getNodeName, getNodeScroll, getOverflowAncestors, getParentNode, getWindow, isContainingBlock, isElement, isHTMLElement, isLastTraversableNode, isNode, isOverflowElement, isShadowRoot, isTableElement, isTopLayer, isWebKit };\n","import { rectToClientRect, arrow as arrow$1, autoPlacement as autoPlacement$1, detectOverflow as detectOverflow$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1, computePosition as computePosition$1 } from '@floating-ui/core';\nimport { round, createCoords, max, min, floor } from '@floating-ui/utils';\nimport { getComputedStyle as getComputedStyle$1, isHTMLElement, isElement, getWindow, isWebKit, getFrameElement, getNodeScroll, getDocumentElement, isTopLayer, getNodeName, isOverflowElement, getOverflowAncestors, getParentNode, isLastTraversableNode, isContainingBlock, isTableElement, getContainingBlock } from '@floating-ui/utils/dom';\nexport { getOverflowAncestors } from '@floating-ui/utils/dom';\n\nfunction getCssDimensions(element) {\n const css = getComputedStyle$1(element);\n // In testing environments, the `width` and `height` properties are empty\n // strings for SVG elements, returning NaN. Fallback to `0` in this case.\n let width = parseFloat(css.width) || 0;\n let height = parseFloat(css.height) || 0;\n const hasOffset = isHTMLElement(element);\n const offsetWidth = hasOffset ? element.offsetWidth : width;\n const offsetHeight = hasOffset ? element.offsetHeight : height;\n const shouldFallback = round(width) !== offsetWidth || round(height) !== offsetHeight;\n if (shouldFallback) {\n width = offsetWidth;\n height = offsetHeight;\n }\n return {\n width,\n height,\n $: shouldFallback\n };\n}\n\nfunction unwrapElement(element) {\n return !isElement(element) ? element.contextElement : element;\n}\n\nfunction getScale(element) {\n const domElement = unwrapElement(element);\n if (!isHTMLElement(domElement)) {\n return createCoords(1);\n }\n const rect = domElement.getBoundingClientRect();\n const {\n width,\n height,\n $\n } = getCssDimensions(domElement);\n let x = ($ ? round(rect.width) : rect.width) / width;\n let y = ($ ? round(rect.height) : rect.height) / height;\n\n // 0, NaN, or Infinity should always fallback to 1.\n\n if (!x || !Number.isFinite(x)) {\n x = 1;\n }\n if (!y || !Number.isFinite(y)) {\n y = 1;\n }\n return {\n x,\n y\n };\n}\n\nconst noOffsets = /*#__PURE__*/createCoords(0);\nfunction getVisualOffsets(element) {\n const win = getWindow(element);\n if (!isWebKit() || !win.visualViewport) {\n return noOffsets;\n }\n return {\n x: win.visualViewport.offsetLeft,\n y: win.visualViewport.offsetTop\n };\n}\nfunction shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow(element)) {\n return false;\n }\n return isFixed;\n}\n\nfunction getBoundingClientRect(element, includeScale, isFixedStrategy, offsetParent) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n const clientRect = element.getBoundingClientRect();\n const domElement = unwrapElement(element);\n let scale = createCoords(1);\n if (includeScale) {\n if (offsetParent) {\n if (isElement(offsetParent)) {\n scale = getScale(offsetParent);\n }\n } else {\n scale = getScale(element);\n }\n }\n const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);\n let x = (clientRect.left + visualOffsets.x) / scale.x;\n let y = (clientRect.top + visualOffsets.y) / scale.y;\n let width = clientRect.width / scale.x;\n let height = clientRect.height / scale.y;\n if (domElement) {\n const win = getWindow(domElement);\n const offsetWin = offsetParent && isElement(offsetParent) ? getWindow(offsetParent) : offsetParent;\n let currentWin = win;\n let currentIFrame = getFrameElement(currentWin);\n while (currentIFrame && offsetParent && offsetWin !== currentWin) {\n const iframeScale = getScale(currentIFrame);\n const iframeRect = currentIFrame.getBoundingClientRect();\n const css = getComputedStyle$1(currentIFrame);\n const left = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css.paddingLeft)) * iframeScale.x;\n const top = iframeRect.top + (currentIFrame.clientTop + parseFloat(css.paddingTop)) * iframeScale.y;\n x *= iframeScale.x;\n y *= iframeScale.y;\n width *= iframeScale.x;\n height *= iframeScale.y;\n x += left;\n y += top;\n currentWin = getWindow(currentIFrame);\n currentIFrame = getFrameElement(currentWin);\n }\n }\n return rectToClientRect({\n width,\n height,\n x,\n y\n });\n}\n\n// If <html> has a CSS width greater than the viewport, then this will be\n// incorrect for RTL.\nfunction getWindowScrollBarX(element, rect) {\n const leftScroll = getNodeScroll(element).scrollLeft;\n if (!rect) {\n return getBoundingClientRect(getDocumentElement(element)).left + leftScroll;\n }\n return rect.left + leftScroll;\n}\n\nfunction getHTMLOffset(documentElement, scroll) {\n const htmlRect = documentElement.getBoundingClientRect();\n const x = htmlRect.left + scroll.scrollLeft - getWindowScrollBarX(documentElement, htmlRect);\n const y = htmlRect.top + scroll.scrollTop;\n return {\n x,\n y\n };\n}\n\nfunction convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {\n let {\n elements,\n rect,\n offsetParent,\n strategy\n } = _ref;\n const isFixed = strategy === 'fixed';\n const documentElement = getDocumentElement(offsetParent);\n const topLayer = elements ? isTopLayer(elements.floating) : false;\n if (offsetParent === documentElement || topLayer && isFixed) {\n return rect;\n }\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n let scale = createCoords(1);\n const offsets = createCoords(0);\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent);\n scale = getScale(offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n }\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n return {\n width: rect.width * scale.x,\n height: rect.height * scale.y,\n x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x + htmlOffset.x,\n y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y + htmlOffset.y\n };\n}\n\nfunction getClientRects(element) {\n return Array.from(element.getClientRects());\n}\n\n// Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable.\nfunction getDocumentRect(element) {\n const html = getDocumentElement(element);\n const scroll = getNodeScroll(element);\n const body = element.ownerDocument.body;\n const width = max(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);\n const height = max(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);\n let x = -scroll.scrollLeft + getWindowScrollBarX(element);\n const y = -scroll.scrollTop;\n if (getComputedStyle$1(body).direction === 'rtl') {\n x += max(html.clientWidth, body.clientWidth) - width;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Safety check: ensure the scrollbar space is reasonable in case this\n// calculation is affected by unusual styles.\n// Most scrollbars leave 15-18px of space.\nconst SCROLLBAR_MAX = 25;\nfunction getViewportRect(element, strategy) {\n const win = getWindow(element);\n const html = getDocumentElement(element);\n const visualViewport = win.visualViewport;\n let width = html.clientWidth;\n let height = html.clientHeight;\n let x = 0;\n let y = 0;\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n const visualViewportBased = isWebKit();\n if (!visualViewportBased || visualViewportBased && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n const windowScrollbarX = getWindowScrollBarX(html);\n // <html> `overflow: hidden` + `scrollbar-gutter: stable` reduces the\n // visual width of the <html> but this is not considered in the size\n // of `html.clientWidth`.\n if (windowScrollbarX <= 0) {\n const doc = html.ownerDocument;\n const body = doc.body;\n const bodyStyles = getComputedStyle(body);\n const bodyMarginInline = doc.compatMode === 'CSS1Compat' ? parseFloat(bodyStyles.marginLeft) + parseFloat(bodyStyles.marginRight) || 0 : 0;\n const clippingStableScrollbarWidth = Math.abs(html.clientWidth - body.clientWidth - bodyMarginInline);\n if (clippingStableScrollbarWidth <= SCROLLBAR_MAX) {\n width -= clippingStableScrollbarWidth;\n }\n } else if (windowScrollbarX <= SCROLLBAR_MAX) {\n // If the <body> scrollbar is on the left, the width needs to be extended\n // by the scrollbar amount so there isn't extra space on the right.\n width += windowScrollbarX;\n }\n return {\n width,\n height,\n x,\n y\n };\n}\n\n// Returns the inner client rect, subtracting scrollbars if present.\nfunction getInnerBoundingClientRect(element, strategy) {\n const clientRect = getBoundingClientRect(element, true, strategy === 'fixed');\n const top = clientRect.top + element.clientTop;\n const left = clientRect.left + element.clientLeft;\n const scale = isHTMLElement(element) ? getScale(element) : createCoords(1);\n const width = element.clientWidth * scale.x;\n const height = element.clientHeight * scale.y;\n const x = left * scale.x;\n const y = top * scale.y;\n return {\n width,\n height,\n x,\n y\n };\n}\nfunction getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {\n let rect;\n if (clippingAncestor === 'viewport') {\n rect = getViewportRect(element, strategy);\n } else if (clippingAncestor === 'document') {\n rect = getDocumentRect(getDocumentElement(element));\n } else if (isElement(clippingAncestor)) {\n rect = getInnerBoundingClientRect(clippingAncestor, strategy);\n } else {\n const visualOffsets = getVisualOffsets(element);\n rect = {\n x: clippingAncestor.x - visualOffsets.x,\n y: clippingAncestor.y - visualOffsets.y,\n width: clippingAncestor.width,\n height: clippingAncestor.height\n };\n }\n return rectToClientRect(rect);\n}\nfunction hasFixedPositionAncestor(element, stopNode) {\n const parentNode = getParentNode(element);\n if (parentNode === stopNode || !isElement(parentNode) || isLastTraversableNode(parentNode)) {\n return false;\n }\n return getComputedStyle$1(parentNode).position === 'fixed' || hasFixedPositionAncestor(parentNode, stopNode);\n}\n\n// A \"clipping ancestor\" is an `overflow` element with the characteristic of\n// clipping (or hiding) child elements. This returns all clipping ancestors\n// of the given element up the tree.\nfunction getClippingElementAncestors(element, cache) {\n const cachedResult = cache.get(element);\n if (cachedResult) {\n return cachedResult;\n }\n let result = getOverflowAncestors(element, [], false).filter(el => isElement(el) && getNodeName(el) !== 'body');\n let currentContainingBlockComputedStyle = null;\n const elementIsFixed = getComputedStyle$1(element).position === 'fixed';\n let currentNode = elementIsFixed ? getParentNode(element) : element;\n\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n while (isElement(currentNode) && !isLastTraversableNode(currentNode)) {\n const computedStyle = getComputedStyle$1(currentNode);\n const currentNodeIsContaining = isContainingBlock(currentNode);\n if (!currentNodeIsContaining && computedStyle.position === 'fixed') {\n currentContainingBlockComputedStyle = null;\n }\n const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === 'static' && !!currentContainingBlockComputedStyle && (currentContainingBlockComputedStyle.position === 'absolute' || currentContainingBlockComputedStyle.position === 'fixed') || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);\n if (shouldDropCurrentNode) {\n // Drop non-containing blocks.\n result = result.filter(ancestor => ancestor !== currentNode);\n } else {\n // Record last containing block for next iteration.\n currentContainingBlockComputedStyle = computedStyle;\n }\n currentNode = getParentNode(currentNode);\n }\n cache.set(element, result);\n return result;\n}\n\n// Gets the maximum area that the element is visible in due to any number of\n// clipping ancestors.\nfunction getClippingRect(_ref) {\n let {\n element,\n boundary,\n rootBoundary,\n strategy\n } = _ref;\n const elementClippingAncestors = boundary === 'clippingAncestors' ? isTopLayer(element) ? [] : getClippingElementAncestors(element, this._c) : [].concat(boundary);\n const clippingAncestors = [...elementClippingAncestors, rootBoundary];\n const firstRect = getClientRectFromClippingAncestor(element, clippingAncestors[0], strategy);\n let top = firstRect.top;\n let right = firstRect.right;\n let bottom = firstRect.bottom;\n let left = firstRect.left;\n for (let i = 1; i < clippingAncestors.length; i++) {\n const rect = getClientRectFromClippingAncestor(element, clippingAncestors[i], strategy);\n top = max(rect.top, top);\n right = min(rect.right, right);\n bottom = min(rect.bottom, bottom);\n left = max(rect.left, left);\n }\n return {\n width: right - left,\n height: bottom - top,\n x: left,\n y: top\n };\n}\n\nfunction getDimensions(element) {\n const {\n width,\n height\n } = getCssDimensions(element);\n return {\n width,\n height\n };\n}\n\nfunction getRectRelativeToOffsetParent(element, offsetParent, strategy) {\n const isOffsetParentAnElement = isHTMLElement(offsetParent);\n const documentElement = getDocumentElement(offsetParent);\n const isFixed = strategy === 'fixed';\n const rect = getBoundingClientRect(element, true, isFixed, offsetParent);\n let scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n const offsets = createCoords(0);\n\n // If the <body> scrollbar appears on the left (e.g. RTL systems). Use\n // Firefox with layout.scrollbar.side = 3 in about:config to test this.\n function setLeftRTLScrollbarOffset() {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || isOverflowElement(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n if (isOffsetParentAnElement) {\n const offsetRect = getBoundingClientRect(offsetParent, true, isFixed, offsetParent);\n offsets.x = offsetRect.x + offsetParent.clientLeft;\n offsets.y = offsetRect.y + offsetParent.clientTop;\n } else if (documentElement) {\n setLeftRTLScrollbarOffset();\n }\n }\n if (isFixed && !isOffsetParentAnElement && documentElement) {\n setLeftRTLScrollbarOffset();\n }\n const htmlOffset = documentElement && !isOffsetParentAnElement && !isFixed ? getHTMLOffset(documentElement, scroll) : createCoords(0);\n const x = rect.left + scroll.scrollLeft - offsets.x - htmlOffset.x;\n const y = rect.top + scroll.scrollTop - offsets.y - htmlOffset.y;\n return {\n x,\n y,\n width: rect.width,\n height: rect.height\n };\n}\n\nfunction isStaticPositioned(element) {\n return getComputedStyle$1(element).position === 'static';\n}\n\nfunction getTrueOffsetParent(element, polyfill) {\n if (!isHTMLElement(element) || getComputedStyle$1(element).position === 'fixed') {\n return null;\n }\n if (polyfill) {\n return polyfill(element);\n }\n let rawOffsetParent = element.offsetParent;\n\n // Firefox returns the <html> element as the offsetParent if it's non-static,\n // while Chrome and Safari return the <body> element. The <body> element must\n // be used to perform the correct calculations even if the <html> element is\n // non-static.\n if (getDocumentElement(element) === rawOffsetParent) {\n rawOffsetParent = rawOffsetParent.ownerDocument.body;\n }\n return rawOffsetParent;\n}\n\n// Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\nfunction getOffsetParent(element, polyfill) {\n const win = getWindow(element);\n if (isTopLayer(element)) {\n return win;\n }\n if (!isHTMLElement(element)) {\n let svgOffsetParent = getParentNode(element);\n while (svgOffsetParent && !isLastTraversableNode(svgOffsetParent)) {\n if (isElement(svgOffsetParent) && !isStaticPositioned(svgOffsetParent)) {\n return svgOffsetParent;\n }\n svgOffsetParent = getParentNode(svgOffsetParent);\n }\n return win;\n }\n let offsetParent = getTrueOffsetParent(element, polyfill);\n while (offsetParent && isTableElement(offsetParent) && isStaticPositioned(offsetParent)) {\n offsetParent = getTrueOffsetParent(offsetParent, polyfill);\n }\n if (offsetParent && isLastTraversableNode(offsetParent) && isStaticPositioned(offsetParent) && !isContainingBlock(offsetParent)) {\n return win;\n }\n return offsetParent || getContainingBlock(element) || win;\n}\n\nconst getElementRects = async function (data) {\n const getOffsetParentFn = this.getOffsetParent || getOffsetParent;\n const getDimensionsFn = this.getDimensions;\n const floatingDimensions = await getDimensionsFn(data.floating);\n return {\n reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),\n floating: {\n x: 0,\n y: 0,\n width: floatingDimensions.width,\n height: floatingDimensions.height\n }\n };\n};\n\nfunction isRTL(element) {\n return getComputedStyle$1(element).direction === 'rtl';\n}\n\nconst platform = {\n convertOffsetParentRelativeRectToViewportRelativeRect,\n getDocumentElement,\n getClippingRect,\n getOffsetParent,\n getElementRects,\n getClientRects,\n getDimensions,\n getScale,\n isElement,\n isRTL\n};\n\nfunction rectsAreEqual(a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n}\n\n// https://samthor.au/2021/observing-dom/\nfunction observeMove(element, onMove) {\n let io = null;\n let timeoutId;\n const root = getDocumentElement(element);\n function cleanup() {\n var _io;\n clearTimeout(timeoutId);\n (_io = io) == null || _io.disconnect();\n io = null;\n }\n function refresh(skip, threshold) {\n if (skip === void 0) {\n skip = false;\n }\n if (threshold === void 0) {\n threshold = 1;\n }\n cleanup();\n const elementRectForRootMargin = element.getBoundingClientRect();\n const {\n left,\n top,\n width,\n height\n } = elementRectForRootMargin;\n if (!skip) {\n onMove();\n }\n if (!width || !height) {\n return;\n }\n const insetTop = floor(top);\n const insetRight = floor(root.clientWidth - (left + width));\n const insetBottom = floor(root.clientHeight - (top + height));\n const insetLeft = floor(left);\n const rootMargin = -insetTop + \"px \" + -insetRight + \"px \" + -insetBottom + \"px \" + -insetLeft + \"px\";\n const options = {\n rootMargin,\n threshold: max(0, min(1, threshold)) || 1\n };\n let isFirstUpdate = true;\n function handleObserve(entries) {\n const ratio = entries[0].intersectionRatio;\n if (ratio !== threshold) {\n if (!isFirstUpdate) {\n return refresh();\n }\n if (!ratio) {\n // If the reference is clipped, the ratio is 0. Throttle the refresh\n // to prevent an infinite loop of updates.\n timeoutId = setTimeout(() => {\n refresh(false, 1e-7);\n }, 1000);\n } else {\n refresh(false, ratio);\n }\n }\n if (ratio === 1 && !rectsAreEqual(elementRectForRootMargin, element.getBoundingClientRect())) {\n // It's possible that even though the ratio is reported as 1, the\n // element is not actually fully within the IntersectionObserver's root\n // area anymore. This can happen under performance constraints. This may\n // be a bug in the browser's IntersectionObserver implementation. To\n // work around this, we compare the element's bounding rect now with\n // what it was at the time we created the IntersectionObserver. If they\n // are not equal then the element moved, so we refresh.\n refresh();\n }\n isFirstUpdate = false;\n }\n\n // Older browsers don't support a `document` as the root and will throw an\n // error.\n try {\n io = new IntersectionObserver(handleObserve, {\n ...options,\n // Handle <iframe>s\n root: root.ownerDocument\n });\n } catch (_e) {\n io = new IntersectionObserver(handleObserve, options);\n }\n io.observe(element);\n }\n refresh(true);\n return cleanup;\n}\n\n/**\n * Automatically updates the position of the floating element when necessary.\n * Should only be called when the floating element is mounted on the DOM or\n * visible on the screen.\n * @returns cleanup function that should be invoked when the floating element is\n * removed from the DOM or hidden from the screen.\n * @see https://floating-ui.com/docs/autoUpdate\n */\nfunction autoUpdate(reference, floating, update, options) {\n if (options === void 0) {\n options = {};\n }\n const {\n ancestorScroll = true,\n ancestorResize = true,\n elementResize = typeof ResizeObserver === 'function',\n layoutShift = typeof IntersectionObserver === 'function',\n animationFrame = false\n } = options;\n const referenceEl = unwrapElement(reference);\n const ancestors = ancestorScroll || ancestorResize ? [...(referenceEl ? getOverflowAncestors(referenceEl) : []), ...(floating ? getOverflowAncestors(floating) : [])] : [];\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.addEventListener('scroll', update, {\n passive: true\n });\n ancestorResize && ancestor.addEventListener('resize', update);\n });\n const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;\n let reobserveFrame = -1;\n let resizeObserver = null;\n if (elementResize) {\n resizeObserver = new ResizeObserver(_ref => {\n let [firstEntry] = _ref;\n if (firstEntry && firstEntry.target === referenceEl && resizeObserver && floating) {\n // Prevent update loops when using the `size` middleware.\n // https://github.com/floating-ui/floating-ui/issues/1740\n resizeObserver.unobserve(floating);\n cancelAnimationFrame(reobserveFrame);\n reobserveFrame = requestAnimationFrame(() => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);\n });\n }\n update();\n });\n if (referenceEl && !animationFrame) {\n resizeObserver.observe(referenceEl);\n }\n if (floating) {\n resizeObserver.observe(floating);\n }\n }\n let frameId;\n let prevRefRect = animationFrame ? getBoundingClientRect(reference) : null;\n if (animationFrame) {\n frameLoop();\n }\n function frameLoop() {\n const nextRefRect = getBoundingClientRect(reference);\n if (prevRefRect && !rectsAreEqual(prevRefRect, nextRefRect)) {\n update();\n }\n prevRefRect = nextRefRect;\n frameId = requestAnimationFrame(frameLoop);\n }\n update();\n return () => {\n var _resizeObserver2;\n ancestors.forEach(ancestor => {\n ancestorScroll && ancestor.removeEventListener('scroll', update);\n ancestorResize && ancestor.removeEventListener('resize', update);\n });\n cleanupIo == null || cleanupIo();\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();\n resizeObserver = null;\n if (animationFrame) {\n cancelAnimationFrame(frameId);\n }\n };\n}\n\n/**\n * Resolves with an object of overflow side offsets that determine how much the\n * element is overflowing a given clipping boundary on each side.\n * - positive = overflowing the boundary by that number of pixels\n * - negative = how many pixels left before it will overflow\n * - 0 = lies flush with the boundary\n * @see https://floating-ui.com/docs/detectOverflow\n */\nconst detectOverflow = detectOverflow$1;\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = offset$1;\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = autoPlacement$1;\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = shift$1;\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = flip$1;\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = size$1;\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = hide$1;\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = arrow$1;\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = inline$1;\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = limitShift$1;\n\n/**\n * Computes the `x` and `y` coordinates that will place the floating element\n * next to a given reference element.\n */\nconst computePosition = (reference, floating, options) => {\n // This caches the expensive `getClippingElementAncestors` function so that\n // multiple lifecycle resets re-use the same result. It only lives for a\n // single call. If other functions become expensive, we can add them as well.\n const cache = new Map();\n const mergedOptions = {\n platform,\n ...options\n };\n const platformWithCache = {\n ...mergedOptions.platform,\n _c: cache\n };\n return computePosition$1(reference, floating, {\n ...mergedOptions,\n platform: platformWithCache\n });\n};\n\nexport { arrow, autoPlacement, autoUpdate, computePosition, detectOverflow, flip, hide, inline, limitShift, offset, platform, shift, size };\n","import { computePosition, arrow as arrow$2, autoPlacement as autoPlacement$1, flip as flip$1, hide as hide$1, inline as inline$1, limitShift as limitShift$1, offset as offset$1, shift as shift$1, size as size$1 } from '@floating-ui/dom';\nexport { autoUpdate, computePosition, detectOverflow, getOverflowAncestors, platform } from '@floating-ui/dom';\nimport * as React from 'react';\nimport { useLayoutEffect } from 'react';\nimport * as ReactDOM from 'react-dom';\n\nvar isClient = typeof document !== 'undefined';\n\nvar noop = function noop() {};\nvar index = isClient ? useLayoutEffect : noop;\n\n// Fork of `fast-deep-equal` that only does the comparisons we need and compares\n// functions\nfunction deepEqual(a, b) {\n if (a === b) {\n return true;\n }\n if (typeof a !== typeof b) {\n return false;\n }\n if (typeof a === 'function' && a.toString() === b.toString()) {\n return true;\n }\n let length;\n let i;\n let keys;\n if (a && b && typeof a === 'object') {\n if (Array.isArray(a)) {\n length = a.length;\n if (length !== b.length) return false;\n for (i = length; i-- !== 0;) {\n if (!deepEqual(a[i], b[i])) {\n return false;\n }\n }\n return true;\n }\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) {\n return false;\n }\n for (i = length; i-- !== 0;) {\n if (!{}.hasOwnProperty.call(b, keys[i])) {\n return false;\n }\n }\n for (i = length; i-- !== 0;) {\n const key = keys[i];\n if (key === '_owner' && a.$$typeof) {\n continue;\n }\n if (!deepEqual(a[key], b[key])) {\n return false;\n }\n }\n return true;\n }\n return a !== a && b !== b;\n}\n\nfunction getDPR(element) {\n if (typeof window === 'undefined') {\n return 1;\n }\n const win = element.ownerDocument.defaultView || window;\n return win.devicePixelRatio || 1;\n}\n\nfunction roundByDPR(element, value) {\n const dpr = getDPR(element);\n return Math.round(value * dpr) / dpr;\n}\n\nfunction useLatestRef(value) {\n const ref = React.useRef(value);\n index(() => {\n ref.current = value;\n });\n return ref;\n}\n\n/**\n * Provides data to position a floating element.\n * @see https://floating-ui.com/docs/useFloating\n */\nfunction useFloating(options) {\n if (options === void 0) {\n options = {};\n }\n const {\n placement = 'bottom',\n strategy = 'absolute',\n middleware = [],\n platform,\n elements: {\n reference: externalReference,\n floating: externalFloating\n } = {},\n transform = true,\n whileElementsMounted,\n open\n } = options;\n const [data, setData] = React.useState({\n x: 0,\n y: 0,\n strategy,\n placement,\n middlewareData: {},\n isPositioned: false\n });\n const [latestMiddleware, setLatestMiddleware] = React.useState(middleware);\n if (!deepEqual(latestMiddleware, middleware)) {\n setLatestMiddleware(middleware);\n }\n const [_reference, _setReference] = React.useState(null);\n const [_floating, _setFloating] = React.useState(null);\n const setReference = React.useCallback(node => {\n if (node !== referenceRef.current) {\n referenceRef.current = node;\n _setReference(node);\n }\n }, []);\n const setFloating = React.useCallback(node => {\n if (node !== floatingRef.current) {\n floatingRef.current = node;\n _setFloating(node);\n }\n }, []);\n const referenceEl = externalReference || _reference;\n const floatingEl = externalFloating || _floating;\n const referenceRef = React.useRef(null);\n const floatingRef = React.useRef(null);\n const dataRef = React.useRef(data);\n const hasWhileElementsMounted = whileElementsMounted != null;\n const whileElementsMountedRef = useLatestRef(whileElementsMounted);\n const platformRef = useLatestRef(platform);\n const openRef = useLatestRef(open);\n const update = React.useCallback(() => {\n if (!referenceRef.current || !floatingRef.current) {\n return;\n }\n const config = {\n placement,\n strategy,\n middleware: latestMiddleware\n };\n if (platformRef.current) {\n config.platform = platformRef.current;\n }\n computePosition(referenceRef.current, floatingRef.current, config).then(data => {\n const fullData = {\n ...data,\n // The floating element's position may be recomputed while it's closed\n // but still mounted (such as when transitioning out). To ensure\n // `isPositioned` will be `false` initially on the next open, avoid\n // setting it to `true` when `open === false` (must be specified).\n isPositioned: openRef.current !== false\n };\n if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {\n dataRef.current = fullData;\n ReactDOM.flushSync(() => {\n setData(fullData);\n });\n }\n });\n }, [latestMiddleware, placement, strategy, platformRef, openRef]);\n index(() => {\n if (open === false && dataRef.current.isPositioned) {\n dataRef.current.isPositioned = false;\n setData(data => ({\n ...data,\n isPositioned: false\n }));\n }\n }, [open]);\n const isMountedRef = React.useRef(false);\n index(() => {\n isMountedRef.current = true;\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n index(() => {\n if (referenceEl) referenceRef.current = referenceEl;\n if (floatingEl) floatingRef.current = floatingEl;\n if (referenceEl && floatingEl) {\n if (whileElementsMountedRef.current) {\n return whileElementsMountedRef.current(referenceEl, floatingEl, update);\n }\n update();\n }\n }, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);\n const refs = React.useMemo(() => ({\n reference: referenceRef,\n floating: floatingRef,\n setReference,\n setFloating\n }), [setReference, setFloating]);\n const elements = React.useMemo(() => ({\n reference: referenceEl,\n floating: floatingEl\n }), [referenceEl, floatingEl]);\n const floatingStyles = React.useMemo(() => {\n const initialStyles = {\n position: strategy,\n left: 0,\n top: 0\n };\n if (!elements.floating) {\n return initialStyles;\n }\n const x = roundByDPR(elements.floating, data.x);\n const y = roundByDPR(elements.floating, data.y);\n if (transform) {\n return {\n ...initialStyles,\n transform: \"translate(\" + x + \"px, \" + y + \"px)\",\n ...(getDPR(elements.floating) >= 1.5 && {\n willChange: 'transform'\n })\n };\n }\n return {\n position: strategy,\n left: x,\n top: y\n };\n }, [strategy, transform, elements.floating, data.x, data.y]);\n return React.useMemo(() => ({\n ...data,\n update,\n refs,\n elements,\n floatingStyles\n }), [data, update, refs, elements, floatingStyles]);\n}\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow$1 = options => {\n function isRef(value) {\n return {}.hasOwnProperty.call(value, 'current');\n }\n return {\n name: 'arrow',\n options,\n fn(state) {\n const {\n element,\n padding\n } = typeof options === 'function' ? options(state) : options;\n if (element && isRef(element)) {\n if (element.current != null) {\n return arrow$2({\n element: element.current,\n padding\n }).fn(state);\n }\n return {};\n }\n if (element) {\n return arrow$2({\n element,\n padding\n }).fn(state);\n }\n return {};\n }\n };\n};\n\n/**\n * Modifies the placement by translating the floating element along the\n * specified axes.\n * A number (shorthand for `mainAxis` or distance), or an axes configuration\n * object may be passed.\n * @see https://floating-ui.com/docs/offset\n */\nconst offset = (options, deps) => {\n const result = offset$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by shifting it in order to\n * keep it in view when it will overflow the clipping boundary.\n * @see https://floating-ui.com/docs/shift\n */\nconst shift = (options, deps) => {\n const result = shift$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Built-in `limiter` that will stop `shift()` at a certain point.\n */\nconst limitShift = (options, deps) => {\n const result = limitShift$1(options);\n return {\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by flipping the `placement`\n * in order to keep it in view when the preferred placement(s) will overflow the\n * clipping boundary. Alternative to `autoPlacement`.\n * @see https://floating-ui.com/docs/flip\n */\nconst flip = (options, deps) => {\n const result = flip$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data that allows you to change the size of the floating element —\n * for instance, prevent it from overflowing the clipping boundary or match the\n * width of the reference element.\n * @see https://floating-ui.com/docs/size\n */\nconst size = (options, deps) => {\n const result = size$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Optimizes the visibility of the floating element by choosing the placement\n * that has the most space available automatically, without needing to specify a\n * preferred placement. Alternative to `flip`.\n * @see https://floating-ui.com/docs/autoPlacement\n */\nconst autoPlacement = (options, deps) => {\n const result = autoPlacement$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to hide the floating element in applicable situations, such as\n * when it is not in the same clipping context as the reference element.\n * @see https://floating-ui.com/docs/hide\n */\nconst hide = (options, deps) => {\n const result = hide$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides improved positioning for inline reference elements that can span\n * over multiple lines, such as hyperlinks or range selections.\n * @see https://floating-ui.com/docs/inline\n */\nconst inline = (options, deps) => {\n const result = inline$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\n/**\n * Provides data to position an inner element of the floating element so that it\n * appears centered to the reference element.\n * This wraps the core `arrow` middleware to allow React refs as the element.\n * @see https://floating-ui.com/docs/arrow\n */\nconst arrow = (options, deps) => {\n const result = arrow$1(options);\n return {\n name: result.name,\n fn: result.fn,\n options: [options, deps]\n };\n};\n\nexport { arrow, autoPlacement, flip, hide, inline, limitShift, offset, shift, size, useFloating };\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// src/arrow.tsx\nimport * as React from \"react\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NAME = \"Arrow\";\nvar Arrow = React.forwardRef((props, forwardedRef) => {\n const { children, width = 10, height = 5, ...arrowProps } = props;\n return /* @__PURE__ */ jsx(\n Primitive.svg,\n {\n ...arrowProps,\n ref: forwardedRef,\n width,\n height,\n viewBox: \"0 0 30 10\",\n preserveAspectRatio: \"none\",\n children: props.asChild ? children : /* @__PURE__ */ jsx(\"polygon\", { points: \"0,0 30,0 15,10\" })\n }\n );\n});\nArrow.displayName = NAME;\nvar Root = Arrow;\nexport {\n Arrow,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-size/src/use-size.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nfunction useSize(element) {\n const [size, setSize] = React.useState(void 0);\n useLayoutEffect(() => {\n if (element) {\n setSize({ width: element.offsetWidth, height: element.offsetHeight });\n const resizeObserver = new ResizeObserver((entries) => {\n if (!Array.isArray(entries)) {\n return;\n }\n if (!entries.length) {\n return;\n }\n const entry = entries[0];\n let width;\n let height;\n if (\"borderBoxSize\" in entry) {\n const borderSizeEntry = entry[\"borderBoxSize\"];\n const borderSize = Array.isArray(borderSizeEntry) ? borderSizeEntry[0] : borderSizeEntry;\n width = borderSize[\"inlineSize\"];\n height = borderSize[\"blockSize\"];\n } else {\n width = element.offsetWidth;\n height = element.offsetHeight;\n }\n setSize({ width, height });\n });\n resizeObserver.observe(element, { box: \"border-box\" });\n return () => resizeObserver.unobserve(element);\n } else {\n setSize(void 0);\n }\n }, [element]);\n return size;\n}\nexport {\n useSize\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/popper.tsx\nimport * as React from \"react\";\nimport {\n useFloating,\n autoUpdate,\n offset,\n shift,\n limitShift,\n hide,\n arrow as floatingUIarrow,\n flip,\n size\n} from \"@floating-ui/react-dom\";\nimport * as ArrowPrimitive from \"@radix-ui/react-arrow\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { jsx } from \"react/jsx-runtime\";\nvar SIDE_OPTIONS = [\"top\", \"right\", \"bottom\", \"left\"];\nvar ALIGN_OPTIONS = [\"start\", \"center\", \"end\"];\nvar POPPER_NAME = \"Popper\";\nvar [createPopperContext, createPopperScope] = createContextScope(POPPER_NAME);\nvar [PopperProvider, usePopperContext] = createPopperContext(POPPER_NAME);\nvar Popper = (props) => {\n const { __scopePopper, children } = props;\n const [anchor, setAnchor] = React.useState(null);\n return /* @__PURE__ */ jsx(PopperProvider, { scope: __scopePopper, anchor, onAnchorChange: setAnchor, children });\n};\nPopper.displayName = POPPER_NAME;\nvar ANCHOR_NAME = \"PopperAnchor\";\nvar PopperAnchor = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopePopper, virtualRef, ...anchorProps } = props;\n const context = usePopperContext(ANCHOR_NAME, __scopePopper);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const anchorRef = React.useRef(null);\n React.useEffect(() => {\n const previousAnchor = anchorRef.current;\n anchorRef.current = virtualRef?.current || ref.current;\n if (previousAnchor !== anchorRef.current) {\n context.onAnchorChange(anchorRef.current);\n }\n });\n return virtualRef ? null : /* @__PURE__ */ jsx(Primitive.div, { ...anchorProps, ref: composedRefs });\n }\n);\nPopperAnchor.displayName = ANCHOR_NAME;\nvar CONTENT_NAME = \"PopperContent\";\nvar [PopperContentProvider, useContentContext] = createPopperContext(CONTENT_NAME);\nvar PopperContent = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopePopper,\n side = \"bottom\",\n sideOffset = 0,\n align = \"center\",\n alignOffset = 0,\n arrowPadding = 0,\n avoidCollisions = true,\n collisionBoundary = [],\n collisionPadding: collisionPaddingProp = 0,\n sticky = \"partial\",\n hideWhenDetached = false,\n updatePositionStrategy = \"optimized\",\n onPlaced,\n ...contentProps\n } = props;\n const context = usePopperContext(CONTENT_NAME, __scopePopper);\n const [content, setContent] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setContent(node));\n const [arrow, setArrow] = React.useState(null);\n const arrowSize = useSize(arrow);\n const arrowWidth = arrowSize?.width ?? 0;\n const arrowHeight = arrowSize?.height ?? 0;\n const desiredPlacement = side + (align !== \"center\" ? \"-\" + align : \"\");\n const collisionPadding = typeof collisionPaddingProp === \"number\" ? collisionPaddingProp : { top: 0, right: 0, bottom: 0, left: 0, ...collisionPaddingProp };\n const boundary = Array.isArray(collisionBoundary) ? collisionBoundary : [collisionBoundary];\n const hasExplicitBoundaries = boundary.length > 0;\n const detectOverflowOptions = {\n padding: collisionPadding,\n boundary: boundary.filter(isNotNull),\n // with `strategy: 'fixed'`, this is the only way to get it to respect boundaries\n altBoundary: hasExplicitBoundaries\n };\n const { refs, floatingStyles, placement, isPositioned, middlewareData } = useFloating({\n // default to `fixed` strategy so users don't have to pick and we also avoid focus scroll issues\n strategy: \"fixed\",\n placement: desiredPlacement,\n whileElementsMounted: (...args) => {\n const cleanup = autoUpdate(...args, {\n animationFrame: updatePositionStrategy === \"always\"\n });\n return cleanup;\n },\n elements: {\n reference: context.anchor\n },\n middleware: [\n offset({ mainAxis: sideOffset + arrowHeight, alignmentAxis: alignOffset }),\n avoidCollisions && shift({\n mainAxis: true,\n crossAxis: false,\n limiter: sticky === \"partial\" ? limitShift() : void 0,\n ...detectOverflowOptions\n }),\n avoidCollisions && flip({ ...detectOverflowOptions }),\n size({\n ...detectOverflowOptions,\n apply: ({ elements, rects, availableWidth, availableHeight }) => {\n const { width: anchorWidth, height: anchorHeight } = rects.reference;\n const contentStyle = elements.floating.style;\n contentStyle.setProperty(\"--radix-popper-available-width\", `${availableWidth}px`);\n contentStyle.setProperty(\"--radix-popper-available-height\", `${availableHeight}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-width\", `${anchorWidth}px`);\n contentStyle.setProperty(\"--radix-popper-anchor-height\", `${anchorHeight}px`);\n }\n }),\n arrow && floatingUIarrow({ element: arrow, padding: arrowPadding }),\n transformOrigin({ arrowWidth, arrowHeight }),\n hideWhenDetached && hide({ strategy: \"referenceHidden\", ...detectOverflowOptions })\n ]\n });\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const handlePlaced = useCallbackRef(onPlaced);\n useLayoutEffect(() => {\n if (isPositioned) {\n handlePlaced?.();\n }\n }, [isPositioned, handlePlaced]);\n const arrowX = middlewareData.arrow?.x;\n const arrowY = middlewareData.arrow?.y;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const [contentZIndex, setContentZIndex] = React.useState();\n useLayoutEffect(() => {\n if (content) setContentZIndex(window.getComputedStyle(content).zIndex);\n }, [content]);\n return /* @__PURE__ */ jsx(\n \"div\",\n {\n ref: refs.setFloating,\n \"data-radix-popper-content-wrapper\": \"\",\n style: {\n ...floatingStyles,\n transform: isPositioned ? floatingStyles.transform : \"translate(0, -200%)\",\n // keep off the page when measuring\n minWidth: \"max-content\",\n zIndex: contentZIndex,\n [\"--radix-popper-transform-origin\"]: [\n middlewareData.transformOrigin?.x,\n middlewareData.transformOrigin?.y\n ].join(\" \"),\n // hide the content if using the hide middleware and should be hidden\n // set visibility to hidden and disable pointer events so the UI behaves\n // as if the PopperContent isn't there at all\n ...middlewareData.hide?.referenceHidden && {\n visibility: \"hidden\",\n pointerEvents: \"none\"\n }\n },\n dir: props.dir,\n children: /* @__PURE__ */ jsx(\n PopperContentProvider,\n {\n scope: __scopePopper,\n placedSide,\n onArrowChange: setArrow,\n arrowX,\n arrowY,\n shouldHideArrow: cannotCenterArrow,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-side\": placedSide,\n \"data-align\": placedAlign,\n ...contentProps,\n ref: composedRefs,\n style: {\n ...contentProps.style,\n // if the PopperContent hasn't been placed yet (not all measurements done)\n // we prevent animations so that users's animation don't kick in too early referring wrong sides\n animation: !isPositioned ? \"none\" : void 0\n }\n }\n )\n }\n )\n }\n );\n }\n);\nPopperContent.displayName = CONTENT_NAME;\nvar ARROW_NAME = \"PopperArrow\";\nvar OPPOSITE_SIDE = {\n top: \"bottom\",\n right: \"left\",\n bottom: \"top\",\n left: \"right\"\n};\nvar PopperArrow = React.forwardRef(function PopperArrow2(props, forwardedRef) {\n const { __scopePopper, ...arrowProps } = props;\n const contentContext = useContentContext(ARROW_NAME, __scopePopper);\n const baseSide = OPPOSITE_SIDE[contentContext.placedSide];\n return (\n // we have to use an extra wrapper because `ResizeObserver` (used by `useSize`)\n // doesn't report size as we'd expect on SVG elements.\n // it reports their bounding box which is effectively the largest path inside the SVG.\n /* @__PURE__ */ jsx(\n \"span\",\n {\n ref: contentContext.onArrowChange,\n style: {\n position: \"absolute\",\n left: contentContext.arrowX,\n top: contentContext.arrowY,\n [baseSide]: 0,\n transformOrigin: {\n top: \"\",\n right: \"0 0\",\n bottom: \"center 0\",\n left: \"100% 0\"\n }[contentContext.placedSide],\n transform: {\n top: \"translateY(100%)\",\n right: \"translateY(50%) rotate(90deg) translateX(-50%)\",\n bottom: `rotate(180deg)`,\n left: \"translateY(50%) rotate(-90deg) translateX(50%)\"\n }[contentContext.placedSide],\n visibility: contentContext.shouldHideArrow ? \"hidden\" : void 0\n },\n children: /* @__PURE__ */ jsx(\n ArrowPrimitive.Root,\n {\n ...arrowProps,\n ref: forwardedRef,\n style: {\n ...arrowProps.style,\n // ensures the element can be measured correctly (mostly for if SVG)\n display: \"block\"\n }\n }\n )\n }\n )\n );\n});\nPopperArrow.displayName = ARROW_NAME;\nfunction isNotNull(value) {\n return value !== null;\n}\nvar transformOrigin = (options) => ({\n name: \"transformOrigin\",\n options,\n fn(data) {\n const { placement, rects, middlewareData } = data;\n const cannotCenterArrow = middlewareData.arrow?.centerOffset !== 0;\n const isArrowHidden = cannotCenterArrow;\n const arrowWidth = isArrowHidden ? 0 : options.arrowWidth;\n const arrowHeight = isArrowHidden ? 0 : options.arrowHeight;\n const [placedSide, placedAlign] = getSideAndAlignFromPlacement(placement);\n const noArrowAlign = { start: \"0%\", center: \"50%\", end: \"100%\" }[placedAlign];\n const arrowXCenter = (middlewareData.arrow?.x ?? 0) + arrowWidth / 2;\n const arrowYCenter = (middlewareData.arrow?.y ?? 0) + arrowHeight / 2;\n let x = \"\";\n let y = \"\";\n if (placedSide === \"bottom\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${-arrowHeight}px`;\n } else if (placedSide === \"top\") {\n x = isArrowHidden ? noArrowAlign : `${arrowXCenter}px`;\n y = `${rects.floating.height + arrowHeight}px`;\n } else if (placedSide === \"right\") {\n x = `${-arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n } else if (placedSide === \"left\") {\n x = `${rects.floating.width + arrowHeight}px`;\n y = isArrowHidden ? noArrowAlign : `${arrowYCenter}px`;\n }\n return { data: { x, y } };\n }\n});\nfunction getSideAndAlignFromPlacement(placement) {\n const [side, align = \"center\"] = placement.split(\"-\");\n return [side, align];\n}\nvar Root2 = Popper;\nvar Anchor = PopperAnchor;\nvar Content = PopperContent;\nvar Arrow = PopperArrow;\nexport {\n ALIGN_OPTIONS,\n Anchor,\n Arrow,\n Content,\n Popper,\n PopperAnchor,\n PopperArrow,\n PopperContent,\n Root2 as Root,\n SIDE_OPTIONS,\n createPopperScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/portal.tsx\nimport * as React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { jsx } from \"react/jsx-runtime\";\nvar PORTAL_NAME = \"Portal\";\nvar Portal = React.forwardRef((props, forwardedRef) => {\n const { container: containerProp, ...portalProps } = props;\n const [mounted, setMounted] = React.useState(false);\n useLayoutEffect(() => setMounted(true), []);\n const container = containerProp || mounted && globalThis?.document?.body;\n return container ? ReactDOM.createPortal(/* @__PURE__ */ jsx(Primitive.div, { ...portalProps, ref: forwardedRef }), container) : null;\n});\nPortal.displayName = PORTAL_NAME;\nvar Root = Portal;\nexport {\n Portal,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-escape-keydown/src/use-escape-keydown.tsx\nimport * as React from \"react\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nfunction useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {\n const onEscapeKeyDown = useCallbackRef(onEscapeKeyDownProp);\n React.useEffect(() => {\n const handleKeyDown = (event) => {\n if (event.key === \"Escape\") {\n onEscapeKeyDown(event);\n }\n };\n ownerDocument.addEventListener(\"keydown\", handleKeyDown, { capture: true });\n return () => ownerDocument.removeEventListener(\"keydown\", handleKeyDown, { capture: true });\n }, [onEscapeKeyDown, ownerDocument]);\n}\nexport {\n useEscapeKeydown\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/dismissable-layer.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive, dispatchDiscreteCustomEvent } from \"@radix-ui/react-primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DISMISSABLE_LAYER_NAME = \"DismissableLayer\";\nvar CONTEXT_UPDATE = \"dismissableLayer.update\";\nvar POINTER_DOWN_OUTSIDE = \"dismissableLayer.pointerDownOutside\";\nvar FOCUS_OUTSIDE = \"dismissableLayer.focusOutside\";\nvar originalBodyPointerEvents;\nvar DismissableLayerContext = React.createContext({\n layers: /* @__PURE__ */ new Set(),\n layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),\n branches: /* @__PURE__ */ new Set()\n});\nvar DismissableLayer = React.forwardRef(\n (props, forwardedRef) => {\n const {\n disableOutsidePointerEvents = false,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n onDismiss,\n ...layerProps\n } = props;\n const context = React.useContext(DismissableLayerContext);\n const [node, setNode] = React.useState(null);\n const ownerDocument = node?.ownerDocument ?? globalThis?.document;\n const [, force] = React.useState({});\n const composedRefs = useComposedRefs(forwardedRef, (node2) => setNode(node2));\n const layers = Array.from(context.layers);\n const [highestLayerWithOutsidePointerEventsDisabled] = [...context.layersWithOutsidePointerEventsDisabled].slice(-1);\n const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);\n const index = node ? layers.indexOf(node) : -1;\n const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;\n const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;\n const pointerDownOutside = usePointerDownOutside((event) => {\n const target = event.target;\n const isPointerDownOnBranch = [...context.branches].some((branch) => branch.contains(target));\n if (!isPointerEventsEnabled || isPointerDownOnBranch) return;\n onPointerDownOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n const focusOutside = useFocusOutside((event) => {\n const target = event.target;\n const isFocusInBranch = [...context.branches].some((branch) => branch.contains(target));\n if (isFocusInBranch) return;\n onFocusOutside?.(event);\n onInteractOutside?.(event);\n if (!event.defaultPrevented) onDismiss?.();\n }, ownerDocument);\n useEscapeKeydown((event) => {\n const isHighestLayer = index === context.layers.size - 1;\n if (!isHighestLayer) return;\n onEscapeKeyDown?.(event);\n if (!event.defaultPrevented && onDismiss) {\n event.preventDefault();\n onDismiss();\n }\n }, ownerDocument);\n React.useEffect(() => {\n if (!node) return;\n if (disableOutsidePointerEvents) {\n if (context.layersWithOutsidePointerEventsDisabled.size === 0) {\n originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;\n ownerDocument.body.style.pointerEvents = \"none\";\n }\n context.layersWithOutsidePointerEventsDisabled.add(node);\n }\n context.layers.add(node);\n dispatchUpdate();\n return () => {\n if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {\n ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;\n }\n };\n }, [node, ownerDocument, disableOutsidePointerEvents, context]);\n React.useEffect(() => {\n return () => {\n if (!node) return;\n context.layers.delete(node);\n context.layersWithOutsidePointerEventsDisabled.delete(node);\n dispatchUpdate();\n };\n }, [node, context]);\n React.useEffect(() => {\n const handleUpdate = () => force({});\n document.addEventListener(CONTEXT_UPDATE, handleUpdate);\n return () => document.removeEventListener(CONTEXT_UPDATE, handleUpdate);\n }, []);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n ...layerProps,\n ref: composedRefs,\n style: {\n pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? \"auto\" : \"none\" : void 0,\n ...props.style\n },\n onFocusCapture: composeEventHandlers(props.onFocusCapture, focusOutside.onFocusCapture),\n onBlurCapture: composeEventHandlers(props.onBlurCapture, focusOutside.onBlurCapture),\n onPointerDownCapture: composeEventHandlers(\n props.onPointerDownCapture,\n pointerDownOutside.onPointerDownCapture\n )\n }\n );\n }\n);\nDismissableLayer.displayName = DISMISSABLE_LAYER_NAME;\nvar BRANCH_NAME = \"DismissableLayerBranch\";\nvar DismissableLayerBranch = React.forwardRef((props, forwardedRef) => {\n const context = React.useContext(DismissableLayerContext);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n context.branches.add(node);\n return () => {\n context.branches.delete(node);\n };\n }\n }, [context.branches]);\n return /* @__PURE__ */ jsx(Primitive.div, { ...props, ref: composedRefs });\n});\nDismissableLayerBranch.displayName = BRANCH_NAME;\nfunction usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {\n const handlePointerDownOutside = useCallbackRef(onPointerDownOutside);\n const isPointerInsideReactTreeRef = React.useRef(false);\n const handleClickRef = React.useRef(() => {\n });\n React.useEffect(() => {\n const handlePointerDown = (event) => {\n if (event.target && !isPointerInsideReactTreeRef.current) {\n let handleAndDispatchPointerDownOutsideEvent2 = function() {\n handleAndDispatchCustomEvent(\n POINTER_DOWN_OUTSIDE,\n handlePointerDownOutside,\n eventDetail,\n { discrete: true }\n );\n };\n var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;\n const eventDetail = { originalEvent: event };\n if (event.pointerType === \"touch\") {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;\n ownerDocument.addEventListener(\"click\", handleClickRef.current, { once: true });\n } else {\n handleAndDispatchPointerDownOutsideEvent2();\n }\n } else {\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n }\n isPointerInsideReactTreeRef.current = false;\n };\n const timerId = window.setTimeout(() => {\n ownerDocument.addEventListener(\"pointerdown\", handlePointerDown);\n }, 0);\n return () => {\n window.clearTimeout(timerId);\n ownerDocument.removeEventListener(\"pointerdown\", handlePointerDown);\n ownerDocument.removeEventListener(\"click\", handleClickRef.current);\n };\n }, [ownerDocument, handlePointerDownOutside]);\n return {\n // ensures we check React component tree (not just DOM tree)\n onPointerDownCapture: () => isPointerInsideReactTreeRef.current = true\n };\n}\nfunction useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {\n const handleFocusOutside = useCallbackRef(onFocusOutside);\n const isFocusInsideReactTreeRef = React.useRef(false);\n React.useEffect(() => {\n const handleFocus = (event) => {\n if (event.target && !isFocusInsideReactTreeRef.current) {\n const eventDetail = { originalEvent: event };\n handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {\n discrete: false\n });\n }\n };\n ownerDocument.addEventListener(\"focusin\", handleFocus);\n return () => ownerDocument.removeEventListener(\"focusin\", handleFocus);\n }, [ownerDocument, handleFocusOutside]);\n return {\n onFocusCapture: () => isFocusInsideReactTreeRef.current = true,\n onBlurCapture: () => isFocusInsideReactTreeRef.current = false\n };\n}\nfunction dispatchUpdate() {\n const event = new CustomEvent(CONTEXT_UPDATE);\n document.dispatchEvent(event);\n}\nfunction handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {\n const target = detail.originalEvent.target;\n const event = new CustomEvent(name, { bubbles: false, cancelable: true, detail });\n if (handler) target.addEventListener(name, handler, { once: true });\n if (discrete) {\n dispatchDiscreteCustomEvent(target, event);\n } else {\n target.dispatchEvent(event);\n }\n}\nvar Root = DismissableLayer;\nvar Branch = DismissableLayerBranch;\nexport {\n Branch,\n DismissableLayer,\n DismissableLayerBranch,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/hover-card.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport * as PopperPrimitive from \"@radix-ui/react-popper\";\nimport { createPopperScope } from \"@radix-ui/react-popper\";\nimport { Portal as PortalPrimitive } from \"@radix-ui/react-portal\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { DismissableLayer } from \"@radix-ui/react-dismissable-layer\";\nimport { jsx } from \"react/jsx-runtime\";\nvar originalBodyUserSelect;\nvar HOVERCARD_NAME = \"HoverCard\";\nvar [createHoverCardContext, createHoverCardScope] = createContextScope(HOVERCARD_NAME, [\n createPopperScope\n]);\nvar usePopperScope = createPopperScope();\nvar [HoverCardProvider, useHoverCardContext] = createHoverCardContext(HOVERCARD_NAME);\nvar HoverCard = (props) => {\n const {\n __scopeHoverCard,\n children,\n open: openProp,\n defaultOpen,\n onOpenChange,\n openDelay = 700,\n closeDelay = 300\n } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n const openTimerRef = React.useRef(0);\n const closeTimerRef = React.useRef(0);\n const hasSelectionRef = React.useRef(false);\n const isPointerDownOnContentRef = React.useRef(false);\n const [open, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen ?? false,\n onChange: onOpenChange,\n caller: HOVERCARD_NAME\n });\n const handleOpen = React.useCallback(() => {\n clearTimeout(closeTimerRef.current);\n openTimerRef.current = window.setTimeout(() => setOpen(true), openDelay);\n }, [openDelay, setOpen]);\n const handleClose = React.useCallback(() => {\n clearTimeout(openTimerRef.current);\n if (!hasSelectionRef.current && !isPointerDownOnContentRef.current) {\n closeTimerRef.current = window.setTimeout(() => setOpen(false), closeDelay);\n }\n }, [closeDelay, setOpen]);\n const handleDismiss = React.useCallback(() => setOpen(false), [setOpen]);\n React.useEffect(() => {\n return () => {\n clearTimeout(openTimerRef.current);\n clearTimeout(closeTimerRef.current);\n };\n }, []);\n return /* @__PURE__ */ jsx(\n HoverCardProvider,\n {\n scope: __scopeHoverCard,\n open,\n onOpenChange: setOpen,\n onOpen: handleOpen,\n onClose: handleClose,\n onDismiss: handleDismiss,\n hasSelectionRef,\n isPointerDownOnContentRef,\n children: /* @__PURE__ */ jsx(PopperPrimitive.Root, { ...popperScope, children })\n }\n );\n};\nHoverCard.displayName = HOVERCARD_NAME;\nvar TRIGGER_NAME = \"HoverCardTrigger\";\nvar HoverCardTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeHoverCard, ...triggerProps } = props;\n const context = useHoverCardContext(TRIGGER_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n return /* @__PURE__ */ jsx(PopperPrimitive.Anchor, { asChild: true, ...popperScope, children: /* @__PURE__ */ jsx(\n Primitive.a,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n ...triggerProps,\n ref: forwardedRef,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n onFocus: composeEventHandlers(props.onFocus, context.onOpen),\n onBlur: composeEventHandlers(props.onBlur, context.onClose),\n onTouchStart: composeEventHandlers(props.onTouchStart, (event) => event.preventDefault())\n }\n ) });\n }\n);\nHoverCardTrigger.displayName = TRIGGER_NAME;\nvar PORTAL_NAME = \"HoverCardPortal\";\nvar [PortalProvider, usePortalContext] = createHoverCardContext(PORTAL_NAME, {\n forceMount: void 0\n});\nvar HoverCardPortal = (props) => {\n const { __scopeHoverCard, forceMount, children, container } = props;\n const context = useHoverCardContext(PORTAL_NAME, __scopeHoverCard);\n return /* @__PURE__ */ jsx(PortalProvider, { scope: __scopeHoverCard, forceMount, children: /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(PortalPrimitive, { asChild: true, container, children }) }) });\n};\nHoverCardPortal.displayName = PORTAL_NAME;\nvar CONTENT_NAME = \"HoverCardContent\";\nvar HoverCardContent = React.forwardRef(\n (props, forwardedRef) => {\n const portalContext = usePortalContext(CONTENT_NAME, props.__scopeHoverCard);\n const { forceMount = portalContext.forceMount, ...contentProps } = props;\n const context = useHoverCardContext(CONTENT_NAME, props.__scopeHoverCard);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: /* @__PURE__ */ jsx(\n HoverCardContentImpl,\n {\n \"data-state\": context.open ? \"open\" : \"closed\",\n ...contentProps,\n onPointerEnter: composeEventHandlers(props.onPointerEnter, excludeTouch(context.onOpen)),\n onPointerLeave: composeEventHandlers(props.onPointerLeave, excludeTouch(context.onClose)),\n ref: forwardedRef\n }\n ) });\n }\n);\nHoverCardContent.displayName = CONTENT_NAME;\nvar HoverCardContentImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeHoverCard,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside,\n onInteractOutside,\n ...contentProps\n } = props;\n const context = useHoverCardContext(CONTENT_NAME, __scopeHoverCard);\n const popperScope = usePopperScope(__scopeHoverCard);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const [containSelection, setContainSelection] = React.useState(false);\n React.useEffect(() => {\n if (containSelection) {\n const body = document.body;\n originalBodyUserSelect = body.style.userSelect || body.style.webkitUserSelect;\n body.style.userSelect = \"none\";\n body.style.webkitUserSelect = \"none\";\n return () => {\n body.style.userSelect = originalBodyUserSelect;\n body.style.webkitUserSelect = originalBodyUserSelect;\n };\n }\n }, [containSelection]);\n React.useEffect(() => {\n if (ref.current) {\n const handlePointerUp = () => {\n setContainSelection(false);\n context.isPointerDownOnContentRef.current = false;\n setTimeout(() => {\n const hasSelection = document.getSelection()?.toString() !== \"\";\n if (hasSelection) context.hasSelectionRef.current = true;\n });\n };\n document.addEventListener(\"pointerup\", handlePointerUp);\n return () => {\n document.removeEventListener(\"pointerup\", handlePointerUp);\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = false;\n };\n }\n }, [context.isPointerDownOnContentRef, context.hasSelectionRef]);\n React.useEffect(() => {\n if (ref.current) {\n const tabbables = getTabbableNodes(ref.current);\n tabbables.forEach((tabbable) => tabbable.setAttribute(\"tabindex\", \"-1\"));\n }\n });\n return /* @__PURE__ */ jsx(\n DismissableLayer,\n {\n asChild: true,\n disableOutsidePointerEvents: false,\n onInteractOutside,\n onEscapeKeyDown,\n onPointerDownOutside,\n onFocusOutside: composeEventHandlers(onFocusOutside, (event) => {\n event.preventDefault();\n }),\n onDismiss: context.onDismiss,\n children: /* @__PURE__ */ jsx(\n PopperPrimitive.Content,\n {\n ...popperScope,\n ...contentProps,\n onPointerDown: composeEventHandlers(contentProps.onPointerDown, (event) => {\n if (event.currentTarget.contains(event.target)) {\n setContainSelection(true);\n }\n context.hasSelectionRef.current = false;\n context.isPointerDownOnContentRef.current = true;\n }),\n ref: composedRefs,\n style: {\n ...contentProps.style,\n userSelect: containSelection ? \"text\" : void 0,\n // Safari requires prefix\n WebkitUserSelect: containSelection ? \"text\" : void 0,\n // re-namespace exposed content custom properties\n ...{\n \"--radix-hover-card-content-transform-origin\": \"var(--radix-popper-transform-origin)\",\n \"--radix-hover-card-content-available-width\": \"var(--radix-popper-available-width)\",\n \"--radix-hover-card-content-available-height\": \"var(--radix-popper-available-height)\",\n \"--radix-hover-card-trigger-width\": \"var(--radix-popper-anchor-width)\",\n \"--radix-hover-card-trigger-height\": \"var(--radix-popper-anchor-height)\"\n }\n }\n }\n )\n }\n );\n});\nvar ARROW_NAME = \"HoverCardArrow\";\nvar HoverCardArrow = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeHoverCard, ...arrowProps } = props;\n const popperScope = usePopperScope(__scopeHoverCard);\n return /* @__PURE__ */ jsx(PopperPrimitive.Arrow, { ...popperScope, ...arrowProps, ref: forwardedRef });\n }\n);\nHoverCardArrow.displayName = ARROW_NAME;\nfunction excludeTouch(eventHandler) {\n return (event) => event.pointerType === \"touch\" ? void 0 : eventHandler();\n}\nfunction getTabbableNodes(container) {\n const nodes = [];\n const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {\n acceptNode: (node) => {\n return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;\n }\n });\n while (walker.nextNode()) nodes.push(walker.currentNode);\n return nodes;\n}\nvar Root2 = HoverCard;\nvar Trigger = HoverCardTrigger;\nvar Portal = HoverCardPortal;\nvar Content2 = HoverCardContent;\nvar Arrow2 = HoverCardArrow;\nexport {\n Arrow2 as Arrow,\n Content2 as Content,\n HoverCard,\n HoverCardArrow,\n HoverCardContent,\n HoverCardPortal,\n HoverCardTrigger,\n Portal,\n Root2 as Root,\n Trigger,\n createHoverCardScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as React from \"react\";\nimport * as HoverCardPrimitive from \"@radix-ui/react-hover-card\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\n\nconst tooltipVariants = cva(\n \"z-[9998] bg-popup-fill-intense text-action-ink-on-primary-normal border border-popup-outline-subtle flex flex-col p-4 rounded-xlarge min-w-[200px] max-w-[300px] shadow-[0_4px_20px_rgba(0,0,0,0.15)]\"\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 | React.ReactNode;\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 * Trigger mode for opening tooltip\n */\n trigger?: \"hover\" | \"click\";\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 trigger = \"hover\",\n },\n ref\n ) => {\n const [open, setOpen] = React.useState(false);\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n const { side, align } = React.useMemo(() => {\n switch (placement) {\n case \"top-start\":\n return { side: \"top\" as const, align: \"start\" as const };\n case \"top-end\":\n return { side: \"top\" as const, align: \"end\" as const };\n case \"bottom-start\":\n return { side: \"bottom\" as const, align: \"start\" as const };\n case \"bottom-end\":\n return { side: \"bottom\" as const, align: \"end\" as const };\n case \"bottom\":\n return { side: \"bottom\" as const, align: \"center\" as const };\n case \"top\":\n default:\n return { side: \"top\" as const, align: \"center\" as const };\n }\n }, [placement]);\n\n const mergeRefs = <T,>(\n ...refs: Array<React.Ref<T> | undefined>\n ): React.RefCallback<T> => {\n return (node) => {\n refs.forEach((currentRef) => {\n if (typeof currentRef === \"function\") {\n currentRef(node);\n return;\n }\n if (currentRef && typeof currentRef === \"object\") {\n (currentRef as React.MutableRefObject<T | null>).current = node;\n }\n });\n };\n };\n\n const triggerChild = React.cloneElement(children, {\n ref: mergeRefs(\n triggerRef as React.Ref<HTMLElement>,\n (children as React.ReactElement & { ref?: React.Ref<HTMLElement> }).ref\n ),\n onClick: (event: React.MouseEvent) => {\n if (trigger === \"click\" && !disabled) {\n setOpen((prev) => !prev);\n }\n children.props.onClick?.(event);\n },\n });\n\n React.useEffect(() => {\n if (disabled || trigger !== \"click\" || !open) return;\n\n const handlePointerDownOutside = (event: MouseEvent | TouchEvent) => {\n const target = event.target as Node | null;\n if (!target) return;\n\n if (\n triggerRef.current?.contains(target) ||\n contentRef.current?.contains(target)\n ) {\n return;\n }\n\n setOpen(false);\n };\n\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n setOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handlePointerDownOutside);\n document.addEventListener(\"touchstart\", handlePointerDownOutside);\n document.addEventListener(\"keydown\", handleEscape);\n\n return () => {\n document.removeEventListener(\"mousedown\", handlePointerDownOutside);\n document.removeEventListener(\"touchstart\", handlePointerDownOutside);\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }, [disabled, open, trigger]);\n\n React.useEffect(() => {\n if (disabled) {\n setOpen(false);\n }\n }, [disabled]);\n\n return (\n <HoverCardPrimitive.Root\n open={trigger === \"click\" || disabled ? (disabled ? false : open) : undefined}\n onOpenChange={(nextOpen) => {\n if (!disabled && trigger === \"hover\") {\n setOpen(nextOpen);\n }\n }}\n openDelay={delay}\n closeDelay={250}\n >\n <HoverCardPrimitive.Trigger asChild>{triggerChild}</HoverCardPrimitive.Trigger>\n <HoverCardPrimitive.Portal>\n <HoverCardPrimitive.Content\n ref={mergeRefs(contentRef, ref)}\n role=\"tooltip\"\n side={side}\n align={align}\n sideOffset={14}\n collisionPadding={8}\n className={cn(tooltipVariants(), className)}\n >\n {showArrow && (\n <HoverCardPrimitive.Arrow\n width={12}\n height={6}\n className=\"fill-popup-fill-intense\"\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 {typeof description === \"string\" ? (\n <Text variant=\"body\" size=\"small\" weight=\"regular\" color=\"onPrimary\">\n {description}\n </Text>\n ) : (\n description\n )}\n </div>\n </HoverCardPrimitive.Content>\n </HoverCardPrimitive.Portal>\n </HoverCardPrimitive.Root>\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-medium\",\n textClassNameRegular: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textClassName: \"text-body-small-medium\",\n textClassNameRegular: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textClassName: \"text-body-medium-medium\",\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-ink-neutral-muted 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 { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Calendar as CalendarIcon, X } 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-functional 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 * Date format pattern string (e.g., \"YYYY-MM-DD\", \"MM/DD/YYYY\")\n * If provided, this will be used instead of formatDate\n */\n format?: 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\n// Helper function to format date based on format string\nconst formatDateByPattern = (date: Date, format: string): string => {\n const day = date.getDate();\n const month = date.getMonth() + 1; // getMonth() returns 0-11\n const year = date.getFullYear();\n\n const monthNames = [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ];\n const monthNamesFull = [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ];\n\n const dayNames = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\n const dayNamesFull = [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ];\n\n // Pad numbers with leading zeros\n const pad = (n: number, length: number = 2): string => {\n const str = n.toString();\n if (str.length >= length) return str;\n return \"0\".repeat(length - str.length) + str;\n };\n\n let formatted = format;\n\n // Replace format patterns\n formatted = formatted.replace(/YYYY/g, year.toString());\n formatted = formatted.replace(/YY/g, year.toString().slice(-2));\n formatted = formatted.replace(/MMMM/g, monthNamesFull[month - 1]);\n formatted = formatted.replace(/MMM/g, monthNames[month - 1]);\n formatted = formatted.replace(/MM/g, pad(month));\n formatted = formatted.replace(/M/g, month.toString());\n formatted = formatted.replace(/DDDD/g, dayNamesFull[date.getDay()]);\n formatted = formatted.replace(/DDD/g, dayNames[date.getDay()]);\n formatted = formatted.replace(/DD/g, pad(day));\n formatted = formatted.replace(/D/g, day.toString());\n\n return formatted;\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 = true,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n calendarClassName,\n minDate,\n maxDate,\n formatDate = formatDateDefault,\n format,\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 const [isInsideModal, setIsInsideModal] = React.useState(false);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n bottom: 0,\n });\n const [calendarHeight, setCalendarHeight] = React.useState(300); // Default height estimate\n\n const value =\n controlledValue !== undefined\n ? parseDate(controlledValue)\n : uncontrolledValue;\n\n const hasValue = value !== null;\n\n // Create a formatter function that uses format prop if provided, otherwise formatDate\n const formatDateValue = React.useCallback(\n (date: Date): string => {\n if (format) {\n return formatDateByPattern(date, format);\n }\n return formatDate(date);\n },\n [format, formatDate]\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 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 // Check if date picker is inside a modal\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n let element: HTMLElement | null = datePickerRef.current;\n let foundModal = false;\n while (element && !foundModal) {\n const styles = window.getComputedStyle(element);\n const zIndex = parseInt(styles.zIndex, 10);\n // Check if element has modal z-index (10000) or is a modal container\n if (zIndex === 10000 || element.getAttribute(\"role\") === \"dialog\") {\n foundModal = true;\n setIsInsideModal(true);\n break;\n }\n element = element.parentElement;\n }\n if (!foundModal) {\n setIsInsideModal(false);\n }\n }\n }, [isOpen]);\n\n // Update position when calendar opens or window resizes\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n const updatePosition = () => {\n const rect = datePickerRef.current?.getBoundingClientRect();\n if (rect) {\n setPosition({\n top: rect.top,\n left: rect.left,\n width: rect.width,\n bottom: rect.bottom,\n });\n // Update dropdown placement based on available space\n updateDropdownPlacement();\n }\n };\n\n updatePosition();\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n\n // Use requestAnimationFrame to ensure calendar is rendered before calculating placement\n let rafId = requestAnimationFrame(() => {\n updateDropdownPlacement();\n });\n\n const handleUpdate = () => {\n updateDropdownPlacement();\n // Also update position when scrolling/resizing\n if (datePickerRef.current) {\n const rect = datePickerRef.current.getBoundingClientRect();\n setPosition({\n top: rect.top,\n left: rect.left,\n width: rect.width,\n bottom: rect.bottom,\n });\n }\n };\n\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 // Delay to ensure calendar is rendered\n const timer = setTimeout(() => {\n updateDropdownPlacement();\n }, 0);\n return () => clearTimeout(timer);\n }\n }, [isOpen, updateDropdownPlacement]);\n\n // Measure calendar height and adjust position after render\n React.useLayoutEffect(() => {\n if (isOpen && calendarRef.current && datePickerRef.current) {\n const measuredHeight = calendarRef.current.offsetHeight;\n setCalendarHeight(measuredHeight);\n\n const rect = datePickerRef.current.getBoundingClientRect();\n\n // Recalculate placement if needed based on actual calendar height\n const spaceBelow = window.innerHeight - rect.bottom;\n const spaceAbove = rect.top;\n\n if (measuredHeight > spaceBelow && spaceAbove > spaceBelow) {\n setDropdownPlacement(\"top\");\n } else {\n setDropdownPlacement(\"bottom\");\n }\n\n // Update position\n setPosition({\n top: rect.top,\n left: rect.left,\n width: rect.width,\n bottom: rect.bottom,\n });\n }\n }, [isOpen]);\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 calendarRef.current &&\n !calendarRef.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 ? formatDateValue(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 aria-label=\"Clear date\"\n >\n <X className=\"w-4 h-4\" />\n </button>\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\n {/* Calendar Popup Portal */}\n {typeof document !== \"undefined\" &&\n isOpen &&\n !isDisabled &&\n (() => {\n // Calculate calendar position using fixed positioning (viewport-relative)\n const gap = 4; // 4px gap between trigger and calendar\n\n const calendarTop =\n dropdownPlacement === \"bottom\"\n ? position.bottom + gap\n : position.top - calendarHeight - gap;\n\n const calendarPopup = (\n <div\n ref={calendarRef}\n style={{\n position: \"fixed\",\n top: `${calendarTop}px`,\n left: `${position.left}px`,\n zIndex: isInsideModal ? 10001 : 9999,\n }}\n className={cn(\n \"bg-surface-fill-neutral-intense rounded-large shadow-lg p-4 w-fit\",\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 showNeighboringMonth={true}\n showFixedNumberOfWeeks={true}\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\n return createPortal(calendarPopup, document.body);\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\";\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 { createPortal } from \"react-dom\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport {\n Calendar as CalendarIcon,\n ChevronLeft,\n ChevronRight,\n} 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 { Button } from \"../Button\";\nimport { Icon } from \"../../lib/icons\";\nimport { ListItem } from \"../ListItem\";\n\nexport type DateRange = {\n startDate: Date | null;\n endDate: Date | null;\n};\n\nexport type PresetOption = {\n label: string;\n value: string;\n getDateRange: () => DateRange;\n};\n\nconst dateRangePickerVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-functional font-size-100 leading-100 bg-surface-fill-neutral-intense\",\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 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: `\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 },\n },\n defaultVariants: {\n size: \"medium\",\n isDisabled: false,\n },\n }\n);\n\n// Default preset options\nconst defaultPresets: PresetOption[] = [\n {\n label: \"Today\",\n value: \"today\",\n getDateRange: () => {\n const today = new Date();\n today.setHours(0, 0, 0, 0);\n return { startDate: today, endDate: today };\n },\n },\n {\n label: \"Yesterday\",\n value: \"yesterday\",\n getDateRange: () => {\n const yesterday = new Date();\n yesterday.setDate(yesterday.getDate() - 1);\n yesterday.setHours(0, 0, 0, 0);\n return { startDate: yesterday, endDate: yesterday };\n },\n },\n {\n label: \"Last 7 days\",\n value: \"last7days\",\n getDateRange: () => {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - 6);\n startDate.setHours(0, 0, 0, 0);\n return { startDate, endDate };\n },\n },\n {\n label: \"Last 30 days\",\n value: \"last30days\",\n getDateRange: () => {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date();\n startDate.setDate(startDate.getDate() - 29);\n startDate.setHours(0, 0, 0, 0);\n return { startDate, endDate };\n },\n },\n {\n label: \"Last 6 months\",\n value: \"last6months\",\n getDateRange: () => {\n const endDate = new Date();\n endDate.setHours(0, 0, 0, 0);\n const startDate = new Date();\n startDate.setMonth(startDate.getMonth() - 6);\n startDate.setHours(0, 0, 0, 0);\n return { startDate, endDate };\n },\n },\n {\n label: \"All time\",\n value: \"alltime\",\n getDateRange: () => {\n return { startDate: null, endDate: null };\n },\n },\n];\n\nexport interface DateRangePickerProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n > {\n /**\n * Selected date range (controlled)\n */\n value?: DateRange;\n /**\n * Default date range (uncontrolled)\n */\n defaultValue?: DateRange;\n /**\n * Callback when date range changes\n */\n onChange?: (dateRange: DateRange) => void;\n /**\n * Placeholder text when no date range is selected\n */\n placeholder?: string;\n /**\n * Whether the date range picker is disabled\n */\n isDisabled?: boolean;\n /**\n * Size of the date range picker\n */\n size?: \"small\" | \"medium\" | \"large\";\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 * Preset options to show in the sidebar\n */\n presets?: PresetOption[];\n /**\n * Whether to show preset options\n */\n showPresets?: boolean;\n /**\n * Label for the trigger button when a preset is selected\n */\n selectedPresetLabel?: string;\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\nconst isSameDay = (date1: Date | null, date2: Date | null): boolean => {\n if (!date1 || !date2) return false;\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n};\n\nconst formatMonthYear = (date: Date): string => {\n return date.toLocaleDateString(\"en-US\", {\n month: \"long\",\n year: \"numeric\",\n });\n};\n\nexport const DateRangePicker = React.forwardRef<\n HTMLDivElement,\n DateRangePickerProps\n>(\n (\n {\n className,\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select date range\",\n isDisabled = false,\n size = \"medium\",\n triggerClassName,\n calendarClassName,\n minDate,\n maxDate,\n formatDate = formatDateDefault,\n presets = defaultPresets,\n showPresets = true,\n selectedPresetLabel,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<DateRange>(\n defaultValue || { startDate: null, endDate: null }\n );\n const [tempValue, setTempValue] = React.useState<DateRange>(\n defaultValue || { startDate: null, endDate: null }\n );\n const [isOpen, setIsOpen] = React.useState(false);\n const [selectedPreset, setSelectedPreset] = React.useState<string | null>(\n null\n );\n const [startMonth, setStartMonth] = React.useState(new Date());\n const [endMonth, setEndMonth] = React.useState(() => {\n const nextMonth = new Date();\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n return nextMonth;\n });\n\n const datePickerRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n bottom: 0,\n });\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n const [isInsideModal, setIsInsideModal] = React.useState(false);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n const hasValue = value.startDate !== null || value.endDate !== null;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled) {\n setIsOpen(newOpen);\n if (newOpen) {\n // Set temp value to current value when opening\n setTempValue(value);\n }\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handlePresetClick = (preset: PresetOption) => {\n const dateRange = preset.getDateRange();\n setTempValue(dateRange);\n setSelectedPreset(preset.value);\n };\n\n const handleStartDateChange = (\n value: Date | null | [Date | null, Date | null],\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n const selectedDate = Array.isArray(value) ? value[0] : value;\n if (!selectedDate) return;\n\n const newStartDate = new Date(selectedDate);\n newStartDate.setHours(0, 0, 0, 0);\n\n setTempValue((prev) => ({\n startDate: newStartDate,\n endDate: prev.endDate,\n }));\n setSelectedPreset(null);\n };\n\n const handleEndDateChange = (\n value: Date | null | [Date | null, Date | null],\n event: React.MouseEvent<HTMLButtonElement>\n ) => {\n const selectedDate = Array.isArray(value) ? value[0] : value;\n if (!selectedDate) return;\n\n const newEndDate = new Date(selectedDate);\n newEndDate.setHours(0, 0, 0, 0);\n\n setTempValue((prev) => ({\n startDate: prev.startDate,\n endDate: newEndDate,\n }));\n setSelectedPreset(null);\n };\n\n const handleApply = () => {\n if (controlledValue === undefined) {\n setUncontrolledValue(tempValue);\n }\n onChange?.(tempValue);\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n setTempValue(value);\n setIsOpen(false);\n };\n\n const handlePrevStartMonth = () => {\n const newMonth = new Date(startMonth);\n newMonth.setMonth(newMonth.getMonth() - 1);\n setStartMonth(newMonth);\n };\n\n const handleNextStartMonth = () => {\n const newMonth = new Date(startMonth);\n newMonth.setMonth(newMonth.getMonth() + 1);\n setStartMonth(newMonth);\n };\n\n const handlePrevEndMonth = () => {\n const newMonth = new Date(endMonth);\n newMonth.setMonth(newMonth.getMonth() - 1);\n setEndMonth(newMonth);\n };\n\n const handleNextEndMonth = () => {\n const newMonth = new Date(endMonth);\n newMonth.setMonth(newMonth.getMonth() + 1);\n setEndMonth(newMonth);\n };\n\n // Check if date picker is inside a modal\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n let element: HTMLElement | null = datePickerRef.current;\n let foundModal = false;\n while (element && !foundModal) {\n const styles = window.getComputedStyle(element);\n const zIndex = parseInt(styles.zIndex, 10);\n if (zIndex === 10000 || element.getAttribute(\"role\") === \"dialog\") {\n foundModal = true;\n setIsInsideModal(true);\n break;\n }\n element = element.parentElement;\n }\n if (!foundModal) {\n setIsInsideModal(false);\n }\n }\n }, [isOpen]);\n\n // Update position and placement when calendar opens or window resizes\n React.useEffect(() => {\n if (isOpen && datePickerRef.current) {\n const updatePosition = () => {\n const rect = datePickerRef.current?.getBoundingClientRect();\n const calendarHeight = calendarRef.current?.offsetHeight || 600; // Estimated height\n\n if (rect) {\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const gap = 4;\n\n // Calculate available space\n const spaceBelow = viewportHeight - rect.bottom - gap;\n const spaceAbove = rect.top - gap;\n\n // Determine vertical placement\n const placement =\n spaceBelow >= calendarHeight || spaceBelow >= spaceAbove\n ? \"bottom\"\n : \"top\";\n setDropdownPlacement(placement);\n\n // Calculate horizontal position\n let leftPosition = rect.left;\n const calendarWidth = calendarRef.current?.offsetWidth || 900; // Estimated width\n\n // Adjust if dropdown would overflow right edge\n if (leftPosition + calendarWidth > viewportWidth) {\n leftPosition = viewportWidth - calendarWidth - 10; // 10px margin from edge\n }\n\n // Ensure it doesn't overflow left edge\n if (leftPosition < 10) {\n leftPosition = 10;\n }\n\n setPosition({\n top: rect.top,\n left: leftPosition,\n width: rect.width,\n bottom: rect.bottom,\n });\n }\n };\n\n updatePosition();\n\n // Small delay to ensure calendar is rendered for accurate measurements\n const timeoutId = setTimeout(updatePosition, 10);\n\n window.addEventListener(\"resize\", updatePosition);\n window.addEventListener(\"scroll\", updatePosition, true);\n\n return () => {\n clearTimeout(timeoutId);\n window.removeEventListener(\"resize\", updatePosition);\n window.removeEventListener(\"scroll\", updatePosition, true);\n };\n }\n }, [isOpen]);\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 calendarRef.current &&\n !calendarRef.current.contains(event.target as Node)\n ) {\n handleCancel();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen, value]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleCancel();\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen, value]);\n\n const minDateParsed = parseDate(minDate);\n const maxDateParsed = parseDate(maxDate);\n\n const getDisplayText = () => {\n if (selectedPresetLabel) {\n return selectedPresetLabel;\n }\n\n if (selectedPreset) {\n const preset = presets.find((p) => p.value === selectedPreset);\n if (preset) return preset.label;\n }\n\n if (!hasValue) {\n return placeholder;\n }\n\n if (value.startDate && value.endDate) {\n if (isSameDay(value.startDate, value.endDate)) {\n return formatDate(value.startDate);\n }\n return `${formatDate(value.startDate)} - ${formatDate(value.endDate)}`;\n }\n\n if (value.startDate) {\n return `From ${formatDate(value.startDate)}`;\n }\n\n if (value.endDate) {\n return `Until ${formatDate(value.endDate)}`;\n }\n\n return placeholder;\n };\n\n return (\n <div ref={datePickerRef} className={cn(\"relative w-fit\", className)}>\n <div\n className={cn(\n dateRangePickerVariants({\n size,\n isDisabled,\n }),\n \"cursor-pointer\",\n triggerClassName\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 : \"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 {getDisplayText()}\n </span>\n\n <Icon\n name=\"chevronDown\"\n size={16}\n className={cn(\n \"shrink-0 transition-transform\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-muted\",\n isOpen && \"rotate-180\"\n )}\n />\n </div>\n\n {/* Calendar Popup Portal */}\n {typeof document !== \"undefined\" &&\n isOpen &&\n !isDisabled &&\n (() => {\n const gap = 4;\n const calendarHeight = calendarRef.current?.offsetHeight || 0;\n\n // Calculate top position based on placement\n const calendarTop =\n dropdownPlacement === \"bottom\"\n ? position.bottom + gap\n : position.top - calendarHeight - gap;\n\n const calendarPopup = (\n <div\n ref={calendarRef}\n style={{\n position: \"fixed\",\n top: `${calendarTop}px`,\n left: `${position.left}px`,\n zIndex: isInsideModal ? 10001 : 9999,\n maxHeight:\n dropdownPlacement === \"bottom\"\n ? `${window.innerHeight - position.bottom - gap - 10}px`\n : `${position.top - gap - 10}px`,\n overflowY: \"auto\",\n }}\n className={cn(\n \"bg-surface-fill-neutral-intense rounded-large shadow-lg border border-surface-outline-neutral-subtle\",\n calendarClassName\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <div className=\"flex\">\n {/* Presets Sidebar */}\n {showPresets && presets.length > 0 && (\n <div className=\"w-48 border-r border-surface-outline-neutral-subtle p-4 flex flex-col\">\n {presets.map((preset) => (\n <ListItem\n key={preset.value}\n title={preset.label}\n type=\"single\"\n showChevron={false}\n isSelected={selectedPreset === preset.value}\n onClick={() => handlePresetClick(preset)}\n containerClassName=\"mb-1 last:mb-0\"\n />\n ))}\n </div>\n )}\n\n {/* Calendars Section */}\n <div className=\"p-4\">\n <div className=\"flex gap-6\">\n {/* Start Date Calendar */}\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-col px-3\">\n <p className=\"text-body-small-medium\">Start Date</p>\n </div>\n <div className=\"flex flex-col p-5 rounded-[8px] bg-surface-fill-neutral-moderate\">\n <div className=\"flex items-center justify-between mb-3 px-3\">\n <h3 className=\"text-body-small-medium font-medium text-surface-ink-neutral-normal\">\n {formatMonthYear(startMonth)}\n </h3>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={handlePrevStartMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n <button\n onClick={handleNextStartMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n </div>\n </div>\n <div className=\"date-range-calendar-wrapper\">\n <Calendar\n onChange={handleStartDateChange}\n value={tempValue.startDate}\n minDate={minDateParsed ?? undefined}\n maxDate={\n tempValue.endDate\n ? tempValue.endDate\n : maxDateParsed ?? undefined\n }\n activeStartDate={startMonth}\n onActiveStartDateChange={({\n activeStartDate,\n }) => {\n if (activeStartDate)\n setStartMonth(activeStartDate);\n }}\n locale=\"en-US\"\n showNavigation={false}\n showNeighboringMonth={true}\n showFixedNumberOfWeeks={true}\n formatShortWeekday={(locale, date) => {\n const weekdayNames = [\n \"SUN\",\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n ];\n return weekdayNames[date.getDay()];\n }}\n />\n </div>\n </div>\n </div>\n\n {/* End Date Calendar */}\n <div className=\"flex flex-col gap-3 \">\n <div className=\"flex flex-col px-3\">\n <p className=\"text-body-small-medium\">End Date</p>\n </div>\n <div className=\"flex flex-col p-5 rounded-[8px] bg-surface-fill-neutral-moderate\">\n <div className=\"flex items-center justify-between mb-3 px-3\">\n <h3 className=\"text-body-small-medium font-medium text-surface-ink-neutral-normal\">\n {formatMonthYear(endMonth)}\n </h3>\n <div className=\"flex items-center gap-2\">\n <button\n onClick={handlePrevEndMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Previous month\"\n >\n <ChevronLeft className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n <button\n onClick={handleNextEndMonth}\n className=\"p-1 hover:bg-surface-fill-neutral-faded rounded transition-colors\"\n aria-label=\"Next month\"\n >\n <ChevronRight className=\"w-4 h-4 text-surface-ink-neutral-normal\" />\n </button>\n </div>\n </div>\n <div className=\"date-range-calendar-wrapper\">\n <Calendar\n onChange={handleEndDateChange}\n value={tempValue.endDate}\n minDate={\n tempValue.startDate\n ? tempValue.startDate\n : minDateParsed ?? undefined\n }\n maxDate={maxDateParsed ?? undefined}\n activeStartDate={endMonth}\n onActiveStartDateChange={({\n activeStartDate,\n }) => {\n if (activeStartDate)\n setEndMonth(activeStartDate);\n }}\n locale=\"en-US\"\n showNavigation={false}\n showNeighboringMonth={true}\n showFixedNumberOfWeeks={true}\n formatShortWeekday={(locale, date) => {\n const weekdayNames = [\n \"SUN\",\n \"MON\",\n \"TUE\",\n \"WED\",\n \"THU\",\n \"FRI\",\n \"SAT\",\n ];\n return weekdayNames[date.getDay()];\n }}\n />\n </div>\n </div>\n </div>\n </div>\n\n {/* Footer with Current Selection and Actions */}\n <div className=\"mt-4 pt-4 border-t border-surface-outline-neutral-subtle flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <div className=\"w-2 h-2 rounded-full bg-action-fill-primary-default\"></div>\n <span className=\"text-sm text-surface-ink-neutral-normal\">\n {tempValue.startDate && tempValue.endDate\n ? isSameDay(tempValue.startDate, tempValue.endDate)\n ? \"Today\"\n : `${formatDate(\n tempValue.startDate\n )} - ${formatDate(tempValue.endDate)}`\n : tempValue.startDate\n ? `From ${formatDate(tempValue.startDate)}`\n : tempValue.endDate\n ? `Until ${formatDate(tempValue.endDate)}`\n : \"No selection\"}\n </span>\n </div>\n <div className=\"flex items-center gap-2\">\n <Button\n variant=\"secondary\"\n color=\"neutral\"\n size=\"small\"\n onClick={handleCancel}\n >\n Cancel\n </Button>\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"small\"\n onClick={handleApply}\n >\n Apply date range\n </Button>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n\n return createPortal(calendarPopup, document.body);\n })()}\n </div>\n );\n }\n);\n\nDateRangePicker.displayName = \"DateRangePicker\";\n\nexport { dateRangePickerVariants };\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 customContentClassName?: string;\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 * Max height of the dropdown menu (used for viewport constraint)\n */\n maxHeight?: string;\n /**\n * Whether to remove container styling (useful when nested in BottomSheet)\n */\n unstyled?: boolean;\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n items = [],\n customContent,\n customContentClassName,\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 maxHeight = \"400px\",\n unstyled = false,\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\n className={`py-3 px-3 overflow-y-auto ${customContentClassName}`}\n style={{ maxHeight }}\n >\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>{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 overflow-y-auto`} style={{ maxHeight }}>\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 !unstyled && \"bg-white rounded-large overflow-hidden\",\n unstyled && \"w-full\",\n widthClass,\n className\n )}\n style={{\n ...(!unstyled && {\n boxShadow:\n \"0 1px 2px rgba(25, 25, 30, 0.1), 0 2px 6px rgba(25, 25, 30, 0.06)\",\n }),\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 {onSecondaryClick && (\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onSecondaryClick}\n >\n {secondaryButtonText}\n </Button>\n )}\n {onPrimaryClick && (\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onPrimaryClick}\n >\n {primaryButtonText}\n </Button>\n )}\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\";\nimport { BottomSheet } from \"../BottomSheet\";\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 * Custom class name for custom content\n */\n customContentClassName?: string;\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 customContentClassName,\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 const menuRef = React.useRef<HTMLDivElement>(null);\n const [menuPosition, setMenuPosition] = React.useState({\n top: \"100%\",\n bottom: \"auto\",\n left: \"0\",\n right: \"auto\",\n maxHeight: \"400px\",\n });\n\n // Detect if we're on mobile (< 768px)\n const [isMobile, setIsMobile] = React.useState(false);\n \n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n \n // Check on mount\n checkMobile();\n \n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\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 // Calculate and adjust dropdown position to keep it within viewport\n React.useEffect(() => {\n if (!isOpen || !dropdownRef.current || !menuRef.current) return;\n\n const calculatePosition = () => {\n const triggerRect = dropdownRef.current!.getBoundingClientRect();\n const menuElement = menuRef.current!;\n\n // Get menu dimensions (use a temporary measurement if needed)\n const menuRect = menuElement.getBoundingClientRect();\n const menuHeight = menuRect.height || 400; // fallback to max-height\n const menuWidth = menuRect.width;\n\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const scrollY = window.scrollY;\n const scrollX = window.scrollX;\n\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n const spaceRight = viewportWidth - triggerRect.left;\n const spaceLeft = triggerRect.right;\n\n const position: {\n top: string;\n bottom: string;\n left: string;\n right: string;\n maxHeight: string;\n } = {\n top: \"auto\",\n bottom: \"auto\",\n left: \"auto\",\n right: \"auto\",\n maxHeight: \"400px\",\n };\n\n // Vertical positioning\n if (spaceBelow >= menuHeight || spaceBelow >= spaceAbove) {\n // Position below trigger\n position.top = \"100%\";\n position.bottom = \"auto\";\n position.maxHeight = `${Math.min(400, spaceBelow - 16)}px`;\n } else {\n // Position above trigger\n position.top = \"auto\";\n position.bottom = \"100%\";\n position.maxHeight = `${Math.min(400, spaceAbove - 16)}px`;\n }\n\n // Horizontal positioning\n if (spaceRight >= menuWidth) {\n // Align to left edge of trigger\n position.left = \"0\";\n position.right = \"auto\";\n } else if (spaceLeft >= menuWidth) {\n // Align to right edge of trigger\n position.left = \"auto\";\n position.right = \"0\";\n } else {\n // Not enough space on either side, try to center or align based on available space\n if (triggerRect.left + menuWidth > viewportWidth) {\n position.left = \"auto\";\n position.right = \"0\";\n } else {\n position.left = \"0\";\n position.right = \"auto\";\n }\n }\n\n setMenuPosition(position);\n };\n\n // Calculate position after menu is rendered\n calculatePosition();\n\n // Recalculate on window resize or scroll\n const handleResize = () => calculatePosition();\n const handleScroll = () => calculatePosition();\n\n window.addEventListener(\"resize\", handleResize);\n window.addEventListener(\"scroll\", handleScroll, true);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n window.removeEventListener(\"scroll\", handleScroll, true);\n };\n }, [isOpen]);\n\n const sizeMap = {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n };\n\n // Render dropdown menu content wrapped in BottomSheet for mobile\n const renderDropdownContent = () => (\n <DropdownMenu\n ref={ref}\n items={items}\n customContent={customContent}\n customContentClassName={customContentClassName}\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={className}\n width={isMobile ? \"full\" : sizeMap[size]}\n maxHeight={menuPosition.maxHeight}\n unstyled={isMobile}\n />\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 {/* Mobile: BottomSheet */}\n {isMobile ? (\n <BottomSheet\n isOpen={isOpen}\n onClose={() => handleOpenChange(false)}\n title={sectionHeading}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\n /* Desktop: Regular Dropdown Menu */\n isOpen && (\n <div\n ref={menuRef}\n className={cn(\"absolute z-50\", menuClassName)}\n style={{\n top: menuPosition.top,\n bottom: menuPosition.bottom,\n left: menuPosition.left,\n right: menuPosition.right,\n marginTop: menuPosition.top === \"100%\" ? \"0.5rem\" : \"0\",\n marginBottom: menuPosition.bottom === \"100%\" ? \"0.5rem\" : \"0\",\n }}\n >\n {renderDropdownContent()}\n </div>\n )\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport { dropdownVariants };\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\";\nimport { Text } from \"../Text\";\nimport { Link } from \"../Link\";\nimport { IconButton } from \"../IconButton\";\n\nconst fileInputVariants = cva(\n \"relative flex items-center gap-3 border rounded-large transition-all font-functional 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 focus-within:border-action-outline-primary-default \n focus-within:bg-white!\n focus-within:ring-2 \n ring-surface-outline-primary-muted`,\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\n border-action-outline-neutral-disabled\n hover:border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense \n hover:bg-surface-fill-neutral-intense \n cursor-not-allowed`,\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface FileInputProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\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 accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n value?: File | File[] | null;\n onChange?: (files: File | File[] | null) => 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 buttonText?: string;\n placeholderText?: string;\n showClearButton?: boolean;\n onClear?: () => void;\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + \" \" + sizes[i];\n};\n\nconst FileInput = React.forwardRef<HTMLDivElement, FileInputProps>(\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 accept,\n multiple = false,\n maxSize,\n value,\n onChange,\n containerClassName,\n labelClassName,\n inputClassName,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n buttonText = \"Choose File\",\n placeholderText = \"No file chosen\",\n showClearButton = true,\n onClear,\n className,\n ...props\n },\n ref\n ) => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [selectedFiles, setSelectedFiles] = React.useState<File[]>([]);\n const [error, setError] = React.useState<string | null>(null);\n\n // Initialize from value prop\n React.useEffect(() => {\n if (value) {\n const filesArray = Array.isArray(value) ? value : [value];\n setSelectedFiles(filesArray);\n } else {\n setSelectedFiles([]);\n }\n }, [value]);\n\n const processFiles = (files: FileList | File[]): File[] => {\n const fileArray = Array.from(files);\n const validFiles: File[] = [];\n let currentError: string | null = null;\n\n fileArray.forEach((file) => {\n // Check file size\n if (maxSize && file.size > maxSize) {\n currentError = `File \"${\n file.name\n }\" exceeds maximum size of ${formatFileSize(maxSize)}`;\n setError(currentError);\n return;\n }\n\n // Check if file type is accepted\n if (accept) {\n const acceptedTypes = accept.split(\",\").map((type) => type.trim());\n const isAccepted = acceptedTypes.some((type) => {\n if (type.startsWith(\".\")) {\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n }\n if (type.includes(\"/*\")) {\n const baseType = type.split(\"/\")[0];\n return file.type.startsWith(baseType + \"/\");\n }\n return file.type === type;\n });\n\n if (!isAccepted) {\n currentError = `File type \"${file.type}\" is not accepted`;\n setError(currentError);\n return;\n }\n }\n\n validFiles.push(file);\n });\n\n if (currentError) {\n setError(currentError);\n } else {\n setError(null);\n }\n\n return validFiles;\n };\n\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const validFiles = processFiles(e.target.files);\n if (validFiles.length > 0) {\n const newFiles = multiple\n ? [...selectedFiles, ...validFiles]\n : validFiles;\n setSelectedFiles(newFiles);\n if (onChange) {\n onChange(multiple ? newFiles : newFiles[0] || null);\n }\n }\n // Reset input value to allow selecting the same file again\n e.target.value = \"\";\n }\n };\n\n const handleButtonClick = () => {\n if (!isDisabled && fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n const handleClear = () => {\n if (isDisabled) return;\n \n setSelectedFiles([]);\n setError(null);\n \n // Clear the file input\n if (fileInputRef.current) {\n fileInputRef.current.value = \"\";\n }\n\n if (onClear) {\n onClear();\n }\n\n if (onChange) {\n onChange(null);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText || error;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n buttonSize: \"xsmall\" as const,\n },\n medium: {\n gap: \"gap-2\",\n buttonSize: \"small\" as const,\n },\n large: {\n gap: \"gap-3\",\n buttonSize: \"small\" as const,\n },\n };\n\n const config = sizeConfig[size];\n\n const getDisplayText = () => {\n if (selectedFiles.length === 0) {\n return placeholderText;\n }\n if (selectedFiles.length === 1) {\n return selectedFiles[0].name;\n }\n return `${selectedFiles.length} file(s) selected`;\n };\n\n const hasFiles = selectedFiles.length > 0;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full flex flex-col\",\n config.gap,\n containerClassName\n )}\n {...props}\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 className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n fileInputVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={isDisabled}\n onChange={handleFileInputChange}\n className=\"hidden\"\n aria-label={label || \"File upload\"}\n />\n\n <Link\n type=\"action\"\n color=\"primary\"\n size={config.buttonSize}\n onClick={handleButtonClick}\n isDisabled={isDisabled}\n className=\"shrink-0\"\n >\n {buttonText}\n </Link>\n\n <div className=\"flex-1 min-w-0\">\n <Text\n variant=\"body\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n className=\"truncate\"\n title={getDisplayText()}\n >\n {getDisplayText()}\n </Text>\n </div>\n\n {showClearButton && hasFiles && !isDisabled && (\n <IconButton\n icon=\"close\"\n size=\"xsmall\"\n onClick={handleClear}\n aria-label=\"Clear selected files\"\n className=\"shrink-0\"\n />\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText || undefined}\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\nFileInput.displayName = \"FileInput\";\n\nexport { FileInput, fileInputVariants };\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 * Style variant - \"default\" applies default styles, \"unstyled\" removes all default styling\n */\n variant?: \"default\" | \"unstyled\";\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 variant = \"default\",\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-9999 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 z-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 transition-all z-10\",\n \"flex flex-col max-h-[90vh]\",\n variant === \"default\" && \"w-full bg-white rounded-large shadow-xl\",\n variant === \"default\" && sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4\",\n variant === \"default\" && \"px-6 pt-6\",\n variant === \"default\" && !description && \"pb-4\",\n variant === \"default\" && 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\n className={cn(\n \"absolute z-10\",\n variant === \"default\" && \"top-4 right-4\"\n )}\n >\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\",\n variant === \"default\" && \"px-6\",\n variant === \"default\" && hasHeader && \"py-4\",\n variant === \"default\" && !hasHeader && \"pt-6 pb-4\",\n variant === \"default\" && !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n {variant === \"default\" && (\n <Divider thickness=\"thin\" variant=\"muted\" />\n )}\n <div\n className={cn(\n \"flex items-center justify-end gap-3\",\n variant === \"default\" && \"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 { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-3 border rounded-large transition-all font-functional 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 focus-within:border-action-outline-primary-default \n focus-within:bg-white!\n focus-within:ring-2 \n ring-surface-outline-primary-muted`,\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\n border-action-outline-neutral-disabled\n hover:border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense \n hover:bg-surface-fill-neutral-intense \n cursor-not-allowed`,\n false: \"\",\n },\n isReadOnly: {\n true: \"\",\n false:\n \"hover:border-action-outline-neutral-faded-hover hover:bg-action-fill-neutral-faded-hover\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n isReadOnly: 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 isReadOnly: props.readOnly,\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 \"w-full 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\",\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 { cn } from \"../../lib/utils\";\nimport { Icon } from \"../../lib/icons\";\nimport { TextField } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { BottomSheet } from \"../BottomSheet\";\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\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 * Show the selected option's leadingIcon in the input box\n * Only shown when an option is selected and has a leadingIcon\n */\n showLeadingIcon?: boolean;\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<HTMLInputElement, 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 showLeadingIcon = false,\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 onClick,\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 [isMobile, setIsMobile] = React.useState(false);\n const containerRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Detect if we're on mobile (< 768px)\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n\n // Check on mount\n checkMobile();\n\n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\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 const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled && !isLoading) {\n setIsOpen(newOpen);\n }\n };\n\n const shouldIgnoreOpenInteraction = (\n target: HTMLElement | EventTarget | null\n ): boolean => {\n if (!(target instanceof HTMLElement)) return true;\n if (dropdownContainerRef.current?.contains(target)) return true;\n if (target.closest(\"button\") || target.closest(\"a\")) return true;\n return false;\n };\n\n /** Open dropdown from any pointer activation on the composite (label, helper, input row, icons). */\n const handleCompositePointerActivate = (target: HTMLElement) => {\n if (isDisabled || isLoading) return;\n if (shouldIgnoreOpenInteraction(target)) return;\n handleOpenChange(true);\n };\n\n const handleTriggerContainerPointerDownCapture = (\n event: React.PointerEvent<HTMLDivElement>\n ) => {\n if (event.button !== undefined && event.button !== 0) return;\n handleCompositePointerActivate(event.target as HTMLElement);\n };\n\n const handleTriggerContainerClickCapture = (\n event: React.MouseEvent<HTMLDivElement>\n ) => {\n handleCompositePointerActivate(event.target as HTMLElement);\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 inputRef.current?.focus();\n };\n\n const handleClear = () => {\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 = containerRef.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 containerRef.current &&\n !containerRef.current.contains(event.target as Node) &&\n dropdownContainerRef.current &&\n !dropdownContainerRef.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 const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\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((opt) => opt.value === value);\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 // 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 // Get the display value for the TextField\n const displayValue = isLoading ? \"Loading...\" : selectedOption?.label || \"\";\n\n // Build the prefix: either provided prefix or selected option's leadingIcon\n const displayPrefix = prefix\n ? prefix\n : showLeadingIcon && selectedOption?.leadingIcon\n ? selectedOption.leadingIcon\n : undefined;\n\n // Build the suffix: include both the optional suffix and the chevron icon\n const chevronIcon = (\n <Icon\n name={isOpen ? \"chevronUp\" : \"chevronDown\"}\n size={16}\n className=\"shrink-0 transition-colors\"\n />\n );\n\n const displaySuffix = suffix ? (\n <>\n {suffix}\n {chevronIcon}\n </>\n ) : (\n chevronIcon\n );\n\n // Render dropdown menu content\n const renderDropdownContent = () => (\n <DropdownMenu\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={isMobile ? \"full\" : widthStyle}\n unstyled={isMobile}\n />\n );\n\n return (\n <div\n ref={containerRef}\n className={cn(\n \"relative w-full min-w-0\",\n !isDisabled && !isLoading && \"cursor-pointer\"\n )}\n onPointerDownCapture={handleTriggerContainerPointerDownCapture}\n onClickCapture={handleTriggerContainerClickCapture}\n >\n <TextField\n ref={inputRef}\n label={label}\n helperText={helperText}\n errorText={errorText}\n successText={successText}\n validationState={validationState}\n isDisabled={isDisabled}\n isRequired={isRequired}\n isOptional={isOptional}\n isLoading={isLoading}\n size={size}\n prefix={displayPrefix}\n suffix={displaySuffix}\n showClearButton={showClearButton && hasValue && !isLoading}\n onClear={handleClear}\n placeholder={placeholder}\n value={displayValue}\n readOnly\n containerClassName={cn(\"w-full\", containerClassName)}\n labelClassName={labelClassName}\n className={cn(\"cursor-pointer\", triggerClassName, className)}\n inputClassName=\"cursor-pointer\"\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n onClick={(event) => {\n onClick?.(event as React.MouseEvent<HTMLInputElement>);\n if (!isDisabled && !isLoading) handleOpenChange(true);\n }}\n onKeyDown={handleKeyDown}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n {...props}\n />\n\n {/* Mobile: BottomSheet, Desktop: Regular Dropdown */}\n {isOpen && !isDisabled && !isLoading && (\n isMobile ? (\n <BottomSheet\n isOpen={isOpen}\n onClose={() => handleOpenChange(false)}\n title={sectionHeading || label}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\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 {renderDropdownContent()}\n </div>\n )\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Icon } from \"../../lib/icons\";\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(\"relative z-10\", paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"hidden md:!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 md:!ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<Icon name=\"chevronLeft\" size={16} />}\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={<Icon name=\"chevronRight\" size={16} />}\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-[10px] h-[10px] border-[1.5px]\",\n medium: \"w-[12px] h-[12px] border-[1.5px]\",\n large: \"w-[16px] h-[16px] 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 * Visual variant for the radio button\n */\n variant?: \"default\" | \"card\";\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 card wrapper (when variant=\"card\")\n */\n cardClassName?: 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 variant = \"default\",\n containerClassName,\n labelClassName,\n cardClassName,\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: 4,\n boundingBoxSize: \"w-[14px] h-[14px] p-1\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 5,\n boundingBoxSize: \"w-[16px] h-[16px] p-1\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 7,\n boundingBoxSize: \"w-[20px] h-[20px] p-1\",\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 const radioContent = (\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 {/* Bounding Box */}\n <div\n className={cn(\n \"inline-flex items-center justify-center shrink-0 box-border\",\n config.boundingBoxSize\n )}\n >\n {/* Radio Circle */}\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 box-border\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\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\n // Wrap in card container if variant is \"card\"\n if (variant === \"card\") {\n return (\n <div className={cn(\"inline-flex flex-col w-full\", containerClassName)}>\n <div\n className={cn(\n \"w-full border rounded-xlarge p-5 transition-all\",\n isChecked\n ? \"border-action-outline-primary-default bg-action-fill-primary-faded\"\n : \"border-surface-outline-neutral-subtle hover:border-surface-outline-neutral-normal hover:bg-surface-fill-neutral-faded\",\n isDisabled\n ? \"opacity-60 cursor-not-allowed\"\n : \"cursor-pointer\",\n cardClassName\n )}\n onClick={(e) => {\n if (!isDisabled) {\n // Prevent double-click if already clicking on the radio itself\n if (e.target === inputRef.current) return;\n inputRef.current?.click();\n }\n }}\n >\n {radioContent}\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 return (\n <div className={cn(`inline-flex flex-col ${variant === \"default\" ? \"w-auto\" : \"w-full\"}`, containerClassName)}>\n {radioContent}\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 { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\nimport { Radio, type RadioProps } from \"./Radio\";\n\nexport interface RadioOption {\n /**\n * The value of the radio option\n */\n value: string;\n /**\n * The label text for the radio option\n */\n label: string;\n /**\n * Whether this option is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the option container\n */\n containerClassName?: string;\n /**\n * Custom class name for the option label\n */\n labelClassName?: string;\n}\n\nexport interface RadioGroupProps\n extends Omit<\n React.HTMLAttributes<HTMLDivElement>,\n \"onChange\" | \"defaultValue\"\n > {\n /**\n * Selected value (controlled)\n */\n value?: string;\n /**\n * Default selected value (uncontrolled)\n */\n defaultValue?: string;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string) => void;\n /**\n * Array of radio options\n */\n options?: RadioOption[];\n /**\n * Custom radio buttons as children (alternative to options)\n */\n children?: React.ReactNode;\n /**\n * Label for the radio group\n */\n label?: string;\n /**\n * Helper text below the radio group\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 radio group\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio group is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the radio group is required\n */\n isRequired?: boolean;\n /**\n * Whether the radio group is optional\n */\n isOptional?: boolean;\n /**\n * Size of the radio buttons\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Name attribute for the radio inputs (auto-generated if not provided)\n */\n name?: string;\n /**\n * Orientation of the radio group\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * Spacing between radio options\n */\n spacing?: \"tight\" | \"normal\" | \"loose\";\n /**\n * Visual variant for the radio group\n */\n variant?: \"default\" | \"card\";\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 radio group wrapper\n */\n groupClassName?: string;\n /**\n * Custom class for each radio card container (when variant=\"card\")\n */\n cardClassName?: 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\nconst RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n options,\n children,\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n size = \"medium\",\n name: nameProp,\n orientation = \"vertical\",\n spacing = \"normal\",\n variant = \"default\",\n containerClassName,\n labelClassName,\n groupClassName,\n cardClassName,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n className,\n id,\n ...props\n },\n ref\n ) => {\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\n string | undefined\n >(defaultValue);\n const groupId = React.useId();\n const name = nameProp || `radio-group-${groupId}`;\n const groupRef = React.useRef<HTMLDivElement>(null);\n const radioRefs = React.useRef<(HTMLInputElement | null)[]>([]);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText ? \"error\" : validationState;\n\n const handleChange = (optionValue: string) => {\n if (onChange) {\n onChange(optionValue);\n } else {\n setUncontrolledValue(optionValue);\n }\n };\n\n // Keyboard navigation\n const handleKeyDown = (e: React.KeyboardEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n\n const currentIndex = radioRefs.current.findIndex(\n (ref) => ref === document.activeElement\n );\n\n if (currentIndex === -1) return;\n\n const direction =\n orientation === \"horizontal\"\n ? e.key === \"ArrowRight\"\n ? 1\n : e.key === \"ArrowLeft\"\n ? -1\n : 0\n : e.key === \"ArrowDown\"\n ? 1\n : e.key === \"ArrowUp\"\n ? -1\n : 0;\n\n if (direction === 0) return;\n\n e.preventDefault();\n\n // Find next enabled radio\n let nextIndex = currentIndex;\n const total = radioRefs.current.length;\n let attempts = 0;\n\n while (attempts < total) {\n nextIndex = (nextIndex + direction + total) % total;\n const nextRadio = radioRefs.current[nextIndex];\n\n if (nextRadio && !nextRadio.disabled) {\n nextRadio.focus();\n nextRadio.click();\n return;\n }\n\n attempts++;\n }\n };\n\n // Spacing configuration\n const spacingConfig = {\n tight: orientation === \"horizontal\" ? \"gap-3\" : \"gap-2\",\n normal: orientation === \"horizontal\" ? \"gap-4\" : \"gap-3\",\n loose: orientation === \"horizontal\" ? \"gap-6\" : \"gap-4\",\n };\n\n // Size configuration\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 // Render options from array\n const renderOptions = () => {\n if (!options) return null;\n\n return options.map((option, index) => {\n const isChecked = value === option.value;\n const optionDisabled = isDisabled || option.isDisabled;\n\n return (\n <Radio\n key={option.value}\n ref={(el) => {\n radioRefs.current[index] = el;\n }}\n name={name}\n value={option.value}\n label={option.label}\n checked={isChecked}\n onChange={(e) => {\n if (e.target.checked) {\n handleChange(option.value);\n }\n }}\n size={size}\n variant={variant}\n validationState={currentValidationState}\n isDisabled={optionDisabled}\n showErrorText={false}\n containerClassName={option.containerClassName}\n labelClassName={option.labelClassName}\n cardClassName={cardClassName}\n \n />\n );\n });\n };\n\n // Clone children and inject props\n const renderChildren = () => {\n if (!children) return null;\n\n return React.Children.map(children, (child, index) => {\n if (!React.isValidElement<RadioProps>(child)) {\n return child;\n }\n\n const childValue = child.props.value;\n const isChecked = value === childValue;\n const childDisabled = isDisabled || child.props.isDisabled;\n\n return React.cloneElement(child, {\n ...child.props,\n ref: (el: HTMLInputElement | null) => {\n radioRefs.current[index] = el;\n },\n name,\n checked: isChecked,\n onChange: (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.checked) {\n handleChange(\n typeof childValue === \"string\"\n ? childValue\n : String(childValue || \"\")\n );\n }\n // Call original onChange if it exists\n if (child.props.onChange) {\n child.props.onChange(e);\n }\n },\n size: child.props.size || size,\n variant: child.props.variant || variant,\n validationState:\n child.props.validationState || currentValidationState,\n isDisabled: childDisabled,\n showErrorText: false,\n cardClassName: cardClassName,\n } as Partial<RadioProps>);\n });\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n {...props}\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={id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={groupRef}\n role=\"radiogroup\"\n aria-label={label}\n aria-required={isRequired}\n aria-invalid={currentValidationState === \"error\"}\n aria-disabled={isDisabled}\n className={cn(\n \"flex w-full\",\n orientation === \"horizontal\"\n ? \"flex-row items-center\"\n : \"flex-col items-start\",\n spacingConfig[spacing],\n groupClassName,\n className\n )}\n onKeyDown={handleKeyDown}\n id={id}\n >\n {options ? renderOptions() : renderChildren()}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState === \"error\"\n ? \"negative\"\n : \"default\"\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nRadioGroup.displayName = \"RadioGroup\";\n\nexport { RadioGroup };\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\";\nimport { BottomSheet } from \"../BottomSheet\";\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 * If true, \"Add New\" option will only appear when no items match.\n * If false, \"Add New\" option will always appear at the top of the list.\n * @default true\n */\n showAddNewIfDoesNotMatch?: boolean;\n /**\n * Label for the \"Add New\" option (e.g., \"Client\", \"User\", \"Company\")\n * Used when showAddNew is true and showAddNewIfDoesNotMatch is false\n */\n addNewLabel?: string;\n /**\n * Callback when \"Add New\" option is clicked\n * @param value - The search text that the user typed\n */\n onAddNew?: (value: string) => void;\n /**\n * Selected value (controlled)\n * When provided, finds the matching item and pre-populates the search field with its label\n */\n value?: string | number;\n /**\n * Default selected value (uncontrolled)\n * When provided, finds the matching item and pre-populates the search field with its label\n */\n defaultValue?: string | number;\n /**\n * Callback when value changes\n */\n onChange?: (\n value: string | number | undefined,\n item: SearchableDropdownItem | undefined\n ) => void;\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 showAddNewIfDoesNotMatch = true,\n addNewLabel = \"Item\",\n onAddNew,\n containerClassName,\n value: controlledValue,\n defaultValue,\n onChange,\n ...textFieldProps\n },\n ref\n ) => {\n // Find the selected item based on value/defaultValue\n const findSelectedItem = React.useCallback(\n (\n val: string | number | undefined\n ): SearchableDropdownItem | undefined => {\n if (val === undefined || val === \"\") return undefined;\n return items.find((item) => item.value === val);\n },\n [items]\n );\n\n // Initialize uncontrolled value state\n const initialValue =\n controlledValue !== undefined ? controlledValue : defaultValue;\n const initialSelectedItem = findSelectedItem(initialValue);\n const initialSearchValue = initialSelectedItem\n ? initialSelectedItem.label\n : defaultSearchValue;\n\n const [uncontrolledSearchValue, setUncontrolledSearchValue] =\n React.useState(initialSearchValue);\n const [uncontrolledValue, setUncontrolledValue] = React.useState<\n string | number | undefined\n >(defaultValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [focusedIndex, setFocusedIndex] = React.useState(-1);\n const [isInsideModal, setIsInsideModal] = React.useState(false);\n const [isMobile, setIsMobile] = React.useState(false);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const VIEWPORT_PADDING = 8;\n const MENU_MAX_HEIGHT = 400;\n const MIN_SPACE_TO_OPEN_BELOW = 200;\n\n const [position, setPosition] = React.useState<{\n top?: number;\n bottom?: number;\n left: number;\n width: number;\n maxHeight: number;\n }>({\n left: 0,\n width: 200,\n maxHeight: MENU_MAX_HEIGHT,\n });\n\n // Detect if we're on mobile (< 768px)\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n\n // Check on mount\n checkMobile();\n\n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Determine current value (controlled or uncontrolled)\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Sync search value when value prop changes\n React.useEffect(() => {\n const selectedItem = findSelectedItem(value);\n if (selectedItem) {\n const newSearchValue = selectedItem.label;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newSearchValue);\n }\n // If controlled, we still need to call onSearchChange to notify parent\n // but only if the search value is different\n if (\n controlledSearchValue !== undefined &&\n controlledSearchValue !== newSearchValue\n ) {\n onSearchChange?.(newSearchValue);\n }\n } else if (value === undefined || value === \"\") {\n // If value is cleared, clear search value too\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(\"\");\n } else {\n onSearchChange?.(\"\");\n }\n }\n }, [value, findSelectedItem, controlledSearchValue, onSearchChange]);\n\n // Check if dropdown is inside a modal\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n let element: HTMLElement | null = dropdownRef.current;\n let foundModal = false;\n while (element && !foundModal) {\n const styles = window.getComputedStyle(element);\n const zIndex = parseInt(styles.zIndex, 10);\n // Check if element has modal z-index (10000) or is a modal container\n if (zIndex === 10000 || element.getAttribute(\"role\") === \"dialog\") {\n foundModal = true;\n setIsInsideModal(true);\n break;\n }\n element = element.parentElement;\n }\n if (!foundModal) {\n setIsInsideModal(false);\n }\n }\n }, [isOpen]);\n\n // Update position when dropdown opens or window resizes - viewport coords, open above if not enough space below\n const updateMenuPosition = React.useCallback(() => {\n if (!dropdownRef.current) return;\n const rect = dropdownRef.current.getBoundingClientRect();\n const viewportHeight = window.innerHeight;\n const viewportWidth = window.innerWidth;\n const spaceBelow = viewportHeight - rect.bottom - VIEWPORT_PADDING;\n const spaceAbove = rect.top - VIEWPORT_PADDING;\n\n const openAbove =\n spaceBelow < MIN_SPACE_TO_OPEN_BELOW || spaceBelow < spaceAbove;\n\n const menuLeft = Math.max(\n VIEWPORT_PADDING,\n Math.min(rect.left, viewportWidth - Math.max(rect.width, 200) - VIEWPORT_PADDING)\n );\n const menuWidth = Math.max(rect.width, 200);\n\n if (openAbove) {\n setPosition({\n bottom: viewportHeight - rect.top + VIEWPORT_PADDING,\n left: menuLeft,\n width: menuWidth,\n maxHeight: Math.max(120, Math.min(MENU_MAX_HEIGHT, spaceAbove)),\n });\n } else {\n setPosition({\n top: rect.bottom + VIEWPORT_PADDING,\n left: menuLeft,\n width: menuWidth,\n maxHeight: Math.max(120, Math.min(MENU_MAX_HEIGHT, spaceBelow)),\n });\n }\n }, []);\n\n React.useLayoutEffect(() => {\n if (isOpen) {\n updateMenuPosition();\n }\n }, [isOpen, updateMenuPosition]);\n\n React.useEffect(() => {\n if (!isOpen) return;\n window.addEventListener(\"resize\", updateMenuPosition);\n window.addEventListener(\"scroll\", updateMenuPosition, true);\n return () => {\n window.removeEventListener(\"resize\", updateMenuPosition);\n window.removeEventListener(\"scroll\", updateMenuPosition, true);\n };\n }, [isOpen, updateMenuPosition]);\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 // If user is typing and the search value no longer matches the selected item's label,\n // clear the value to indicate no item is selected\n const selectedItem = findSelectedItem(value);\n if (selectedItem && selectedItem.label !== newValue) {\n if (controlledValue === undefined) {\n setUncontrolledValue(undefined);\n }\n onChange?.(undefined, undefined);\n }\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\n // Update search value\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(item.label);\n } else {\n onSearchChange?.(item.label);\n }\n\n // Update value (controlled or uncontrolled)\n if (controlledValue === undefined) {\n setUncontrolledValue(item.value);\n }\n\n // Call onChange callback\n onChange?.(item.value, item);\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 based on showAddNew and showAddNewIfDoesNotMatch props\n const itemsWithAddNew = React.useMemo(() => {\n if (!showAddNew) {\n return filteredItems;\n }\n\n // When showAddNewIfDoesNotMatch is false, show \"Add New\" even without search value\n const shouldShowAddNew = showAddNewIfDoesNotMatch\n ? searchValue.length > 0\n : true;\n\n if (!shouldShowAddNew) {\n return filteredItems;\n }\n\n // Determine the label for \"Add New\" option\n const addNewDisplayLabel = searchValue\n ? `+ Add \"${searchValue}\"`\n : `+ Add New ${addNewLabel}`;\n\n const addNewItem: SearchableDropdownItem = {\n value: searchValue || `new-${addNewLabel}`,\n label: addNewDisplayLabel,\n variant: \"primary\",\n onClick: () => {\n if (onAddNew) {\n onAddNew(searchValue);\n // Don't update search value here - let parent handle it via onAddNew\n setIsOpen(false);\n inputRef.current?.focus();\n } else {\n // When onAddNew is not provided, create a new item and select it\n const newItem: SearchableDropdownItem = {\n value: searchValue,\n label: searchValue,\n };\n // Use handleItemSelect to ensure proper behavior\n handleItemSelect(newItem);\n }\n },\n };\n\n // If showAddNewIfDoesNotMatch is true, only show \"Add New\" when no items match\n // If false, always show \"Add New\" at the top\n if (showAddNewIfDoesNotMatch) {\n if (filteredItems.length > 0) {\n return filteredItems;\n }\n return [addNewItem];\n } else {\n // Always show \"Add New\" at the top\n return [addNewItem, ...filteredItems];\n }\n }, [\n showAddNew,\n showAddNewIfDoesNotMatch,\n addNewLabel,\n searchValue,\n filteredItems,\n onItemSelect,\n onAddNew,\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 // Always wrap onClick to ensure search value is updated with label\n const itemsWithHandlers = itemsWithAddNew.map((item) => {\n // Check if this is the \"Add New\" item (its onClick already handles selection properly)\n const isAddNewItem = showAddNew && item.label?.startsWith(\"+ Add\");\n\n return {\n ...item,\n onClick: () => {\n // Call the custom onClick if it exists (for Add New items, etc.)\n item.onClick?.();\n // Call handleItemSelect to update search value with label and close dropdown\n // Skip for \"Add New\" items since their onClick already handles everything\n if (!isAddNewItem) {\n handleItemSelect(item);\n }\n },\n };\n });\n\n const showDropdown = isOpen && searchValue.length >= minSearchLength;\n\n // Render dropdown menu content\n const renderDropdownContent = () => (\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={isMobile ? \"full\" : (dropdownWidth === \"full\" ? \"full\" : \"auto\")}\n maxHeight={`${position.maxHeight}px`}\n unstyled={isMobile}\n />\n );\n\n // Mobile: BottomSheet, Desktop: Regular Dropdown\n const dropdownMenu = showDropdown && (\n isMobile ? (\n <BottomSheet\n isOpen={isOpen}\n onClose={() => setIsOpen(false)}\n title={sectionHeading}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {/* Search TextField inside BottomSheet for mobile */}\n <div className=\"mb-4\">\n <TextField\n value={searchValue}\n onChange={handleSearchChange}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n placeholder={textFieldProps.placeholder || \"Search...\"}\n {...textFieldProps}\n />\n </div>\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\n <div\n ref={menuRef}\n style={{\n position: \"fixed\",\n ...(position.top !== undefined && { top: `${position.top}px` }),\n ...(position.bottom !== undefined && {\n bottom: `${position.bottom}px`,\n }),\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: isInsideModal ? 10001 : 9999,\n }}\n >\n {renderDropdownContent()}\n </div>\n )\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n {/* Show TextField only on desktop, on mobile it's inside BottomSheet */}\n {!isMobile && (\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 )}\n\n {/* On mobile, show a trigger that opens the BottomSheet */}\n {isMobile && (\n <TextField\n ref={inputRef}\n value={searchValue}\n onFocus={() => {\n if (showOnFocus && searchValue.length >= minSearchLength) {\n setIsOpen(true);\n }\n }}\n onClick={() => setIsOpen(true)}\n readOnly\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\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\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\nimport { Icon } from \"../../lib/icons\";\nimport type { IconName } from \"../../lib/icons\";\n\nexport interface SidePanelProps {\n /**\n * Whether the side panel is open\n */\n isOpen: boolean;\n /**\n * Callback when the side panel should close\n */\n onClose?: () => void;\n /**\n * Side panel title - optional\n */\n title?: string;\n /**\n * Icon to display before the title - optional\n */\n titleIcon?: IconName | React.ReactNode;\n /**\n * Side panel description/subtitle - optional\n */\n description?: string;\n /**\n * Side panel footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Side panel body content\n */\n children: React.ReactNode;\n /**\n * Position from which the side panel appears\n */\n position?: \"left\" | \"right\" | \"center\";\n /**\n * Width variant or custom width\n */\n width?: \"small\" | \"medium\" | \"large\" | \"xlarge\" | string;\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Additional header actions (e.g., expand, minimize buttons) - optional\n */\n headerActions?: React.ReactNode;\n /**\n * Whether clicking the overlay closes the side panel\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the side panel\n */\n closeOnEscape?: boolean;\n /**\n * Custom class name for the side panel container\n */\n className?: string;\n /**\n * Custom class name for the side panel 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 SidePanel = React.forwardRef<HTMLDivElement, SidePanelProps>(\n (\n {\n isOpen,\n onClose,\n title,\n titleIcon,\n description,\n footer,\n children,\n position = \"right\",\n width = \"medium\",\n showCloseButton = true,\n headerActions,\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 panelRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || panelRef;\n const [isVisible, setIsVisible] = React.useState(false);\n const [shouldRender, setShouldRender] = React.useState(false);\n\n // Width configurations - full width on mobile, specified width on tablet/desktop\n const widthConfig = {\n small: \"w-full md:w-80\",\n medium: \"w-full md:w-96\",\n large: \"w-full md:w-[32rem]\",\n xlarge: \"w-full md:w-[40rem]\",\n };\n\n // Handle mounting and unmounting with animation\n React.useEffect(() => {\n if (isOpen) {\n setShouldRender(true);\n // Small delay to trigger animation\n requestAnimationFrame(() => {\n setIsVisible(true);\n });\n } else {\n setIsVisible(false);\n // Wait for animation to complete before unmounting\n const timer = setTimeout(() => {\n setShouldRender(false);\n }, 300); // Match animation duration\n return () => clearTimeout(timer);\n }\n }, [isOpen]);\n\n // Position-based classes\n const positionClasses = {\n left: {\n container: \"justify-start\",\n panel: isVisible ? \"animate-slide-in-left\" : \"animate-slide-out-left\",\n },\n right: {\n container: \"justify-end\",\n panel: isVisible ? \"animate-slide-in-right\" : \"animate-slide-out-right\",\n },\n center: {\n container: \"justify-center items-center\",\n panel: isVisible ? \"animate-scale-in\" : \"animate-scale-out\",\n },\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 side panel 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 and animation is complete\n if (!shouldRender) return null;\n\n const hasHeader = title || description;\n const widthClass =\n width in widthConfig\n ? widthConfig[width as keyof typeof widthConfig]\n : width;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-9999 flex p-0 md:p-4\",\n positionClasses[position].container,\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay with blur */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity duration-300\",\n isVisible ? \"opacity-100\" : \"opacity-0\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Side Panel Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative bg-white shadow-2xl transition-transform duration-300 ease-out rounded-none md:rounded-large\",\n \"flex flex-col max-w-full overflow-hidden\",\n position === \"center\" ? \"max-h-[90vh]\" : \"h-full\",\n widthClass,\n positionClasses[position].panel,\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-center justify-between gap-4 px-7 py-5 shrink-0 border-b border-surface-outline-neutral-subtle\",\n headerClassName\n )}\n >\n <div className=\"flex items-center gap-3 flex-1 min-w-0\">\n {titleIcon && (\n <div className=\"flex items-center justify-center shrink-0\">\n {typeof titleIcon === \"string\" ? (\n <Icon name={titleIcon as IconName} size={20} />\n ) : (\n titleIcon\n )}\n </div>\n )}\n <div className=\"flex flex-col flex-1 min-w-0\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n className=\"truncate\"\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-0.5\"\n >\n {description}\n </Text>\n )}\n </div>\n </div>\n\n <div className=\"flex items-center gap-2 shrink-0\">\n {headerActions}\n {showCloseButton && onClose && (\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close side panel\"\n />\n )}\n </div>\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 side panel\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto px-6\",\n hasHeader ? \"py-6\" : \"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 shrink-0\">\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\nSidePanel.displayName = \"SidePanel\";\n\nexport { SidePanel };\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\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\nimport type { SelectOption } from \"../Select\";\nimport { BottomSheet } from \"../BottomSheet\";\nimport { Icon } from \"../../lib\";\n\nexport interface SelectTextFieldProps\n extends Omit<\n TextFieldProps,\n \"suffix\" | \"onChange\" | \"value\" | \"defaultValue\"\n > {\n /**\n * Text input value (controlled)\n */\n textValue?: string;\n /**\n * Default text input value (uncontrolled)\n */\n defaultTextValue?: string;\n /**\n * Callback when text input changes\n */\n onTextChange?: (value: string) => void;\n /**\n * Options for the select dropdown\n */\n selectOptions?: SelectOption[];\n /**\n * Selected value for the select (controlled)\n */\n selectValue?: string | number;\n /**\n * Default selected value for the select (uncontrolled)\n */\n defaultSelectValue?: string | number;\n /**\n * Callback when select value changes\n */\n onSelectChange?: (value: string | number, option: SelectOption) => void;\n /**\n * Placeholder for the select dropdown\n */\n selectPlaceholder?: string;\n /**\n * Custom class for the select trigger\n */\n selectTriggerClassName?: string;\n /**\n * Custom class for the select dropdown menu\n */\n selectMenuClassName?: string;\n /**\n * Width of the select dropdown menu\n */\n selectMenuWidth?: \"auto\" | \"full\" | string;\n /**\n * Section heading for the select dropdown\n */\n selectSectionHeading?: string;\n /**\n * Empty state title for select\n */\n selectEmptyTitle?: string;\n /**\n * Empty state description for select\n */\n selectEmptyDescription?: string;\n /**\n * Empty state icon for select\n */\n selectEmptyIcon?: React.ReactNode;\n /**\n * Position of the select field relative to the text input\n * @default \"suffix\"\n */\n position?: \"prefix\" | \"suffix\";\n /**\n * Whether the select dropdown is disabled (independent of text field)\n * When true, only the select portion is disabled. Use `isDisabled` to disable both.\n * @default false\n */\n isSelectDisabled?: boolean;\n /**\n * Whether the text field is disabled (independent of select)\n * When true, only the text field portion is disabled. Use `isDisabled` to disable both.\n * @default false\n */\n isTextFieldDisabled?: boolean;\n}\n\nconst selectTriggerVariants = cva(\n \"flex items-center gap-2 transition-all font-functional font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"px-2 text-xs\",\n medium: \"px-2 text-sm\",\n large: \"px-3 text-base\",\n },\n validationState: {\n none: \"\",\n positive: \"\",\n negative: \"\",\n },\n isDisabled: {\n true: \"opacity-60 cursor-not-allowed\",\n false: \"cursor-pointer hover:opacity-80\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport const SelectTextField = React.forwardRef<\n HTMLInputElement,\n SelectTextFieldProps\n>(\n (\n {\n textValue: controlledTextValue,\n defaultTextValue,\n onTextChange,\n selectOptions = [],\n selectValue: controlledSelectValue,\n defaultSelectValue,\n onSelectChange,\n selectPlaceholder = \"Select\",\n selectTriggerClassName,\n selectMenuClassName,\n selectMenuWidth = \"auto\",\n selectSectionHeading,\n selectEmptyTitle = \"No options available\",\n selectEmptyDescription = \"There are no options to select from.\",\n selectEmptyIcon,\n position = \"suffix\",\n isSelectDisabled = false,\n isTextFieldDisabled = false,\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n size = \"medium\",\n containerClassName,\n labelClassName,\n inputClassName,\n className,\n ...textFieldProps\n },\n ref\n ) => {\n const valuesMatch = React.useCallback(\n (\n left: string | number | undefined,\n right: string | number | undefined\n ): boolean => {\n if (left === right) return true;\n if (left === undefined || right === undefined) return false;\n return String(left) === String(right);\n },\n []\n );\n\n const [uncontrolledTextValue, setUncontrolledTextValue] = React.useState(\n defaultTextValue || \"\"\n );\n const [uncontrolledSelectValue, setUncontrolledSelectValue] =\n React.useState<string | number | undefined>(defaultSelectValue);\n const [isSelectOpen, setIsSelectOpen] = React.useState(false);\n const [dropdownPlacement, setDropdownPlacement] = React.useState<\n \"top\" | \"bottom\"\n >(\"bottom\");\n const [isMobile, setIsMobile] = React.useState(false);\n const selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const componentRef = React.useRef<HTMLDivElement>(null);\n\n // Detect if we're on mobile (< 768px)\n React.useEffect(() => {\n const checkMobile = () => {\n setIsMobile(window.innerWidth < 768);\n };\n\n // Check on mount\n checkMobile();\n\n // Add resize listener\n window.addEventListener('resize', checkMobile);\n return () => window.removeEventListener('resize', checkMobile);\n }, []);\n\n const textValue =\n controlledTextValue !== undefined\n ? controlledTextValue\n : uncontrolledTextValue;\n const selectValue =\n controlledSelectValue !== undefined\n ? controlledSelectValue\n : uncontrolledSelectValue;\n\n // Compute effective disabled states\n // isDisabled disables both; individual props allow disabling each independently\n const effectiveSelectDisabled = isDisabled || isSelectDisabled;\n const effectiveTextFieldDisabled = isDisabled || isTextFieldDisabled;\n\n // Find the selected option (supports number/string equivalence like 1.14 vs \"1.14\")\n const selectedOption = selectOptions.find((opt) =>\n valuesMatch(opt.value as string | number | undefined, selectValue)\n );\n\n // Keep uncontrolled default in sync when defaultSelectValue changes\n React.useEffect(() => {\n if (controlledSelectValue === undefined) {\n setUncontrolledSelectValue(defaultSelectValue);\n }\n }, [controlledSelectValue, defaultSelectValue]);\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 handleTextChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (onTextChange) {\n onTextChange(newValue);\n } else {\n setUncontrolledTextValue(newValue);\n }\n };\n\n const handleSelectOpenChange = (newOpen: boolean) => {\n if (!effectiveSelectDisabled) {\n setIsSelectOpen(newOpen);\n }\n };\n\n const toggleSelectOpen = () => {\n handleSelectOpenChange(!isSelectOpen);\n };\n\n const handleSelect = (option: SelectOption) => {\n if (controlledSelectValue === undefined) {\n setUncontrolledSelectValue(option.value);\n }\n onSelectChange?.(option.value, option);\n setIsSelectOpen(false);\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 (!isSelectOpen) 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 }, [isSelectOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n const detach = attachDropdownListeners();\n return () => {\n detach?.();\n };\n }, [attachDropdownListeners]);\n\n React.useEffect(() => {\n if (isSelectOpen) {\n updateDropdownPlacement();\n }\n }, [isSelectOpen, selectOptions.length, updateDropdownPlacement]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n const target = event.target as Node;\n if (\n selectRef.current &&\n !selectRef.current.contains(target) &&\n dropdownContainerRef.current &&\n !dropdownContainerRef.current.contains(target)\n ) {\n handleSelectOpenChange(false);\n }\n };\n\n if (isSelectOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isSelectOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleSelectOpenChange(false);\n }\n };\n\n if (isSelectOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isSelectOpen]);\n\n // Transform options to dropdown menu items\n const menuItems: DropdownMenuItem[] = selectOptions.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 selectMenuWidth === \"full\"\n ? \"100%\"\n : selectMenuWidth === \"auto\"\n ? \"auto\"\n : selectMenuWidth;\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 // Render dropdown menu content\n const renderDropdownContent = () => (\n <DropdownMenu\n items={menuItems}\n sectionHeading={selectSectionHeading}\n isEmpty={selectOptions.length === 0}\n emptyTitle={selectEmptyTitle}\n emptyDescription={selectEmptyDescription}\n emptyIcon={selectEmptyIcon}\n disableFooter={true}\n onClose={() => handleSelectOpenChange(false)}\n className={selectMenuClassName}\n width={isMobile ? \"full\" : widthStyle}\n unstyled={isMobile}\n />\n );\n\n // Create the select component (prefix or suffix)\n const selectComponent = (\n <div className={cn(\"relative flex items-stretch h-full\")}>\n <div\n ref={selectRef}\n className={cn(\n selectTriggerVariants({\n size,\n validationState: currentValidationState,\n isDisabled: effectiveSelectDisabled,\n }),\n \"h-full flex items-center self-stretch\",\n position === \"prefix\"\n ? \"border-r border-action-outline-neutral-faded\"\n : \"border-l border-action-outline-neutral-faded\",\n selectTriggerClassName,\n position === \"prefix\" ? \"pr-4\" : \"pl-4\"\n )}\n onClick={!effectiveSelectDisabled ? toggleSelectOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isSelectOpen}\n aria-disabled={effectiveSelectDisabled}\n >\n <span\n className={cn(\n \"text-left truncate max-w-[120px] whitespace-nowrap\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n effectiveSelectDisabled && \"text-surface-ink-neutral-disabled\",\n selectedOption && 'text-surface-ink-neutral-normal'\n )}\n >\n {selectedOption?.label || selectPlaceholder}\n </span>\n\n <Icon name='chevronDown'\n className={cn(\n \"shrink-0 transition-transform mt-1\",\n size === \"small\"\n ? \"w-3 h-3\"\n : size === \"medium\"\n ? \"w-3.5 h-3.5\"\n : \"w-4 h-4\",\n effectiveSelectDisabled\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 isSelectOpen && \"transform rotate-180\"\n )}\n\n />\n </div>\n\n {/* Mobile: BottomSheet, Desktop: Regular Dropdown */}\n {isSelectOpen && !effectiveSelectDisabled && (\n isMobile ? (\n <BottomSheet\n isOpen={isSelectOpen}\n onClose={() => handleSelectOpenChange(false)}\n title={selectSectionHeading || label}\n variant=\"default\"\n showDragHandle={true}\n closeOnOverlayClick={true}\n closeOnEscape={true}\n closeOnSwipeDown={true}\n >\n {renderDropdownContent()}\n </BottomSheet>\n ) : (\n <div\n ref={dropdownContainerRef}\n className={cn(\n \"absolute z-50\",\n position === \"prefix\" ? \"left-[-12px]\" : \"right-[-12px]\",\n dropdownPlacement === \"bottom\"\n ? \"top-[30px] mt-1\"\n : \"bottom-full mb-1\"\n )}\n >\n {renderDropdownContent()}\n </div>\n )\n )}\n </div>\n );\n\n return (\n <div\n ref={componentRef}\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={textFieldProps.infoHeading}\n infoDescription={textFieldProps.infoDescription}\n LinkComponent={textFieldProps.LinkComponent}\n linkText={textFieldProps.linkText}\n linkHref={textFieldProps.linkHref}\n onLinkClick={textFieldProps.onLinkClick}\n htmlFor={textFieldProps.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <TextField\n ref={ref}\n value={textValue}\n onChange={handleTextChange}\n {...(position === \"prefix\"\n ? { prefix: selectComponent }\n : { suffix: selectComponent })}\n size={size}\n validationState={currentValidationState}\n isDisabled={effectiveTextFieldDisabled}\n isRequired={isRequired}\n isOptional={isOptional}\n containerClassName=\"gap-0\"\n className={className}\n inputClassName={inputClassName}\n {...textFieldProps}\n />\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={effectiveSelectDisabled && effectiveTextFieldDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelectTextField.displayName = \"SelectTextField\";\n\nexport { selectTriggerVariants };\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 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 validationState: {\n none: \"\",\n error: \"\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed bg-surface-fill-neutral-moderate\",\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:\n \"bg-surface-fill-neutral-subtle hover:bg-action-fill-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\",\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\",\n },\n // Unchecked state - error validation\n {\n isChecked: false,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-surface-fill-neutral-subtle hover:bg-action-fill-neutral-faded\",\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\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-white 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 * Error text to display below the switch\n */\n errorText?: string;\n /**\n * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the switch\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the switch 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 * 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 errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\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 [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 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 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 },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-small-regular\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-medium-regular\",\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=\"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 {/* 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 switchVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n trackClassName,\n className\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\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\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 auto: \"text-body-medium-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 box-border\",\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 auto: \"px-4 py-3 h-[56px]\",\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 box-border\",\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 auto: \"px-4 py-3\",\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\" | \"auto\";\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 auto: 56,\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-[8]\"\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\" | \"auto\";\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: \"16px\",\n paddingBottom: \"16px\",\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: \"16px\",\n paddingBottom: \"16px\",\n ...(isFirstCell && { paddingLeft: \"24px\" }),\n ...(isLastCell && { paddingRight: \"16px\" }),\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 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 size?: \"small\" | \"medium\" | \"large\" | \"auto\";\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 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 // Resolve loading state: prefer 'loading' prop, fallback to 'isLoading' for backward compatibility\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<\n NonNullable<typeof sizeKey>,\n number | string\n > = {\n small: 16,\n medium: 20,\n large: 24,\n auto: \"auto\",\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 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 containerClassName\n )}\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 as \"small\" | \"medium\" | \"large\" | \"auto\"}\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-functional 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-neutral-faded-hover \n hover:bg-action-fill-neutral-faded-hover\n focus-within:border-action-outline-primary-default \n focus-within:bg-white!\n focus-within:ring-2 \n ring-surface-outline-primary-muted`,\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\n border-action-outline-neutral-disabled\n hover:border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense \n hover:bg-surface-fill-neutral-intense \n cursor-not-allowed`,\n false: \"\",\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 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","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Icon } from \"../../lib/icons\";\nimport { Button } from \"../Button\";\nimport { Link } from \"../Link\";\nimport { cn } from \"../../lib/utils\";\n\nconst toastVariants = cva(\n \"relative flex items-center gap-3 p-4 rounded-large shadow-lg min-w-[360px] max-w-[480px] transition-all\",\n {\n variants: {\n type: {\n information: \"\",\n promotional: \"bg-surface-fill-neutral-intense\",\n },\n intent: {\n neutral: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n },\n },\n compoundVariants: [\n // Information type with different intents\n {\n type: \"information\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-intense\",\n },\n {\n type: \"information\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-intense\",\n },\n {\n type: \"information\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-intense\",\n },\n {\n type: \"information\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-intense\",\n },\n {\n type: \"information\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-intense\",\n },\n ],\n defaultVariants: {\n type: \"information\",\n intent: \"neutral\",\n },\n }\n);\n\nconst toastIconVariants = cva(\n \"flex-shrink-0 flex items-center justify-center\",\n {\n variants: {\n type: {\n information: \"text-white\",\n promotional: \"text-action-ink-neutral-normal\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n }\n);\n\nconst toastTextVariants = cva(\"text-body-small-regular\", {\n variants: {\n type: {\n information: \"text-white\",\n promotional: \"text-surface-ink-neutral-normal\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n});\n\nconst toastLinkVariants = cva(\n \"text-body-small-medium cursor-pointer hover:underline\",\n {\n variants: {\n type: {\n information: \"text-white\",\n promotional:\n \"text-action-ink-primary-normal hover:text-action-ink-primary-subtle\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n }\n);\n\nconst toastCloseButtonVariants = cva(\n \"flex-shrink-0 cursor-pointer hover:opacity-75 transition-opacity\",\n {\n variants: {\n type: {\n information: \"text-white\",\n promotional: \"text-action-ink-neutral-subtle\",\n },\n },\n defaultVariants: {\n type: \"information\",\n },\n }\n);\n\nexport interface ToastProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\" | \"id\"> {\n /**\n * Unique identifier for the toast\n */\n id?: string;\n /**\n * Type of toast - determines behavior and styling\n * - information: Auto-dismisses after duration, colored background (default position: bottom-center)\n * - promotional: Stays until user dismisses, white background with more content (default position: bottom-right)\n */\n type?: \"information\" | \"promotional\";\n /**\n * Intent/theme of the toast (only applicable for information type)\n */\n intent?: \"neutral\" | \"positive\" | \"negative\" | \"notice\" | \"info\";\n /**\n * Position of the toast\n * - information type default: bottom-center\n * - promotional type default: bottom-right\n */\n position?:\n | \"top-left\"\n | \"top-center\"\n | \"top-right\"\n | \"bottom-left\"\n | \"bottom-center\"\n | \"bottom-right\";\n /**\n * Icon to display. If not provided, an icon will be automatically selected based on intent\n */\n icon?: React.ReactNode;\n /**\n * Main message content (required for information type)\n */\n message?: string;\n /**\n * Optional heading (primarily for promotional type)\n */\n heading?: string;\n /**\n * Optional description (primarily for promotional type)\n */\n description?: string;\n /**\n * Link text to display on the right\n */\n linkText?: string;\n /**\n * Callback fired when the link is clicked\n */\n onLinkClick?: () => void;\n /**\n * Button text (for promotional type)\n */\n buttonText?: string;\n /**\n * Callback fired when the button is clicked\n */\n onButtonClick?: () => void;\n /**\n * Callback fired when the close button is clicked\n */\n onClose?: () => void;\n /**\n * Duration in milliseconds before auto-dismiss (only for information type)\n * @default 5000\n */\n duration?: number;\n /**\n * Whether to show the toast\n */\n isVisible?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n}\n\nconst getDefaultIcon = (\n type: ToastProps[\"type\"],\n intent: ToastProps[\"intent\"]\n): React.ReactNode => {\n const iconSize = 16;\n\n if (type === \"promotional\") {\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n }\n\n // Information type icons based on intent\n switch (intent) {\n case \"positive\":\n return <Icon name=\"check\" size={iconSize} aria-hidden=\"true\" />;\n case \"negative\":\n return <Icon name=\"exclamation\" size={iconSize} aria-hidden=\"true\" />;\n case \"notice\":\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n case \"info\":\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n case \"neutral\":\n default:\n return <Icon name=\"check\" size={iconSize} aria-hidden=\"true\" />;\n }\n};\n\nexport const Toast = React.forwardRef<HTMLDivElement, ToastProps>(\n (\n {\n className,\n type = \"information\",\n intent = \"neutral\",\n icon,\n message,\n heading,\n description,\n linkText,\n onLinkClick,\n buttonText,\n onButtonClick,\n onClose,\n duration = 5000,\n isVisible = true,\n ...props\n },\n ref\n ) => {\n const [visible, setVisible] = React.useState(isVisible);\n const timerRef = React.useRef<number | null>(null);\n\n React.useEffect(() => {\n setVisible(isVisible);\n }, [isVisible]);\n\n React.useEffect(() => {\n // Auto-dismiss only for information type\n if (type === \"information\" && visible && duration > 0) {\n timerRef.current = window.setTimeout(() => {\n setVisible(false);\n onClose?.();\n }, duration);\n }\n\n return () => {\n if (timerRef.current) {\n window.clearTimeout(timerRef.current);\n }\n };\n }, [type, visible, duration, onClose]);\n\n const handleClose = () => {\n setVisible(false);\n onClose?.();\n };\n\n const displayIcon = icon ?? getDefaultIcon(type, intent);\n\n if (!visible) {\n return null;\n }\n\n // Promotional type layout\n if (type === \"promotional\") {\n return (\n <div\n ref={ref}\n className={cn(\n toastVariants({ type, intent }),\n \"flex-row items-start gap-3\",\n className\n )}\n role=\"alert\"\n {...props}\n >\n <div className=\"py-1\">\n <div\n className={cn(toastIconVariants({ type }), \"h-5 w-5 shrink-0\")}\n >\n {displayIcon}\n </div>\n </div>\n <div className=\"flex flex-col gap-3\">\n <div className=\"flex flex-row items-center justify-between\">\n <div className=\"flex-1 min-w-0\">\n {heading && (\n <div className=\"text-body-small-semibold text-surface-ink-neutral-normal\">\n {heading}\n </div>\n )}\n </div>\n {onClose && (\n <div\n className={cn(toastCloseButtonVariants({ type }), \"h-5 w-5\")}\n onClick={handleClose}\n role=\"button\"\n aria-label=\"Close toast\"\n >\n <Icon name=\"close\" size={16} />\n </div>\n )}\n </div>\n {/* Description */}\n {description && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-subtle\">\n {description}\n </div>\n )}\n {/* Button */}\n {buttonText && (\n <div>\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"xsmall\"\n onClick={onButtonClick}\n >\n {buttonText}\n </Button>\n </div>\n )}\n </div>\n </div>\n );\n }\n\n // Information type layout\n return (\n <div\n ref={ref}\n className={cn(toastVariants({ type, intent }), className)}\n role=\"alert\"\n {...props}\n >\n {/* Icon */}\n <div className={cn(toastIconVariants({ type }), \"h-5 w-5 shrink-0\")}>\n {displayIcon}\n </div>\n\n {/* Message */}\n <div className={cn(toastTextVariants({ type }), \"flex-1 min-w-0\")}>\n {message}\n </div>\n\n {/* Link (optional) */}\n {linkText && (\n <div\n className={cn(toastLinkVariants({ type }), \"shrink-0\")}\n onClick={onLinkClick}\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n onLinkClick?.();\n }\n }}\n >\n {linkText}\n </div>\n )}\n\n {/* Close button */}\n {onClose && (\n <div\n className={cn(toastCloseButtonVariants({ type }), \"h-5 w-5\")}\n onClick={handleClose}\n role=\"button\"\n aria-label=\"Close toast\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n handleClose();\n }\n }}\n >\n <Icon name=\"close\" size={16} />\n </div>\n )}\n </div>\n );\n }\n);\n\nToast.displayName = \"Toast\";\n","import * as React from \"react\";\nimport { Toast, ToastProps } from \"./Toast\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface ToastOptions extends Omit<ToastProps, \"isVisible\" | \"id\"> {\n /**\n * Unique identifier for the toast (auto-generated if not provided)\n */\n id?: string;\n}\n\nexport interface ToastInstance extends ToastOptions {\n id: string;\n isVisible: boolean;\n}\n\ninterface ToastContextType {\n /**\n * Show an information toast\n */\n showToast: (options: ToastOptions) => string;\n /**\n * Show a success toast (shorthand for positive intent)\n */\n success: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show an error toast (shorthand for negative intent)\n */\n error: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show a warning toast (shorthand for notice intent)\n */\n warning: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show an info toast (shorthand for info intent)\n */\n info: (message: string, options?: Partial<ToastOptions>) => string;\n /**\n * Show a promotional toast\n */\n promotional: (\n heading: string,\n description: string,\n options?: Partial<ToastOptions>\n ) => string;\n /**\n * Dismiss a specific toast by ID\n */\n dismiss: (id: string) => void;\n /**\n * Dismiss all toasts\n */\n dismissAll: () => void;\n}\n\nconst ToastContext = React.createContext<ToastContextType | undefined>(\n undefined\n);\n\nexport interface ToastProviderProps {\n children: React.ReactNode;\n /**\n * Maximum number of toasts to display at once\n * @default 5\n */\n maxToasts?: number;\n /**\n * Default duration for information toasts in milliseconds\n * @default 5000\n */\n defaultDuration?: number;\n}\n\nconst positionClasses = {\n \"top-left\": \"top-4 left-4\",\n \"top-center\": \"top-4 left-1/2 -translate-x-1/2\",\n \"top-right\": \"top-4 right-4\",\n \"bottom-left\": \"bottom-4 left-4\",\n \"bottom-center\": \"bottom-4 left-1/2 -translate-x-1/2\",\n \"bottom-right\": \"bottom-4 right-4\",\n};\n\nconst getDefaultPosition = (\n type?: \"information\" | \"promotional\"\n): \"bottom-center\" | \"bottom-right\" => {\n return type === \"promotional\" ? \"bottom-right\" : \"bottom-center\";\n};\n\nconst getAnimationClasses = (position: string, isVisible: boolean): string => {\n const isTop = position.startsWith(\"top\");\n const isBottom = position.startsWith(\"bottom\");\n\n if (!isVisible) {\n // Exit/hidden state - slide out\n if (isTop) {\n return \"-translate-y-[120%] pointer-events-none\";\n }\n if (isBottom) {\n return \"translate-y-[120%] pointer-events-none\";\n }\n // Fallback\n return \"translate-y-[120%] pointer-events-none\";\n }\n\n // Visible state - slide in\n return \"translate-y-0\";\n};\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n children,\n maxToasts = 5,\n defaultDuration = 5000,\n}) => {\n const [toasts, setToasts] = React.useState<ToastInstance[]>([]);\n const toastCounter = React.useRef(0);\n\n const generateId = () => {\n toastCounter.current += 1;\n return `toast-${Date.now()}-${toastCounter.current}`;\n };\n\n const showToast = React.useCallback(\n (options: ToastOptions): string => {\n const id = options.id || generateId();\n const toastType = options.type || \"information\";\n\n const newToast: ToastInstance = {\n ...options,\n id,\n isVisible: false, // Start hidden to trigger entry animation\n type: toastType,\n position: options.position || getDefaultPosition(toastType),\n duration:\n options.duration ??\n (toastType === \"promotional\" ? 0 : defaultDuration),\n };\n\n setToasts((prevToasts) => {\n const filtered = prevToasts.filter((t) => t.id !== id);\n const updated = [...filtered, newToast];\n // Keep only the most recent maxToasts\n return updated.slice(-maxToasts);\n });\n\n // Trigger entry animation after DOM update\n // Use setTimeout to ensure the initial hidden state is rendered first\n setTimeout(() => {\n setToasts((prevToasts) =>\n prevToasts.map((toast) =>\n toast.id === id ? { ...toast, isVisible: true } : toast\n )\n );\n }, 10);\n\n return id;\n },\n [maxToasts, defaultDuration]\n );\n\n const dismiss = React.useCallback((id: string) => {\n setToasts((prevToasts) =>\n prevToasts.map((toast) =>\n toast.id === id ? { ...toast, isVisible: false } : toast\n )\n );\n\n // Remove toast after animation completes (500ms animation + 50ms buffer)\n setTimeout(() => {\n setToasts((prevToasts) => prevToasts.filter((toast) => toast.id !== id));\n }, 550);\n }, []);\n\n const dismissAll = React.useCallback(() => {\n setToasts((prevToasts) =>\n prevToasts.map((toast) => ({ ...toast, isVisible: false }))\n );\n\n // Remove all toasts after animation completes (500ms animation + 50ms buffer)\n setTimeout(() => {\n setToasts([]);\n }, 550);\n }, []);\n\n const success = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"positive\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const error = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"negative\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const warning = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"notice\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const info = React.useCallback(\n (message: string, options?: Partial<ToastOptions>): string => {\n return showToast({\n type: \"information\",\n intent: \"info\",\n message,\n ...options,\n });\n },\n [showToast]\n );\n\n const promotional = React.useCallback(\n (\n heading: string,\n description: string,\n options?: Partial<ToastOptions>\n ): string => {\n return showToast({\n type: \"promotional\",\n heading,\n description,\n ...options,\n });\n },\n [showToast]\n );\n\n const contextValue = React.useMemo(\n () => ({\n showToast,\n success,\n error,\n warning,\n info,\n promotional,\n dismiss,\n dismissAll,\n }),\n [showToast, success, error, warning, info, promotional, dismiss, dismissAll]\n );\n\n // Group toasts by position\n const toastsByPosition = React.useMemo(() => {\n const grouped: Record<string, ToastInstance[]> = {};\n toasts.forEach((toast) => {\n const pos = toast.position || getDefaultPosition(toast.type);\n if (!grouped[pos]) {\n grouped[pos] = [];\n }\n grouped[pos].push(toast);\n });\n return grouped;\n }, [toasts]);\n\n return (\n <ToastContext.Provider value={contextValue}>\n {children}\n {/* Toast Containers - one for each position */}\n {(\n Object.keys(toastsByPosition) as Array<keyof typeof positionClasses>\n ).map((position) => {\n const positionToasts = toastsByPosition[position];\n if (!positionToasts) return null;\n\n return (\n <div\n key={position}\n className={`fixed z-10000 flex flex-col gap-3 ${positionClasses[position]}`}\n aria-live=\"polite\"\n aria-atomic=\"false\"\n >\n {positionToasts.map((toast: ToastInstance) => {\n const toastPosition =\n toast.position || getDefaultPosition(toast.type);\n const animationClasses = getAnimationClasses(\n toastPosition,\n toast.isVisible\n );\n return (\n <div\n key={toast.id}\n className={cn(\n \"will-change-transform transition-transform duration-200 ease-out\",\n animationClasses\n )}\n >\n <Toast\n {...toast}\n isVisible={toast.isVisible}\n onClose={() => {\n toast.onClose?.();\n dismiss(toast.id);\n }}\n />\n </div>\n );\n })}\n </div>\n );\n })}\n </ToastContext.Provider>\n );\n};\n\n/**\n * Hook to access toast functionality\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const toast = useToast();\n *\n * return (\n * <button onClick={() => toast.success(\"Saved successfully!\")}>\n * Save\n * </button>\n * );\n * }\n * ```\n */\nexport const useToast = (): ToastContextType => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\"useToast must be used within a ToastProvider\");\n }\n return context;\n};\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\";\nimport { Icon } from \"../../lib\";\nimport { IconButton } from \"../IconButton\";\nimport { Text } from \"../Text\";\nimport { Button } from \"../Button\";\n\nconst uploadBoxVariants = cva(\n \"relative flex flex-col items-center justify-center border-2 border-dashed rounded-large transition-all font-display\",\n {\n variants: {\n size: {\n small: \"min-h-[120px] p-4 gap-2\",\n medium: \"min-h-[160px] p-6 gap-3\",\n large: \"min-h-[200px] p-8 gap-4\",\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 bg-surface-fill-neutral-intense`,\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 bg-surface-fill-neutral-intense`,\n negative: `\n 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 bg-surface-fill-neutral-intense`,\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 \n cursor-not-allowed \n opacity-60`,\n false: \"cursor-pointer\",\n },\n isDragging: {\n true: \"border-action-outline-primary-hover bg-action-fill-primary-faded\",\n false: \"\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n isDragging: false,\n },\n }\n);\n\nexport interface UploadedFile {\n file?: File;\n url?: string;\n name?: string;\n size?: number;\n preview?: string;\n id: string;\n}\n\nexport interface UploadBoxProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\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 accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n maxFiles?: number;\n value?: File | File[] | UploadedFile | UploadedFile[] | string | string[];\n onChange?: (files: File | File[] | null) => void;\n onFileRemove?: (file: File | UploadedFile) => void;\n containerClassName?: string;\n labelClassName?: string;\n uploadAreaClassName?: string;\n previewClassName?: 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 uploadText?: string;\n dragText?: string;\n showPreview?: boolean;\n}\n\nconst formatFileSize = (bytes: number): string => {\n if (bytes === 0) return \"0 Bytes\";\n const k = 1024;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return Math.round((bytes / Math.pow(k, i)) * 100) / 100 + \" \" + sizes[i];\n};\n\nconst isImageFile = (file?: File, url?: string): boolean => {\n if (file) {\n return file.type.startsWith(\"image/\");\n }\n if (url) {\n const lowerUrl = url.toLowerCase();\n return (\n lowerUrl.match(/\\.(jpg|jpeg|png|gif|bmp|webp|svg)(\\?.*)?$/i) !== null ||\n url.match(/data:image\\//) !== null\n );\n }\n return false;\n};\n\nconst isPdfFile = (file?: File, url?: string): boolean => {\n if (file) {\n return file.type === \"application/pdf\";\n }\n if (url) {\n return url.toLowerCase().match(/\\.pdf(\\?.*)?$/i) !== null;\n }\n return false;\n};\n\nconst isPreviewable = (file?: File, url?: string): boolean => {\n return isImageFile(file, url) || isPdfFile(file, url);\n};\n\nconst getFileNameFromUrl = (url: string): string => {\n try {\n const urlObj = new URL(url);\n const pathname = urlObj.pathname;\n const fileName = pathname.split(\"/\").pop() || \"file\";\n return decodeURIComponent(fileName);\n } catch {\n // If URL parsing fails, try to extract from the string\n const parts = url.split(\"/\");\n const lastPart = parts[parts.length - 1] || \"file\";\n return decodeURIComponent(lastPart.split(\"?\")[0]);\n }\n};\n\n// Component to handle image preview with error fallback\nconst ImagePreview = ({ src, alt }: { src: string; alt: string }) => {\n const [hasError, setHasError] = React.useState(false);\n\n if (hasError) {\n return (\n <div className=\"shrink-0 w-16 h-16 rounded-medium flex items-center justify-center bg-surface-fill-neutral-subtle\">\n <Icon\n name=\"file\"\n size={24}\n className=\"text-surface-ink-neutral-subtle\"\n />\n </div>\n );\n }\n\n return (\n <div className=\"shrink-0 w-16 h-16 rounded-medium overflow-hidden \">\n <img\n src={src}\n alt={alt}\n className=\"w-full h-full object-cover\"\n onError={() => setHasError(true)}\n />\n </div>\n );\n};\n\nconst UploadBox = React.forwardRef<HTMLDivElement, UploadBoxProps>(\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 accept,\n multiple = false,\n maxSize,\n maxFiles,\n value,\n onChange,\n onFileRemove,\n containerClassName,\n labelClassName,\n uploadAreaClassName,\n previewClassName,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n uploadText,\n dragText,\n showPreview = true,\n className,\n ...props\n },\n ref\n ) => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const [isDragging, setIsDragging] = React.useState(false);\n const [uploadedFiles, setUploadedFiles] = React.useState<UploadedFile[]>(\n []\n );\n const [error, setError] = React.useState<string | null>(null);\n\n // Initialize uploaded files from value prop\n React.useEffect(() => {\n if (value) {\n const filesArray = Array.isArray(value) ? value : [value];\n const processedFiles = filesArray.map((item) => {\n if (item instanceof File) {\n const uploadedFile: UploadedFile = {\n file: item,\n name: item.name,\n size: item.size,\n id: `${item.name}-${item.size}-${item.lastModified}`,\n };\n if (isImageFile(item) && showPreview) {\n uploadedFile.preview = URL.createObjectURL(item);\n }\n return uploadedFile;\n } else if (typeof item === \"string\") {\n // It's a URL string\n const uploadedFile: UploadedFile = {\n url: item,\n name: getFileNameFromUrl(item),\n id: `url-${item}-${Date.now()}`,\n };\n // Always set preview for URLs when showPreview is true\n // The rendering logic will determine if it's an image or PDF\n if (showPreview) {\n uploadedFile.preview = item;\n }\n return uploadedFile;\n } else {\n // It's already an UploadedFile\n const uploadedFile = item as UploadedFile;\n // If it has a URL but no preview set, set it\n if (uploadedFile.url && !uploadedFile.preview && showPreview) {\n uploadedFile.preview = uploadedFile.url;\n }\n return uploadedFile;\n }\n });\n setUploadedFiles(processedFiles);\n } else {\n setUploadedFiles([]);\n }\n }, [value, showPreview]);\n\n // Cleanup preview URLs (only revoke object URLs, not regular URLs)\n React.useEffect(() => {\n return () => {\n uploadedFiles.forEach((uploadedFile) => {\n // Only revoke object URLs (created with URL.createObjectURL)\n // Regular URLs (http/https) should not be revoked\n if (\n uploadedFile.preview &&\n uploadedFile.preview.startsWith(\"blob:\")\n ) {\n URL.revokeObjectURL(uploadedFile.preview);\n }\n });\n };\n }, [uploadedFiles]);\n\n const processFiles = (files: FileList | File[]): File[] => {\n const fileArray = Array.from(files);\n const validFiles: File[] = [];\n let currentError: string | null = null;\n\n // Check max files limit\n if (maxFiles && uploadedFiles.length + fileArray.length > maxFiles) {\n currentError = `Maximum ${maxFiles} file(s) allowed`;\n setError(currentError);\n return validFiles;\n }\n\n fileArray.forEach((file) => {\n // Check file size\n if (maxSize && file.size > maxSize) {\n currentError = `File \"${\n file.name\n }\" exceeds maximum size of ${formatFileSize(maxSize)}`;\n setError(currentError);\n return;\n }\n\n // Check if file type is accepted\n if (accept) {\n const acceptedTypes = accept.split(\",\").map((type) => type.trim());\n const isAccepted = acceptedTypes.some((type) => {\n if (type.startsWith(\".\")) {\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n }\n if (type.includes(\"/*\")) {\n const baseType = type.split(\"/\")[0];\n return file.type.startsWith(baseType + \"/\");\n }\n return file.type === type;\n });\n\n if (!isAccepted) {\n currentError = `File type \"${file.type}\" is not accepted`;\n setError(currentError);\n return;\n }\n }\n\n validFiles.push(file);\n });\n\n if (currentError) {\n setError(currentError);\n } else {\n setError(null);\n }\n\n return validFiles;\n };\n\n const handleFiles = (files: File[]) => {\n if (files.length === 0) return;\n\n const newUploadedFiles: UploadedFile[] = files.map((file) => {\n const uploadedFile: UploadedFile = {\n file,\n id: `${file.name}-${file.size}-${file.lastModified}-${Date.now()}`,\n };\n\n if (isImageFile(file) && showPreview) {\n uploadedFile.preview = URL.createObjectURL(file);\n }\n\n return uploadedFile;\n });\n\n const updatedFiles = multiple\n ? [...uploadedFiles, ...newUploadedFiles]\n : newUploadedFiles;\n\n setUploadedFiles(updatedFiles);\n\n // Call onChange with File objects only (filter out URL-only items)\n if (onChange) {\n const filesToReturn = updatedFiles\n .map((uf) => uf.file)\n .filter((file): file is File => file !== undefined);\n onChange(multiple ? filesToReturn : filesToReturn[0] || null);\n }\n };\n\n const handleFileInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (e.target.files && e.target.files.length > 0) {\n const validFiles = processFiles(e.target.files);\n if (validFiles.length > 0) {\n handleFiles(validFiles);\n }\n // Reset input value to allow selecting the same file again\n e.target.value = \"\";\n }\n };\n\n const handleDragOver = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n if (!isDisabled) {\n setIsDragging(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n };\n\n const handleDrop = (e: React.DragEvent<HTMLDivElement>) => {\n e.preventDefault();\n e.stopPropagation();\n setIsDragging(false);\n\n if (isDisabled) return;\n\n if (e.dataTransfer.files && e.dataTransfer.files.length > 0) {\n const validFiles = processFiles(e.dataTransfer.files);\n if (validFiles.length > 0) {\n handleFiles(validFiles);\n }\n }\n };\n\n const handleClick = () => {\n if (!isDisabled && fileInputRef.current) {\n fileInputRef.current.click();\n }\n };\n\n const handleRemoveFile = (\n e: React.MouseEvent,\n uploadedFile: UploadedFile\n ) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n // Revoke preview URL if exists\n if (uploadedFile.preview) {\n URL.revokeObjectURL(uploadedFile.preview);\n }\n\n const updatedFiles = uploadedFiles.filter(\n (f) => f.id !== uploadedFile.id\n );\n setUploadedFiles(updatedFiles);\n\n if (onFileRemove) {\n onFileRemove(uploadedFile);\n }\n\n if (onChange) {\n // Only return File objects (filter out URL-only items)\n const filesToReturn = updatedFiles\n .map((uf) => uf.file)\n .filter((file): file is File => file !== undefined);\n onChange(multiple ? filesToReturn : filesToReturn[0] || null);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText || error;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n iconSize: 16,\n textSize: \"text-body-small-medium\",\n },\n medium: {\n gap: \"gap-2\",\n iconSize: 16,\n textSize: \"text-body-small-medium\",\n },\n large: {\n gap: \"gap-3\",\n iconSize: 16,\n textSize: \"text-body-small-medium\",\n },\n };\n\n const config = sizeConfig[size];\n\n const defaultUploadText = \"Click to upload or drag and drop\";\n const defaultDragText = \"Drop files here\";\n\n return (\n <div\n ref={ref}\n className={cn(\"w-full flex flex-col\", config.gap, containerClassName)}\n {...props}\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 className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n uploadBoxVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n isDragging,\n }),\n uploadAreaClassName,\n className\n )}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={handleClick}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n disabled={isDisabled}\n onChange={handleFileInputChange}\n className=\"hidden\"\n aria-label={label || \"File upload\"}\n />\n\n {uploadedFiles.length === 0 ? (\n <div className=\"flex flex-col items-center justify-center gap-2 text-center\">\n <div className=\"flex items-center justify-center w-8 h-8 rounded-full bg-surface-fill-neutral-subtle\">\n <Icon name=\"upload\" size={config.iconSize} />\n </div>\n <div className=\"flex flex-col gap-1\">\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n color={isDisabled ? \"disabled\" : \"default\"}\n >\n {isDragging\n ? dragText || defaultDragText\n : uploadText || defaultUploadText}\n </Text>\n {accept && (\n <Text\n variant=\"caption\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n >\n Accepted: {accept}\n </Text>\n )}\n {maxSize && (\n <Text\n variant=\"caption\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n >\n Max size: {formatFileSize(maxSize)}\n </Text>\n )}\n </div>\n </div>\n ) : (\n <div className={cn(\"w-full flex flex-col gap-3\", previewClassName)}>\n {uploadedFiles.map((uploadedFile) => {\n const { file, url, preview, name, size, id } = uploadedFile;\n const fileName =\n name ||\n file?.name ||\n (url ? getFileNameFromUrl(url) : \"Unknown file\");\n const fileSize = size || file?.size;\n const canPreview = showPreview && preview;\n const isImage = isImageFile(file, url);\n const isPdf = isPdfFile(file, url);\n // For URLs, try to show as image if not explicitly a PDF\n // If it's a URL without extension, assume it might be an image\n // Always try to show URLs as images unless they're explicitly PDFs\n const shouldShowAsImage =\n canPreview && preview && (isImage || (url && !isPdf));\n\n return (\n <div\n key={id}\n className=\"flex items-start gap-3 p-3 border border-surface-outline-neutral-muted rounded-large bg-surface-fill-neutral-intense\"\n >\n {shouldShowAsImage ? (\n <ImagePreview src={preview} alt={fileName} />\n ) : canPreview && isPdf ? (\n <div className=\"shrink-0 w-16 h-16 rounded-medium border border-action-outline-neutral-faded flex items-center justify-center bg-surface-fill-neutral-subtle\">\n <Icon\n name=\"file\"\n size={24}\n className=\"text-surface-ink-neutral-subtle\"\n />\n </div>\n ) : (\n <div className=\"shrink-0 w-16 h-16 rounded-medium border border-action-outline-neutral-faded flex items-center justify-center bg-surface-fill-neutral-subtle\">\n <Icon\n name=\"file\"\n size={24}\n className=\"text-surface-ink-neutral-subtle\"\n />\n </div>\n )}\n\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n <div className=\"flex items-center gap-2\">\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n color={isDisabled ? \"disabled\" : \"default\"}\n as=\"span\"\n className=\"truncate\"\n title={fileName}\n >\n {fileName}\n </Text>\n </div>\n {fileSize !== undefined && (\n <Text\n variant=\"caption\"\n size=\"small\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n as=\"span\"\n >\n {formatFileSize(fileSize)}\n </Text>\n )}\n </div>\n\n {!isDisabled && (\n <IconButton\n icon=\"close\"\n size=\"xsmall\"\n onClick={(e) => handleRemoveFile(e, uploadedFile)}\n aria-label={`Remove ${fileName}`}\n />\n )}\n </div>\n );\n })}\n\n {multiple && !isDisabled && (\n <Button\n variant=\"tertiary\"\n color=\"primary\"\n size=\"small\"\n onClick={handleClick}\n leadingIcon={<Icon name=\"add\" size={16} />}\n className=\"mt-2 w-fit\"\n >\n Add more files\n </Button>\n )}\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText || undefined}\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\nUploadBox.displayName = \"UploadBox\";\n\nexport { UploadBox, uploadBoxVariants };\n"],"names":["_jsx","_jsxs","_Fragment","getDefaultIcon","useLayoutEffect","computePosition","arrow","flip","hide","offset","shift","limitShift","size","getComputedStyle","offset$1","shift$1","flip$1","size$1","hide$1","arrow$1","limitShift$1","Arrow","CONTENT_NAME","floatingUIarrow","ARROW_NAME","ArrowPrimitive.Root","Root2","PORTAL_NAME","Portal","ReactDOM","React2","PopperPrimitive.Root","PopperPrimitive.Anchor","PortalPrimitive","PopperPrimitive.Content","PopperPrimitive.Arrow","HoverCardPrimitive.Root","HoverCardPrimitive.Trigger","HoverCardPrimitive.Portal","HoverCardPrimitive.Content","HoverCardPrimitive.Arrow","parseDate","formatDateDefault","CalendarIcon","Calendar","formatFileSize"],"mappings":"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","x_google_ignoreList":[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35]}
|