infinity-ui-elements 1.8.40 → 1.8.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/icons.tsx","../src/lib/utils.ts","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Link/Link.tsx","../src/components/Alert/Alert.tsx","../src/components/Amount/Amount.tsx","../src/components/Text/Text.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Divider/Divider.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Modal/Modal.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/TextField/TextField.tsx","../src/components/SearchableDropdown/SearchableDropdown.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/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=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Alias: check points to the same icon as tick\n check: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n add: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n<path d=\"M12.9 11.0999L21 11.0997V12.8997L12.9 12.8999V21H11.1V12.8999L3.00004 12.9001L3 11.1001L11.1 11.0999L11.0999 3.00001L12.8999 3L12.9 11.0999Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Info icon\n info: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 22.5C6.20101 22.5 1.5 17.7989 1.5 12C1.5 6.20101 6.20101 1.5 12 1.5C17.7989 1.5 22.5 6.20101 22.5 12C22.5 17.7989 17.7989 22.5 12 22.5ZM12 20.4C16.6392 20.4 20.4 16.6392 20.4 12C20.4 7.36081 16.6392 3.6 12 3.6C7.36081 3.6 3.6 7.36081 3.6 12C3.6 16.6392 7.36081 20.4 12 20.4ZM10.95 6.75H13.05V8.85H10.95V6.75ZM10.95 10.95H13.05V17.25H10.95V10.95Z\" fill=\"#081416\"/>\n</svg>\n`,\n\n // Exclamation/Warning icon\n exclamation: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM13 17H11V15H13V17ZM13 13H11V7H13V13Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Close/X icon\n close: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18 6L6 18M6 6L18 18\" stroke=\"#081416\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n 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};\n\n/**\n * Type for available icon names (with autocomplete support)\n */\nexport type IconName = keyof typeof iconRegistry;\n\n/**\n * Icon component that renders an SVG icon by name\n *\n * Features:\n * - ✓ Automatically converts hardcoded colors to currentColor\n * - ✓ Control color via className (e.g., \"text-blue-500\")\n * - ✓ Control color via style prop\n * - ✓ Customizable size\n * - ✓ TypeScript autocomplete for icon names\n * - ✓ All standard SVG props supported\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Icon name=\"tick\" size={24} />\n *\n * // With Tailwind color class\n * <Icon name=\"tick\" size={16} className=\"text-blue-500\" />\n *\n * // With inline styles\n * <Icon name=\"check\" size={20} style={{ color: 'red' }} />\n *\n * // With custom props\n * <Icon name=\"tick\" size={32} className=\"hover:text-green-600 transition-colors\" />\n * ```\n */\nexport interface DynamicIconProps\n extends Omit<\n React.SVGProps<SVGSVGElement>,\n \"ref\" | \"dangerouslySetInnerHTML\"\n > {\n /** Name of the icon to render */\n name: IconName;\n /** Size of the icon (width and height) */\n size?: number | string;\n}\n\nexport const Icon: React.FC<DynamicIconProps> = ({\n name,\n size = 24,\n className = \"\",\n style = {},\n ...props\n}) => {\n const svgContent = iconRegistry[name];\n\n if (!svgContent) {\n console.warn(\n `Icon \"${String(name)}\" not found in registry.\\n` +\n `Available icons: ${Object.keys(iconRegistry).join(\", \")}`\n );\n return null;\n }\n\n // Parse the SVG content\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgContent, \"image/svg+xml\");\n const svgElement = svgDoc.querySelector(\"svg\");\n\n if (!svgElement) {\n console.error(`Invalid SVG content for icon \"${String(name)}\"`);\n return null;\n }\n\n // Get the viewBox for proper scaling\n const viewBox = svgElement.getAttribute(\"viewBox\") || \"0 0 24 24\";\n\n // Get all SVG content as string and replace hardcoded colors with currentColor\n let innerSVG = svgElement.innerHTML;\n\n // Replace common hardcoded colors with currentColor\n // This allows the icon to inherit text color from parent\n innerSVG = innerSVG\n .replace(/fill=\"[^\"]*\"/g, 'fill=\"currentColor\"')\n .replace(/stroke=\"[^\"]*\"/g, 'stroke=\"currentColor\"');\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n dangerouslySetInnerHTML={{ __html: innerSVG }}\n />\n );\n};\n\n/**\n * Get all available icon names from the registry\n * @returns Array of registered icon names\n *\n * @example\n * ```tsx\n * const icons = getAvailableIcons();\n * console.log(icons); // ['tick', 'check', ...]\n * ```\n */\nexport function getAvailableIcons(): IconName[] {\n return Object.keys(iconRegistry) as IconName[];\n}\n\n/**\n * Check if an icon exists in the registry\n * @param name - Icon name to check\n * @returns true if the icon exists\n *\n * @example\n * ```tsx\n * if (hasIcon('tick')) {\n * // Icon exists\n * }\n * ```\n */\nexport function hasIcon(name: string): name is IconName {\n return name in iconRegistry;\n}\n\nexport { iconRegistry };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Define patterns for custom classes that should be preserved\n// This approach is more scalable than hardcoding individual class names\nconst CUSTOM_CLASS_PATTERNS = [\n // Custom font classes\n /^font-(functional|display)$/,\n // Custom font-size classes\n /^font-size-/,\n // Custom leading (line-height) classes\n /^leading-(00|25|50|75|100|200|300|400|500|600|700|800|900|1000|1100)$/,\n // Custom text utility classes (text-display, text-heading, text-body, text-caption variants)\n /^text-(display|heading|body|caption)(-\\w+)?(-\\w+)?$/,\n // Text weight classes\n /^text-weight-/,\n // Text color classes\n /^text-color-/,\n /^outline-width-/,\n /^border-width-/,\n // Custom spacing classes (example)\n // /^spacing-(xs|sm|md|lg|xl)$/,\n // Custom color classes (example)\n // /^color-(primary|secondary|accent)$/,\n // Any class that starts with 'custom-'\n /^custom-/,\n];\n\nfunction isCustomClass(className: string): boolean {\n return CUSTOM_CLASS_PATTERNS.some((pattern) => pattern.test(className));\n}\n\nexport function cn(...inputs: ClassValue[]) {\n // Use clsx first to combine classes, then use twMerge for standard Tailwind classes\n const combined = clsx(inputs);\n\n // Split classes and filter out our custom classes before merging\n const classes = combined.split(\" \");\n const customClasses = classes.filter((cls) => isCustomClass(cls));\n const standardClasses = classes.filter((cls) => !isCustomClass(cls));\n\n // Merge standard classes and add back custom classes\n const mergedStandard = twMerge(standardClasses.join(\" \"));\n\n return clsx(mergedStandard, customClasses);\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { PulseLoader, ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"items-center gap-3 justify-center whitespace-nowrap ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none\",\n {\n variants: {\n variant: {\n primary:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal hover:bg-action-fill-primary-hover\",\n secondary: \"border\",\n tertiary: \"hover:bg-accent hover:text-accent-foreground\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"md:h-[28px] px-3 rounded-medium text-body-small-medium\",\n small: \"md:h-[32px] px-4 rounded-medium text-body-small-medium\",\n medium: \"md:h-[36px] px-5 py-2 rounded-large text-body-medium-medium\",\n large: \"md:h-[44px] px-6 rounded-large text-body-large-medium\",\n },\n isIconOnly: {\n true: \"aspect-square p-0\",\n false: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n isFullWidth: {\n true: \"flex w-full\",\n false: \"flex w-fit\",\n },\n },\n compoundVariants: [\n // Primary variant colors\n {\n variant: \"primary\",\n color: \"primary\",\n class: `bg-action-fill-primary-default text-action-ink-on-primary-normal \n hover:bg-action-fill-primary-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled,\n active:bg-action-fill-primary-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"positive\",\n class: `bg-action-fill-positive-default text-action-ink-on-primary-normal \n hover:bg-action-fill-positive-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled\n active:bg-action-fill-positive-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"negative\",\n class: `bg-action-fill-negative-default text-action-ink-on-primary-normal \n hover:bg-action-fill-negative-hover \n disabled:bg-action-fill-negative-disabled\n disabled:text-action-ink-negative-disabled\n active:bg-action-fill-negative-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"notice\",\n class: `bg-action-fill-notice-default text-action-ink-on-primary-normal \n hover:bg-action-fill-notice-hover \n disabled:bg-action-fill-notice-disabled\n disabled:text-action-ink-notice-disabled\n active:bg-action-fill-notice-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"info\",\n class: `bg-action-fill-info-default text-action-ink-on-primary-normal \n hover:bg-action-fill-info-hover \n disabled:bg-action-fill-info-disabled\n disabled:text-action-ink-info-disabled\n active:bg-action-fill-info-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"neutral\",\n class: `bg-action-fill-neutral-default text-action-ink-on-primary-normal \n hover:bg-action-fill-neutral-hover \n disabled:bg-action-fill-neutral-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-neutral-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"white\",\n class: `bg-action-fill-white-default text-action-ink-neutral-subtle\n hover:bg-action-fill-white-hover \n disabled:bg-action-fill-white-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-white-activated\n `,\n },\n // Secondary variant colors\n {\n variant: \"secondary\",\n color: \"primary\",\n class: `\n border-action-outline-primary-faded \n text-action-ink-primary-normal \n hover:border-action-outline-primary-faded-hover \n hover:bg-action-fill-primary-faded-hover\n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-primary-disabled\n disabled:border-action-outline-primary-disabled\n active:border-action-outline-primary-faded-activated\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"positive\",\n class: `\n border-action-outline-positive-faded \n text-action-ink-positive-normal \n hover:border-action-outline-positive-faded-hover \n hover:bg-action-fill-positive-faded-hover \n disabled:bg-action-outline-positive-disabled\n disabled:text-action-ink-positive-disabled\n disabled:border-action-outline-positive-disabled\n active:border-action-outline-positive-faded-activated\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"negative\",\n class: `\n border-action-outline-negative-faded \n text-action-ink-negative-normal \n hover:border-action-outline-negative-faded-hover \n hover:bg-action-fill-negative-faded-hover \n disabled:bg-action-outline-negative-disabled\n disabled:text-action-ink-negative-disabled\n disabled:border-action-outline-negative-disabled\n active:border-action-outline-negative-faded-activated\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"notice\",\n class: `\n border-action-outline-notice-faded \n text-action-ink-notice-normal \n hover:border-action-outline-notice-faded-hover \n hover:bg-action-fill-notice-faded-hover \n disabled:bg-action-outline-notice-disabled\n disabled:text-action-ink-notice-disabled\n disabled:border-action-outline-notice-disabled\n active:border-action-outline-notice-faded-activated\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"info\",\n class: `border-action-outline-info-faded \n text-action-ink-info-normal \n hover:border-action-outline-info-faded-hover \n hover:bg-action-fill-info-faded-hover \n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-info-disabled\n disabled:border-action-outline-info-disabled\n active:border-action-outline-info-faded-activated\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"neutral\",\n class: `border-action-outline-neutral-faded \n text-action-ink-neutral-normal \n hover:bg-action-outline-neutral-faded-hover \n hover:bg-action-fill-neutral-faded-hover \n disabled:text-action-ink-neutral-disabled\n disabled:border-action-outline-neutral-disabled\n active:border-action-outline-neutral-faded-activated\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"white\",\n class: `border-action-outline-white-faded \n text-action-ink-on-primary-subtle\n hover:border-action-outline-white-faded-hover \n hover:bg-action-fill-white-faded-hover\n disabled:text-surface-ink-white-disabled\n disabled:border-action-outline-white-disabled\n active:border-action-outline-white-faded-activated\n active:bg-action-fill-white-faded-activated\n `,\n },\n // Tertiary variant colors\n {\n variant: \"tertiary\",\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:bg-action-fill-primary-faded \n disabled:text-action-ink-on-primary-muted\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:bg-action-fill-positive-faded \n disabled:text-action-ink-on-positive-muted\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:bg-action-fill-negative-faded \n disabled:text-action-ink-on-negative-muted\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:bg-action-fill-notice-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:bg-action-fill-info-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:bg-action-fill-neutral-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"white\",\n class: `text-action-ink-white-subtle\n hover:bg-action-white-faded-hover\n disabled:text-action-ink-white-disabled\n disabled:bg-action-fill-white-disabled\n active:bg-action-white-faded-activated\n `,\n },\n // Icon only sizing\n {\n isIconOnly: true,\n size: \"xsmall\",\n class: \"h-7 w-7\",\n },\n {\n isIconOnly: true,\n size: \"small\",\n class: \"h-8 w-8\",\n },\n {\n isIconOnly: true,\n size: \"medium\",\n class: \"h-9 w-9\",\n },\n {\n isIconOnly: true,\n size: \"large\",\n class: \"h-10 w-10\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isLoading: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n isFullWidth?: boolean;\n asChild?: boolean;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n color = \"primary\",\n size,\n isIconOnly,\n isLoading,\n asChild = false,\n leadingIcon,\n trailingIcon,\n isFullWidth = false,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const buttonContent = (\n <>\n {isLoading && !isIconOnly && (\n <PulseLoader color={getLoaderColor()} size={10} />\n )}\n {isLoading && isIconOnly && (\n <ClipLoader color={getLoaderColor()} size={20} />\n )}\n {!isLoading && leadingIcon && (\n <span className=\"mr-2\">{leadingIcon}</span>\n )}\n {!isIconOnly && !isLoading && children}\n {isIconOnly && !isLoading && children}\n {!isLoading && trailingIcon && <span>{trailingIcon}</span>}\n </>\n );\n\n return (\n <Comp\n className={cn(\n buttonVariants({\n variant,\n color,\n size,\n isIconOnly,\n isLoading,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon, type IconName } from \"../../lib/icons\";\n\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none p-0 border-0 bg-transparent\",\n {\n variants: {\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n color: \"primary\",\n size: \"medium\",\n isLoading: false,\n },\n }\n);\n\nexport interface IconButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isLoading?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n /** Icon name from the icon registry */\n icon?: IconName;\n /** Custom icon element (ReactNode) - alternative to icon prop */\n iconElement?: React.ReactNode;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n className,\n color = \"primary\",\n size = \"medium\",\n isLoading,\n asChild = false,\n icon,\n iconElement,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const getIconSize = () => {\n switch (size) {\n case \"xsmall\":\n return 16;\n case \"small\":\n return 18;\n case \"medium\":\n return 20;\n case \"large\":\n return 24;\n default:\n return 20;\n }\n };\n\n const getIconColorClass = () => {\n // Color classes with normal, hover, focus, and disabled states\n const colorMap: Record<string, string> = {\n primary:\n \"text-action-ink-primary-normal hover:text-action-ink-primary-subtle focus-visible:text-action-ink-primary-subtle disabled:text-action-ink-primary-muted\",\n positive:\n \"text-action-ink-positive-normal hover:text-action-ink-positive-subtle focus-visible:text-action-ink-positive-subtle disabled:text-action-ink-positive-muted\",\n negative:\n \"text-action-ink-negative-normal hover:text-action-ink-negative-subtle focus-visible:text-action-ink-negative-subtle disabled:text-action-ink-negative-muted\",\n notice:\n \"text-action-ink-notice-normal hover:text-action-ink-notice-subtle focus-visible:text-action-ink-notice-subtle disabled:text-action-ink-notice-muted\",\n info: \"text-action-ink-info-normal hover:text-action-ink-info-subtle focus-visible:text-action-ink-info-subtle disabled:text-action-ink-info-muted\",\n neutral:\n \"text-action-ink-neutral-normal hover:text-action-ink-neutral-subtle focus-visible:text-action-ink-neutral-subtle disabled:text-action-ink-neutral-muted\",\n white:\n \"text-surface-ink-white-subtle hover:text-surface-ink-white-normal focus-visible:text-surface-ink-white-normal disabled:text-surface-ink-white-muted\",\n };\n return colorMap[color] || colorMap.primary;\n };\n\n const buttonContent = (\n <>\n {isLoading ? (\n <ClipLoader color={getLoaderColor()} size={getIconSize()} />\n ) : icon ? (\n <Icon\n name={icon}\n size={getIconSize()}\n className={getIconColorClass()}\n />\n ) : iconElement ? (\n <span className={getIconColorClass()}>{iconElement}</span>\n ) : null}\n </>\n );\n\n return (\n <Comp\n className={cn(\n iconButtonVariants({\n color,\n size,\n isLoading,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ExternalLink } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none decoration-1 underline-offset-4\",\n {\n variants: {\n type: {\n anchor: \"hover:underline\",\n action: \"no-underline cursor-pointer\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"text-body-xsmall-medium gap-1\",\n small: \"text-body-small-medium gap-1\",\n medium: \"text-body-medium-medium gap-1.5\",\n large: \"text-body-large-medium gap-1.5\",\n },\n isIconOnly: {\n true: \"no-underline\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"cursor-pointer\",\n },\n },\n compoundVariants: [\n // Primary color variants\n {\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:text-action-ink-primary-subtle\n hover:decoration-action-outline-primary-hover \n disabled:text-action-ink-primary-disabled\n focus:text-action-ink-primary-hover\n `,\n },\n // Positive color variants\n {\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:text-action-ink-positive-subtle\n hover:decoration-action-outline-positive-hover \n hover:text-action-ink-positive-hover \n disabled:text-action-ink-positive-disabled\n focus:text-action-ink-positive-hover\n `,\n },\n // Negative color variants\n {\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:text-action-ink-negative-subtle\n hover:decoration-action-outline-negative-hover \n hover:text-action-ink-negative-hover \n disabled:text-action-ink-negative-disabled\n focus:text-action-ink-negative-hover\n `,\n },\n // Notice color variants\n {\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:text-action-ink-notice-subtle\n hover:decoration-action-outline-notice-hover \n hover:text-action-ink-notice-hover \n disabled:text-action-ink-notice-disabled\n focus:text-action-ink-notice-hover\n `,\n },\n // Info color variants\n {\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:text-action-ink-info-subtle\n hover:decoration-action-outline-info-hover \n hover:text-action-ink-info-hover \n disabled:text-action-ink-info-disabled\n focus:text-action-ink-info-hover\n `,\n },\n // Neutral color variants\n {\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:text-action-ink-neutral-subtle\n hover:decoration-action-outline-neutral-hover \n hover:text-action-ink-neutral-hover \n disabled:text-action-ink-neutral-disabled\n focus:text-action-ink-neutral-hover\n `,\n },\n {\n color: \"white\",\n class: `text-surface-ink-white-normal \n hover:text-surface-ink-white-subtle\n hover:text-action-ink-white-hover \n disabled:text-action-ink-white-muted\n focus:text-action-ink-white-hover\n `,\n },\n ],\n defaultVariants: {\n type: \"anchor\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\"> {\n type?: \"anchor\" | \"action\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n showIcon?: boolean;\n icon?: React.ReactNode;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n className,\n type = \"anchor\",\n color = \"primary\",\n size = \"medium\",\n isIconOnly = false,\n isDisabled = false,\n asChild = false,\n showIcon = false,\n icon,\n leadingIcon,\n trailingIcon,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"a\";\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // Icon size based on link size\n const iconSize = {\n xsmall: 12,\n small: 14,\n medium: 16,\n large: 18,\n }[size];\n\n // Determine what to show as trailing icon\n // Priority: trailingIcon > (showIcon && icon) > (showIcon && default ExternalLink)\n const finalTrailingIcon =\n trailingIcon || (showIcon && (icon || <ExternalLink size={iconSize} />));\n\n const linkContent = (\n <>\n {leadingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{leadingIcon}</span>\n )}\n {!isIconOnly && children}\n {isIconOnly && children}\n {finalTrailingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{finalTrailingIcon}</span>\n )}\n {isIconOnly &&\n (leadingIcon || finalTrailingIcon || (\n <ExternalLink size={iconSize} />\n ))}\n </>\n );\n\n return (\n <Comp\n className={cn(\n linkVariants({\n type,\n color,\n size,\n isIconOnly,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n onClick={handleClick}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n {...props}\n >\n {linkContent}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\nexport { Link, linkVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Icon } from \"../../lib/icons\";\nimport { Button } from \"../Button\";\nimport { IconButton } from \"../IconButton\";\nimport { Link } from \"../Link\";\nimport { cn } from \"../../lib/utils\";\n\nconst alertVariants = cva(\n \"relative flex gap-4 p-4 rounded-large transition-colors\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-subtle\",\n },\n // Intense emphasis\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-intense\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertIconVariants = cva(\n \"flex-shrink-0 rounded-full flex items-center justify-center mt-1\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"text-white\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - colored backgrounds with white icons\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-action-ink-positive-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \" text-action-ink-negative-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \" text-action-ink-notice-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \" text-action-ink-info-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \" text-action-ink-neutral-normal\",\n },\n // Intense emphasis - white backgrounds with colored icons\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \" text-action-fill-info-default\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \" text-action-fill-neutral-default\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertTextVariants = cva(\"\", {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - dark text\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"text-surface-ink-neutral-normal\",\n },\n // Intense emphasis - white text\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n});\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /**\n * The visual emphasis level of the alert\n */\n emphasis?: \"subtle\" | \"intense\";\n /**\n * The intent/type of the alert\n */\n intent?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * The title of the alert\n */\n title?: string;\n /**\n * The body content of the alert\n */\n children: React.ReactNode;\n /**\n * Whether the alert should take full width\n * When true, actions are placed to the right of the content\n * When false, actions are placed below the content\n */\n isFullWidth?: boolean;\n /**\n * Callback fired when the close button is clicked\n */\n onClose?: () => void;\n /**\n * Custom icon to display. If not provided, an icon will be automatically selected based on intent\n */\n icon?: React.ReactNode;\n /**\n * Action button text. If provided, a button will be automatically created based on the variant\n */\n actionButtonText?: string;\n /**\n * Callback fired when the action button is clicked\n */\n onActionButtonClick?: () => void;\n /**\n * Action link to display\n */\n actionLinkText?: string;\n /**\n * Callback fired when the action link is clicked\n */\n onActionLinkClick?: () => void;\n /**\n * Custom class name for the alert\n */\n className?: string;\n}\n\nconst getDefaultIcon = (\n intent: AlertProps[\"intent\"],\n emphasis: AlertProps[\"emphasis\"]\n) => {\n const iconSize = 16;\n const iconColor = emphasis === \"intense\" ? \"currentColor\" : \"currentColor\";\n\n switch (emphasis) {\n case \"intense\":\n return (\n <Icon\n name=\"info\"\n size={iconSize}\n className=\"text-white\"\n aria-hidden=\"true\"\n />\n );\n default:\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n }\n};\n\nconst getButtonColor = (\n intent: AlertProps[\"intent\"]\n): \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\" => {\n switch (intent) {\n case \"positive\":\n return \"positive\";\n case \"negative\":\n return \"negative\";\n case \"notice\":\n return \"notice\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n return \"neutral\";\n default:\n return \"neutral\";\n }\n};\n\nconst getActionButton = (\n actionButtonText: string | undefined,\n onActionButtonClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Button\n variant=\"secondary\"\n color=\"white\"\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Button\n variant=\"secondary\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n};\nconst getActionLink = (\n actionButtonText: string | undefined,\n onActionLinkClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Link\n type=\"action\"\n color=\"white\"\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Link\n type=\"action\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n};\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n emphasis = \"subtle\",\n intent = \"info\",\n title,\n children,\n isFullWidth = false,\n onClose,\n icon,\n actionButtonText,\n onActionButtonClick,\n actionLinkText,\n onActionLinkClick,\n ...props\n },\n ref\n ) => {\n const displayIcon = icon ?? getDefaultIcon(intent, emphasis);\n const actionButton = getActionButton(\n actionButtonText,\n onActionButtonClick,\n emphasis,\n intent\n );\n const actionLink = getActionLink(\n actionLinkText,\n onActionLinkClick,\n emphasis,\n intent\n );\n const hasActions = actionButton || actionLink;\n\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ emphasis, intent }), className)}\n role=\"alert\"\n {...props}\n >\n {/* Icon */}\n <div\n className={cn(\n alertIconVariants({ emphasis, intent }),\n \"h-5 w-5 shrink-0\"\n )}\n >\n {displayIcon}\n </div>\n\n {isFullWidth ? (\n /* Full Width Layout: Icon, Content, Actions/Close in one row */\n <div className=\"flex-1 min-w-0 flex items-center justify-between gap-4\">\n {/* Content: Title and Body */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n </div>\n {/* Actions and Close - aligned to the right, vertically centered */}\n <div className=\"flex items-center gap-4 shrink-0\">\n {hasActions && (\n <>\n {actionButton}\n {actionLink}\n </>\n )}\n {onClose && (\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n )}\n </div>\n </div>\n ) : (\n /* Not Full Width Layout: Icon and Content in row, Actions below, Close top-right */\n <div className=\"flex-1 min-w-0 relative\">\n {/* Close button - positioned top right */}\n {onClose && (\n <div className=\"absolute top-0 right-0\">\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex flex-col gap-3 pr-8\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n\n {/* Actions - below body text, left-aligned */}\n {hasActions && (\n <div className=\"flex items-center gap-4\">\n {actionButton}\n {actionLink}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert, alertVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Type for NumberFormat parts (not available in ES6 lib)\ntype NumberFormatPart = {\n type:\n | \"currency\"\n | \"decimal\"\n | \"fraction\"\n | \"group\"\n | \"infinity\"\n | \"integer\"\n | \"literal\"\n | \"minus\"\n | \"nan\"\n | \"plus\"\n | \"percentSign\"\n | \"unit\";\n value: string;\n};\n\nexport interface AmountProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /**\n * The numeric amount value to display\n */\n value: number;\n /**\n * Currency code (e.g., \"USD\", \"INR\", \"EUR\", \"GBP\")\n */\n currency?: string;\n /**\n * Locale for number formatting (default: \"en-US\")\n */\n locale?: string;\n /**\n * Minimum number of decimal places (default: 2)\n */\n minimumFractionDigits?: number;\n /**\n * Maximum number of decimal places (default: 2)\n */\n maximumFractionDigits?: number;\n /**\n * Whether to show the currency code/symbol (default: true)\n */\n showCurrency?: boolean;\n /**\n * Custom className for the component\n */\n className?: string;\n}\n\n/**\n * Amount component that displays formatted currency amounts with decimal numbers in superscript.\n *\n * @example\n * ```tsx\n * <Amount value={1234.56} currency=\"USD\" />\n * // Renders: USD 1,234.<sup>56</sup>\n *\n * <Amount value={5000} currency=\"INR\" />\n * // Renders: INR 5,000.<sup>00</sup>\n * ```\n */\nconst Amount = React.forwardRef<HTMLSpanElement, AmountProps>(\n (\n {\n value,\n currency,\n locale = \"en-US\",\n minimumFractionDigits = 2,\n maximumFractionDigits = 2,\n showCurrency = true,\n className,\n ...props\n },\n ref\n ) => {\n // Parse the formatted amount into parts\n const parts = React.useMemo(() => {\n // Always format as a number (not currency style) to get number formatting\n const formatter = new Intl.NumberFormat(locale, {\n minimumFractionDigits,\n maximumFractionDigits,\n });\n\n // Use formatToParts to get structured parts\n const formattedParts = (\n formatter as Intl.NumberFormat & {\n formatToParts(value: number): NumberFormatPart[];\n }\n ).formatToParts(value);\n\n let integerPart = \"\";\n let decimalPart = \"\";\n let decimalSeparator = \".\";\n\n formattedParts.forEach((part: NumberFormatPart) => {\n switch (part.type) {\n case \"integer\":\n integerPart += part.value;\n break;\n case \"decimal\":\n decimalSeparator = part.value;\n break;\n case \"fraction\":\n decimalPart = part.value;\n break;\n case \"group\":\n integerPart += part.value;\n break;\n }\n });\n\n // Use currency code as prefix if provided and showCurrency is true\n const currencyPrefix = currency && showCurrency ? `${currency} ` : \"\";\n\n return {\n currency: currencyPrefix,\n integer: integerPart,\n decimal: decimalPart,\n decimalSeparator: decimalSeparator,\n hasDecimal: decimalPart.length > 0,\n };\n }, [\n value,\n currency,\n locale,\n minimumFractionDigits,\n maximumFractionDigits,\n showCurrency,\n ]);\n\n return (\n <span\n ref={ref}\n className={cn(\"inline-flex items-baseline\", className)}\n {...props}\n >\n {parts.currency && <span>{parts.currency}</span>}\n <span className=\"ml-[0.2em]\">{parts.integer}</span>\n {parts.hasDecimal && (\n <>\n <span className=\"mx-[0.05em]\">{parts.decimalSeparator}</span>\n <sup className=\"text-[0.75em] leading-none\">{parts.decimal}</sup>\n </>\n )}\n </span>\n );\n }\n);\n\nAmount.displayName = \"Amount\";\n\nexport { Amount };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Helper function to get the text utility class name\nfunction getTextClassName(\n variant: \"display\" | \"heading\" | \"body\" | \"caption\" = \"body\",\n size:\n | \"2xlarge\"\n | \"xlarge\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"xsmall\" = \"medium\",\n weight: \"regular\" | \"medium\" | \"semibold\" = \"regular\",\n color:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\" = \"default\"\n): string {\n // Build the base class name\n let baseClass = `text-${variant}`;\n\n // Add size\n if (size) {\n baseClass += `-${size}`;\n }\n\n // Add weight\n if (weight) {\n baseClass += `-${weight}`;\n }\n\n // Add color class separately\n const colorClass = `text-color-${color}`;\n\n return `${baseClass} ${colorClass}`;\n}\n\nexport interface TextProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\"> {\n children: React.ReactNode;\n variant?: \"display\" | \"heading\" | \"body\" | \"caption\";\n size?: \"2xlarge\" | \"xlarge\" | \"large\" | \"medium\" | \"small\" | \"xsmall\";\n weight?: \"regular\" | \"medium\" | \"semibold\";\n color?:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\";\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\" | \"label\";\n className?: string;\n}\n\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n (\n {\n className,\n variant = \"body\",\n size = \"medium\",\n weight = \"regular\",\n color = \"default\",\n as = \"p\",\n children,\n ...props\n },\n ref\n ) => {\n const Component = as;\n\n const textClass = getTextClassName(variant, size, weight, color);\n\n return React.createElement(\n Component,\n {\n className: cn(textClass, className),\n ref,\n ...props,\n },\n children\n );\n }\n);\n\nText.displayName = \"Text\";\n\nexport { Text };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text/Text\";\n\ntype AvatarColor = \"a1\" | \"a2\" | \"a3\" | \"a4\" | \"a5\";\ntype AvatarAppearance = \"default\" | \"inverse\";\n\nconst inverseColorClasses: Record<AvatarColor, string> = {\n a1: \"bg-avatar-fill-a1-on-bg text-avatar-fill-a1-bg\",\n a2: \"bg-avatar-fill-a2-on-bg text-avatar-fill-a2-bg\",\n a3: \"bg-avatar-fill-a3-on-bg text-avatar-fill-a3-bg\",\n a4: \"bg-avatar-fill-a4-on-bg text-avatar-fill-a4-bg\",\n a5: \"bg-avatar-fill-a5-on-bg text-avatar-fill-a5-bg\",\n};\n\nconst avatarVariants = cva(\n \"inline-flex items-center justify-center font-medium text-center select-none\",\n {\n variants: {\n color: {\n a1: \"bg-avatar-fill-a1-bg text-avatar-fill-a1-on-bg\",\n a2: \"bg-avatar-fill-a2-bg text-avatar-fill-a2-on-bg\",\n a3: \"bg-avatar-fill-a3-bg text-avatar-fill-a3-on-bg\",\n a4: \"bg-avatar-fill-a4-bg text-avatar-fill-a4-on-bg\",\n a5: \"bg-avatar-fill-a5-bg text-avatar-fill-a5-on-bg\",\n },\n size: {\n small: \"h-[24px] w-[24px] text-body-medium-regular rounded-large\",\n medium: \"h-[32px] w-[32px] text-body-medium-regular rounded-xlarge\",\n xlarge: \"h-[36px] w-[36px] text-body-medium-regular rounded-xlarge\",\n },\n },\n defaultVariants: {\n color: \"a1\",\n size: \"medium\",\n },\n }\n);\n\nconst statusVariants = cva(\n \"absolute flex items-center justify-center rounded-full border-2 border-surface-fill-neutral-intense\",\n {\n variants: {\n size: {\n small: \"h-5 w-5 -bottom-0.5 -right-0.5\",\n medium: \"h-6 w-6 -bottom-1 -right-1\",\n xlarge: \"h-6 w-6 -bottom-1 -right-1\",\n },\n statusColor: {\n positive: \"bg-action-fill-positive-default\",\n negative: \"bg-action-fill-negative-default\",\n notice: \"bg-action-fill-notice-default\",\n info: \"bg-action-fill-info-default\",\n neutral: \"bg-action-fill-neutral-default\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n statusColor: \"notice\",\n },\n }\n);\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof avatarVariants> {\n /**\n * The color variant of the avatar\n */\n color?: AvatarColor;\n /**\n * Whether to invert the background/text colors\n */\n appearance?: AvatarAppearance;\n /**\n * The size of the avatar\n */\n size?: \"small\" | \"medium\" | \"xlarge\";\n /**\n * The initials or text to display in the avatar\n */\n children?: React.ReactNode;\n /**\n * Image source for the avatar (takes precedence over children)\n */\n src?: string;\n /**\n * Alt text for the avatar image\n */\n alt?: string;\n /**\n * Whether to show a status indicator\n */\n showStatus?: boolean;\n /**\n * The color of the status indicator\n */\n statusColor?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * Custom icon or content for the status indicator\n */\n statusIcon?: React.ReactNode;\n /**\n * Optional text label to display next to the avatar\n */\n label?: string;\n /**\n * Optional trailing component (icon or other element) to display after the label\n */\n trailingComponent?: React.ReactNode;\n /**\n * Custom class name for the avatar\n */\n className?: string;\n /**\n * Custom class name for the container (when label or trailingComponent is provided)\n */\n containerClassName?: string;\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n className,\n appearance = \"default\",\n color,\n size,\n children,\n src,\n alt,\n showStatus = false,\n statusColor = \"notice\",\n statusIcon,\n label,\n trailingComponent,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = React.useState(false);\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n const getStatusIconSize = () => {\n switch (size) {\n case \"small\":\n return \"h-3.5 w-3.5\";\n case \"medium\":\n return \"h-4 w-4\";\n default:\n return \"h-4 w-4\";\n }\n };\n\n const getTextSize = () => {\n switch (size) {\n case \"small\":\n return \"small\";\n case \"medium\":\n return \"medium\";\n default:\n return \"medium\";\n }\n };\n\n const resolvedColor: AvatarColor = color ?? \"a1\";\n const avatarElement = (\n <div className=\"relative inline-block\">\n <div\n className={cn(\n avatarVariants({ color: resolvedColor, size }),\n appearance === \"inverse\"\n ? inverseColorClasses[resolvedColor]\n : undefined,\n className\n )}\n {...props}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt || \"Avatar\"}\n className={cn(\n \"h-full w-full object-cover\",\n size === \"small\" ? \"rounded-large\" : \"rounded-xlarge\"\n )}\n onError={handleImageError}\n />\n ) : (\n children\n )}\n </div>\n {showStatus && (\n <div className={cn(statusVariants({ size, statusColor }))}>\n {statusIcon && (\n <span\n className={cn(\n \"text-action-ink-on-primary-normal\",\n getStatusIconSize()\n )}\n >\n {statusIcon}\n </span>\n )}\n </div>\n )}\n </div>\n );\n\n // If no label or trailing component, return just the avatar\n if (!label && !trailingComponent) {\n return <div ref={ref}>{avatarElement}</div>;\n }\n\n // Otherwise, return avatar with label and/or trailing component\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex items-center gap-3\", containerClassName)}\n >\n {avatarElement}\n {label && (\n <Text\n variant=\"body\"\n size={getTextSize()}\n weight=\"medium\"\n color=\"default\"\n as=\"span\"\n >\n {label}\n </Text>\n )}\n {trailingComponent && (\n <span className=\"ml-auto\">{trailingComponent}</span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { Avatar, avatarVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center whitespace-nowrap transition-colors\",\n {\n variants: {\n variant: {\n light: \"\",\n filled: \"\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n size: {\n small:\n \"px-2 h-[var(--size-20)] gap-2 rounded-large text-body-small-medium\",\n medium:\n \"px-3 h-[var(--size-24)] gap-3 rounded-large text-body-medium-medium\",\n large:\n \"px-4 h-[var(--size-28)] gap-3 rounded-xlarge text-body-large-medium\",\n },\n },\n compoundVariants: [\n // Light variant colors\n {\n variant: \"light\",\n color: \"primary\",\n class: \"bg-action-fill-primary-faded text-action-ink-primary-normal\",\n },\n {\n variant: \"light\",\n color: \"positive\",\n class: \"bg-action-fill-positive-faded text-action-ink-positive-normal\",\n },\n {\n variant: \"light\",\n color: \"negative\",\n class: \"bg-action-fill-negative-faded text-action-ink-negative-normal\",\n },\n {\n variant: \"light\",\n color: \"notice\",\n class: \"bg-action-fill-notice-faded text-action-ink-notice-normal\",\n },\n {\n variant: \"light\",\n color: \"info\",\n class: \"bg-action-fill-info-faded text-action-ink-info-normal\",\n },\n {\n variant: \"light\",\n color: \"neutral\",\n class: \"bg-action-fill-neutral-faded text-action-ink-neutral-normal\",\n },\n // Filled variant colors\n {\n variant: \"filled\",\n color: \"primary\",\n class:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"positive\",\n class:\n \"bg-action-fill-positive-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"negative\",\n class:\n \"bg-action-fill-negative-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"notice\",\n class:\n \"bg-action-fill-notice-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"info\",\n class: \"bg-action-fill-info-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"neutral\",\n class:\n \"bg-action-fill-neutral-default text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n variant: \"light\",\n color: \"info\",\n size: \"medium\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Whether to show a dot indicator on the left side\n */\n showDot?: boolean;\n /**\n * Custom class name for the badge\n */\n className?: string;\n /**\n * Badge label/content\n */\n children: React.ReactNode;\n /**\n * The color variant of the badge\n */\n color?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (\n { className, variant, size, color, showDot = false, children, ...props },\n ref\n ) => {\n const getDotColor = () => {\n if (variant === \"filled\") {\n return \"bg-action-ink-on-primary-normal\";\n }\n // Light variant - use the corresponding action color\n switch (color) {\n case \"primary\":\n return \"bg-action-fill-primary-default\";\n case \"positive\":\n return \"bg-action-fill-positive-default\";\n case \"negative\":\n return \"bg-action-fill-negative-default\";\n case \"notice\":\n return \"bg-action-fill-notice-default\";\n case \"info\":\n return \"bg-action-fill-info-default\";\n case \"neutral\":\n return \"bg-action-fill-neutral-default\";\n default:\n return \"bg-action-fill-info-default\";\n }\n };\n\n const getDotSize = () => {\n if (size === \"small\") {\n return \"h-2 w-2\";\n }\n if (size === \"medium\") {\n return \"h-[6px] w-[6px]\";\n }\n return \"h-3 w-3\";\n };\n\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant, size, color }), className)}\n {...props}\n >\n {showDot && (\n <span\n className={cn(\"rounded-full\", getDotColor(), getDotSize())}\n aria-hidden=\"true\"\n />\n )}\n {children}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonGroupVariants = cva(\"inline-flex\", {\n variants: {\n variant: {\n attached: \"\",\n separated: \"\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isFullWidth: {\n true: \"w-full\",\n false: \"w-fit\",\n },\n isDisabled: {\n true: \"pointer-events-none opacity-50\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"separated\",\n orientation: \"horizontal\",\n class: \"gap-2\",\n },\n {\n variant: \"separated\",\n orientation: \"vertical\",\n class: \"gap-2\",\n },\n ],\n defaultVariants: {\n variant: \"attached\",\n orientation: \"horizontal\",\n size: \"medium\",\n isFullWidth: false,\n isDisabled: false,\n },\n});\n\nexport interface ButtonGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof buttonGroupVariants> {\n children: React.ReactNode;\n variant?: \"attached\" | \"separated\";\n isDisabled?: boolean;\n isFullWidth?: boolean;\n /**\n * Value for controlled button group\n */\n value?: string | number;\n /**\n * Callback when value changes (for controlled mode)\n */\n onChange?: (value: string | number) => void;\n}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n className,\n variant = \"attached\",\n orientation = \"horizontal\",\n size = \"medium\",\n isDisabled = false,\n isFullWidth = false,\n value,\n onChange,\n children,\n ...props\n },\n ref\n ) => {\n const childrenArray = React.Children.toArray(children);\n const isControlled = value !== undefined && onChange !== undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n buttonGroupVariants({\n variant,\n orientation,\n size,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n role=\"group\"\n {...props}\n >\n {childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n const isFirst = index === 0;\n const isLast = index === childrenArray.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n // Get value from child props for controlled mode\n const childValue = child.props.value;\n const isSelected = isControlled && childValue === value;\n\n // Build classes to apply border radius removal and borders\n let groupClasses = \"\";\n\n // Only apply connected styling for \"attached\" variant\n if (variant === \"attached\") {\n if (orientation === \"horizontal\") {\n if (isFirst) {\n groupClasses = \"rounded-r-none border-r-0\";\n } else if (isLast) {\n groupClasses = \"rounded-l-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-r-0\";\n }\n } else {\n // vertical\n if (isFirst) {\n groupClasses = \"rounded-b-none border-b-0\";\n } else if (isLast) {\n groupClasses = \"rounded-t-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-b-0\";\n }\n }\n }\n\n // Determine the variant to use\n const childVariant = child.props.variant;\n const hasExplicitVariant = childVariant !== undefined;\n\n // For controlled mode with explicit variant, maintain the variant\n // and add styling classes for selected state\n let finalVariant = childVariant;\n let selectedStateClasses = \"\";\n\n if (isControlled) {\n if (hasExplicitVariant) {\n // Keep the child's variant and add selected state styling\n if (isSelected && childVariant === \"tertiary\") {\n selectedStateClasses = \"bg-action-fill-primary-faded\";\n } else if (isSelected && childVariant === \"secondary\") {\n selectedStateClasses =\n \"bg-action-fill-primary-faded border-action-outline-primary-faded\";\n }\n } else {\n // No explicit variant: use primary for selected, secondary for unselected\n finalVariant = isSelected ? \"primary\" : \"secondary\";\n }\n }\n\n // Clone child and add our classes and handlers\n return React.cloneElement(child, {\n ...child.props,\n className: cn(\n child.props.className,\n groupClasses,\n isFullWidth && \"flex-1\",\n // For attached variant, ensure proper layering\n variant === \"attached\" && \"relative\",\n variant === \"attached\" && !isSelected && \"hover:z-10 focus:z-10\",\n variant === \"attached\" && isSelected && \"z-20\",\n // Apply selected state classes for explicit variants\n selectedStateClasses\n ),\n disabled: isDisabled || child.props.disabled,\n size: size || child.props.size,\n // If controlled and has value, handle click\n onClick:\n isControlled && childValue !== undefined\n ? (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n if (!isDisabled && !child.props.disabled) {\n onChange(childValue);\n }\n }\n : child.props.onClick,\n variant: finalVariant,\n } as any);\n })}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n\nexport { ButtonGroup, buttonGroupVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormFooterProps {\n /**\n * Helper text to display on the left side\n */\n helperText?: string;\n /**\n * Trailing text to display on the right side (e.g., character count)\n */\n trailingText?: string;\n /**\n * Validation state that affects styling and icon display\n */\n validationState?: \"default\" | \"positive\" | \"negative\";\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the footer is in a disabled state\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the helper text\n */\n helperTextClassName?: string;\n /**\n * Custom class name for the trailing text\n */\n trailingTextClassName?: string;\n}\n\nconst FormFooter = React.forwardRef<HTMLDivElement, FormFooterProps>(\n (\n {\n helperText,\n trailingText,\n validationState = \"default\",\n size = \"medium\",\n isDisabled = false,\n className,\n helperTextClassName,\n trailingTextClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1\",\n },\n medium: {\n textClassName: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-1\",\n },\n large: {\n textClassName: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-1.5\",\n },\n } as const;\n\n const config = sizeConfig[size];\n\n // Determine text color based on validation state and disabled state\n const getTextColor = () => {\n if (isDisabled) return \"text-surface-ink-neutral-disabled\";\n if (validationState === \"positive\")\n return \"text-feedback-ink-positive-intense\";\n if (validationState === \"negative\")\n return \"text-feedback-ink-negative-subtle\";\n if (validationState === \"default\")\n return \"text-surface-ink-neutral-subtle\";\n return \"text-surface-ink-neutral-subtle\";\n };\n const helperTextColorClass = getTextColor();\n const trailingTextColorClass = getTextColor();\n\n // Don't render anything if there's no content\n if (!helperText && !trailingText) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n {helperText && (\n <div className={cn(\"flex items-center\", config.gap)}>\n {validationState === \"positive\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-positive-intense shrink-0\"\n >\n <path\n d=\"M3 7L6 10L11 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n {validationState === \"negative\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-negative-subtle shrink-0\"\n >\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M7 4V7.5M7 10V9.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n <span\n className={cn(\n config.textClassName,\n helperTextColorClass,\n \"italic font-size-100 leading-100\",\n helperTextClassName\n )}\n >\n {helperText}\n </span>\n </div>\n )}\n\n {trailingText && (\n <span\n className={cn(\n config.textClassName,\n trailingTextColorClass,\n \"font-size-100 leading-100 shrink-0\",\n trailingTextClassName\n )}\n >\n {trailingText}\n </span>\n )}\n </div>\n );\n }\n);\n\nFormFooter.displayName = \"FormFooter\";\n\nexport { FormFooter };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\nimport { Icon } from \"../../lib/icons\";\n\nconst checkboxVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 transition-all cursor-pointer box-border\",\n {\n variants: {\n size: {\n small: \"w-[10px] h-[10px] rounded-small border-[1.5px]\",\n medium: \"w-[12px] h-[12px] rounded-small border-[1.5px]\",\n large: \"w-[16px] h-[16px] rounded-medium border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover focus:ring-2 ring-action-outline-negative-faded-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isIndeterminate: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"border-action-outline-neutral-faded hover:bg-action-fill-neutral-faded hover:border-action-outline-neutral-faded\",\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover border-action-fill-primary-default\",\n },\n // Checked or Indeterminate state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n // Indeterminate state - none validation\n {\n isIndeterminate: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default border-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover\",\n },\n // Indeterminate state - error validation (same as checked error)\n {\n isIndeterminate: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isIndeterminate: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the checkbox\n */\n label?: string;\n /**\n * Error text to display below the checkbox\n */\n errorText?: string;\n /**\n * Size of the checkbox\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the checkbox\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the checkbox is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the checkbox is in an indeterminate state\n */\n isIndeterminate?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isIndeterminate = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rippleTimeoutRef = React.useRef<number | null>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n // Set indeterminate property on the input element\n React.useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n };\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled && !showRipple) {\n // Clear any existing timeout\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n\n setShowRipple(true);\n rippleTimeoutRef.current = setTimeout(() => {\n setShowRipple(false);\n rippleTimeoutRef.current = null;\n }, 400); // Match animation duration (0.4s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n triggerRipple();\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n triggerRipple();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 10,\n },\n medium: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 12,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-medium-regular\",\n iconSize: 14,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col px-2\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"checkbox\"\n aria-checked={isIndeterminate ? \"mixed\" : isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n checkboxVariants({\n size,\n validationState,\n isChecked: isChecked && !isIndeterminate,\n isIndeterminate,\n isDisabled,\n }),\n className\n )}\n >\n {/* Checkmark Icon */}\n {isChecked && !isIndeterminate && (\n <Icon\n name=\"tick\"\n size={config.iconSize}\n className=\"text-action-ink-on-primary-normal\"\n />\n )}\n\n {/* Indeterminate Icon */}\n {isIndeterminate && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-action-ink-on-primary-normal\"\n >\n <path\n d=\"M3 6H9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst counterVariants = cva(\n \"inline-flex items-center justify-center transition-colors\",\n {\n variants: {\n size: {\n small:\n \"text-body-xsmall-medium rounded-small px-1 py-0.5 min-w-[20px] h-[16px]\",\n medium:\n \"text-body-small-medium rounded-medium px-2 py-1 min-w-[24px] h-[20px]\",\n large:\n \"text-body-medium-medium rounded-medium px-2 py-1 min-w-[28px] h-[24px]\",\n },\n color: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n information: \"\",\n neutral: \"\",\n primary: \"\",\n },\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n },\n compoundVariants: [\n // Positive - Subtle\n {\n color: \"positive\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-positive-subtle text-feedback-ink-positive-intense\",\n },\n // Positive - Intense\n {\n color: \"positive\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-positive-intense text-action-ink-on-primary-normal\",\n },\n // Negative - Subtle\n {\n color: \"negative\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-negative-subtle text-feedback-ink-negative-subtle\",\n },\n // Negative - Intense\n {\n color: \"negative\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-negative-intense text-action-ink-on-primary-normal\",\n },\n // Notice - Subtle\n {\n color: \"notice\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-notice-subtle text-feedback-ink-notice-subtle\",\n },\n // Notice - Intense\n {\n color: \"notice\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-notice-intense text-action-ink-on-primary-normal\",\n },\n // Information - Subtle\n {\n color: \"information\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-info-subtle text-feedback-ink-info-subtle\",\n },\n // Information - Intense\n {\n color: \"information\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-info-intense text-action-ink-on-primary-normal\",\n },\n // Neutral - Subtle\n {\n color: \"neutral\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-neutral-subtle text-surface-ink-neutral-normal\",\n },\n // Neutral - Intense\n {\n color: \"neutral\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-neutral-intense text-action-ink-on-primary-normal\",\n },\n // Primary - Subtle\n {\n color: \"primary\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-primary-subtle text-surface-ink-primary-normal\",\n },\n // Primary - Intense\n {\n color: \"primary\",\n emphasis: \"intense\",\n class:\n \"bg-surface-fill-primary-intense text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n color: \"neutral\",\n emphasis: \"subtle\",\n },\n }\n);\n\ntype CounterVariantProps = VariantProps<typeof counterVariants>;\nexport type CounterSize = NonNullable<CounterVariantProps[\"size\"]>;\nexport type CounterColor = NonNullable<CounterVariantProps[\"color\"]>;\nexport type CounterEmphasis = NonNullable<CounterVariantProps[\"emphasis\"]>;\n\nexport interface CounterProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /**\n * The numerical value to display\n */\n value: number | string;\n /**\n * Maximum value to display before showing overflow indicator (e.g., \"99+\")\n */\n max?: number;\n /**\n * Custom class name for the counter\n */\n className?: string;\n /**\n * Size of the counter\n */\n size?: CounterSize;\n /**\n * Color variant of the counter\n */\n color?: CounterColor;\n /**\n * Visual emphasis level\n */\n emphasis?: CounterEmphasis;\n}\n\nconst Counter = React.forwardRef<HTMLSpanElement, CounterProps>(\n (\n {\n value,\n max,\n size = \"medium\",\n color = \"neutral\",\n emphasis = \"subtle\",\n className,\n ...props\n },\n ref\n ) => {\n // Handle max value logic\n const displayValue = React.useMemo(() => {\n if (max !== undefined && typeof value === \"number\" && value > max) {\n return `${max}+`;\n }\n return value;\n }, [value, max]);\n\n return (\n <span\n ref={ref}\n className={cn(\n counterVariants({\n size,\n color,\n emphasis,\n }),\n className\n )}\n {...props}\n >\n {displayValue}\n </span>\n );\n }\n);\n\nCounter.displayName = \"Counter\";\n\nexport { Counter, counterVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\n\nconst tooltipVariants = cva(\n \"fixed z-50 bg-popup-fill-intense text-action-ink-on-primary-normal rounded-medium border border-popup-outline-subtle flex flex-col p-4 rounded-xlarge min-w-[200px] max-w-[300px] transition-opacity duration-200\",\n {\n variants: {\n isVisible: {\n true: \"opacity-100 pointer-events-auto shadow-[0_4px_20px_rgba(0,0,0,0.15)]\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n isVisible: false,\n },\n }\n);\n\nconst tooltipArrowVariants = cva(\n \"absolute w-0 h-0 border-solid border-[6px] -translate-x-1/2\",\n {\n variants: {\n placement: {\n \"top-start\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n top: \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"top-end\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"bottom-start\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n bottom:\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n \"bottom-end\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n },\n },\n defaultVariants: {\n placement: \"top\",\n },\n }\n);\n\nexport interface TooltipProps {\n /**\n * The trigger element that the tooltip will attach to\n */\n children: React.ReactElement;\n /**\n * Heading text for the tooltip\n */\n heading?: string;\n /**\n * Description text for the tooltip\n */\n description: string;\n /**\n * Placement of the tooltip relative to the trigger\n */\n placement?:\n | \"top-start\"\n | \"top\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"bottom-end\";\n /**\n * Whether to show the arrow/anchor\n */\n showArrow?: boolean;\n /**\n * Custom class name for the tooltip container\n */\n className?: string;\n /**\n * Delay before showing tooltip (in milliseconds)\n */\n delay?: number;\n /**\n * Whether the tooltip is disabled\n */\n disabled?: boolean;\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n heading,\n description,\n placement = \"top\",\n showArrow = true,\n className,\n delay = 200,\n disabled = false,\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const [arrowPosition, setArrowPosition] = React.useState({ left: 0 });\n const [actualPlacement, setActualPlacement] = React.useState<\n \"top-start\" | \"top\" | \"top-end\" | \"bottom-start\" | \"bottom\" | \"bottom-end\"\n >(placement);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n\n const calculatePosition = React.useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const gap = 8; // 8px gap between trigger and tooltip\n const arrowSize = 6; // Size of the arrow\n const viewportPadding = 8; // Minimum padding from viewport edges\n\n let top = 0;\n let left = 0;\n let currentPlacement = placement;\n\n // Calculate initial position based on placement\n switch (placement) {\n case \"top-start\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.left;\n break;\n case \"top\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"top-end\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.left;\n break;\n case \"bottom\":\n top = triggerRect.bottom + gap + arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n }\n\n // Get viewport dimensions\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Adjust horizontal position to keep tooltip within viewport\n if (left < viewportPadding) {\n // Tooltip would overflow on the left\n left = viewportPadding;\n } else if (left + tooltipRect.width > viewportWidth - viewportPadding) {\n // Tooltip would overflow on the right\n left = viewportWidth - tooltipRect.width - viewportPadding;\n }\n\n // Adjust vertical position to keep tooltip within viewport\n if (top < viewportPadding) {\n // Tooltip would overflow at the top\n // Try to flip to bottom if there's more space there\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n if (spaceBelow > spaceAbove) {\n // Flip to bottom\n top = triggerRect.bottom + gap + arrowSize;\n // Update placement to reflect the flip\n if (placement === \"top-start\") currentPlacement = \"bottom-start\";\n else if (placement === \"top\") currentPlacement = \"bottom\";\n else if (placement === \"top-end\") currentPlacement = \"bottom-end\";\n } else {\n // Keep at top but adjust to stay in viewport\n top = viewportPadding;\n }\n } else if (top + tooltipRect.height > viewportHeight - viewportPadding) {\n // Tooltip would overflow at the bottom\n // Try to flip to top if there's more space there\n const spaceAbove = triggerRect.top;\n const spaceBelow = viewportHeight - triggerRect.bottom;\n\n if (spaceAbove > spaceBelow) {\n // Flip to top\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n // Update placement to reflect the flip\n if (placement === \"bottom-start\") currentPlacement = \"top-start\";\n else if (placement === \"bottom\") currentPlacement = \"top\";\n else if (placement === \"bottom-end\") currentPlacement = \"top-end\";\n } else {\n // Keep at bottom but adjust to stay in viewport\n top = viewportHeight - tooltipRect.height - viewportPadding;\n }\n }\n\n // Calculate arrow position relative to trigger\n // The arrow should point to the center of the trigger element\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const tooltipLeft = left;\n const arrowLeft = triggerCenterX - tooltipLeft;\n\n // Clamp arrow position to stay within tooltip bounds (with padding)\n const arrowPadding = 16; // Minimum distance from tooltip edges\n const clampedArrowLeft = Math.max(\n arrowPadding,\n Math.min(arrowLeft, tooltipRect.width - arrowPadding)\n );\n\n setPosition({ top, left });\n setArrowPosition({ left: clampedArrowLeft });\n setActualPlacement(currentPlacement);\n }, [placement]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n const handleFocus = () => {\n if (disabled) return;\n setIsVisible(true);\n };\n\n const handleBlur = () => {\n setIsVisible(false);\n };\n\n React.useEffect(() => {\n if (isVisible) {\n calculatePosition();\n window.addEventListener(\"scroll\", calculatePosition, true);\n window.addEventListener(\"resize\", calculatePosition);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", calculatePosition, true);\n window.removeEventListener(\"resize\", calculatePosition);\n };\n }, [isVisible, calculatePosition]);\n\n React.useEffect(() => {\n // Reset actualPlacement when placement prop changes\n setActualPlacement(placement);\n }, [placement]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n // Merge refs function\n const mergeRefs = (...refs: any[]) => {\n return (node: any) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as any).current = node;\n }\n });\n };\n };\n\n // Clone the child element and add event handlers\n const trigger = React.cloneElement(children, {\n ref: mergeRefs(triggerRef, (children as any).ref),\n onMouseEnter: (e: React.MouseEvent) => {\n handleMouseEnter();\n children.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleMouseLeave();\n children.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleFocus();\n children.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleBlur();\n children.props.onBlur?.(e);\n },\n \"aria-describedby\": isVisible ? \"tooltip-content\" : undefined,\n });\n\n return (\n <>\n {trigger}\n\n <div\n ref={mergeRefs(tooltipRef, ref)}\n id=\"tooltip-content\"\n role=\"tooltip\"\n className={cn(tooltipVariants({ isVisible }), className)}\n style={{\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n aria-hidden={!isVisible}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {showArrow && (\n <div\n className={cn(\n tooltipArrowVariants({ placement: actualPlacement })\n )}\n style={{\n left: `${arrowPosition.left}px`,\n }}\n />\n )}\n\n <div className=\"relative flex flex-col gap-2\">\n {heading && (\n <Text\n variant=\"body\"\n size=\"medium\"\n weight=\"semibold\"\n color=\"onPrimary\"\n >\n {heading}\n </Text>\n )}\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"onPrimary\"\n // className=\"flex gap-3\"\n >\n {description}\n </Text>\n </div>\n </div>\n </>\n );\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip, tooltipVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Link } from \"../Link\";\nimport { Icon } from \"../../lib\";\n\nexport interface FormHeaderProps {\n /**\n * The label text to display\n */\n label: string;\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether to show \"(optional)\" text after the label\n */\n isOptional?: boolean;\n /**\n * Whether to show \"*\" (required indicator) after the label\n */\n isRequired?: boolean;\n /**\n * Tooltip heading text\n */\n infoHeading?: string;\n /**\n * Tooltip description text - if provided, shows the info icon\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n * If provided, this will be rendered instead of the default Link with linkText\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text to display on the right side\n */\n linkText?: string;\n /**\n * Link href or onClick handler\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n /**\n * Leading icon for the link\n */\n linkLeadingIcon?: React.ReactNode;\n /**\n * Trailing icon for the link\n */\n linkTrailingIcon?: React.ReactNode;\n /**\n * HTML for attribute to associate with form input\n */\n htmlFor?: string;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the link\n */\n linkClassName?: string;\n}\n\nconst FormHeader = React.forwardRef<HTMLDivElement, FormHeaderProps>(\n (\n {\n label,\n size = \"medium\",\n isOptional = false,\n isRequired = false,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n linkLeadingIcon,\n linkTrailingIcon,\n htmlFor,\n className,\n labelClassName,\n linkClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-body-xsmall-semibold\",\n textClassNameRegular: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textClassName: \"text-body-small-semibold\",\n textClassNameRegular: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textClassName: \"text-body-medium-semibold\",\n textClassNameRegular: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-2.5\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n <div className={cn(\"flex items-center\", config.gap)}>\n <label\n htmlFor={htmlFor}\n className={cn(\"flex items-center\", labelClassName)}\n >\n <span\n className={cn(\n config.textClassName,\n \"text-surface-neutral-subtle\"\n )}\n >\n {label}\n </span>\n {isRequired && (\n <span\n className={cn(\n config.textClassName,\n \"text-color-negative ml-0.5\"\n )}\n >\n *\n </span>\n )}\n {isOptional && (\n <span\n className={cn(\n config.textClassNameRegular,\n \"text-surface-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 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\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst dividerVariants = cva(\"\", {\n variants: {\n orientation: {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n },\n thickness: {\n thinner: \"\",\n thin: \"\",\n thick: \"\",\n thicker: \"\",\n },\n lineStyle: {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n },\n variant: {\n normal: \"\",\n subtle: \"\",\n muted: \"\",\n },\n },\n compoundVariants: [\n // Horizontal orientation with thickness\n {\n orientation: \"horizontal\",\n thickness: \"thinner\",\n class: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thin\",\n class: \"border-t-[1px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thick\",\n class: \"border-t-[2px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thicker\",\n class: \"border-t-[3px]\",\n },\n // Vertical orientation with thickness\n {\n orientation: \"vertical\",\n thickness: \"thinner\",\n class: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thin\",\n class: \"border-l-[1px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thick\",\n class: \"border-l-[2px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thicker\",\n class: \"border-l-[3px]\",\n },\n // Normal variant colors\n {\n variant: \"normal\",\n class: \"border-surface-outline-neutral-normal\",\n },\n // Subtle variant colors\n {\n variant: \"subtle\",\n class: \"border-surface-outline-neutral-subtle\",\n },\n // Muted variant colors\n {\n variant: \"muted\",\n class: \"border-surface-outline-neutral-muted\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n thickness: \"thin\",\n lineStyle: \"solid\",\n variant: \"normal\",\n },\n});\n\nexport interface DividerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dividerVariants> {\n /**\n * The orientation of the divider\n * @default \"horizontal\"\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * The thickness of the divider\n * @default \"thin\"\n */\n thickness?: \"thinner\" | \"thin\" | \"thick\" | \"thicker\";\n /**\n * The style of the divider line\n * @default \"solid\"\n */\n lineStyle?: \"solid\" | \"dashed\";\n /**\n * The color variant of the divider\n * @default \"normal\"\n */\n variant?: \"normal\" | \"subtle\" | \"muted\";\n /**\n * Custom class name for the divider\n */\n className?: string;\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n thickness = \"thin\",\n lineStyle = \"solid\",\n variant = \"normal\",\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n dividerVariants({ orientation, thickness, lineStyle, variant }),\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = \"Divider\";\n\nexport { Divider, dividerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\n\nconst listItemVariants = cva(\n \"flex items-start gap-3 p-3 rounded-medium transition-colors cursor-pointer\",\n {\n variants: {\n variant: {\n default: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded\n focus:ring-2\n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n bordered:\n \"border border-action-outline-primary-faded hover:bg-surface-fill-primary-subtle\",\n primary: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded \n focus:ring-2 \n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n negative: `hover:bg-action-fill-negative-faded \n focus:bg-action-fill-negative-faded \n focus:ring-2 ring-action-outline-negative-faded-hover\n border border-transparent\n `,\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n isSelected: {\n true: \"bg-action-fill-primary-faded border-action-outline-primary-faded\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n isDisabled: false,\n isSelected: false,\n },\n }\n);\n\nexport interface ListItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /**\n * Type of list item - determines if checkbox is shown\n */\n type?: \"single\" | \"multiple\";\n /**\n * Leading icon to display on the left\n */\n leadingIcon?: React.ReactNode;\n /**\n * Title text (required)\n */\n title: string;\n /**\n * Description text (optional)\n */\n description?: string;\n /**\n * Trailing icon to display on the right\n */\n trailingIcon?: React.ReactNode;\n /**\n * Whether to show the default chevron trailing icon\n */\n showChevron?: boolean;\n /**\n * Visual variant of the list item\n */\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n /**\n * Whether the list item is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the list item is selected (for multiple type)\n */\n isSelected?: boolean;\n /**\n * Callback when the list item selection changes\n */\n onSelectionChange?: (selected: boolean) => void;\n /**\n * Size of the checkbox (when type is multiple)\n */\n checkboxSize?: \"small\" | \"medium\" | \"large\";\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the content area\n */\n contentClassName?: string;\n}\n\nconst ChevronRightIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M7.5 15L12.5 10L7.5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ListItem = React.forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n className,\n type = \"single\",\n leadingIcon,\n title,\n description,\n trailingIcon,\n showChevron = true,\n variant = \"default\",\n isDisabled = false,\n isSelected = false,\n onSelectionChange,\n checkboxSize = \"small\",\n containerClassName,\n contentClassName,\n onClick,\n ...props\n },\n ref\n ) => {\n const [internalSelected, setInternalSelected] = React.useState(isSelected);\n\n // Sync internal state with prop\n React.useEffect(() => {\n setInternalSelected(isSelected);\n }, [isSelected]);\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n\n if (type === \"multiple\") {\n const newSelected = !internalSelected;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n }\n\n onClick?.(e);\n };\n\n const handleCheckboxChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n const newSelected = e.target.checked;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n isDisabled,\n isSelected: type === \"multiple\" ? internalSelected : false,\n }),\n containerClassName\n )}\n onClick={handleClick}\n role={type === \"multiple\" ? \"checkbox\" : \"button\"}\n aria-checked={type === \"multiple\" ? internalSelected : undefined}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n {...props}\n >\n {/* Checkbox for multiple type */}\n {type === \"multiple\" && (\n <Checkbox\n checked={internalSelected}\n onChange={handleCheckboxChange}\n isDisabled={isDisabled}\n size={checkboxSize}\n className=\"shrink-0 mt-0.5\"\n />\n )}\n\n {/* Leading Icon */}\n {leadingIcon && (\n <div\n className={cn(\n `shrink-0 flex items-center justify-center mt-0.5`,\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-subtle\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {leadingIcon}\n </div>\n )}\n\n {/* Content */}\n <div\n className={cn(\n \"flex-1 min-w-0 flex flex-col justify-center\",\n contentClassName\n )}\n >\n <div\n className={cn(\n \"text-body-medium-regular truncate\",\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-normal\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {title}\n </div>\n {description && (\n <div\n className={cn(\n \"text-body-small-regular text-surface-ink-neutral-muted mt-0.5 line-clamp-2\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {description}\n </div>\n )}\n </div>\n\n {/* Trailing Icon */}\n {(trailingIcon || showChevron) && (\n <div className=\"shrink-0 self-center text-action-ink-neutral-subtle\">\n {trailingIcon || <ChevronRightIcon />}\n </div>\n )}\n </div>\n );\n }\n);\n\nListItem.displayName = \"ListItem\";\n\nexport { ListItem, listItemVariants };\n","import * as React from \"react\";\nimport { Search, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { ListItem } from \"../ListItem\";\nimport { Button } from \"../Button\";\nimport { Divider } from \"../Divider\";\nimport { Text } from \"../Text\";\nimport { Link } from \"../Link\";\n\nexport interface DropdownMenuItem {\n value: string | number;\n label: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n onClick?: () => void;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nexport interface DropdownMenuProps {\n /**\n * Items to display in the dropdown\n */\n items?: DropdownMenuItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show the footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when menu should close\n */\n onClose?: () => void;\n /**\n * Focused item index (for keyboard navigation)\n */\n focusedIndex?: number;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Width of the dropdown menu\n */\n width?: \"auto\" | \"full\" | string;\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n footerLayout = \"horizontal\",\n onClose,\n focusedIndex = -1,\n className,\n width = \"auto\",\n },\n ref\n ) => {\n const renderContent = () => {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 px-6\">\n <Loader2 className=\"w-12 h-12 text-action-ink-primary-normal mb-4 animate-spin\" />\n </div>\n );\n }\n\n if (customContent) {\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-body-small-medium text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"px-1\">{customContent}</div>\n </div>\n );\n }\n\n if (isEmpty || items.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center py-8 px-6 text-center\">\n {emptyIcon || (\n <Search className=\"w-12 h-12 text-surface-ink-neutral-muted mb-4\" />\n )}\n <Text\n as=\"h3\"\n variant=\"body\"\n size=\"small\"\n weight=\"semibold\"\n className=\"text-surface-ink-neutral-normal mb-2\"\n >\n {emptyTitle}\n </Text>\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n className=\"text-surface-ink-neutral-muted mb-3\"\n >\n {emptyDescription}\n </Text>\n {emptyLinkText && (\n <Link\n type=\"anchor\"\n color=\"primary\"\n size=\"small\"\n onClick={onEmptyLinkClick}\n >\n {emptyLinkText}\n </Link>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"flex flex-col gap-1\">\n {items.map((item, index) => (\n <ListItem\n key={item.value}\n title={item.label}\n description={item.description}\n leadingIcon={item.leadingIcon}\n trailingIcon={item.trailingIcon}\n showChevron={showChevron}\n isDisabled={item.isDisabled}\n isSelected={index === focusedIndex}\n variant={item.variant}\n onClick={() => {\n item.onClick?.();\n onClose?.();\n }}\n containerClassName={cn(\n index === focusedIndex && \"bg-action-fill-primary-faded\"\n )}\n />\n ))}\n </div>\n </div>\n );\n };\n\n const widthClass =\n width === \"full\" ? \"w-full\" : width === \"auto\" ? \"w-auto\" : \"\";\n const footerVisible = showFooter ?? !disableFooter;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-white rounded-large overflow-hidden\",\n widthClass,\n className\n )}\n style={{\n boxShadow:\n \"0 1px 2px rgba(25, 25, 30, 0.1), 0 2px 6px rgba(25, 25, 30, 0.06)\",\n ...(width !== \"full\" && width !== \"auto\" ? { width } : {}),\n }}\n >\n {/* Content */}\n {renderContent()}\n\n {/* Footer */}\n {footerVisible && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex gap-3 p-4\",\n footerLayout === \"vertical\"\n ? \"flex-col\"\n : \"items-center flex-row\"\n )}\n >\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onSecondaryClick}\n >\n {secondaryButtonText}\n </Button>\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onPrimaryClick}\n >\n {primaryButtonText}\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nDropdownMenu.displayName = \"DropdownMenu\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"./DropdownMenu\";\n\nconst dropdownVariants = cva(\n \"bg-surface-fill-primary-normal border border-surface-outline-neutral-subtle rounded-large\",\n {\n variants: {\n size: {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport type DropdownItem = DropdownMenuItem;\n\nexport interface DropdownProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Trigger element that opens the dropdown\n */\n trigger?: React.ReactNode;\n /**\n * Items to display in the dropdown\n */\n items?: DropdownItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether dropdown is open (controlled)\n */\n open?: boolean;\n /**\n * Default open state (uncontrolled)\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Custom class for dropdown container\n */\n containerClassName?: string;\n /**\n * Custom class for dropdown menu\n */\n menuClassName?: string;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n}\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n className,\n trigger,\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n size = \"medium\",\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n containerClassName,\n menuClassName,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n ...props\n },\n ref\n ) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isOpen =\n controlledOpen !== undefined ? controlledOpen : uncontrolledOpen;\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n const handleOpenChange = (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n const sizeMap = {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n };\n\n return (\n <div\n ref={dropdownRef}\n className={cn(\"relative inline-block\", containerClassName)}\n {...props}\n >\n {/* Trigger */}\n {trigger && (\n <div onClick={toggleOpen} className=\"cursor-pointer\">\n {trigger}\n </div>\n )}\n\n {/* Dropdown Menu */}\n {isOpen && (\n <DropdownMenu\n ref={ref}\n items={items}\n customContent={customContent}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={isEmpty}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={showFooter}\n onClose={() => handleOpenChange(false)}\n className={cn(\"absolute z-50 mt-2\", menuClassName, className)}\n width={sizeMap[size]}\n />\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport { dropdownVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\n\nexport interface ModalProps {\n /**\n * Whether the modal is open\n */\n isOpen: boolean;\n /**\n * Callback when the modal should close\n */\n onClose?: () => void;\n /**\n * Modal title - optional\n */\n title?: string;\n /**\n * Modal description/subtitle - optional\n */\n description?: string;\n /**\n * Modal footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Modal body content\n */\n children: React.ReactNode;\n /**\n * Size variant\n */\n size?: \"small\" | \"medium\" | \"large\" | \"xlarge\";\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Whether clicking the overlay closes the modal\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the modal\n */\n closeOnEscape?: boolean;\n /**\n * Custom class name for the modal container\n */\n className?: string;\n /**\n * Custom class name for the modal content\n */\n contentClassName?: string;\n /**\n * Custom class name for the header\n */\n headerClassName?: string;\n /**\n * Custom class name for the body\n */\n bodyClassName?: string;\n /**\n * Custom class name for the footer\n */\n footerClassName?: string;\n /**\n * Custom class name for the overlay\n */\n overlayClassName?: string;\n /**\n * ARIA label for accessibility\n */\n ariaLabel?: string;\n /**\n * ARIA description for accessibility\n */\n ariaDescribedBy?: string;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n isOpen,\n onClose,\n title,\n description,\n footer,\n children,\n size = \"medium\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n contentClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n overlayClassName,\n ariaLabel,\n ariaDescribedBy,\n },\n ref\n ) => {\n const modalRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || modalRef;\n\n // Size configurations\n const sizeConfig = {\n small: \"max-w-sm\",\n medium: \"max-w-md\",\n large: \"max-w-lg\",\n xlarge: \"max-w-2xl\",\n };\n\n // Handle escape key\n React.useEffect(() => {\n if (!isOpen || !closeOnEscape || !onClose) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when modal is open\n React.useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget && onClose) {\n onClose();\n }\n };\n\n // Don't render if not open\n if (!isOpen) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-[10000] flex items-center justify-center p-4\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Modal Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative w-full bg-white rounded-large shadow-xl transition-all\",\n \"flex flex-col max-h-[90vh]\",\n sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4 px-6 pt-6\",\n !description && \"pb-4\",\n description && \"pb-2\",\n headerClassName\n )}\n >\n <div className=\"flex-1\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"subtle\"\n className=\"mt-1\"\n >\n {description}\n </Text>\n )}\n </div>\n\n {showCloseButton && onClose && (\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n className=\"shrink-0\"\n />\n )}\n </div>\n )}\n\n {/* Header with close button only (no title/description) */}\n {!hasHeader && showCloseButton && onClose && (\n <div className=\"absolute top-4 right-4 z-10\">\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto px-6\",\n hasHeader ? \"py-4\" : \"pt-6 pb-4\",\n !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex items-center justify-end gap-3 px-6 py-4\",\n footerClassName\n )}\n >\n {footer}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nModal.displayName = \"Modal\";\n\nexport { Modal };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nexport interface SelectOption {\n value: string | number;\n label?: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nconst selectVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-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 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<HTMLDivElement, SelectProps>(\n (\n {\n className,\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n isLoading = false,\n size = \"medium\",\n prefix,\n suffix,\n showClearButton = false,\n onClear,\n 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 selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Find the selected option\n const selectedOption = options.find((opt) => opt.value === value);\n const hasValue = value !== undefined && value !== \"\";\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled && !isLoading) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleSelect = (option: SelectOption) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(option.value);\n }\n onChange?.(option.value, option);\n setIsOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n if (controlledValue === undefined) {\n setUncontrolledValue(undefined);\n }\n onChange?.(\"\", {} as SelectOption);\n }\n };\n\n const updateDropdownPlacement = React.useCallback(() => {\n if (typeof window === \"undefined\") return;\n const trigger = selectRef.current;\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n const dropdownHeight = dropdownContainerRef.current\n ? dropdownContainerRef.current.offsetHeight\n : 0;\n\n if (dropdownHeight === 0) {\n setDropdownPlacement(spaceBelow >= spaceAbove ? \"bottom\" : \"top\");\n return;\n }\n\n if (spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove) {\n setDropdownPlacement(\"bottom\");\n } else {\n setDropdownPlacement(\"top\");\n }\n }, []);\n\n const attachDropdownListeners = React.useCallback(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n let rafId = requestAnimationFrame(updateDropdownPlacement);\n\n const handleUpdate = () => updateDropdownPlacement();\n window.addEventListener(\"resize\", handleUpdate);\n window.addEventListener(\"scroll\", handleUpdate, true);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener(\"resize\", handleUpdate);\n window.removeEventListener(\"scroll\", handleUpdate, true);\n };\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n const detach = attachDropdownListeners();\n return () => {\n detach?.();\n };\n }, [attachDropdownListeners]);\n\n React.useEffect(() => {\n if (isOpen) {\n updateDropdownPlacement();\n }\n }, [isOpen, options.length, updateDropdownPlacement]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n // Handle keyboard navigation\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isDisabled || isLoading) return;\n\n if (!isOpen && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n setIsOpen(true);\n return;\n }\n\n if (isOpen) {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const currentIndex = options.findIndex(\n (opt) => opt.value === value\n );\n const nextIndex =\n event.key === \"ArrowDown\"\n ? Math.min(currentIndex + 1, options.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (options[nextIndex] && !options[nextIndex].isDisabled) {\n handleSelect(options[nextIndex]);\n }\n }\n }\n };\n\n if (selectRef.current) {\n selectRef.current.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n selectRef.current?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }\n }, [isOpen, value, options, isDisabled, isLoading]);\n\n // Transform options to dropdown menu items\n const menuItems: DropdownMenuItem[] = options.map((option) => ({\n value: option.value,\n label: option.label ?? String(option.value),\n description: option.description,\n leadingIcon: option.leadingIcon,\n trailingIcon: option.trailingIcon,\n isDisabled: option.isDisabled,\n variant: option.variant,\n onClick: () => handleSelect(option),\n }));\n\n const widthStyle =\n menuWidth === \"full\" ? \"100%\" : menuWidth === \"auto\" ? \"auto\" : menuWidth;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={selectRef}\n className={cn(\n selectVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled && !isLoading ? toggleOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n {/* Show prefix if provided, otherwise show selected option's leadingIcon if showLeadingIcon is true */}\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 ) : showLeadingIcon && selectedOption?.leadingIcon ? (\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 {selectedOption.leadingIcon}\n </span>\n ) : null}\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {isLoading ? \"Loading...\" : selectedOption?.label || placeholder}\n </span>\n\n {showClearButton && hasValue && !isDisabled && !isLoading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && !showClearButton && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n\n <ChevronDown\n className={cn(\n \"shrink-0 w-4 h-4 transition-transform\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\",\n isOpen && \"transform rotate-180\"\n )}\n />\n\n {/* Dropdown Menu */}\n {isOpen && !isDisabled && !isLoading && (\n <div\n ref={dropdownContainerRef}\n className={cn(\n \"absolute z-50 left-0 right-0\",\n dropdownPlacement === \"bottom\"\n ? \"top-full mt-1\"\n : \"bottom-full mb-1\"\n )}\n >\n <DropdownMenu\n ref={ref}\n items={menuItems}\n sectionHeading={sectionHeading}\n isEmpty={options.length === 0}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyIcon={emptyIcon}\n disableFooter={true}\n onClose={() => handleOpenChange(false)}\n className={menuClassName}\n width={widthStyle}\n />\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport { selectVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Select, type SelectOption } from \"../Select\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\n\nconst paginationVariants = cva(\n \"flex items-center gap-4 font-display text-body-medium-medium\",\n {\n variants: {\n size: {\n small: \"text-xs gap-2\",\n medium: \"text-sm gap-4\",\n large: \"text-base gap-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Current page number (1-indexed)\n */\n currentPage?: number;\n /**\n * Total number of pages\n */\n totalPages: number;\n /**\n * Rows per page value\n */\n rowsPerPage?: number;\n /**\n * Available options for rows per page\n */\n rowsPerPageOptions?: number[];\n /**\n * Show rows per page selector\n */\n showRowsPerPage?: boolean;\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n /**\n * Callback when rows per page changes\n */\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n /**\n * Size of the pagination controls\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Disable the pagination controls\n */\n isDisabled?: boolean;\n /**\n * Custom text for \"Row per page\" label\n */\n rowsPerPageLabel?: string;\n /**\n * Custom text for \"of\" label\n */\n ofLabel?: string;\n /**\n * Custom text for \"Prev\" button\n */\n prevLabel?: string;\n /**\n * Custom text for \"Next\" button\n */\n nextLabel?: string;\n /**\n * Show prev/next buttons\n */\n showPrevNext?: boolean;\n /**\n * Show page jumper (dropdown) instead of numbered buttons\n */\n showPageJumper?: boolean;\n /**\n * Show page number (used with showPageJumper=false)\n */\n showPageNumber?: boolean;\n /**\n * Page status for displaying page numbers\n */\n pageStatus?: \"none\" | \"first\" | \"middle\" | \"last\";\n /**\n * Maximum number of page buttons to show\n */\n maxPageButtons?: number;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage: controlledCurrentPage,\n totalPages,\n rowsPerPage: controlledRowsPerPage,\n rowsPerPageOptions = [5, 10, 15, 20, 25, 50, 100],\n showRowsPerPage = true,\n onPageChange,\n onRowsPerPageChange,\n size = \"medium\",\n isDisabled = false,\n rowsPerPageLabel = \"Row per page\",\n ofLabel = \"of\",\n prevLabel = \"Prev\",\n nextLabel = \"Next\",\n showPrevNext = true,\n showPageJumper = true,\n showPageNumber = true,\n pageStatus,\n maxPageButtons = 5,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCurrentPage, setUncontrolledCurrentPage] =\n React.useState(1);\n const [uncontrolledRowsPerPage, setUncontrolledRowsPerPage] =\n React.useState(rowsPerPageOptions[0] || 10);\n\n const currentPage =\n controlledCurrentPage !== undefined\n ? controlledCurrentPage\n : uncontrolledCurrentPage;\n\n const rowsPerPage =\n controlledRowsPerPage !== undefined\n ? controlledRowsPerPage\n : uncontrolledRowsPerPage;\n\n // Generate rows per page options\n const rowsPerPageSelectOptions: SelectOption[] = rowsPerPageOptions.map(\n (value) => {\n const valueStr = String(value);\n // Pad with leading zero if needed (manual implementation for compatibility)\n const label = valueStr.length < 2 ? \"0\" + valueStr : valueStr;\n return {\n id: `rows-${valueStr}`,\n value: valueStr,\n label: label,\n title: valueStr,\n };\n }\n );\n\n // Generate page options\n const pageOptions: SelectOption[] = Array.from(\n { length: totalPages },\n (_, i) => {\n const pageNum = i + 1;\n const pageStr = String(pageNum);\n return {\n id: `page-${pageStr}`,\n value: pageStr,\n label: pageStr,\n title: `Page ${pageNum}`,\n };\n }\n );\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > totalPages) return;\n if (controlledCurrentPage === undefined) {\n setUncontrolledCurrentPage(newPage);\n }\n onPageChange?.(newPage);\n };\n\n const handleRowsPerPageChange = (value: string | number) => {\n const newRowsPerPage =\n typeof value === \"string\" ? parseInt(value) : value;\n if (controlledRowsPerPage === undefined) {\n setUncontrolledRowsPerPage(newRowsPerPage);\n }\n onRowsPerPageChange?.(newRowsPerPage);\n // Reset to first page when rows per page changes\n handlePageChange(1);\n };\n\n const handlePrevPage = () => {\n handlePageChange(currentPage - 1);\n };\n\n const handleNextPage = () => {\n handlePageChange(currentPage + 1);\n };\n\n const isPrevDisabled = currentPage <= 1 || isDisabled;\n const isNextDisabled = currentPage >= totalPages || isDisabled;\n\n const selectSize =\n size === \"small\" ? \"small\" : size === \"large\" ? \"large\" : \"medium\";\n\n // Map pagination size to button size\n const buttonSize =\n size === \"small\" ? \"xsmall\" : size === \"large\" ? \"large\" : \"small\";\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= maxPageButtons) {\n // Show all pages if total is less than max\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n // Determine page status if not provided\n const effectivePageStatus =\n pageStatus ||\n (currentPage <= 2\n ? \"first\"\n : currentPage >= totalPages - 1\n ? \"last\"\n : \"middle\");\n\n if (effectivePageStatus === \"first\") {\n // Show first pages: 1, 2, 3, 4, 5\n return Array.from(\n { length: Math.min(maxPageButtons, totalPages) },\n (_, i) => i + 1\n );\n } else if (effectivePageStatus === \"last\") {\n // Show last pages\n const start = totalPages - maxPageButtons + 1;\n return Array.from({ length: maxPageButtons }, (_, i) => start + i);\n } else if (effectivePageStatus === \"middle\") {\n // Show pages around current page\n const halfMax = Math.floor(maxPageButtons / 2);\n let start = currentPage - halfMax;\n let end = currentPage + halfMax;\n\n // Adjust if at boundaries\n if (start < 1) {\n end += 1 - start;\n start = 1;\n }\n if (end > totalPages) {\n start -= end - totalPages;\n end = totalPages;\n }\n\n start = Math.max(1, start);\n end = Math.min(totalPages, end);\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n\n // pageStatus === \"none\" - don't show any page numbers\n return [];\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div\n ref={ref}\n className={cn(paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {rowsPerPageLabel}\n </span>\n <div className=\"w-[80px]\">\n <Select\n value={rowsPerPage.toString()}\n options={rowsPerPageSelectOptions}\n onChange={handleRowsPerPageChange}\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3 ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<ChevronLeft className=\"w-4 h-4\" />}\n aria-label=\"Previous page\"\n >\n {prevLabel}\n </Button>\n )}\n\n {showPageJumper ? (\n // Show page dropdown selector\n <div className=\"flex items-center gap-3\">\n <div className=\"w-[80px]\">\n <Select\n value={currentPage.toString()}\n options={pageOptions}\n onChange={(value) =>\n handlePageChange(\n typeof value === \"string\" ? parseInt(value) : value\n )\n }\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {ofLabel} {totalPages}\n </span>\n </div>\n ) : (\n // Show numbered page buttons\n showPageNumber &&\n pageNumbers.length > 0 && (\n <ButtonGroup\n variant=\"separated\"\n size={buttonSize}\n isDisabled={isDisabled}\n value={currentPage}\n onChange={(value) => handlePageChange(value as number)}\n >\n {pageNumbers.map((pageNum) => (\n <Button\n key={pageNum}\n value={pageNum}\n variant=\"tertiary\"\n color=\"primary\"\n aria-label={`Page ${pageNum}`}\n aria-current={pageNum === currentPage ? \"page\" : undefined}\n >\n {pageNum}\n </Button>\n ))}\n </ButtonGroup>\n )\n )}\n\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handleNextPage}\n isDisabled={isNextDisabled}\n trailingIcon={<ChevronRight className=\"w-4 h-4\" />}\n aria-label=\"Next page\"\n >\n {nextLabel}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { paginationVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst radioVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 border transition-all cursor-pointer rounded-full\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] border-[1.5px]\",\n medium: \"w-[16px] h-[16px] border-[1.5px]\",\n large: \"w-[20px] h-[20px] border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n isFocused: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class: `border-action-outline-neutral-faded \n hover:bg-action-fill-neutral-faded \n hover:border-action-outline-neutral-faded\n `,\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover border-action-fill-primary-default hover:border-action-fill-primary-hover\",\n },\n // Checked state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default hover:bg-action-fill-negative-hover border-action-fill-negative-default hover:border-action-fill-negative-hover\",\n },\n // Focused state - none validation\n {\n isFocused: true,\n validationState: \"none\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-primary-faded\",\n },\n // Focused state - error validation\n {\n isFocused: true,\n validationState: \"error\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-negative-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isDisabled: false,\n isFocused: false,\n },\n }\n);\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the radio button\n */\n label?: string;\n /**\n * Error text to display below the radio button\n */\n errorText?: string;\n /**\n * Size of the radio button\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the radio button\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio button is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled) {\n setShowRipple(true);\n setTimeout(() => {\n setShowRipple(false);\n }, 360); // Match animation duration (0.36s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current?.click();\n }\n };\n\n const handleFocus = () => {\n if (!isDisabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n innerCircleSize: 6,\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 7,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 8,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"radio\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n radioVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n className\n )}\n >\n {/* Inner White Circle (creates ring effect) */}\n {isChecked && (\n <div\n className=\"rounded-full bg-white transition-all\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport { Radio, radioVariants };\n","import * as React from \"react\";\nimport { 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 * 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 * 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 containerClassName,\n labelClassName,\n groupClassName,\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 validationState={currentValidationState}\n isDisabled={optionDisabled}\n showErrorText={false}\n containerClassName={option.containerClassName}\n labelClassName={option.labelClassName}\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 validationState:\n child.props.validationState || currentValidationState,\n isDisabled: childDisabled,\n showErrorText: false,\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\",\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 { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-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 TextFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isLoading?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n showClearButton?: boolean;\n onClear?: () => void;\n containerClassName?: string;\n labelClassName?: string;\n inputClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isLoading = false,\n isRequired = false,\n isOptional = false,\n prefix,\n suffix,\n showClearButton = false,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n onClear,\n containerClassName,\n labelClassName,\n inputClassName,\n className,\n value,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const inputValue = value !== undefined ? value : internalValue;\n const hasValue = inputValue && String(inputValue).length > 0;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(e.target.value);\n }\n };\n\n const handleClear = () => {\n if (onClear) {\n onClear();\n } else {\n setInternalValue(\"\");\n }\n // Focus the input after clearing\n const input = document.getElementById(props.id || \"\");\n if (input) {\n input.focus();\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textFieldVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n isLoading && \"text-field-loading\",\n className\n )}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <input\n ref={ref}\n value={inputValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled\",\n inputClassName\n )}\n {...props}\n />\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { TextField, textFieldVariants };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/utils\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\n\nexport interface SearchableDropdownItem extends DropdownMenuItem {\n [key: string]: any;\n}\n\nexport interface SearchableDropdownProps\n extends Omit<TextFieldProps, \"onChange\" | \"value\"> {\n /**\n * Items to display in the dropdown\n */\n items?: SearchableDropdownItem[];\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown menu width\n */\n dropdownWidth?: \"auto\" | \"full\";\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when search value changes\n */\n onSearchChange?: (value: string) => void;\n /**\n * Callback when item is selected\n */\n onItemSelect?: (item: SearchableDropdownItem) => void;\n /**\n * Custom filter function\n */\n filterFunction?: (item: SearchableDropdownItem, query: string) => boolean;\n /**\n * Search value (controlled)\n */\n searchValue?: string;\n /**\n * Default search value (uncontrolled)\n */\n defaultSearchValue?: string;\n /**\n * Custom class for dropdown menu\n */\n dropdownClassName?: string;\n /**\n * Minimum characters before showing dropdown\n */\n minSearchLength?: number;\n /**\n * Show dropdown on focus\n */\n showOnFocus?: boolean;\n /**\n * Show \"Add New\" option when search doesn't match any items\n */\n showAddNew?: boolean;\n /**\n * 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 * 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 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 dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // 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\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const searchValue =\n controlledSearchValue !== undefined\n ? controlledSearchValue\n : uncontrolledSearchValue;\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newValue);\n }\n onSearchChange?.(newValue);\n\n // 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 || !searchValue) {\n return filteredItems;\n }\n\n const addNewItem: SearchableDropdownItem = {\n value: searchValue,\n label: `+ Add \"${searchValue}\"`,\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 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 const dropdownMenu = showDropdown && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n top: `${position.top + 8}px`,\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: isInsideModal ? 10001 : 9999,\n }}\n >\n <DropdownMenu\n items={itemsWithHandlers}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={itemsWithAddNew.length === 0 && !showAddNew}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={\n (primaryButtonText || secondaryButtonText) && !disableFooter\n ? true\n : false\n }\n footerLayout={footerLayout}\n onClose={() => setIsOpen(false)}\n focusedIndex={focusedIndex}\n className={dropdownClassName}\n width={dropdownWidth === \"full\" ? \"full\" : \"auto\"}\n />\n </div>\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n <TextField\n ref={inputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\n </div>\n\n {/* Dropdown Menu Portal */}\n {typeof document !== \"undefined\" &&\n dropdownMenu &&\n createPortal(dropdownMenu, document.body)}\n </>\n );\n }\n);\n\nSearchableDropdown.displayName = \"SearchableDropdown\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SkeletonVariant = \"rect\" | \"text\" | \"title\" | \"circle\";\ntype SkeletonAnimation = \"pulse\" | \"none\";\ntype SkeletonRounded = \"none\" | \"small\" | \"medium\" | \"large\" | \"full\";\n\nconst variantDefaults: Record<\n SkeletonVariant,\n { height: number | string; className: string }\n> = {\n rect: { height: 16, className: \"w-full rounded-large\" },\n text: { height: 12, className: \"w-full rounded-large\" },\n title: { height: 20, className: \"w-full rounded-large\" },\n circle: { height: 40, className: \"rounded-full aspect-square\" },\n};\n\nconst roundedClassNames: Record<SkeletonRounded, string> = {\n none: \"rounded-none\",\n small: \"rounded-small\",\n medium: \"rounded-medium\",\n large: \"rounded-large\",\n full: \"rounded-full\",\n};\n\nconst animationClassNames: Record<SkeletonAnimation, string | undefined> = {\n pulse: \"animate-skeleton\",\n none: undefined,\n};\n\nconst normalizeCssValue = (value?: number | string): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n return typeof value === \"number\" ? `${value}px` : value;\n};\n\nconst getLineWidths = (\n count: number,\n provided?: Array<number | string>\n): Array<string | undefined> => {\n if (provided && provided.length) {\n return Array.from({ length: count }, (_, index) =>\n normalizeCssValue(provided[index] ?? provided[provided.length - 1])\n );\n }\n\n if (count === 1) {\n return [\"100%\"];\n }\n\n return Array.from({ length: count }, (_, index) =>\n index === count - 1 ? \"60%\" : \"100%\"\n );\n};\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Visual variant that controls default sizing and shape.\n */\n variant?: SkeletonVariant;\n /**\n * Animation style applied to the skeleton.\n */\n animation?: SkeletonAnimation;\n /**\n * Number of lines to render for text-based skeletons.\n */\n lines?: number;\n /**\n * Optional width overrides for each line.\n */\n lineWidths?: Array<number | string>;\n /**\n * Gap between lines when rendering multiple.\n */\n lineGap?: number | string;\n /**\n * Width of the skeleton block (overrides the variant default).\n */\n width?: number | string;\n /**\n * Height of the skeleton block (overrides the variant default).\n */\n height?: number | string;\n /**\n * Additional class name applied to the container when multiple lines are rendered.\n */\n containerClassName?: string;\n /**\n * Optional inline styles for the container when rendering multiple lines.\n */\n containerStyle?: React.CSSProperties;\n /**\n * Border radius override for rectangular variants.\n */\n rounded?: SkeletonRounded;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n containerClassName,\n containerStyle,\n variant = \"rect\",\n animation = \"pulse\",\n lines = 1,\n lineWidths,\n lineGap = \"0.5rem\",\n width,\n height,\n rounded = \"large\",\n style,\n ...props\n },\n ref\n ) => {\n const resolvedLines = Math.max(1, lines);\n const baseVariant = variantDefaults[variant];\n\n const resolvedHeight =\n normalizeCssValue(height) ?? normalizeCssValue(baseVariant.height);\n const resolvedWidth =\n normalizeCssValue(width) ??\n (variant === \"circle\" ? resolvedHeight : undefined);\n\n const skeletonClasses = cn(\n \"block bg-surface-fill-neutral-subtle\",\n animationClassNames[animation],\n variant !== \"circle\" && roundedClassNames[rounded],\n baseVariant.className,\n className\n );\n\n if ((variant === \"text\" || variant === \"title\") && resolvedLines > 1) {\n const widths = getLineWidths(resolvedLines, lineWidths);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col\",\n containerClassName,\n animation === \"pulse\" ? \"animate-none\" : undefined\n )}\n style={{\n gap: normalizeCssValue(lineGap) ?? \"0.5rem\",\n ...containerStyle,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n >\n {widths.map((lineWidth, index) => (\n <span\n key={`skeleton-line-${index}`}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: lineWidth ?? resolvedWidth ?? \"100%\",\n ...style,\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: resolvedWidth ?? style?.width,\n ...style,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\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\";\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\nconst selectTriggerVariants = cva(\n \"flex items-center gap-1 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 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 [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 selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const componentRef = React.useRef<HTMLDivElement>(null);\n\n const textValue =\n controlledTextValue !== undefined\n ? controlledTextValue\n : uncontrolledTextValue;\n const selectValue =\n controlledSelectValue !== undefined\n ? controlledSelectValue\n : uncontrolledSelectValue;\n\n // Find the selected option\n const selectedOption = selectOptions.find(\n (opt) => opt.value === selectValue\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 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 (!isDisabled) {\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 // 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,\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={!isDisabled ? toggleSelectOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isSelectOpen}\n aria-disabled={isDisabled}\n >\n <span\n className={cn(\n \"text-left truncate max-w-[120px] whitespace-nowrap\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {selectedOption?.label || selectPlaceholder}\n </span>\n <ChevronDown\n className={cn(\n \"shrink-0 transition-transform\",\n size === \"small\"\n ? \"w-3 h-3\"\n : size === \"medium\"\n ? \"w-3.5 h-3.5\"\n : \"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 isSelectOpen && \"transform rotate-180\"\n )}\n />\n </div>\n\n {/* Dropdown Menu */}\n {isSelectOpen && !isDisabled && (\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 <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={widthStyle}\n />\n </div>\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={isDisabled}\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={isDisabled}\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\";\n\nconst switchVariants = cva(\n \"relative inline-flex items-center shrink-0 cursor-pointer rounded-full transition-all duration-200\",\n {\n variants: {\n size: {\n small: \"w-[20px] h-[12px]\",\n medium: \"w-[28px] h-[16px]\",\n large: \"w-[36px] h-[20px]\",\n },\n isChecked: {\n true: \"bg-action-fill-primary-default \",\n false: \"bg-surface-fill-neutral-subtle\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n isChecked: true,\n isDisabled: false,\n class: \"hover:bg-action-fill-primary-hover \",\n },\n {\n isChecked: false,\n isDisabled: false,\n class: \"hover:bg-action-fill-neutral-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n isDisabled: false,\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-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 * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the switch is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the switch track\n */\n trackClassName?: string;\n /**\n * Custom class name for the switch thumb\n */\n thumbClassName?: string;\n}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = \"medium\",\n isDisabled = false,\n containerClassName,\n labelClassName,\n trackClassName,\n thumbClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-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 return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"switch\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n <div\n className={cn(\n switchVariants({\n size,\n isChecked,\n isDisabled,\n }),\n trackClassName,\n className,\n \"focus-visible:ring-2 focus-visible:ring-action-outline-primary-faded focus-visible:ring-offset-2\"\n )}\n >\n <span\n className={cn(\n switchThumbVariants({\n size,\n isChecked,\n }),\n thumbClassName\n )}\n />\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\"w-full border-collapse\", {\n variants: {\n variant: {\n default: \"border-separate border-spacing-0\",\n bordered: \"border-separate border-spacing-0\",\n striped: \"border-separate border-spacing-0\",\n },\n size: {\n small: \"text-body-small-medium\",\n medium: \"text-body-medium-medium\",\n large: \"text-body-large-medium\",\n 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-10\"\n )}\n >\n {headerGroups.map((headerGroup, groupIndex) => {\n const stickyTop = stickyHeader ? groupIndex * headerHeight : undefined;\n\n return (\n <tr key={headerGroup.id}>\n {enableRowSelection && enableSelectAll && (\n <th\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n stickyHeader && \"sticky z-20\",\n \"w-10 rounded-tl-xlarge rounded-bl-xlarge\",\n headerClassName\n )}\n style={{ top: stickyTop }}\n >\n <Checkbox\n checked={isAllRowsSelected}\n isIndeterminate={isSomeRowsSelected}\n onChange={onToggleAllRows}\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {headerGroup.headers.map((header, index) => {\n const isFirstColumn = index === 0;\n const isLastColumn = index === headerGroup.headers.length - 1;\n\n return (\n <th\n key={header.id}\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground &&\n \"bg-surface-fill-neutral-moderate border-none\",\n stickyHeader && \"sticky z-20\",\n !enableRowSelection && index === 0 && \"rounded-tl-xlarge \",\n isLastColumn && \"rounded-tr-xlarge\",\n header.column.columnDef.meta?.headerClassName,\n headerClassName\n )}\n style={{\n ...getColumnStyle(header.column.id, {\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize,\n maxWidth: header.column.columnDef.maxSize,\n }),\n top: stickyTop,\n ...(isFirstColumn && { paddingLeft: \"24px\" }),\n ...(isLastColumn && { paddingRight: \"24px\" }),\n }}\n >\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() &&\n \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {header.column.getCanSort() && (\n <span className=\"text-surface-ink-neutral-muted\">\n {{\n asc: \"↑\",\n desc: \"↓\",\n }[header.column.getIsSorted() as string] ?? \"↕\"}\n </span>\n )}\n </div>\n )}\n </th>\n );\n })}\n </tr>\n );\n })}\n </thead>\n );\n}\n","import * as React from \"react\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableCellVariants } from \"./tableVariants\";\n\ninterface TableBodyProps<TData> {\n rows: Row<TData>[];\n enableRowSelection: boolean;\n size: \"small\" | \"medium\" | \"large\" | \"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: \"20px\",\n paddingBottom: \"20px\",\n }}\n >\n <Checkbox\n checked={row.getIsSelected()}\n isIndeterminate={row.getIsSomeSelected()}\n onChange={row.getToggleSelectedHandler()}\n onClick={(e) => e.stopPropagation()}\n aria-label={`Select row ${row.id}`}\n />\n </td>\n )}\n {row.getVisibleCells().map((cell, cellIndex) => {\n const isCellFocused =\n focusedCell?.rowId === row.id &&\n focusedCell?.cellId === cell.id;\n const cellState = isCellFocused ? \"focus\" : \"default\";\n const visibleCells = row.getVisibleCells();\n const isFirstCell = cellIndex === 0;\n const isLastCell = cellIndex === visibleCells.length - 1;\n\n return (\n <td\n key={cell.id}\n className={cn(\n tableCellVariants({ size, state: cellState }),\n cell.column.columnDef.meta?.cellClassName,\n cellClassName\n )}\n style={{\n ...getColumnStyle(cell.column.id, {\n width: cell.column.getSize(),\n minWidth: cell.column.columnDef.minSize,\n maxWidth: cell.column.columnDef.maxSize,\n }),\n paddingTop: \"20px\",\n paddingBottom: \"20px\",\n ...(isFirstCell && { paddingLeft: \"24px\" }),\n ...(isLastCell && { paddingRight: \"24px\" }),\n }}\n tabIndex={0}\n onFocus={() =>\n setFocusedCell({ rowId: row.id, cellId: cell.id })\n }\n onBlur={() => setFocusedCell(null)}\n >\n {flexRender(cell.column.columnDef.cell, cell.getContext())}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n );\n}\n","import * as React from \"react\";\nimport type { Table as TanStackTable } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\n\ninterface LoadingStateProps {\n colSpan: number;\n}\n\nexport function renderDefaultLoadingState({ colSpan }: LoadingStateProps) {\n return (\n <tr>\n <td\n colSpan={colSpan}\n className=\"text-center py-12 text-surface-ink-neutral-muted\"\n >\n <div className=\"flex items-center justify-center gap-2\">\n <div className=\"animate-spin rounded-full h-6 w-6 border-b-2 border-action-fill-primary-default\" />\n <span>Loading...</span>\n </div>\n </td>\n </tr>\n );\n}\n\nexport function renderDefaultEmptyState({ colSpan }: LoadingStateProps) {\n return (\n <tr>\n <td\n colSpan={colSpan}\n className=\"text-center py-12 text-surface-ink-neutral-muted\"\n >\n No data available\n </td>\n </tr>\n );\n}\n","import * as React from \"react\";\nimport type { VariantProps } from \"class-variance-authority\";\nimport type { Table as TanStackTable, RowData } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { TableHeader } from \"./TableHeader\";\nimport { TableBody } from \"./TableBody\";\nimport { tableVariants, tableCellVariants } from \"./tableVariants\";\nimport {\n renderDefaultLoadingState,\n renderDefaultEmptyState,\n} from \"./tableHelpers\";\nimport { Skeleton } from \"../Skeleton\";\n\n// Extend TanStack Table types to support custom meta properties\ndeclare module \"@tanstack/react-table\" {\n interface ColumnMeta<TData extends RowData, TValue> {\n headerClassName?: string;\n cellClassName?: string;\n }\n}\n\n// ==================== Types ====================\n\nexport interface TableProps<TData extends RowData>\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof tableVariants> {\n table: TanStackTable<TData>;\n enableRowSelection?: boolean;\n enableSelectAll?: boolean;\n isLoading?: boolean;\n loadingComponent?: React.ReactNode;\n emptyComponent?: React.ReactNode;\n wrapperClassName?: string;\n containerClassName?: string;\n enableHorizontalScroll?: boolean;\n stickyHeader?: boolean;\n maxHeight?: string | number;\n showRowHover?: boolean;\n onRowClick?: (row: TData) => void;\n rowClassName?: string | ((row: TData) => string);\n headerClassName?: string;\n cellClassName?: string;\n showHeaderBackground?: boolean;\n loading?: boolean;\n loadingSkeletonRows?: number;\n loadingSkeletonHeight?: number | string;\n columnWidths?: Partial<Record<string, string | number>>;\n columnMinWidths?: Partial<Record<string, string | number>>;\n columnMaxWidths?: Partial<Record<string, string | number>>;\n 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 maxHeight,\n showRowHover = true,\n onRowClick,\n rowClassName,\n headerClassName,\n cellClassName,\n showHeaderBackground = true,\n loadingSkeletonRows,\n loadingSkeletonHeight,\n columnWidths,\n columnMinWidths,\n columnMaxWidths,\n ...props\n }: TableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // ==================== Computed Values ====================\n\n const hasData = table.getRowModel().rows?.length > 0;\n const headerGroups = table.getHeaderGroups();\n\n const normalizeSizeValue = (value?: string | number) => {\n if (value === undefined) return undefined;\n return typeof value === \"number\" ? `${value}px` : value;\n };\n\n const getColumnStyle = React.useCallback(\n (\n columnId: string,\n fallback?: {\n width?: number;\n minWidth?: number;\n maxWidth?: number;\n }\n ): React.CSSProperties => {\n const width = columnWidths?.[columnId] ?? fallback?.width ?? undefined;\n const minWidth =\n columnMinWidths?.[columnId] ?? fallback?.minWidth ?? undefined;\n const maxWidth =\n columnMaxWidths?.[columnId] ?? fallback?.maxWidth ?? undefined;\n\n return {\n width: normalizeSizeValue(width),\n minWidth: normalizeSizeValue(minWidth),\n maxWidth: normalizeSizeValue(maxWidth),\n };\n },\n [columnWidths, columnMinWidths, columnMaxWidths]\n );\n\n const containerStyle = React.useMemo(() => {\n if (!maxHeight) return undefined;\n return {\n maxHeight: typeof maxHeight === \"number\" ? `${maxHeight}px` : maxHeight,\n };\n }, [maxHeight]);\n\n // 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 maxHeight && \"overflow-y-auto\",\n containerClassName\n )}\n style={containerStyle}\n >\n <table className={cn(tableVariants({ variant, size }), className)}>\n <TableHeader\n headerGroups={headerGroups}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n showHeaderBackground={showHeaderBackground}\n stickyHeader={stickyHeader}\n size={size 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-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n maxChar?: number;\n showCharCount?: boolean;\n containerClassName?: string;\n labelClassName?: string;\n textAreaClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n rows?: number;\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n maxChar,\n showCharCount = true,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n containerClassName,\n labelClassName,\n textAreaClassName,\n className,\n value,\n onChange,\n rows = 4,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const textAreaValue = value !== undefined ? value : internalValue;\n const currentLength = String(textAreaValue).length;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n\n // Prevent exceeding maxChar if specified\n if (maxChar && newValue.length > maxChar) {\n return;\n }\n\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(newValue);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n // Check if we're approaching or at the limit\n const isNearLimit = maxChar && currentLength >= maxChar * 0.9;\n const isAtLimit = maxChar && currentLength >= maxChar;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textAreaVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <textarea\n ref={ref}\n value={textAreaValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n rows={rows}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled 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 { 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","clsx","twMerge","cva","React","Slot","_jsxs","_Fragment","PulseLoader","ClipLoader","ExternalLink","CalendarIcon","X","createPortal","Loader2","Search","ChevronDown","ChevronLeft","ChevronRight","flexRender"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/icons.tsx","../src/lib/utils.ts","../src/components/Button/Button.tsx","../src/components/IconButton/IconButton.tsx","../src/components/Link/Link.tsx","../src/components/Alert/Alert.tsx","../src/components/Amount/Amount.tsx","../src/components/Text/Text.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/DatePicker/DatePicker.tsx","../src/components/Divider/Divider.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Modal/Modal.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/Radio/RadioGroup.tsx","../src/components/TextField/TextField.tsx","../src/components/SearchableDropdown/SearchableDropdown.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/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=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Alias: check points to the same icon as tick\n check: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M10.364 15.1924L19.5564 6L20.9706 7.41421L10.364 18.0208L4 11.6569L5.41422 10.2427L10.364 15.1924Z\" fill=\"#081416\"/>\n</svg>`,\n\n add: `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\n<path d=\"M12.9 11.0999L21 11.0997V12.8997L12.9 12.8999V21H11.1V12.8999L3.00004 12.9001L3 11.1001L11.1 11.0999L11.0999 3.00001L12.8999 3L12.9 11.0999Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Info icon\n info: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 22.5C6.20101 22.5 1.5 17.7989 1.5 12C1.5 6.20101 6.20101 1.5 12 1.5C17.7989 1.5 22.5 6.20101 22.5 12C22.5 17.7989 17.7989 22.5 12 22.5ZM12 20.4C16.6392 20.4 20.4 16.6392 20.4 12C20.4 7.36081 16.6392 3.6 12 3.6C7.36081 3.6 3.6 7.36081 3.6 12C3.6 16.6392 7.36081 20.4 12 20.4ZM10.95 6.75H13.05V8.85H10.95V6.75ZM10.95 10.95H13.05V17.25H10.95V10.95Z\" fill=\"#081416\"/>\n</svg>\n`,\n\n // Exclamation/Warning icon\n exclamation: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 6.48 17.52 2 12 2ZM13 17H11V15H13V17ZM13 13H11V7H13V13Z\" fill=\"#081416\"/>\n</svg>`,\n\n // Close/X icon\n close: `<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M18 6L6 18M6 6L18 18\" stroke=\"#081416\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n</svg>`,\n 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};\n\n/**\n * Type for available icon names (with autocomplete support)\n */\nexport type IconName = keyof typeof iconRegistry;\n\n/**\n * Icon component that renders an SVG icon by name\n *\n * Features:\n * - ✓ Automatically converts hardcoded colors to currentColor\n * - ✓ Control color via className (e.g., \"text-blue-500\")\n * - ✓ Control color via style prop\n * - ✓ Customizable size\n * - ✓ TypeScript autocomplete for icon names\n * - ✓ All standard SVG props supported\n *\n * @example\n * ```tsx\n * // Basic usage\n * <Icon name=\"tick\" size={24} />\n *\n * // With Tailwind color class\n * <Icon name=\"tick\" size={16} className=\"text-blue-500\" />\n *\n * // With inline styles\n * <Icon name=\"check\" size={20} style={{ color: 'red' }} />\n *\n * // With custom props\n * <Icon name=\"tick\" size={32} className=\"hover:text-green-600 transition-colors\" />\n * ```\n */\nexport interface DynamicIconProps\n extends Omit<\n React.SVGProps<SVGSVGElement>,\n \"ref\" | \"dangerouslySetInnerHTML\"\n > {\n /** Name of the icon to render */\n name: IconName;\n /** Size of the icon (width and height) */\n size?: number | string;\n}\n\nexport const Icon: React.FC<DynamicIconProps> = ({\n name,\n size = 24,\n className = \"\",\n style = {},\n ...props\n}) => {\n const svgContent = iconRegistry[name];\n\n if (!svgContent) {\n console.warn(\n `Icon \"${String(name)}\" not found in registry.\\n` +\n `Available icons: ${Object.keys(iconRegistry).join(\", \")}`\n );\n return null;\n }\n\n // Parse the SVG content\n const parser = new DOMParser();\n const svgDoc = parser.parseFromString(svgContent, \"image/svg+xml\");\n const svgElement = svgDoc.querySelector(\"svg\");\n\n if (!svgElement) {\n console.error(`Invalid SVG content for icon \"${String(name)}\"`);\n return null;\n }\n\n // Get the viewBox for proper scaling\n const viewBox = svgElement.getAttribute(\"viewBox\") || \"0 0 24 24\";\n\n // Get all SVG content as string and replace hardcoded colors with currentColor\n let innerSVG = svgElement.innerHTML;\n\n // Replace common hardcoded colors with currentColor\n // This allows the icon to inherit text color from parent\n innerSVG = innerSVG\n .replace(/fill=\"[^\"]*\"/g, 'fill=\"currentColor\"')\n .replace(/stroke=\"[^\"]*\"/g, 'stroke=\"currentColor\"');\n\n return (\n <svg\n width={size}\n height={size}\n viewBox={viewBox}\n className={className}\n style={style}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n dangerouslySetInnerHTML={{ __html: innerSVG }}\n />\n );\n};\n\n/**\n * Get all available icon names from the registry\n * @returns Array of registered icon names\n *\n * @example\n * ```tsx\n * const icons = getAvailableIcons();\n * console.log(icons); // ['tick', 'check', ...]\n * ```\n */\nexport function getAvailableIcons(): IconName[] {\n return Object.keys(iconRegistry) as IconName[];\n}\n\n/**\n * Check if an icon exists in the registry\n * @param name - Icon name to check\n * @returns true if the icon exists\n *\n * @example\n * ```tsx\n * if (hasIcon('tick')) {\n * // Icon exists\n * }\n * ```\n */\nexport function hasIcon(name: string): name is IconName {\n return name in iconRegistry;\n}\n\nexport { iconRegistry };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n// Define patterns for custom classes that should be preserved\n// This approach is more scalable than hardcoding individual class names\nconst CUSTOM_CLASS_PATTERNS = [\n // Custom font classes\n /^font-(functional|display)$/,\n // Custom font-size classes\n /^font-size-/,\n // Custom leading (line-height) classes\n /^leading-(00|25|50|75|100|200|300|400|500|600|700|800|900|1000|1100)$/,\n // Custom text utility classes (text-display, text-heading, text-body, text-caption variants)\n /^text-(display|heading|body|caption)(-\\w+)?(-\\w+)?$/,\n // Text weight classes\n /^text-weight-/,\n // Text color classes\n /^text-color-/,\n /^outline-width-/,\n /^border-width-/,\n // Custom spacing classes (example)\n // /^spacing-(xs|sm|md|lg|xl)$/,\n // Custom color classes (example)\n // /^color-(primary|secondary|accent)$/,\n // Any class that starts with 'custom-'\n /^custom-/,\n];\n\nfunction isCustomClass(className: string): boolean {\n return CUSTOM_CLASS_PATTERNS.some((pattern) => pattern.test(className));\n}\n\nexport function cn(...inputs: ClassValue[]) {\n // Use clsx first to combine classes, then use twMerge for standard Tailwind classes\n const combined = clsx(inputs);\n\n // Split classes and filter out our custom classes before merging\n const classes = combined.split(\" \");\n const customClasses = classes.filter((cls) => isCustomClass(cls));\n const standardClasses = classes.filter((cls) => !isCustomClass(cls));\n\n // Merge standard classes and add back custom classes\n const mergedStandard = twMerge(standardClasses.join(\" \"));\n\n return clsx(mergedStandard, customClasses);\n}\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { PulseLoader, ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"items-center gap-3 justify-center whitespace-nowrap ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none\",\n {\n variants: {\n variant: {\n primary:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal hover:bg-action-fill-primary-hover\",\n secondary: \"border\",\n tertiary: \"hover:bg-accent hover:text-accent-foreground\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"md:h-[28px] px-3 rounded-medium text-body-small-medium\",\n small: \"md:h-[32px] px-4 rounded-medium text-body-small-medium\",\n medium: \"md:h-[36px] px-5 py-2 rounded-large text-body-medium-medium\",\n large: \"md:h-[44px] px-6 rounded-large text-body-large-medium\",\n },\n isIconOnly: {\n true: \"aspect-square p-0\",\n false: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n isFullWidth: {\n true: \"flex w-full\",\n false: \"flex w-fit\",\n },\n },\n compoundVariants: [\n // Primary variant colors\n {\n variant: \"primary\",\n color: \"primary\",\n class: `bg-action-fill-primary-default text-action-ink-on-primary-normal \n hover:bg-action-fill-primary-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled,\n active:bg-action-fill-primary-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"positive\",\n class: `bg-action-fill-positive-default text-action-ink-on-primary-normal \n hover:bg-action-fill-positive-hover \n disabled:bg-action-fill-primary-disabled\n disabled:text-action-ink-primary-disabled\n active:bg-action-fill-positive-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"negative\",\n class: `bg-action-fill-negative-default text-action-ink-on-primary-normal \n hover:bg-action-fill-negative-hover \n disabled:bg-action-fill-negative-disabled\n disabled:text-action-ink-negative-disabled\n active:bg-action-fill-negative-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"notice\",\n class: `bg-action-fill-notice-default text-action-ink-on-primary-normal \n hover:bg-action-fill-notice-hover \n disabled:bg-action-fill-notice-disabled\n disabled:text-action-ink-notice-disabled\n active:bg-action-fill-notice-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"info\",\n class: `bg-action-fill-info-default text-action-ink-on-primary-normal \n hover:bg-action-fill-info-hover \n disabled:bg-action-fill-info-disabled\n disabled:text-action-ink-info-disabled\n active:bg-action-fill-info-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"neutral\",\n class: `bg-action-fill-neutral-default text-action-ink-on-primary-normal \n hover:bg-action-fill-neutral-hover \n disabled:bg-action-fill-neutral-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-neutral-activated\n `,\n },\n {\n variant: \"primary\",\n color: \"white\",\n class: `bg-action-fill-white-default text-action-ink-neutral-subtle\n hover:bg-action-fill-white-hover \n disabled:bg-action-fill-white-disabled\n disabled:text-action-ink-neutral-disabled\n active:bg-action-fill-white-activated\n `,\n },\n // Secondary variant colors\n {\n variant: \"secondary\",\n color: \"primary\",\n class: `\n border-action-outline-primary-faded \n text-action-ink-primary-normal \n hover:border-action-outline-primary-faded-hover \n hover:bg-action-fill-primary-faded-hover\n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-primary-disabled\n disabled:border-action-outline-primary-disabled\n active:border-action-outline-primary-faded-activated\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"positive\",\n class: `\n border-action-outline-positive-faded \n text-action-ink-positive-normal \n hover:border-action-outline-positive-faded-hover \n hover:bg-action-fill-positive-faded-hover \n disabled:bg-action-outline-positive-disabled\n disabled:text-action-ink-positive-disabled\n disabled:border-action-outline-positive-disabled\n active:border-action-outline-positive-faded-activated\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"negative\",\n class: `\n border-action-outline-negative-faded \n text-action-ink-negative-normal \n hover:border-action-outline-negative-faded-hover \n hover:bg-action-fill-negative-faded-hover \n disabled:bg-action-outline-negative-disabled\n disabled:text-action-ink-negative-disabled\n disabled:border-action-outline-negative-disabled\n active:border-action-outline-negative-faded-activated\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"notice\",\n class: `\n border-action-outline-notice-faded \n text-action-ink-notice-normal \n hover:border-action-outline-notice-faded-hover \n hover:bg-action-fill-notice-faded-hover \n disabled:bg-action-outline-notice-disabled\n disabled:text-action-ink-notice-disabled\n disabled:border-action-outline-notice-disabled\n active:border-action-outline-notice-faded-activated\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"info\",\n class: `border-action-outline-info-faded \n text-action-ink-info-normal \n hover:border-action-outline-info-faded-hover \n hover:bg-action-fill-info-faded-hover \n disabled:bg-action-outline-info-disabled\n disabled:text-action-ink-info-disabled\n disabled:border-action-outline-info-disabled\n active:border-action-outline-info-faded-activated\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"neutral\",\n class: `border-action-outline-neutral-faded \n text-action-ink-neutral-normal \n hover:bg-action-outline-neutral-faded-hover \n hover:bg-action-fill-neutral-faded-hover \n disabled:text-action-ink-neutral-disabled\n disabled:border-action-outline-neutral-disabled\n active:border-action-outline-neutral-faded-activated\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"secondary\",\n color: \"white\",\n class: `border-action-outline-white-faded \n text-action-ink-on-primary-subtle\n hover:border-action-outline-white-faded-hover \n hover:bg-action-fill-white-faded-hover\n disabled:text-surface-ink-white-disabled\n disabled:border-action-outline-white-disabled\n active:border-action-outline-white-faded-activated\n active:bg-action-fill-white-faded-activated\n `,\n },\n // Tertiary variant colors\n {\n variant: \"tertiary\",\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:bg-action-fill-primary-faded \n disabled:text-action-ink-on-primary-muted\n active:bg-action-fill-primary-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:bg-action-fill-positive-faded \n disabled:text-action-ink-on-positive-muted\n active:bg-action-fill-positive-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:bg-action-fill-negative-faded \n disabled:text-action-ink-on-negative-muted\n active:bg-action-fill-negative-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:bg-action-fill-notice-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-notice-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:bg-action-fill-info-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-info-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:bg-action-fill-neutral-faded \n disabled:text-action-ink-on-notice-muted\n active:bg-action-fill-neutral-faded-activated\n `,\n },\n {\n variant: \"tertiary\",\n color: \"white\",\n class: `text-action-ink-white-subtle\n hover:bg-action-white-faded-hover\n disabled:text-action-ink-white-disabled\n disabled:bg-action-fill-white-disabled\n active:bg-action-white-faded-activated\n `,\n },\n // Icon only sizing\n {\n isIconOnly: true,\n size: \"xsmall\",\n class: \"h-7 w-7\",\n },\n {\n isIconOnly: true,\n size: \"small\",\n class: \"h-8 w-8\",\n },\n {\n isIconOnly: true,\n size: \"medium\",\n class: \"h-9 w-9\",\n },\n {\n isIconOnly: true,\n size: \"large\",\n class: \"h-10 w-10\",\n },\n ],\n defaultVariants: {\n variant: \"primary\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isLoading: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface ButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n variant?: \"primary\" | \"secondary\" | \"tertiary\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isLoading?: boolean;\n isDisabled?: boolean;\n isFullWidth?: boolean;\n asChild?: boolean;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n color = \"primary\",\n size,\n isIconOnly,\n isLoading,\n asChild = false,\n leadingIcon,\n trailingIcon,\n isFullWidth = false,\n children,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const buttonContent = (\n <>\n {isLoading && !isIconOnly && (\n <PulseLoader color={getLoaderColor()} size={10} />\n )}\n {isLoading && isIconOnly && (\n <ClipLoader color={getLoaderColor()} size={20} />\n )}\n {!isLoading && leadingIcon && (\n <span className=\"mr-2\">{leadingIcon}</span>\n )}\n {!isIconOnly && !isLoading && children}\n {isIconOnly && !isLoading && children}\n {!isLoading && trailingIcon && <span>{trailingIcon}</span>}\n </>\n );\n\n return (\n <Comp\n className={cn(\n buttonVariants({\n variant,\n color,\n size,\n isIconOnly,\n isLoading,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ClipLoader } from \"react-spinners\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Icon, type IconName } from \"../../lib/icons\";\n\nconst iconButtonVariants = cva(\n \"inline-flex items-center justify-center transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none p-0 border-0 bg-transparent\",\n {\n variants: {\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isLoading: {\n true: \"cursor-not-allowed\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed\",\n false: \"cursor-pointer\",\n },\n },\n defaultVariants: {\n color: \"primary\",\n size: \"medium\",\n isLoading: false,\n },\n }\n);\n\nexport interface IconButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"color\"> {\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isLoading?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n /** Icon name from the icon registry */\n icon?: IconName;\n /** Custom icon element (ReactNode) - alternative to icon prop */\n iconElement?: React.ReactNode;\n}\n\nconst IconButton = React.forwardRef<HTMLButtonElement, IconButtonProps>(\n (\n {\n className,\n color = \"primary\",\n size = \"medium\",\n isLoading,\n asChild = false,\n icon,\n iconElement,\n disabled,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"button\";\n\n const isDisabled = disabled || isLoading || false;\n\n const getLoaderColor = () => {\n if (color === \"white\") {\n return \"var(--color-surface-ink-neutral-normal)\";\n }\n return `var(--color-action-ink-${color}-normal)`;\n };\n\n const getIconSize = () => {\n switch (size) {\n case \"xsmall\":\n return 16;\n case \"small\":\n return 18;\n case \"medium\":\n return 20;\n case \"large\":\n return 24;\n default:\n return 20;\n }\n };\n\n const getIconColorClass = () => {\n // Color classes with normal, hover, focus, and disabled states\n const colorMap: Record<string, string> = {\n primary:\n \"text-action-ink-primary-normal hover:text-action-ink-primary-subtle focus-visible:text-action-ink-primary-subtle disabled:text-action-ink-primary-muted\",\n positive:\n \"text-action-ink-positive-normal hover:text-action-ink-positive-subtle focus-visible:text-action-ink-positive-subtle disabled:text-action-ink-positive-muted\",\n negative:\n \"text-action-ink-negative-normal hover:text-action-ink-negative-subtle focus-visible:text-action-ink-negative-subtle disabled:text-action-ink-negative-muted\",\n notice:\n \"text-action-ink-notice-normal hover:text-action-ink-notice-subtle focus-visible:text-action-ink-notice-subtle disabled:text-action-ink-notice-muted\",\n info: \"text-action-ink-info-normal hover:text-action-ink-info-subtle focus-visible:text-action-ink-info-subtle disabled:text-action-ink-info-muted\",\n neutral:\n \"text-action-ink-neutral-normal hover:text-action-ink-neutral-subtle focus-visible:text-action-ink-neutral-subtle disabled:text-action-ink-neutral-muted\",\n white:\n \"text-surface-ink-white-subtle hover:text-surface-ink-white-normal focus-visible:text-surface-ink-white-normal disabled:text-surface-ink-white-muted\",\n };\n return colorMap[color] || colorMap.primary;\n };\n\n const buttonContent = (\n <>\n {isLoading ? (\n <ClipLoader color={getLoaderColor()} size={getIconSize()} />\n ) : icon ? (\n <Icon\n name={icon}\n size={getIconSize()}\n className={getIconColorClass()}\n />\n ) : iconElement ? (\n <span className={getIconColorClass()}>{iconElement}</span>\n ) : null}\n </>\n );\n\n return (\n <Comp\n className={cn(\n iconButtonVariants({\n color,\n size,\n isLoading,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n disabled={isDisabled}\n {...props}\n >\n {buttonContent}\n </Comp>\n );\n }\n);\nIconButton.displayName = \"IconButton\";\n\nexport { IconButton, iconButtonVariants };\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva } from \"class-variance-authority\";\nimport { ExternalLink } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst linkVariants = cva(\n \"inline-flex items-center gap-1 whitespace-nowrap transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none decoration-1 underline-offset-4\",\n {\n variants: {\n type: {\n anchor: \"hover:underline\",\n action: \"no-underline cursor-pointer\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n white: \"\",\n },\n size: {\n xsmall: \"text-body-xsmall-medium gap-1\",\n small: \"text-body-small-medium gap-1\",\n medium: \"text-body-medium-medium gap-1.5\",\n large: \"text-body-large-medium gap-1.5\",\n },\n isIconOnly: {\n true: \"no-underline\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"cursor-pointer\",\n },\n },\n compoundVariants: [\n // Primary color variants\n {\n color: \"primary\",\n class: `text-action-ink-primary-normal \n hover:text-action-ink-primary-subtle\n hover:decoration-action-outline-primary-hover \n disabled:text-action-ink-primary-disabled\n focus:text-action-ink-primary-hover\n `,\n },\n // Positive color variants\n {\n color: \"positive\",\n class: `text-action-ink-positive-normal \n hover:text-action-ink-positive-subtle\n hover:decoration-action-outline-positive-hover \n hover:text-action-ink-positive-hover \n disabled:text-action-ink-positive-disabled\n focus:text-action-ink-positive-hover\n `,\n },\n // Negative color variants\n {\n color: \"negative\",\n class: `text-action-ink-negative-normal \n hover:text-action-ink-negative-subtle\n hover:decoration-action-outline-negative-hover \n hover:text-action-ink-negative-hover \n disabled:text-action-ink-negative-disabled\n focus:text-action-ink-negative-hover\n `,\n },\n // Notice color variants\n {\n color: \"notice\",\n class: `text-action-ink-notice-normal \n hover:text-action-ink-notice-subtle\n hover:decoration-action-outline-notice-hover \n hover:text-action-ink-notice-hover \n disabled:text-action-ink-notice-disabled\n focus:text-action-ink-notice-hover\n `,\n },\n // Info color variants\n {\n color: \"info\",\n class: `text-action-ink-info-normal \n hover:text-action-ink-info-subtle\n hover:decoration-action-outline-info-hover \n hover:text-action-ink-info-hover \n disabled:text-action-ink-info-disabled\n focus:text-action-ink-info-hover\n `,\n },\n // Neutral color variants\n {\n color: \"neutral\",\n class: `text-action-ink-neutral-normal \n hover:text-action-ink-neutral-subtle\n hover:decoration-action-outline-neutral-hover \n hover:text-action-ink-neutral-hover \n disabled:text-action-ink-neutral-disabled\n focus:text-action-ink-neutral-hover\n `,\n },\n {\n color: \"white\",\n class: `text-surface-ink-white-normal \n hover:text-surface-ink-white-subtle\n hover:text-action-ink-white-hover \n disabled:text-action-ink-white-muted\n focus:text-action-ink-white-hover\n `,\n },\n ],\n defaultVariants: {\n type: \"anchor\",\n color: \"primary\",\n size: \"medium\",\n isIconOnly: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface LinkProps\n extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"color\"> {\n type?: \"anchor\" | \"action\";\n color?:\n | \"primary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"white\";\n size?: \"xsmall\" | \"small\" | \"medium\" | \"large\";\n isIconOnly?: boolean;\n isDisabled?: boolean;\n asChild?: boolean;\n showIcon?: boolean;\n icon?: React.ReactNode;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n onClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n (\n {\n className,\n type = \"anchor\",\n color = \"primary\",\n size = \"medium\",\n isIconOnly = false,\n isDisabled = false,\n asChild = false,\n showIcon = false,\n icon,\n leadingIcon,\n trailingIcon,\n children,\n onClick,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : \"a\";\n\n const handleClick = (e: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) {\n e.preventDefault();\n return;\n }\n onClick?.(e);\n };\n\n // Icon size based on link size\n const iconSize = {\n xsmall: 12,\n small: 14,\n medium: 16,\n large: 18,\n }[size];\n\n // Determine what to show as trailing icon\n // Priority: trailingIcon > (showIcon && icon) > (showIcon && default ExternalLink)\n const finalTrailingIcon =\n trailingIcon || (showIcon && (icon || <ExternalLink size={iconSize} />));\n\n const linkContent = (\n <>\n {leadingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{leadingIcon}</span>\n )}\n {!isIconOnly && children}\n {isIconOnly && children}\n {finalTrailingIcon && !isIconOnly && (\n <span className=\"inline-flex items-center\">{finalTrailingIcon}</span>\n )}\n {isIconOnly &&\n (leadingIcon || finalTrailingIcon || (\n <ExternalLink size={iconSize} />\n ))}\n </>\n );\n\n return (\n <Comp\n className={cn(\n linkVariants({\n type,\n color,\n size,\n isIconOnly,\n isDisabled,\n }),\n className\n )}\n ref={ref}\n onClick={handleClick}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : undefined}\n {...props}\n >\n {linkContent}\n </Comp>\n );\n }\n);\nLink.displayName = \"Link\";\n\nexport { Link, linkVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { Icon } from \"../../lib/icons\";\nimport { Button } from \"../Button\";\nimport { IconButton } from \"../IconButton\";\nimport { Link } from \"../Link\";\nimport { cn } from \"../../lib/utils\";\n\nconst alertVariants = cva(\n \"relative flex gap-4 p-4 rounded-large transition-colors\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-subtle\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-subtle\",\n },\n // Intense emphasis\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"bg-feedback-fill-positive-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"bg-feedback-fill-negative-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"bg-feedback-fill-notice-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"bg-feedback-fill-info-intense\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"bg-feedback-fill-neutral-intense\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertIconVariants = cva(\n \"flex-shrink-0 rounded-full flex items-center justify-center mt-1\",\n {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"text-white\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - colored backgrounds with white icons\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-action-ink-positive-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \" text-action-ink-negative-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \" text-action-ink-notice-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \" text-action-ink-info-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \" text-action-ink-neutral-normal\",\n },\n // Intense emphasis - white backgrounds with colored icons\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \" text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \" text-action-fill-info-default\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \" text-action-fill-neutral-default\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n }\n);\n\nconst alertTextVariants = cva(\"\", {\n variants: {\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n intent: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n },\n compoundVariants: [\n // Subtle emphasis - dark text\n {\n emphasis: \"subtle\",\n intent: \"positive\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"negative\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"notice\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"info\",\n class: \"text-surface-ink-neutral-normal\",\n },\n {\n emphasis: \"subtle\",\n intent: \"neutral\",\n class: \"text-surface-ink-neutral-normal\",\n },\n // Intense emphasis - white text\n {\n emphasis: \"intense\",\n intent: \"positive\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"negative\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"notice\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"info\",\n class: \"text-action-ink-on-primary-normal\",\n },\n {\n emphasis: \"intense\",\n intent: \"neutral\",\n class: \"text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n emphasis: \"subtle\",\n intent: \"info\",\n },\n});\n\nexport interface AlertProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"title\"> {\n /**\n * The visual emphasis level of the alert\n */\n emphasis?: \"subtle\" | \"intense\";\n /**\n * The intent/type of the alert\n */\n intent?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * The title of the alert\n */\n title?: string;\n /**\n * The body content of the alert\n */\n children: React.ReactNode;\n /**\n * Whether the alert should take full width\n * When true, actions are placed to the right of the content\n * When false, actions are placed below the content\n */\n isFullWidth?: boolean;\n /**\n * Callback fired when the close button is clicked\n */\n onClose?: () => void;\n /**\n * Custom icon to display. If not provided, an icon will be automatically selected based on intent\n */\n icon?: React.ReactNode;\n /**\n * Action button text. If provided, a button will be automatically created based on the variant\n */\n actionButtonText?: string;\n /**\n * Callback fired when the action button is clicked\n */\n onActionButtonClick?: () => void;\n /**\n * Action link to display\n */\n actionLinkText?: string;\n /**\n * Callback fired when the action link is clicked\n */\n onActionLinkClick?: () => void;\n /**\n * Custom class name for the alert\n */\n className?: string;\n}\n\nconst getDefaultIcon = (\n intent: AlertProps[\"intent\"],\n emphasis: AlertProps[\"emphasis\"]\n) => {\n const iconSize = 16;\n const iconColor = emphasis === \"intense\" ? \"currentColor\" : \"currentColor\";\n\n switch (emphasis) {\n case \"intense\":\n return (\n <Icon\n name=\"info\"\n size={iconSize}\n className=\"text-white\"\n aria-hidden=\"true\"\n />\n );\n default:\n return <Icon name=\"info\" size={iconSize} aria-hidden=\"true\" />;\n }\n};\n\nconst getButtonColor = (\n intent: AlertProps[\"intent\"]\n): \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\" => {\n switch (intent) {\n case \"positive\":\n return \"positive\";\n case \"negative\":\n return \"negative\";\n case \"notice\":\n return \"notice\";\n case \"info\":\n return \"info\";\n case \"neutral\":\n return \"neutral\";\n default:\n return \"neutral\";\n }\n};\n\nconst getActionButton = (\n actionButtonText: string | undefined,\n onActionButtonClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Button\n variant=\"secondary\"\n color=\"white\"\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Button\n variant=\"secondary\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionButtonClick}\n >\n {actionButtonText}\n </Button>\n );\n};\nconst getActionLink = (\n actionButtonText: string | undefined,\n onActionLinkClick: (() => void) | undefined,\n emphasis: AlertProps[\"emphasis\"],\n intent: AlertProps[\"intent\"]\n): React.ReactNode | null => {\n if (!actionButtonText) return null;\n\n const buttonColor = getButtonColor(intent);\n\n // For intense emphasis: secondary variant with white border and white text\n // For subtle emphasis: secondary variant with colored border and colored text (default behavior)\n if (emphasis === \"intense\") {\n return (\n <Link\n type=\"action\"\n color=\"white\"\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n }\n\n // Subtle emphasis: use default secondary variant styling\n return (\n <Link\n type=\"action\"\n color={\n intent as\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\"\n | \"primary\"\n }\n size=\"small\"\n onClick={onActionLinkClick}\n >\n {actionButtonText}\n </Link>\n );\n};\n\nconst Alert = React.forwardRef<HTMLDivElement, AlertProps>(\n (\n {\n className,\n emphasis = \"subtle\",\n intent = \"info\",\n title,\n children,\n isFullWidth = false,\n onClose,\n icon,\n actionButtonText,\n onActionButtonClick,\n actionLinkText,\n onActionLinkClick,\n ...props\n },\n ref\n ) => {\n const displayIcon = icon ?? getDefaultIcon(intent, emphasis);\n const actionButton = getActionButton(\n actionButtonText,\n onActionButtonClick,\n emphasis,\n intent\n );\n const actionLink = getActionLink(\n actionLinkText,\n onActionLinkClick,\n emphasis,\n intent\n );\n const hasActions = actionButton || actionLink;\n\n return (\n <div\n ref={ref}\n className={cn(alertVariants({ emphasis, intent }), className)}\n role=\"alert\"\n {...props}\n >\n {/* Icon */}\n <div\n className={cn(\n alertIconVariants({ emphasis, intent }),\n \"h-5 w-5 shrink-0\"\n )}\n >\n {displayIcon}\n </div>\n\n {isFullWidth ? (\n /* Full Width Layout: Icon, Content, Actions/Close in one row */\n <div className=\"flex-1 min-w-0 flex items-center justify-between gap-4\">\n {/* Content: Title and Body */}\n <div className=\"flex-1 min-w-0 flex flex-col gap-1\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n </div>\n {/* Actions and Close - aligned to the right, vertically centered */}\n <div className=\"flex items-center gap-4 shrink-0\">\n {hasActions && (\n <>\n {actionButton}\n {actionLink}\n </>\n )}\n {onClose && (\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n )}\n </div>\n </div>\n ) : (\n /* Not Full Width Layout: Icon and Content in row, Actions below, Close top-right */\n <div className=\"flex-1 min-w-0 relative\">\n {/* Close button - positioned top right */}\n {onClose && (\n <div className=\"absolute top-0 right-0\">\n <IconButton\n icon=\"close\"\n color={\n emphasis === \"intense\" ? \"white\" : getButtonColor(intent)\n }\n size=\"xsmall\"\n onClick={onClose}\n className={cn(\n \"shrink-0 h-5 w-5\",\n emphasis === \"intense\"\n ? \"hover:bg-white/20\"\n : \"hover:bg-black/10\"\n )}\n aria-label=\"Close alert\"\n />\n </div>\n )}\n\n {/* Content */}\n <div className=\"flex flex-col gap-3 pr-8\">\n {title && (\n <div\n className={cn(\n \"text-body-medium-semibold\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {title}\n </div>\n )}\n <div\n className={cn(\n \"text-body-small-regular\",\n alertTextVariants({ emphasis, intent })\n )}\n >\n {children}\n </div>\n\n {/* Actions - below body text, left-aligned */}\n {hasActions && (\n <div className=\"flex items-center gap-4\">\n {actionButton}\n {actionLink}\n </div>\n )}\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nAlert.displayName = \"Alert\";\n\nexport { Alert, alertVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Type for NumberFormat parts (not available in ES6 lib)\ntype NumberFormatPart = {\n type:\n | \"currency\"\n | \"decimal\"\n | \"fraction\"\n | \"group\"\n | \"infinity\"\n | \"integer\"\n | \"literal\"\n | \"minus\"\n | \"nan\"\n | \"plus\"\n | \"percentSign\"\n | \"unit\";\n value: string;\n};\n\nexport interface AmountProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"children\"> {\n /**\n * The numeric amount value to display\n */\n value: number;\n /**\n * Currency code (e.g., \"USD\", \"INR\", \"EUR\", \"GBP\")\n */\n currency?: string;\n /**\n * Locale for number formatting (default: \"en-US\")\n */\n locale?: string;\n /**\n * Minimum number of decimal places (default: 2)\n */\n minimumFractionDigits?: number;\n /**\n * Maximum number of decimal places (default: 2)\n */\n maximumFractionDigits?: number;\n /**\n * Whether to show the currency code/symbol (default: true)\n */\n showCurrency?: boolean;\n /**\n * Custom className for the component\n */\n className?: string;\n}\n\n/**\n * Amount component that displays formatted currency amounts with decimal numbers in superscript.\n *\n * @example\n * ```tsx\n * <Amount value={1234.56} currency=\"USD\" />\n * // Renders: USD 1,234.<sup>56</sup>\n *\n * <Amount value={5000} currency=\"INR\" />\n * // Renders: INR 5,000.<sup>00</sup>\n * ```\n */\nconst Amount = React.forwardRef<HTMLSpanElement, AmountProps>(\n (\n {\n value,\n currency,\n locale = \"en-US\",\n minimumFractionDigits = 2,\n maximumFractionDigits = 2,\n showCurrency = true,\n className,\n ...props\n },\n ref\n ) => {\n // Parse the formatted amount into parts\n const parts = React.useMemo(() => {\n // Always format as a number (not currency style) to get number formatting\n const formatter = new Intl.NumberFormat(locale, {\n minimumFractionDigits,\n maximumFractionDigits,\n });\n\n // Use formatToParts to get structured parts\n const formattedParts = (\n formatter as Intl.NumberFormat & {\n formatToParts(value: number): NumberFormatPart[];\n }\n ).formatToParts(value);\n\n let integerPart = \"\";\n let decimalPart = \"\";\n let decimalSeparator = \".\";\n\n formattedParts.forEach((part: NumberFormatPart) => {\n switch (part.type) {\n case \"integer\":\n integerPart += part.value;\n break;\n case \"decimal\":\n decimalSeparator = part.value;\n break;\n case \"fraction\":\n decimalPart = part.value;\n break;\n case \"group\":\n integerPart += part.value;\n break;\n }\n });\n\n // Use currency code as prefix if provided and showCurrency is true\n const currencyPrefix = currency && showCurrency ? `${currency} ` : \"\";\n\n return {\n currency: currencyPrefix,\n integer: integerPart,\n decimal: decimalPart,\n decimalSeparator: decimalSeparator,\n hasDecimal: decimalPart.length > 0,\n };\n }, [\n value,\n currency,\n locale,\n minimumFractionDigits,\n maximumFractionDigits,\n showCurrency,\n ]);\n\n return (\n <span\n ref={ref}\n className={cn(\"inline-flex items-baseline\", className)}\n {...props}\n >\n {parts.currency && <span>{parts.currency}</span>}\n <span className=\"ml-[0.2em]\">{parts.integer}</span>\n {parts.hasDecimal && (\n <>\n <span className=\"mx-[0.05em]\">{parts.decimalSeparator}</span>\n <sup className=\"text-[0.75em] leading-none\">{parts.decimal}</sup>\n </>\n )}\n </span>\n );\n }\n);\n\nAmount.displayName = \"Amount\";\n\nexport { Amount };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// Helper function to get the text utility class name\nfunction getTextClassName(\n variant: \"display\" | \"heading\" | \"body\" | \"caption\" = \"body\",\n size:\n | \"2xlarge\"\n | \"xlarge\"\n | \"large\"\n | \"medium\"\n | \"small\"\n | \"xsmall\" = \"medium\",\n weight: \"regular\" | \"medium\" | \"semibold\" = \"regular\",\n color:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\" = \"default\"\n): string {\n // Build the base class name\n let baseClass = `text-${variant}`;\n\n // Add size\n if (size) {\n baseClass += `-${size}`;\n }\n\n // Add weight\n if (weight) {\n baseClass += `-${weight}`;\n }\n\n // Add color class separately\n const colorClass = `text-color-${color}`;\n\n return `${baseClass} ${colorClass}`;\n}\n\nexport interface TextProps\n extends Omit<React.HTMLAttributes<HTMLElement>, \"color\"> {\n children: React.ReactNode;\n variant?: \"display\" | \"heading\" | \"body\" | \"caption\";\n size?: \"2xlarge\" | \"xlarge\" | \"large\" | \"medium\" | \"small\" | \"xsmall\";\n weight?: \"regular\" | \"medium\" | \"semibold\";\n color?:\n | \"default\"\n | \"subtle\"\n | \"muted\"\n | \"disabled\"\n | \"primary\"\n | \"onPrimary\"\n | \"positive\"\n | \"negative\"\n | \"notice\"\n | \"info\"\n | \"neutral\";\n as?: \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\" | \"label\";\n className?: string;\n}\n\nconst Text = React.forwardRef<HTMLElement, TextProps>(\n (\n {\n className,\n variant = \"body\",\n size = \"medium\",\n weight = \"regular\",\n color = \"default\",\n as = \"p\",\n children,\n ...props\n },\n ref\n ) => {\n const Component = as;\n\n const textClass = getTextClassName(variant, size, weight, color);\n\n return React.createElement(\n Component,\n {\n className: cn(textClass, className),\n ref,\n ...props,\n },\n children\n );\n }\n);\n\nText.displayName = \"Text\";\n\nexport { Text };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text/Text\";\n\ntype AvatarColor = \"a1\" | \"a2\" | \"a3\" | \"a4\" | \"a5\";\ntype AvatarAppearance = \"default\" | \"inverse\";\n\nconst inverseColorClasses: Record<AvatarColor, string> = {\n a1: \"bg-avatar-fill-a1-on-bg text-avatar-fill-a1-bg\",\n a2: \"bg-avatar-fill-a2-on-bg text-avatar-fill-a2-bg\",\n a3: \"bg-avatar-fill-a3-on-bg text-avatar-fill-a3-bg\",\n a4: \"bg-avatar-fill-a4-on-bg text-avatar-fill-a4-bg\",\n a5: \"bg-avatar-fill-a5-on-bg text-avatar-fill-a5-bg\",\n};\n\nconst avatarVariants = cva(\n \"inline-flex items-center justify-center font-medium text-center select-none\",\n {\n variants: {\n color: {\n a1: \"bg-avatar-fill-a1-bg text-avatar-fill-a1-on-bg\",\n a2: \"bg-avatar-fill-a2-bg text-avatar-fill-a2-on-bg\",\n a3: \"bg-avatar-fill-a3-bg text-avatar-fill-a3-on-bg\",\n a4: \"bg-avatar-fill-a4-bg text-avatar-fill-a4-on-bg\",\n a5: \"bg-avatar-fill-a5-bg text-avatar-fill-a5-on-bg\",\n },\n size: {\n small: \"h-[24px] w-[24px] text-body-medium-regular rounded-large\",\n medium: \"h-[32px] w-[32px] text-body-medium-regular rounded-xlarge\",\n xlarge: \"h-[36px] w-[36px] text-body-medium-regular rounded-xlarge\",\n },\n },\n defaultVariants: {\n color: \"a1\",\n size: \"medium\",\n },\n }\n);\n\nconst statusVariants = cva(\n \"absolute flex items-center justify-center rounded-full border-2 border-surface-fill-neutral-intense\",\n {\n variants: {\n size: {\n small: \"h-5 w-5 -bottom-0.5 -right-0.5\",\n medium: \"h-6 w-6 -bottom-1 -right-1\",\n xlarge: \"h-6 w-6 -bottom-1 -right-1\",\n },\n statusColor: {\n positive: \"bg-action-fill-positive-default\",\n negative: \"bg-action-fill-negative-default\",\n notice: \"bg-action-fill-notice-default\",\n info: \"bg-action-fill-info-default\",\n neutral: \"bg-action-fill-neutral-default\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n statusColor: \"notice\",\n },\n }\n);\n\nexport interface AvatarProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof avatarVariants> {\n /**\n * The color variant of the avatar\n */\n color?: AvatarColor;\n /**\n * Whether to invert the background/text colors\n */\n appearance?: AvatarAppearance;\n /**\n * The size of the avatar\n */\n size?: \"small\" | \"medium\" | \"xlarge\";\n /**\n * The initials or text to display in the avatar\n */\n children?: React.ReactNode;\n /**\n * Image source for the avatar (takes precedence over children)\n */\n src?: string;\n /**\n * Alt text for the avatar image\n */\n alt?: string;\n /**\n * Whether to show a status indicator\n */\n showStatus?: boolean;\n /**\n * The color of the status indicator\n */\n statusColor?: \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n /**\n * Custom icon or content for the status indicator\n */\n statusIcon?: React.ReactNode;\n /**\n * Optional text label to display next to the avatar\n */\n label?: string;\n /**\n * Optional trailing component (icon or other element) to display after the label\n */\n trailingComponent?: React.ReactNode;\n /**\n * Custom class name for the avatar\n */\n className?: string;\n /**\n * Custom class name for the container (when label or trailingComponent is provided)\n */\n containerClassName?: string;\n}\n\nconst Avatar = React.forwardRef<HTMLDivElement, AvatarProps>(\n (\n {\n className,\n appearance = \"default\",\n color,\n size,\n children,\n src,\n alt,\n showStatus = false,\n statusColor = \"notice\",\n statusIcon,\n label,\n trailingComponent,\n containerClassName,\n ...props\n },\n ref\n ) => {\n const [imageError, setImageError] = React.useState(false);\n\n const handleImageError = () => {\n setImageError(true);\n };\n\n const getStatusIconSize = () => {\n switch (size) {\n case \"small\":\n return \"h-3.5 w-3.5\";\n case \"medium\":\n return \"h-4 w-4\";\n default:\n return \"h-4 w-4\";\n }\n };\n\n const getTextSize = () => {\n switch (size) {\n case \"small\":\n return \"small\";\n case \"medium\":\n return \"medium\";\n default:\n return \"medium\";\n }\n };\n\n const resolvedColor: AvatarColor = color ?? \"a1\";\n const avatarElement = (\n <div className=\"relative inline-block\">\n <div\n className={cn(\n avatarVariants({ color: resolvedColor, size }),\n appearance === \"inverse\"\n ? inverseColorClasses[resolvedColor]\n : undefined,\n className\n )}\n {...props}\n >\n {src && !imageError ? (\n <img\n src={src}\n alt={alt || \"Avatar\"}\n className={cn(\n \"h-full w-full object-cover\",\n size === \"small\" ? \"rounded-large\" : \"rounded-xlarge\"\n )}\n onError={handleImageError}\n />\n ) : (\n children\n )}\n </div>\n {showStatus && (\n <div className={cn(statusVariants({ size, statusColor }))}>\n {statusIcon && (\n <span\n className={cn(\n \"text-action-ink-on-primary-normal\",\n getStatusIconSize()\n )}\n >\n {statusIcon}\n </span>\n )}\n </div>\n )}\n </div>\n );\n\n // If no label or trailing component, return just the avatar\n if (!label && !trailingComponent) {\n return <div ref={ref}>{avatarElement}</div>;\n }\n\n // Otherwise, return avatar with label and/or trailing component\n return (\n <div\n ref={ref}\n className={cn(\"inline-flex items-center gap-3\", containerClassName)}\n >\n {avatarElement}\n {label && (\n <Text\n variant=\"body\"\n size={getTextSize()}\n weight=\"medium\"\n color=\"default\"\n as=\"span\"\n >\n {label}\n </Text>\n )}\n {trailingComponent && (\n <span className=\"ml-auto\">{trailingComponent}</span>\n )}\n </div>\n );\n }\n);\n\nAvatar.displayName = \"Avatar\";\n\nexport { Avatar, avatarVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center whitespace-nowrap transition-colors\",\n {\n variants: {\n variant: {\n light: \"\",\n filled: \"\",\n },\n color: {\n primary: \"\",\n positive: \"\",\n negative: \"\",\n notice: \"\",\n info: \"\",\n neutral: \"\",\n },\n size: {\n small:\n \"px-2 h-[var(--size-20)] gap-2 rounded-large text-body-small-medium\",\n medium:\n \"px-3 h-[var(--size-24)] gap-3 rounded-large text-body-medium-medium\",\n large:\n \"px-4 h-[var(--size-28)] gap-3 rounded-xlarge text-body-large-medium\",\n },\n },\n compoundVariants: [\n // Light variant colors\n {\n variant: \"light\",\n color: \"primary\",\n class: \"bg-action-fill-primary-faded text-action-ink-primary-normal\",\n },\n {\n variant: \"light\",\n color: \"positive\",\n class: \"bg-action-fill-positive-faded text-action-ink-positive-normal\",\n },\n {\n variant: \"light\",\n color: \"negative\",\n class: \"bg-action-fill-negative-faded text-action-ink-negative-normal\",\n },\n {\n variant: \"light\",\n color: \"notice\",\n class: \"bg-action-fill-notice-faded text-action-ink-notice-normal\",\n },\n {\n variant: \"light\",\n color: \"info\",\n class: \"bg-action-fill-info-faded text-action-ink-info-normal\",\n },\n {\n variant: \"light\",\n color: \"neutral\",\n class: \"bg-action-fill-neutral-faded text-action-ink-neutral-normal\",\n },\n // Filled variant colors\n {\n variant: \"filled\",\n color: \"primary\",\n class:\n \"bg-action-fill-primary-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"positive\",\n class:\n \"bg-action-fill-positive-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"negative\",\n class:\n \"bg-action-fill-negative-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"notice\",\n class:\n \"bg-action-fill-notice-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"info\",\n class: \"bg-action-fill-info-default text-action-ink-on-primary-normal\",\n },\n {\n variant: \"filled\",\n color: \"neutral\",\n class:\n \"bg-action-fill-neutral-default text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n variant: \"light\",\n color: \"info\",\n size: \"medium\",\n },\n }\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {\n /**\n * Whether to show a dot indicator on the left side\n */\n showDot?: boolean;\n /**\n * Custom class name for the badge\n */\n className?: string;\n /**\n * Badge label/content\n */\n children: React.ReactNode;\n /**\n * The color variant of the badge\n */\n color?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\n}\n\nconst Badge = React.forwardRef<HTMLDivElement, BadgeProps>(\n (\n { className, variant, size, color, showDot = false, children, ...props },\n ref\n ) => {\n const getDotColor = () => {\n if (variant === \"filled\") {\n return \"bg-action-ink-on-primary-normal\";\n }\n // Light variant - use the corresponding action color\n switch (color) {\n case \"primary\":\n return \"bg-action-fill-primary-default\";\n case \"positive\":\n return \"bg-action-fill-positive-default\";\n case \"negative\":\n return \"bg-action-fill-negative-default\";\n case \"notice\":\n return \"bg-action-fill-notice-default\";\n case \"info\":\n return \"bg-action-fill-info-default\";\n case \"neutral\":\n return \"bg-action-fill-neutral-default\";\n default:\n return \"bg-action-fill-info-default\";\n }\n };\n\n const getDotSize = () => {\n if (size === \"small\") {\n return \"h-2 w-2\";\n }\n if (size === \"medium\") {\n return \"h-[6px] w-[6px]\";\n }\n return \"h-3 w-3\";\n };\n\n return (\n <div\n ref={ref}\n className={cn(badgeVariants({ variant, size, color }), className)}\n {...props}\n >\n {showDot && (\n <span\n className={cn(\"rounded-full\", getDotColor(), getDotSize())}\n aria-hidden=\"true\"\n />\n )}\n {children}\n </div>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport { Badge, badgeVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonGroupVariants = cva(\"inline-flex\", {\n variants: {\n variant: {\n attached: \"\",\n separated: \"\",\n },\n orientation: {\n horizontal: \"flex-row\",\n vertical: \"flex-col\",\n },\n size: {\n xsmall: \"\",\n small: \"\",\n medium: \"\",\n large: \"\",\n },\n isFullWidth: {\n true: \"w-full\",\n false: \"w-fit\",\n },\n isDisabled: {\n true: \"pointer-events-none opacity-50\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n variant: \"separated\",\n orientation: \"horizontal\",\n class: \"gap-2\",\n },\n {\n variant: \"separated\",\n orientation: \"vertical\",\n class: \"gap-2\",\n },\n ],\n defaultVariants: {\n variant: \"attached\",\n orientation: \"horizontal\",\n size: \"medium\",\n isFullWidth: false,\n isDisabled: false,\n },\n});\n\nexport interface ButtonGroupProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">,\n VariantProps<typeof buttonGroupVariants> {\n children: React.ReactNode;\n variant?: \"attached\" | \"separated\";\n isDisabled?: boolean;\n isFullWidth?: boolean;\n /**\n * Value for controlled button group\n */\n value?: string | number;\n /**\n * Callback when value changes (for controlled mode)\n */\n onChange?: (value: string | number) => void;\n}\n\nconst ButtonGroup = React.forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n className,\n variant = \"attached\",\n orientation = \"horizontal\",\n size = \"medium\",\n isDisabled = false,\n isFullWidth = false,\n value,\n onChange,\n children,\n ...props\n },\n ref\n ) => {\n const childrenArray = React.Children.toArray(children);\n const isControlled = value !== undefined && onChange !== undefined;\n\n return (\n <div\n ref={ref}\n className={cn(\n buttonGroupVariants({\n variant,\n orientation,\n size,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n role=\"group\"\n {...props}\n >\n {childrenArray.map((child, index) => {\n if (!React.isValidElement(child)) {\n return child;\n }\n\n const isFirst = index === 0;\n const isLast = index === childrenArray.length - 1;\n const isMiddle = !isFirst && !isLast;\n\n // Get value from child props for controlled mode\n const childValue = child.props.value;\n const isSelected = isControlled && childValue === value;\n\n // Build classes to apply border radius removal and borders\n let groupClasses = \"\";\n\n // Only apply connected styling for \"attached\" variant\n if (variant === \"attached\") {\n if (orientation === \"horizontal\") {\n if (isFirst) {\n groupClasses = \"rounded-r-none border-r-0\";\n } else if (isLast) {\n groupClasses = \"rounded-l-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-r-0\";\n }\n } else {\n // vertical\n if (isFirst) {\n groupClasses = \"rounded-b-none border-b-0\";\n } else if (isLast) {\n groupClasses = \"rounded-t-none\";\n } else if (isMiddle) {\n groupClasses = \"rounded-none border-b-0\";\n }\n }\n }\n\n // Determine the variant to use\n const childVariant = child.props.variant;\n const hasExplicitVariant = childVariant !== undefined;\n\n // For controlled mode with explicit variant, maintain the variant\n // and add styling classes for selected state\n let finalVariant = childVariant;\n let selectedStateClasses = \"\";\n\n if (isControlled) {\n if (hasExplicitVariant) {\n // Keep the child's variant and add selected state styling\n if (isSelected && childVariant === \"tertiary\") {\n selectedStateClasses = \"bg-action-fill-primary-faded\";\n } else if (isSelected && childVariant === \"secondary\") {\n selectedStateClasses =\n \"bg-action-fill-primary-faded border-action-outline-primary-faded\";\n }\n } else {\n // No explicit variant: use primary for selected, secondary for unselected\n finalVariant = isSelected ? \"primary\" : \"secondary\";\n }\n }\n\n // Clone child and add our classes and handlers\n return React.cloneElement(child, {\n ...child.props,\n className: cn(\n child.props.className,\n groupClasses,\n isFullWidth && \"flex-1\",\n // For attached variant, ensure proper layering\n variant === \"attached\" && \"relative\",\n variant === \"attached\" && !isSelected && \"hover:z-10 focus:z-10\",\n variant === \"attached\" && isSelected && \"z-20\",\n // Apply selected state classes for explicit variants\n selectedStateClasses\n ),\n disabled: isDisabled || child.props.disabled,\n size: size || child.props.size,\n // If controlled and has value, handle click\n onClick:\n isControlled && childValue !== undefined\n ? (e: React.MouseEvent) => {\n child.props.onClick?.(e);\n if (!isDisabled && !child.props.disabled) {\n onChange(childValue);\n }\n }\n : child.props.onClick,\n variant: finalVariant,\n } as any);\n })}\n </div>\n );\n }\n);\n\nButtonGroup.displayName = \"ButtonGroup\";\n\nexport { ButtonGroup, buttonGroupVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface FormFooterProps {\n /**\n * Helper text to display on the left side\n */\n helperText?: string;\n /**\n * Trailing text to display on the right side (e.g., character count)\n */\n trailingText?: string;\n /**\n * Validation state that affects styling and icon display\n */\n validationState?: \"default\" | \"positive\" | \"negative\";\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the footer is in a disabled state\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the helper text\n */\n helperTextClassName?: string;\n /**\n * Custom class name for the trailing text\n */\n trailingTextClassName?: string;\n}\n\nconst FormFooter = React.forwardRef<HTMLDivElement, FormFooterProps>(\n (\n {\n helperText,\n trailingText,\n validationState = \"default\",\n size = \"medium\",\n isDisabled = false,\n className,\n helperTextClassName,\n trailingTextClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1\",\n },\n medium: {\n textClassName: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-1\",\n },\n large: {\n textClassName: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-1.5\",\n },\n } as const;\n\n const config = sizeConfig[size];\n\n // Determine text color based on validation state and disabled state\n const getTextColor = () => {\n if (isDisabled) return \"text-surface-ink-neutral-disabled\";\n if (validationState === \"positive\")\n return \"text-feedback-ink-positive-intense\";\n if (validationState === \"negative\")\n return \"text-feedback-ink-negative-subtle\";\n if (validationState === \"default\")\n return \"text-surface-ink-neutral-subtle\";\n return \"text-surface-ink-neutral-subtle\";\n };\n const helperTextColorClass = getTextColor();\n const trailingTextColorClass = getTextColor();\n\n // Don't render anything if there's no content\n if (!helperText && !trailingText) {\n return null;\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n {helperText && (\n <div className={cn(\"flex items-center\", config.gap)}>\n {validationState === \"positive\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-positive-intense shrink-0\"\n >\n <path\n d=\"M3 7L6 10L11 4\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n )}\n {validationState === \"negative\" && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-feedback-ink-negative-subtle shrink-0\"\n >\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M7 4V7.5M7 10V9.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n <span\n className={cn(\n config.textClassName,\n helperTextColorClass,\n \"italic font-size-100 leading-100\",\n helperTextClassName\n )}\n >\n {helperText}\n </span>\n </div>\n )}\n\n {trailingText && (\n <span\n className={cn(\n config.textClassName,\n trailingTextColorClass,\n \"font-size-100 leading-100 shrink-0\",\n trailingTextClassName\n )}\n >\n {trailingText}\n </span>\n )}\n </div>\n );\n }\n);\n\nFormFooter.displayName = \"FormFooter\";\n\nexport { FormFooter };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\nimport { Icon } from \"../../lib/icons\";\n\nconst checkboxVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 transition-all cursor-pointer box-border\",\n {\n variants: {\n size: {\n small: \"w-[10px] h-[10px] rounded-small border-[1.5px]\",\n medium: \"w-[12px] h-[12px] rounded-small border-[1.5px]\",\n large: \"w-[16px] h-[16px] rounded-medium border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover focus:ring-2 ring-action-outline-negative-faded-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isIndeterminate: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"border-action-outline-neutral-faded hover:bg-action-fill-neutral-faded hover:border-action-outline-neutral-faded\",\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover border-action-fill-primary-default\",\n },\n // Checked or Indeterminate state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n // Indeterminate state - none validation\n {\n isIndeterminate: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default border-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover\",\n },\n // Indeterminate state - error validation (same as checked error)\n {\n isIndeterminate: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isIndeterminate: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the checkbox\n */\n label?: string;\n /**\n * Error text to display below the checkbox\n */\n errorText?: string;\n /**\n * Size of the checkbox\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the checkbox\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the checkbox is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the checkbox is in an indeterminate state\n */\n isIndeterminate?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isIndeterminate = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const rippleTimeoutRef = React.useRef<number | null>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n // Set indeterminate property on the input element\n React.useEffect(() => {\n if (inputRef.current) {\n inputRef.current.indeterminate = isIndeterminate;\n }\n }, [isIndeterminate]);\n\n // Cleanup timeout on unmount\n React.useEffect(() => {\n return () => {\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n };\n }, []);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled && !showRipple) {\n // Clear any existing timeout\n if (rippleTimeoutRef.current) {\n clearTimeout(rippleTimeoutRef.current);\n }\n\n setShowRipple(true);\n rippleTimeoutRef.current = setTimeout(() => {\n setShowRipple(false);\n rippleTimeoutRef.current = null;\n }, 400); // Match animation duration (0.4s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n triggerRipple();\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n triggerRipple();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 10,\n },\n medium: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n iconSize: 12,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-medium-regular\",\n iconSize: 14,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col px-2\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"checkbox\"\n aria-checked={isIndeterminate ? \"mixed\" : isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n checkboxVariants({\n size,\n validationState,\n isChecked: isChecked && !isIndeterminate,\n isIndeterminate,\n isDisabled,\n }),\n className\n )}\n >\n {/* Checkmark Icon */}\n {isChecked && !isIndeterminate && (\n <Icon\n name=\"tick\"\n size={config.iconSize}\n className=\"text-action-ink-on-primary-normal\"\n />\n )}\n\n {/* Indeterminate Icon */}\n {isIndeterminate && (\n <svg\n width={config.iconSize}\n height={config.iconSize}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className=\"text-action-ink-on-primary-normal\"\n >\n <path\n d=\"M3 6H9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport { Checkbox, checkboxVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst counterVariants = cva(\n \"inline-flex items-center justify-center transition-colors\",\n {\n variants: {\n size: {\n small:\n \"text-body-xsmall-medium rounded-small px-1 py-0.5 min-w-[20px] h-[16px]\",\n medium:\n \"text-body-small-medium rounded-medium px-2 py-1 min-w-[24px] h-[20px]\",\n large:\n \"text-body-medium-medium rounded-medium px-2 py-1 min-w-[28px] h-[24px]\",\n },\n color: {\n positive: \"\",\n negative: \"\",\n notice: \"\",\n information: \"\",\n neutral: \"\",\n primary: \"\",\n },\n emphasis: {\n subtle: \"\",\n intense: \"\",\n },\n },\n compoundVariants: [\n // Positive - Subtle\n {\n color: \"positive\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-positive-subtle text-feedback-ink-positive-intense\",\n },\n // Positive - Intense\n {\n color: \"positive\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-positive-intense text-action-ink-on-primary-normal\",\n },\n // Negative - Subtle\n {\n color: \"negative\",\n emphasis: \"subtle\",\n class:\n \"bg-feedback-fill-negative-subtle text-feedback-ink-negative-subtle\",\n },\n // Negative - Intense\n {\n color: \"negative\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-negative-intense text-action-ink-on-primary-normal\",\n },\n // Notice - Subtle\n {\n color: \"notice\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-notice-subtle text-feedback-ink-notice-subtle\",\n },\n // Notice - Intense\n {\n color: \"notice\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-notice-intense text-action-ink-on-primary-normal\",\n },\n // Information - Subtle\n {\n color: \"information\",\n emphasis: \"subtle\",\n class: \"bg-feedback-fill-info-subtle text-feedback-ink-info-subtle\",\n },\n // Information - Intense\n {\n color: \"information\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-info-intense text-action-ink-on-primary-normal\",\n },\n // Neutral - Subtle\n {\n color: \"neutral\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-neutral-subtle text-surface-ink-neutral-normal\",\n },\n // Neutral - Intense\n {\n color: \"neutral\",\n emphasis: \"intense\",\n class:\n \"bg-feedback-fill-neutral-intense text-action-ink-on-primary-normal\",\n },\n // Primary - Subtle\n {\n color: \"primary\",\n emphasis: \"subtle\",\n class: \"bg-surface-fill-primary-subtle text-surface-ink-primary-normal\",\n },\n // Primary - Intense\n {\n color: \"primary\",\n emphasis: \"intense\",\n class:\n \"bg-surface-fill-primary-intense text-action-ink-on-primary-normal\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n color: \"neutral\",\n emphasis: \"subtle\",\n },\n }\n);\n\ntype CounterVariantProps = VariantProps<typeof counterVariants>;\nexport type CounterSize = NonNullable<CounterVariantProps[\"size\"]>;\nexport type CounterColor = NonNullable<CounterVariantProps[\"color\"]>;\nexport type CounterEmphasis = NonNullable<CounterVariantProps[\"emphasis\"]>;\n\nexport interface CounterProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\"> {\n /**\n * The numerical value to display\n */\n value: number | string;\n /**\n * Maximum value to display before showing overflow indicator (e.g., \"99+\")\n */\n max?: number;\n /**\n * Custom class name for the counter\n */\n className?: string;\n /**\n * Size of the counter\n */\n size?: CounterSize;\n /**\n * Color variant of the counter\n */\n color?: CounterColor;\n /**\n * Visual emphasis level\n */\n emphasis?: CounterEmphasis;\n}\n\nconst Counter = React.forwardRef<HTMLSpanElement, CounterProps>(\n (\n {\n value,\n max,\n size = \"medium\",\n color = \"neutral\",\n emphasis = \"subtle\",\n className,\n ...props\n },\n ref\n ) => {\n // Handle max value logic\n const displayValue = React.useMemo(() => {\n if (max !== undefined && typeof value === \"number\" && value > max) {\n return `${max}+`;\n }\n return value;\n }, [value, max]);\n\n return (\n <span\n ref={ref}\n className={cn(\n counterVariants({\n size,\n color,\n emphasis,\n }),\n className\n )}\n {...props}\n >\n {displayValue}\n </span>\n );\n }\n);\n\nCounter.displayName = \"Counter\";\n\nexport { Counter, counterVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\n\nconst tooltipVariants = cva(\n \"fixed z-50 bg-popup-fill-intense text-action-ink-on-primary-normal rounded-medium border border-popup-outline-subtle flex flex-col p-4 rounded-xlarge min-w-[200px] max-w-[300px] transition-opacity duration-200\",\n {\n variants: {\n isVisible: {\n true: \"opacity-100 pointer-events-auto shadow-[0_4px_20px_rgba(0,0,0,0.15)]\",\n false: \"opacity-0 pointer-events-none\",\n },\n },\n defaultVariants: {\n isVisible: false,\n },\n }\n);\n\nconst tooltipArrowVariants = cva(\n \"absolute w-0 h-0 border-solid border-[6px] -translate-x-1/2\",\n {\n variants: {\n placement: {\n \"top-start\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n top: \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"top-end\":\n \"top-full border-t-popup-fill-intense border-x-transparent border-b-transparent\",\n \"bottom-start\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n bottom:\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n \"bottom-end\":\n \"bottom-full border-b-popup-fill-intense border-x-transparent border-t-transparent\",\n },\n },\n defaultVariants: {\n placement: \"top\",\n },\n }\n);\n\nexport interface TooltipProps {\n /**\n * The trigger element that the tooltip will attach to\n */\n children: React.ReactElement;\n /**\n * Heading text for the tooltip\n */\n heading?: string;\n /**\n * Description text for the tooltip\n */\n description: string;\n /**\n * Placement of the tooltip relative to the trigger\n */\n placement?:\n | \"top-start\"\n | \"top\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom\"\n | \"bottom-end\";\n /**\n * Whether to show the arrow/anchor\n */\n showArrow?: boolean;\n /**\n * Custom class name for the tooltip container\n */\n className?: string;\n /**\n * Delay before showing tooltip (in milliseconds)\n */\n delay?: number;\n /**\n * Whether the tooltip is disabled\n */\n disabled?: boolean;\n}\n\nconst Tooltip = React.forwardRef<HTMLDivElement, TooltipProps>(\n (\n {\n children,\n heading,\n description,\n placement = \"top\",\n showArrow = true,\n className,\n delay = 200,\n disabled = false,\n },\n ref\n ) => {\n const [isVisible, setIsVisible] = React.useState(false);\n const [position, setPosition] = React.useState({ top: 0, left: 0 });\n const [arrowPosition, setArrowPosition] = React.useState({ left: 0 });\n const [actualPlacement, setActualPlacement] = React.useState<\n \"top-start\" | \"top\" | \"top-end\" | \"bottom-start\" | \"bottom\" | \"bottom-end\"\n >(placement);\n const timeoutRef = React.useRef<ReturnType<typeof setTimeout> | null>(null);\n const triggerRef = React.useRef<HTMLElement>(null);\n const tooltipRef = React.useRef<HTMLDivElement>(null);\n\n const calculatePosition = React.useCallback(() => {\n if (!triggerRef.current || !tooltipRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const tooltipRect = tooltipRef.current.getBoundingClientRect();\n const gap = 8; // 8px gap between trigger and tooltip\n const arrowSize = 6; // Size of the arrow\n const viewportPadding = 8; // Minimum padding from viewport edges\n\n let top = 0;\n let left = 0;\n let currentPlacement = placement;\n\n // Calculate initial position based on placement\n switch (placement) {\n case \"top-start\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.left;\n break;\n case \"top\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"top-end\":\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n case \"bottom-start\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.left;\n break;\n case \"bottom\":\n top = triggerRect.bottom + gap + arrowSize;\n left =\n triggerRect.left + triggerRect.width / 2 - tooltipRect.width / 2;\n break;\n case \"bottom-end\":\n top = triggerRect.bottom + gap + arrowSize;\n left = triggerRect.right - tooltipRect.width;\n break;\n }\n\n // Get viewport dimensions\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n // Adjust horizontal position to keep tooltip within viewport\n if (left < viewportPadding) {\n // Tooltip would overflow on the left\n left = viewportPadding;\n } else if (left + tooltipRect.width > viewportWidth - viewportPadding) {\n // Tooltip would overflow on the right\n left = viewportWidth - tooltipRect.width - viewportPadding;\n }\n\n // Adjust vertical position to keep tooltip within viewport\n if (top < viewportPadding) {\n // Tooltip would overflow at the top\n // Try to flip to bottom if there's more space there\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n if (spaceBelow > spaceAbove) {\n // Flip to bottom\n top = triggerRect.bottom + gap + arrowSize;\n // Update placement to reflect the flip\n if (placement === \"top-start\") currentPlacement = \"bottom-start\";\n else if (placement === \"top\") currentPlacement = \"bottom\";\n else if (placement === \"top-end\") currentPlacement = \"bottom-end\";\n } else {\n // Keep at top but adjust to stay in viewport\n top = viewportPadding;\n }\n } else if (top + tooltipRect.height > viewportHeight - viewportPadding) {\n // Tooltip would overflow at the bottom\n // Try to flip to top if there's more space there\n const spaceAbove = triggerRect.top;\n const spaceBelow = viewportHeight - triggerRect.bottom;\n\n if (spaceAbove > spaceBelow) {\n // Flip to top\n top = triggerRect.top - tooltipRect.height - gap - arrowSize;\n // Update placement to reflect the flip\n if (placement === \"bottom-start\") currentPlacement = \"top-start\";\n else if (placement === \"bottom\") currentPlacement = \"top\";\n else if (placement === \"bottom-end\") currentPlacement = \"top-end\";\n } else {\n // Keep at bottom but adjust to stay in viewport\n top = viewportHeight - tooltipRect.height - viewportPadding;\n }\n }\n\n // Calculate arrow position relative to trigger\n // The arrow should point to the center of the trigger element\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const tooltipLeft = left;\n const arrowLeft = triggerCenterX - tooltipLeft;\n\n // Clamp arrow position to stay within tooltip bounds (with padding)\n const arrowPadding = 16; // Minimum distance from tooltip edges\n const clampedArrowLeft = Math.max(\n arrowPadding,\n Math.min(arrowLeft, tooltipRect.width - arrowPadding)\n );\n\n setPosition({ top, left });\n setArrowPosition({ left: clampedArrowLeft });\n setActualPlacement(currentPlacement);\n }, [placement]);\n\n const handleMouseEnter = () => {\n if (disabled) return;\n\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n\n timeoutRef.current = setTimeout(() => {\n setIsVisible(true);\n }, delay);\n };\n\n const handleMouseLeave = () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n setIsVisible(false);\n };\n\n const handleFocus = () => {\n if (disabled) return;\n setIsVisible(true);\n };\n\n const handleBlur = () => {\n setIsVisible(false);\n };\n\n React.useEffect(() => {\n if (isVisible) {\n calculatePosition();\n window.addEventListener(\"scroll\", calculatePosition, true);\n window.addEventListener(\"resize\", calculatePosition);\n }\n\n return () => {\n window.removeEventListener(\"scroll\", calculatePosition, true);\n window.removeEventListener(\"resize\", calculatePosition);\n };\n }, [isVisible, calculatePosition]);\n\n React.useEffect(() => {\n // Reset actualPlacement when placement prop changes\n setActualPlacement(placement);\n }, [placement]);\n\n React.useEffect(() => {\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n }\n };\n }, []);\n\n // Merge refs function\n const mergeRefs = (...refs: any[]) => {\n return (node: any) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(node);\n } else if (ref && typeof ref === \"object\" && \"current\" in ref) {\n (ref as any).current = node;\n }\n });\n };\n };\n\n // Clone the child element and add event handlers\n const trigger = React.cloneElement(children, {\n ref: mergeRefs(triggerRef, (children as any).ref),\n onMouseEnter: (e: React.MouseEvent) => {\n handleMouseEnter();\n children.props.onMouseEnter?.(e);\n },\n onMouseLeave: (e: React.MouseEvent) => {\n handleMouseLeave();\n children.props.onMouseLeave?.(e);\n },\n onFocus: (e: React.FocusEvent) => {\n handleFocus();\n children.props.onFocus?.(e);\n },\n onBlur: (e: React.FocusEvent) => {\n handleBlur();\n children.props.onBlur?.(e);\n },\n \"aria-describedby\": isVisible ? \"tooltip-content\" : undefined,\n });\n\n return (\n <>\n {trigger}\n\n <div\n ref={mergeRefs(tooltipRef, ref)}\n id=\"tooltip-content\"\n role=\"tooltip\"\n className={cn(tooltipVariants({ isVisible }), className)}\n style={{\n top: `${position.top}px`,\n left: `${position.left}px`,\n }}\n aria-hidden={!isVisible}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {showArrow && (\n <div\n className={cn(\n tooltipArrowVariants({ placement: actualPlacement })\n )}\n style={{\n left: `${arrowPosition.left}px`,\n }}\n />\n )}\n\n <div className=\"relative flex flex-col gap-2\">\n {heading && (\n <Text\n variant=\"body\"\n size=\"medium\"\n weight=\"semibold\"\n color=\"onPrimary\"\n >\n {heading}\n </Text>\n )}\n <Text\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"onPrimary\"\n // className=\"flex gap-3\"\n >\n {description}\n </Text>\n </div>\n </div>\n </>\n );\n }\n);\n\nTooltip.displayName = \"Tooltip\";\n\nexport { Tooltip, tooltipVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Tooltip } from \"../Tooltip\";\nimport { Link } from \"../Link\";\nimport { Icon } from \"../../lib\";\n\nexport interface FormHeaderProps {\n /**\n * The label text to display\n */\n label: string;\n /**\n * Size variant that affects text size, icon size, and spacing\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether to show \"(optional)\" text after the label\n */\n isOptional?: boolean;\n /**\n * Whether to show \"*\" (required indicator) after the label\n */\n isRequired?: boolean;\n /**\n * Tooltip heading text\n */\n infoHeading?: string;\n /**\n * Tooltip description text - if provided, shows the info icon\n */\n infoDescription?: string;\n /**\n * Custom Link component to render on the right side\n * If provided, this will be rendered instead of the default Link with linkText\n */\n LinkComponent?: React.ReactNode;\n /**\n * Link text to display on the right side\n */\n linkText?: string;\n /**\n * Link href or onClick handler\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n /**\n * Leading icon for the link\n */\n linkLeadingIcon?: React.ReactNode;\n /**\n * Trailing icon for the link\n */\n linkTrailingIcon?: React.ReactNode;\n /**\n * HTML for attribute to associate with form input\n */\n htmlFor?: string;\n /**\n * Custom class name for the container\n */\n className?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the link\n */\n linkClassName?: string;\n}\n\nconst FormHeader = React.forwardRef<HTMLDivElement, FormHeaderProps>(\n (\n {\n label,\n size = \"medium\",\n isOptional = false,\n isRequired = false,\n infoHeading,\n infoDescription,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n linkLeadingIcon,\n linkTrailingIcon,\n htmlFor,\n className,\n labelClassName,\n linkClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textClassName: \"text-body-xsmall-semibold\",\n textClassNameRegular: \"text-caption-small-regular\",\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textClassName: \"text-body-small-semibold\",\n textClassNameRegular: \"text-caption-medium-regular\",\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textClassName: \"text-body-medium-semibold\",\n textClassNameRegular: \"text-caption-large-regular\",\n iconSize: 16,\n gap: \"gap-2.5\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex items-center justify-between px-1\",\n config.gap,\n className\n )}\n >\n <div className={cn(\"flex items-center\", config.gap)}>\n <label\n htmlFor={htmlFor}\n className={cn(\"flex items-center\", labelClassName)}\n >\n <span\n className={cn(\n config.textClassName,\n \"text-surface-neutral-subtle\"\n )}\n >\n {label}\n </span>\n {isRequired && (\n <span\n className={cn(\n config.textClassName,\n \"text-color-negative ml-0.5\"\n )}\n >\n *\n </span>\n )}\n {isOptional && (\n <span\n className={cn(\n config.textClassNameRegular,\n \"text-surface-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 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\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst dividerVariants = cva(\"\", {\n variants: {\n orientation: {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n },\n thickness: {\n thinner: \"\",\n thin: \"\",\n thick: \"\",\n thicker: \"\",\n },\n lineStyle: {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n },\n variant: {\n normal: \"\",\n subtle: \"\",\n muted: \"\",\n },\n },\n compoundVariants: [\n // Horizontal orientation with thickness\n {\n orientation: \"horizontal\",\n thickness: \"thinner\",\n class: \"border-t-[0.5px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thin\",\n class: \"border-t-[1px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thick\",\n class: \"border-t-[2px]\",\n },\n {\n orientation: \"horizontal\",\n thickness: \"thicker\",\n class: \"border-t-[3px]\",\n },\n // Vertical orientation with thickness\n {\n orientation: \"vertical\",\n thickness: \"thinner\",\n class: \"border-l-[0.5px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thin\",\n class: \"border-l-[1px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thick\",\n class: \"border-l-[2px]\",\n },\n {\n orientation: \"vertical\",\n thickness: \"thicker\",\n class: \"border-l-[3px]\",\n },\n // Normal variant colors\n {\n variant: \"normal\",\n class: \"border-surface-outline-neutral-normal\",\n },\n // Subtle variant colors\n {\n variant: \"subtle\",\n class: \"border-surface-outline-neutral-subtle\",\n },\n // Muted variant colors\n {\n variant: \"muted\",\n class: \"border-surface-outline-neutral-muted\",\n },\n ],\n defaultVariants: {\n orientation: \"horizontal\",\n thickness: \"thin\",\n lineStyle: \"solid\",\n variant: \"normal\",\n },\n});\n\nexport interface DividerProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof dividerVariants> {\n /**\n * The orientation of the divider\n * @default \"horizontal\"\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * The thickness of the divider\n * @default \"thin\"\n */\n thickness?: \"thinner\" | \"thin\" | \"thick\" | \"thicker\";\n /**\n * The style of the divider line\n * @default \"solid\"\n */\n lineStyle?: \"solid\" | \"dashed\";\n /**\n * The color variant of the divider\n * @default \"normal\"\n */\n variant?: \"normal\" | \"subtle\" | \"muted\";\n /**\n * Custom class name for the divider\n */\n className?: string;\n}\n\nconst Divider = React.forwardRef<HTMLDivElement, DividerProps>(\n (\n {\n className,\n orientation = \"horizontal\",\n thickness = \"thin\",\n lineStyle = \"solid\",\n variant = \"normal\",\n ...props\n },\n ref\n ) => {\n return (\n <div\n ref={ref}\n role=\"separator\"\n aria-orientation={orientation}\n className={cn(\n dividerVariants({ orientation, thickness, lineStyle, variant }),\n className\n )}\n {...props}\n />\n );\n }\n);\n\nDivider.displayName = \"Divider\";\n\nexport { Divider, dividerVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\n\nconst listItemVariants = cva(\n \"flex items-start gap-3 p-3 rounded-medium transition-colors cursor-pointer\",\n {\n variants: {\n variant: {\n default: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded\n focus:ring-2\n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n bordered:\n \"border border-action-outline-primary-faded hover:bg-surface-fill-primary-subtle\",\n primary: `hover:bg-action-fill-neutral-faded\n focus:bg-action-fill-neutral-faded \n focus:ring-2 \n ring-action-outline-primary-faded-hover\n border border-transparent\n `,\n negative: `hover:bg-action-fill-negative-faded \n focus:bg-action-fill-negative-faded \n focus:ring-2 ring-action-outline-negative-faded-hover\n border border-transparent\n `,\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n isSelected: {\n true: \"bg-action-fill-primary-faded border-action-outline-primary-faded\",\n false: \"\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n isDisabled: false,\n isSelected: false,\n },\n }\n);\n\nexport interface ListItemProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"color\"> {\n /**\n * Type of list item - determines if checkbox is shown\n */\n type?: \"single\" | \"multiple\";\n /**\n * Leading icon to display on the left\n */\n leadingIcon?: React.ReactNode;\n /**\n * Title text (required)\n */\n title: string;\n /**\n * Description text (optional)\n */\n description?: string;\n /**\n * Trailing icon to display on the right\n */\n trailingIcon?: React.ReactNode;\n /**\n * Whether to show the default chevron trailing icon\n */\n showChevron?: boolean;\n /**\n * Visual variant of the list item\n */\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n /**\n * Whether the list item is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the list item is selected (for multiple type)\n */\n isSelected?: boolean;\n /**\n * Callback when the list item selection changes\n */\n onSelectionChange?: (selected: boolean) => void;\n /**\n * Size of the checkbox (when type is multiple)\n */\n checkboxSize?: \"small\" | \"medium\" | \"large\";\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the content area\n */\n contentClassName?: string;\n}\n\nconst ChevronRightIcon: React.FC<{ className?: string }> = ({ className }) => (\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path\n d=\"M7.5 15L12.5 10L7.5 5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n\nconst ListItem = React.forwardRef<HTMLDivElement, ListItemProps>(\n (\n {\n className,\n type = \"single\",\n leadingIcon,\n title,\n description,\n trailingIcon,\n showChevron = true,\n variant = \"default\",\n isDisabled = false,\n isSelected = false,\n onSelectionChange,\n checkboxSize = \"small\",\n containerClassName,\n contentClassName,\n onClick,\n ...props\n },\n ref\n ) => {\n const [internalSelected, setInternalSelected] = React.useState(isSelected);\n\n // Sync internal state with prop\n React.useEffect(() => {\n setInternalSelected(isSelected);\n }, [isSelected]);\n\n const handleClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (isDisabled) return;\n\n if (type === \"multiple\") {\n const newSelected = !internalSelected;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n }\n\n onClick?.(e);\n };\n\n const handleCheckboxChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n e.stopPropagation();\n if (isDisabled) return;\n\n const newSelected = e.target.checked;\n setInternalSelected(newSelected);\n onSelectionChange?.(newSelected);\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n listItemVariants({\n variant,\n isDisabled,\n isSelected: type === \"multiple\" ? internalSelected : false,\n }),\n containerClassName\n )}\n onClick={handleClick}\n role={type === \"multiple\" ? \"checkbox\" : \"button\"}\n aria-checked={type === \"multiple\" ? internalSelected : undefined}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n {...props}\n >\n {/* Checkbox for multiple type */}\n {type === \"multiple\" && (\n <Checkbox\n checked={internalSelected}\n onChange={handleCheckboxChange}\n isDisabled={isDisabled}\n size={checkboxSize}\n className=\"shrink-0 mt-0.5\"\n />\n )}\n\n {/* Leading Icon */}\n {leadingIcon && (\n <div\n className={cn(\n `shrink-0 flex items-center justify-center mt-0.5`,\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-subtle\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {leadingIcon}\n </div>\n )}\n\n {/* Content */}\n <div\n className={cn(\n \"flex-1 min-w-0 flex flex-col justify-center\",\n contentClassName\n )}\n >\n <div\n className={cn(\n \"text-body-medium-regular truncate\",\n variant === \"primary\"\n ? \"text-action-ink-primary-normal\"\n : variant === \"negative\"\n ? \"text-action-ink-negative-normal\"\n : \"text-action-ink-neutral-normal\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {title}\n </div>\n {description && (\n <div\n className={cn(\n \"text-body-small-regular text-surface-ink-neutral-muted mt-0.5 line-clamp-2\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {description}\n </div>\n )}\n </div>\n\n {/* Trailing Icon */}\n {(trailingIcon || showChevron) && (\n <div className=\"shrink-0 self-center text-action-ink-neutral-subtle\">\n {trailingIcon || <ChevronRightIcon />}\n </div>\n )}\n </div>\n );\n }\n);\n\nListItem.displayName = \"ListItem\";\n\nexport { ListItem, listItemVariants };\n","import * as React from \"react\";\nimport { Search, Loader2 } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { ListItem } from \"../ListItem\";\nimport { Button } from \"../Button\";\nimport { Divider } from \"../Divider\";\nimport { Text } from \"../Text\";\nimport { Link } from \"../Link\";\n\nexport interface DropdownMenuItem {\n value: string | number;\n label: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n onClick?: () => void;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nexport interface DropdownMenuProps {\n /**\n * Items to display in the dropdown\n */\n items?: DropdownMenuItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show the footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when menu should close\n */\n onClose?: () => void;\n /**\n * Focused item index (for keyboard navigation)\n */\n focusedIndex?: number;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Width of the dropdown menu\n */\n width?: \"auto\" | \"full\" | string;\n}\n\nexport const DropdownMenu = React.forwardRef<HTMLDivElement, DropdownMenuProps>(\n (\n {\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n footerLayout = \"horizontal\",\n onClose,\n focusedIndex = -1,\n className,\n width = \"auto\",\n },\n ref\n ) => {\n const renderContent = () => {\n if (isLoading) {\n return (\n <div className=\"flex flex-col items-center justify-center py-12 px-6\">\n <Loader2 className=\"w-12 h-12 text-action-ink-primary-normal mb-4 animate-spin\" />\n </div>\n );\n }\n\n if (customContent) {\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-body-small-medium text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"px-1\">{customContent}</div>\n </div>\n );\n }\n\n if (isEmpty || items.length === 0) {\n return (\n <div className=\"flex flex-col items-center justify-center py-8 px-6 text-center\">\n {emptyIcon || (\n <Search className=\"w-12 h-12 text-surface-ink-neutral-muted mb-4\" />\n )}\n <Text\n as=\"h3\"\n variant=\"body\"\n size=\"small\"\n weight=\"semibold\"\n className=\"text-surface-ink-neutral-normal mb-2\"\n >\n {emptyTitle}\n </Text>\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n className=\"text-surface-ink-neutral-muted mb-3\"\n >\n {emptyDescription}\n </Text>\n {emptyLinkText && (\n <Link\n type=\"anchor\"\n color=\"primary\"\n size=\"small\"\n onClick={onEmptyLinkClick}\n >\n {emptyLinkText}\n </Link>\n )}\n </div>\n );\n }\n\n return (\n <div className=\"py-3 px-3 max-h-[400px] overflow-y-auto\">\n {sectionHeading && (\n <Text\n as=\"div\"\n variant=\"body\"\n size=\"small\"\n weight=\"medium\"\n className=\"text-surface-ink-neutral-muted px-3 py-2 mb-1\"\n >\n {sectionHeading}\n </Text>\n )}\n <div className=\"flex flex-col gap-1\">\n {items.map((item, index) => (\n <ListItem\n key={item.value}\n title={item.label}\n description={item.description}\n leadingIcon={item.leadingIcon}\n trailingIcon={item.trailingIcon}\n showChevron={showChevron}\n isDisabled={item.isDisabled}\n isSelected={index === focusedIndex}\n variant={item.variant}\n onClick={() => {\n item.onClick?.();\n onClose?.();\n }}\n containerClassName={cn(\n index === focusedIndex && \"bg-action-fill-primary-faded\"\n )}\n />\n ))}\n </div>\n </div>\n );\n };\n\n const widthClass =\n width === \"full\" ? \"w-full\" : width === \"auto\" ? \"w-auto\" : \"\";\n const footerVisible = showFooter ?? !disableFooter;\n\n return (\n <div\n ref={ref}\n className={cn(\n \"bg-white rounded-large overflow-hidden\",\n widthClass,\n className\n )}\n style={{\n boxShadow:\n \"0 1px 2px rgba(25, 25, 30, 0.1), 0 2px 6px rgba(25, 25, 30, 0.06)\",\n ...(width !== \"full\" && width !== \"auto\" ? { width } : {}),\n }}\n >\n {/* Content */}\n {renderContent()}\n\n {/* Footer */}\n {footerVisible && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex gap-3 p-4\",\n footerLayout === \"vertical\"\n ? \"flex-col\"\n : \"items-center flex-row\"\n )}\n >\n <Button\n variant=\"secondary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onSecondaryClick}\n >\n {secondaryButtonText}\n </Button>\n <Button\n variant=\"primary\"\n color=\"primary\"\n size=\"medium\"\n isFullWidth\n onClick={onPrimaryClick}\n >\n {primaryButtonText}\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n }\n);\n\nDropdownMenu.displayName = \"DropdownMenu\";\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"./DropdownMenu\";\n\nconst dropdownVariants = cva(\n \"bg-surface-fill-primary-normal border border-surface-outline-neutral-subtle rounded-large\",\n {\n variants: {\n size: {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport type DropdownItem = DropdownMenuItem;\n\nexport interface DropdownProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Trigger element that opens the dropdown\n */\n trigger?: React.ReactNode;\n /**\n * Items to display in the dropdown\n */\n items?: DropdownItem[];\n /**\n * Custom content to render instead of the default item list\n */\n customContent?: React.ReactNode;\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Whether to show empty/no results state\n */\n isEmpty?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether dropdown is open (controlled)\n */\n open?: boolean;\n /**\n * Default open state (uncontrolled)\n */\n defaultOpen?: boolean;\n /**\n * Callback when open state changes\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * Custom class for dropdown container\n */\n containerClassName?: string;\n /**\n * Custom class for dropdown menu\n */\n menuClassName?: string;\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Whether to show footer actions (overrides disableFooter)\n */\n showFooter?: boolean;\n}\n\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n className,\n trigger,\n items = [],\n customContent,\n sectionHeading,\n isLoading = false,\n isEmpty = false,\n emptyTitle = \"No Search Results Found\",\n emptyDescription = \"Add description of what the user can search for here.\",\n emptyLinkText = \"Link to support site\",\n onEmptyLinkClick,\n primaryButtonText = \"Primary\",\n secondaryButtonText = \"Secondary\",\n onPrimaryClick,\n onSecondaryClick,\n size = \"medium\",\n open: controlledOpen,\n defaultOpen = false,\n onOpenChange,\n containerClassName,\n menuClassName,\n showChevron = false,\n emptyIcon,\n disableFooter = false,\n showFooter,\n ...props\n },\n ref\n ) => {\n const [uncontrolledOpen, setUncontrolledOpen] = React.useState(defaultOpen);\n const isOpen =\n controlledOpen !== undefined ? controlledOpen : uncontrolledOpen;\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n\n const handleOpenChange = (newOpen: boolean) => {\n if (controlledOpen === undefined) {\n setUncontrolledOpen(newOpen);\n }\n onOpenChange?.(newOpen);\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n const sizeMap = {\n small: \"w-64\",\n medium: \"w-80\",\n large: \"w-96\",\n };\n\n return (\n <div\n ref={dropdownRef}\n className={cn(\"relative inline-block\", containerClassName)}\n {...props}\n >\n {/* Trigger */}\n {trigger && (\n <div onClick={toggleOpen} className=\"cursor-pointer\">\n {trigger}\n </div>\n )}\n\n {/* Dropdown Menu */}\n {isOpen && (\n <DropdownMenu\n ref={ref}\n items={items}\n customContent={customContent}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={isEmpty}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={showFooter}\n onClose={() => handleOpenChange(false)}\n className={cn(\"absolute z-50 mt-2\", menuClassName, className)}\n width={sizeMap[size]}\n />\n )}\n </div>\n );\n }\n);\n\nDropdown.displayName = \"Dropdown\";\n\nexport { dropdownVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { IconButton } from \"../IconButton\";\nimport { Divider } from \"../Divider\";\n\nexport interface ModalProps {\n /**\n * Whether the modal is open\n */\n isOpen: boolean;\n /**\n * Callback when the modal should close\n */\n onClose?: () => void;\n /**\n * Modal title - optional\n */\n title?: string;\n /**\n * Modal description/subtitle - optional\n */\n description?: string;\n /**\n * Modal footer content - optional\n */\n footer?: React.ReactNode;\n /**\n * Modal body content\n */\n children: React.ReactNode;\n /**\n * Size variant\n */\n size?: \"small\" | \"medium\" | \"large\" | \"xlarge\";\n /**\n * Whether to show the close button in header\n */\n showCloseButton?: boolean;\n /**\n * Whether clicking the overlay closes the modal\n */\n closeOnOverlayClick?: boolean;\n /**\n * Whether pressing Escape closes the modal\n */\n closeOnEscape?: boolean;\n /**\n * Custom class name for the modal container\n */\n className?: string;\n /**\n * Custom class name for the modal content\n */\n contentClassName?: string;\n /**\n * Custom class name for the header\n */\n headerClassName?: string;\n /**\n * Custom class name for the body\n */\n bodyClassName?: string;\n /**\n * Custom class name for the footer\n */\n footerClassName?: string;\n /**\n * Custom class name for the overlay\n */\n overlayClassName?: string;\n /**\n * ARIA label for accessibility\n */\n ariaLabel?: string;\n /**\n * ARIA description for accessibility\n */\n ariaDescribedBy?: string;\n}\n\nconst Modal = React.forwardRef<HTMLDivElement, ModalProps>(\n (\n {\n isOpen,\n onClose,\n title,\n description,\n footer,\n children,\n size = \"medium\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n contentClassName,\n headerClassName,\n bodyClassName,\n footerClassName,\n overlayClassName,\n ariaLabel,\n ariaDescribedBy,\n },\n ref\n ) => {\n const modalRef = React.useRef<HTMLDivElement>(null);\n const contentRef = ref || modalRef;\n\n // Size configurations\n const sizeConfig = {\n small: \"max-w-sm\",\n medium: \"max-w-md\",\n large: \"max-w-lg\",\n xlarge: \"max-w-2xl\",\n };\n\n // Handle escape key\n React.useEffect(() => {\n if (!isOpen || !closeOnEscape || !onClose) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\") {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }, [isOpen, closeOnEscape, onClose]);\n\n // Prevent body scroll when modal is open\n React.useEffect(() => {\n if (isOpen) {\n document.body.style.overflow = \"hidden\";\n } else {\n document.body.style.overflow = \"\";\n }\n\n return () => {\n document.body.style.overflow = \"\";\n };\n }, [isOpen]);\n\n // Handle overlay click\n const handleOverlayClick = (e: React.MouseEvent<HTMLDivElement>) => {\n if (closeOnOverlayClick && e.target === e.currentTarget && onClose) {\n onClose();\n }\n };\n\n // Don't render if not open\n if (!isOpen) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-[10000] flex items-center justify-center p-4\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Modal Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative w-full bg-white rounded-large shadow-xl transition-all\",\n \"flex flex-col max-h-[90vh]\",\n sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4 px-6 pt-6\",\n !description && \"pb-4\",\n description && \"pb-2\",\n headerClassName\n )}\n >\n <div className=\"flex-1\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"subtle\"\n className=\"mt-1\"\n >\n {description}\n </Text>\n )}\n </div>\n\n {showCloseButton && onClose && (\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n className=\"shrink-0\"\n />\n )}\n </div>\n )}\n\n {/* Header with close button only (no title/description) */}\n {!hasHeader && showCloseButton && onClose && (\n <div className=\"absolute top-4 right-4 z-10\">\n <IconButton\n icon=\"close\"\n onClick={onClose}\n color=\"neutral\"\n size=\"small\"\n aria-label=\"Close modal\"\n />\n </div>\n )}\n\n {/* Body */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto px-6\",\n hasHeader ? \"py-4\" : \"pt-6 pb-4\",\n !footer && \"pb-6\",\n bodyClassName\n )}\n >\n {children}\n </div>\n\n {/* Footer */}\n {footer && (\n <div className=\"flex flex-col\">\n <Divider thickness=\"thin\" variant=\"muted\" />\n <div\n className={cn(\n \"flex items-center justify-end gap-3 px-6 py-4\",\n footerClassName\n )}\n >\n {footer}\n </div>\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nModal.displayName = \"Modal\";\n\nexport { Modal };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nexport interface SelectOption {\n value: string | number;\n label?: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n variant?: \"default\" | \"bordered\" | \"primary\" | \"negative\";\n}\n\nconst selectVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-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 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<HTMLDivElement, SelectProps>(\n (\n {\n className,\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n isLoading = false,\n size = \"medium\",\n prefix,\n suffix,\n showClearButton = false,\n onClear,\n 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 selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n\n const value =\n controlledValue !== undefined ? controlledValue : uncontrolledValue;\n\n // Find the selected option\n const selectedOption = options.find((opt) => opt.value === value);\n const hasValue = value !== undefined && value !== \"\";\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isDisabled && !isLoading) {\n setIsOpen(newOpen);\n }\n };\n\n const toggleOpen = () => {\n handleOpenChange(!isOpen);\n };\n\n const handleSelect = (option: SelectOption) => {\n if (controlledValue === undefined) {\n setUncontrolledValue(option.value);\n }\n onChange?.(option.value, option);\n setIsOpen(false);\n };\n\n const handleClear = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (onClear) {\n onClear();\n } else {\n if (controlledValue === undefined) {\n setUncontrolledValue(undefined);\n }\n onChange?.(\"\", {} as SelectOption);\n }\n };\n\n const updateDropdownPlacement = React.useCallback(() => {\n if (typeof window === \"undefined\") return;\n const trigger = selectRef.current;\n if (!trigger) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const spaceBelow = window.innerHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n\n const dropdownHeight = dropdownContainerRef.current\n ? dropdownContainerRef.current.offsetHeight\n : 0;\n\n if (dropdownHeight === 0) {\n setDropdownPlacement(spaceBelow >= spaceAbove ? \"bottom\" : \"top\");\n return;\n }\n\n if (spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove) {\n setDropdownPlacement(\"bottom\");\n } else {\n setDropdownPlacement(\"top\");\n }\n }, []);\n\n const attachDropdownListeners = React.useCallback(() => {\n if (!isOpen) return;\n if (typeof window === \"undefined\") return;\n let rafId = requestAnimationFrame(updateDropdownPlacement);\n\n const handleUpdate = () => updateDropdownPlacement();\n window.addEventListener(\"resize\", handleUpdate);\n window.addEventListener(\"scroll\", handleUpdate, true);\n\n return () => {\n cancelAnimationFrame(rafId);\n window.removeEventListener(\"resize\", handleUpdate);\n window.removeEventListener(\"scroll\", handleUpdate, true);\n };\n }, [isOpen, updateDropdownPlacement]);\n\n React.useEffect(() => {\n const detach = attachDropdownListeners();\n return () => {\n detach?.();\n };\n }, [attachDropdownListeners]);\n\n React.useEffect(() => {\n if (isOpen) {\n updateDropdownPlacement();\n }\n }, [isOpen, options.length, updateDropdownPlacement]);\n\n // Close dropdown when clicking outside\n React.useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n selectRef.current &&\n !selectRef.current.contains(event.target as Node)\n ) {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }\n }, [isOpen]);\n\n // Close on escape key\n React.useEffect(() => {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n handleOpenChange(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener(\"keydown\", handleEscape);\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n };\n }\n }, [isOpen]);\n\n // Handle keyboard navigation\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isDisabled || isLoading) return;\n\n if (!isOpen && (event.key === \"Enter\" || event.key === \" \")) {\n event.preventDefault();\n setIsOpen(true);\n return;\n }\n\n if (isOpen) {\n if (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") {\n event.preventDefault();\n const currentIndex = options.findIndex(\n (opt) => opt.value === value\n );\n const nextIndex =\n event.key === \"ArrowDown\"\n ? Math.min(currentIndex + 1, options.length - 1)\n : Math.max(currentIndex - 1, 0);\n\n if (options[nextIndex] && !options[nextIndex].isDisabled) {\n handleSelect(options[nextIndex]);\n }\n }\n }\n };\n\n if (selectRef.current) {\n selectRef.current.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n selectRef.current?.removeEventListener(\"keydown\", handleKeyDown);\n };\n }\n }, [isOpen, value, options, isDisabled, isLoading]);\n\n // Transform options to dropdown menu items\n const menuItems: DropdownMenuItem[] = options.map((option) => ({\n value: option.value,\n label: option.label ?? String(option.value),\n description: option.description,\n leadingIcon: option.leadingIcon,\n trailingIcon: option.trailingIcon,\n isDisabled: option.isDisabled,\n variant: option.variant,\n onClick: () => handleSelect(option),\n }));\n\n const widthStyle =\n menuWidth === \"full\" ? \"100%\" : menuWidth === \"auto\" ? \"auto\" : menuWidth;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={selectRef}\n className={cn(\n selectVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled && !isLoading ? toggleOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n {/* Show prefix if provided, otherwise show selected option's leadingIcon if showLeadingIcon is true */}\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 ) : showLeadingIcon && selectedOption?.leadingIcon ? (\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 {selectedOption.leadingIcon}\n </span>\n ) : null}\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {isLoading ? \"Loading...\" : selectedOption?.label || placeholder}\n </span>\n\n {showClearButton && hasValue && !isDisabled && !isLoading && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && !showClearButton && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n\n <ChevronDown\n className={cn(\n \"shrink-0 w-4 h-4 transition-transform\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\",\n isOpen && \"transform rotate-180\"\n )}\n />\n\n {/* Dropdown Menu */}\n {isOpen && !isDisabled && !isLoading && (\n <div\n ref={dropdownContainerRef}\n className={cn(\n \"absolute z-50 left-0 right-0\",\n dropdownPlacement === \"bottom\"\n ? \"top-full mt-1\"\n : \"bottom-full mb-1\"\n )}\n >\n <DropdownMenu\n ref={ref}\n items={menuItems}\n sectionHeading={sectionHeading}\n isEmpty={options.length === 0}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyIcon={emptyIcon}\n disableFooter={true}\n onClose={() => handleOpenChange(false)}\n className={menuClassName}\n width={widthStyle}\n />\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport { selectVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Select, type SelectOption } from \"../Select\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\n\nconst paginationVariants = cva(\n \"flex items-center gap-4 font-display text-body-medium-medium\",\n {\n variants: {\n size: {\n small: \"text-xs gap-2\",\n medium: \"text-sm gap-4\",\n large: \"text-base gap-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Current page number (1-indexed)\n */\n currentPage?: number;\n /**\n * Total number of pages\n */\n totalPages: number;\n /**\n * Rows per page value\n */\n rowsPerPage?: number;\n /**\n * Available options for rows per page\n */\n rowsPerPageOptions?: number[];\n /**\n * Show rows per page selector\n */\n showRowsPerPage?: boolean;\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n /**\n * Callback when rows per page changes\n */\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n /**\n * Size of the pagination controls\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Disable the pagination controls\n */\n isDisabled?: boolean;\n /**\n * Custom text for \"Row per page\" label\n */\n rowsPerPageLabel?: string;\n /**\n * Custom text for \"of\" label\n */\n ofLabel?: string;\n /**\n * Custom text for \"Prev\" button\n */\n prevLabel?: string;\n /**\n * Custom text for \"Next\" button\n */\n nextLabel?: string;\n /**\n * Show prev/next buttons\n */\n showPrevNext?: boolean;\n /**\n * Show page jumper (dropdown) instead of numbered buttons\n */\n showPageJumper?: boolean;\n /**\n * Show page number (used with showPageJumper=false)\n */\n showPageNumber?: boolean;\n /**\n * Page status for displaying page numbers\n */\n pageStatus?: \"none\" | \"first\" | \"middle\" | \"last\";\n /**\n * Maximum number of page buttons to show\n */\n maxPageButtons?: number;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage: controlledCurrentPage,\n totalPages,\n rowsPerPage: controlledRowsPerPage,\n rowsPerPageOptions = [5, 10, 15, 20, 25, 50, 100],\n showRowsPerPage = true,\n onPageChange,\n onRowsPerPageChange,\n size = \"medium\",\n isDisabled = false,\n rowsPerPageLabel = \"Row per page\",\n ofLabel = \"of\",\n prevLabel = \"Prev\",\n nextLabel = \"Next\",\n showPrevNext = true,\n showPageJumper = true,\n showPageNumber = true,\n pageStatus,\n maxPageButtons = 5,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCurrentPage, setUncontrolledCurrentPage] =\n React.useState(1);\n const [uncontrolledRowsPerPage, setUncontrolledRowsPerPage] =\n React.useState(rowsPerPageOptions[0] || 10);\n\n const currentPage =\n controlledCurrentPage !== undefined\n ? controlledCurrentPage\n : uncontrolledCurrentPage;\n\n const rowsPerPage =\n controlledRowsPerPage !== undefined\n ? controlledRowsPerPage\n : uncontrolledRowsPerPage;\n\n // Generate rows per page options\n const rowsPerPageSelectOptions: SelectOption[] = rowsPerPageOptions.map(\n (value) => {\n const valueStr = String(value);\n // Pad with leading zero if needed (manual implementation for compatibility)\n const label = valueStr.length < 2 ? \"0\" + valueStr : valueStr;\n return {\n id: `rows-${valueStr}`,\n value: valueStr,\n label: label,\n title: valueStr,\n };\n }\n );\n\n // Generate page options\n const pageOptions: SelectOption[] = Array.from(\n { length: totalPages },\n (_, i) => {\n const pageNum = i + 1;\n const pageStr = String(pageNum);\n return {\n id: `page-${pageStr}`,\n value: pageStr,\n label: pageStr,\n title: `Page ${pageNum}`,\n };\n }\n );\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > totalPages) return;\n if (controlledCurrentPage === undefined) {\n setUncontrolledCurrentPage(newPage);\n }\n onPageChange?.(newPage);\n };\n\n const handleRowsPerPageChange = (value: string | number) => {\n const newRowsPerPage =\n typeof value === \"string\" ? parseInt(value) : value;\n if (controlledRowsPerPage === undefined) {\n setUncontrolledRowsPerPage(newRowsPerPage);\n }\n onRowsPerPageChange?.(newRowsPerPage);\n // Reset to first page when rows per page changes\n handlePageChange(1);\n };\n\n const handlePrevPage = () => {\n handlePageChange(currentPage - 1);\n };\n\n const handleNextPage = () => {\n handlePageChange(currentPage + 1);\n };\n\n const isPrevDisabled = currentPage <= 1 || isDisabled;\n const isNextDisabled = currentPage >= totalPages || isDisabled;\n\n const selectSize =\n size === \"small\" ? \"small\" : size === \"large\" ? \"large\" : \"medium\";\n\n // Map pagination size to button size\n const buttonSize =\n size === \"small\" ? \"xsmall\" : size === \"large\" ? \"large\" : \"small\";\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= maxPageButtons) {\n // Show all pages if total is less than max\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n // Determine page status if not provided\n const effectivePageStatus =\n pageStatus ||\n (currentPage <= 2\n ? \"first\"\n : currentPage >= totalPages - 1\n ? \"last\"\n : \"middle\");\n\n if (effectivePageStatus === \"first\") {\n // Show first pages: 1, 2, 3, 4, 5\n return Array.from(\n { length: Math.min(maxPageButtons, totalPages) },\n (_, i) => i + 1\n );\n } else if (effectivePageStatus === \"last\") {\n // Show last pages\n const start = totalPages - maxPageButtons + 1;\n return Array.from({ length: maxPageButtons }, (_, i) => start + i);\n } else if (effectivePageStatus === \"middle\") {\n // Show pages around current page\n const halfMax = Math.floor(maxPageButtons / 2);\n let start = currentPage - halfMax;\n let end = currentPage + halfMax;\n\n // Adjust if at boundaries\n if (start < 1) {\n end += 1 - start;\n start = 1;\n }\n if (end > totalPages) {\n start -= end - totalPages;\n end = totalPages;\n }\n\n start = Math.max(1, start);\n end = Math.min(totalPages, end);\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n\n // pageStatus === \"none\" - don't show any page numbers\n return [];\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div\n ref={ref}\n className={cn(paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {rowsPerPageLabel}\n </span>\n <div className=\"w-[80px]\">\n <Select\n value={rowsPerPage.toString()}\n options={rowsPerPageSelectOptions}\n onChange={handleRowsPerPageChange}\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3 ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<ChevronLeft className=\"w-4 h-4\" />}\n aria-label=\"Previous page\"\n >\n {prevLabel}\n </Button>\n )}\n\n {showPageJumper ? (\n // Show page dropdown selector\n <div className=\"flex items-center gap-3\">\n <div className=\"w-[80px]\">\n <Select\n value={currentPage.toString()}\n options={pageOptions}\n onChange={(value) =>\n handlePageChange(\n typeof value === \"string\" ? parseInt(value) : value\n )\n }\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {ofLabel} {totalPages}\n </span>\n </div>\n ) : (\n // Show numbered page buttons\n showPageNumber &&\n pageNumbers.length > 0 && (\n <ButtonGroup\n variant=\"separated\"\n size={buttonSize}\n isDisabled={isDisabled}\n value={currentPage}\n onChange={(value) => handlePageChange(value as number)}\n >\n {pageNumbers.map((pageNum) => (\n <Button\n key={pageNum}\n value={pageNum}\n variant=\"tertiary\"\n color=\"primary\"\n aria-label={`Page ${pageNum}`}\n aria-current={pageNum === currentPage ? \"page\" : undefined}\n >\n {pageNum}\n </Button>\n ))}\n </ButtonGroup>\n )\n )}\n\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handleNextPage}\n isDisabled={isNextDisabled}\n trailingIcon={<ChevronRight className=\"w-4 h-4\" />}\n aria-label=\"Next page\"\n >\n {nextLabel}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { paginationVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst radioVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 border transition-all cursor-pointer rounded-full\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] border-[1.5px]\",\n medium: \"w-[16px] h-[16px] border-[1.5px]\",\n large: \"w-[20px] h-[20px] border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n isFocused: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class: `border-action-outline-neutral-faded \n hover:bg-action-fill-neutral-faded \n hover:border-action-outline-neutral-faded\n `,\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover border-action-fill-primary-default hover:border-action-fill-primary-hover\",\n },\n // Checked state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default hover:bg-action-fill-negative-hover border-action-fill-negative-default hover:border-action-fill-negative-hover\",\n },\n // Focused state - none validation\n {\n isFocused: true,\n validationState: \"none\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-primary-faded\",\n },\n // Focused state - error validation\n {\n isFocused: true,\n validationState: \"error\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-negative-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isDisabled: false,\n isFocused: false,\n },\n }\n);\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the radio button\n */\n label?: string;\n /**\n * Error text to display below the radio button\n */\n errorText?: string;\n /**\n * Size of the radio button\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the radio button\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio button is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled) {\n setShowRipple(true);\n setTimeout(() => {\n setShowRipple(false);\n }, 360); // Match animation duration (0.36s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current?.click();\n }\n };\n\n const handleFocus = () => {\n if (!isDisabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n innerCircleSize: 6,\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 7,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 8,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"radio\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n radioVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n className\n )}\n >\n {/* Inner White Circle (creates ring effect) */}\n {isChecked && (\n <div\n className=\"rounded-full bg-white transition-all\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport { Radio, radioVariants };\n","import * as React from \"react\";\nimport { 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 * 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 * 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 containerClassName,\n labelClassName,\n groupClassName,\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 validationState={currentValidationState}\n isDisabled={optionDisabled}\n showErrorText={false}\n containerClassName={option.containerClassName}\n labelClassName={option.labelClassName}\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 validationState:\n child.props.validationState || currentValidationState,\n isDisabled: childDisabled,\n showErrorText: false,\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\",\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 { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-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 TextFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isLoading?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n showClearButton?: boolean;\n onClear?: () => void;\n containerClassName?: string;\n labelClassName?: string;\n inputClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isLoading = false,\n isRequired = false,\n isOptional = false,\n prefix,\n suffix,\n showClearButton = false,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n onClear,\n containerClassName,\n labelClassName,\n inputClassName,\n className,\n value,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const inputValue = value !== undefined ? value : internalValue;\n const hasValue = inputValue && String(inputValue).length > 0;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(e.target.value);\n }\n };\n\n const handleClear = () => {\n if (onClear) {\n onClear();\n } else {\n setInternalValue(\"\");\n }\n // Focus the input after clearing\n const input = document.getElementById(props.id || \"\");\n if (input) {\n input.focus();\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textFieldVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n isLoading && \"text-field-loading\",\n className\n )}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <input\n ref={ref}\n value={inputValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled\",\n inputClassName\n )}\n {...props}\n />\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { TextField, textFieldVariants };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/utils\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\n\nexport interface SearchableDropdownItem extends DropdownMenuItem {\n [key: string]: any;\n}\n\nexport interface SearchableDropdownProps\n extends Omit<TextFieldProps, \"onChange\" | \"value\"> {\n /**\n * Items to display in the dropdown\n */\n items?: SearchableDropdownItem[];\n /**\n * Section heading text\n */\n sectionHeading?: string;\n /**\n * Whether the dropdown is in loading state\n */\n isLoading?: boolean;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Empty state link text\n */\n emptyLinkText?: string;\n /**\n * Empty state link click handler\n */\n onEmptyLinkClick?: () => void;\n /**\n * Primary button text\n */\n primaryButtonText?: string;\n /**\n * Secondary button text\n */\n secondaryButtonText?: string;\n /**\n * Primary button click handler\n */\n onPrimaryClick?: () => void;\n /**\n * Secondary button click handler\n */\n onSecondaryClick?: () => void;\n /**\n * Dropdown menu width\n */\n dropdownWidth?: \"auto\" | \"full\";\n /**\n * Show chevron on list items\n */\n showChevron?: boolean;\n /**\n * Custom empty state icon\n */\n emptyIcon?: React.ReactNode;\n /**\n * Disable footer buttons\n */\n disableFooter?: boolean;\n /**\n * Footer layout orientation\n */\n footerLayout?: \"horizontal\" | \"vertical\";\n /**\n * Callback when search value changes\n */\n onSearchChange?: (value: string) => void;\n /**\n * Callback when item is selected\n */\n onItemSelect?: (item: SearchableDropdownItem) => void;\n /**\n * Custom filter function\n */\n filterFunction?: (item: SearchableDropdownItem, query: string) => boolean;\n /**\n * Search value (controlled)\n */\n searchValue?: string;\n /**\n * Default search value (uncontrolled)\n */\n defaultSearchValue?: string;\n /**\n * Custom class for dropdown menu\n */\n dropdownClassName?: string;\n /**\n * Minimum characters before showing dropdown\n */\n minSearchLength?: number;\n /**\n * Show dropdown on focus\n */\n showOnFocus?: boolean;\n /**\n * Show \"Add New\" option when search doesn't match any items\n */\n showAddNew?: boolean;\n /**\n * 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 * 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 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 dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // 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\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const searchValue =\n controlledSearchValue !== undefined\n ? controlledSearchValue\n : uncontrolledSearchValue;\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newValue);\n }\n onSearchChange?.(newValue);\n\n // 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 || !searchValue) {\n return filteredItems;\n }\n\n const addNewItem: SearchableDropdownItem = {\n value: searchValue,\n label: `+ Add \"${searchValue}\"`,\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 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 const dropdownMenu = showDropdown && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n top: `${position.top + 8}px`,\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: isInsideModal ? 10001 : 9999,\n }}\n >\n <DropdownMenu\n items={itemsWithHandlers}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={itemsWithAddNew.length === 0 && !showAddNew}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyLinkText={emptyLinkText}\n onEmptyLinkClick={onEmptyLinkClick}\n primaryButtonText={primaryButtonText}\n secondaryButtonText={secondaryButtonText}\n onPrimaryClick={onPrimaryClick}\n onSecondaryClick={onSecondaryClick}\n showChevron={showChevron}\n emptyIcon={emptyIcon}\n disableFooter={disableFooter}\n showFooter={\n (primaryButtonText || secondaryButtonText) && !disableFooter\n ? true\n : false\n }\n footerLayout={footerLayout}\n onClose={() => setIsOpen(false)}\n focusedIndex={focusedIndex}\n className={dropdownClassName}\n width={dropdownWidth === \"full\" ? \"full\" : \"auto\"}\n />\n </div>\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n <TextField\n ref={inputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\n </div>\n\n {/* Dropdown Menu Portal */}\n {typeof document !== \"undefined\" &&\n dropdownMenu &&\n createPortal(dropdownMenu, document.body)}\n </>\n );\n }\n);\n\nSearchableDropdown.displayName = \"SearchableDropdown\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SkeletonVariant = \"rect\" | \"text\" | \"title\" | \"circle\";\ntype SkeletonAnimation = \"pulse\" | \"none\";\ntype SkeletonRounded = \"none\" | \"small\" | \"medium\" | \"large\" | \"full\";\n\nconst variantDefaults: Record<\n SkeletonVariant,\n { height: number | string; className: string }\n> = {\n rect: { height: 16, className: \"w-full rounded-large\" },\n text: { height: 12, className: \"w-full rounded-large\" },\n title: { height: 20, className: \"w-full rounded-large\" },\n circle: { height: 40, className: \"rounded-full aspect-square\" },\n};\n\nconst roundedClassNames: Record<SkeletonRounded, string> = {\n none: \"rounded-none\",\n small: \"rounded-small\",\n medium: \"rounded-medium\",\n large: \"rounded-large\",\n full: \"rounded-full\",\n};\n\nconst animationClassNames: Record<SkeletonAnimation, string | undefined> = {\n pulse: \"animate-skeleton\",\n none: undefined,\n};\n\nconst normalizeCssValue = (value?: number | string): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n return typeof value === \"number\" ? `${value}px` : value;\n};\n\nconst getLineWidths = (\n count: number,\n provided?: Array<number | string>\n): Array<string | undefined> => {\n if (provided && provided.length) {\n return Array.from({ length: count }, (_, index) =>\n normalizeCssValue(provided[index] ?? provided[provided.length - 1])\n );\n }\n\n if (count === 1) {\n return [\"100%\"];\n }\n\n return Array.from({ length: count }, (_, index) =>\n index === count - 1 ? \"60%\" : \"100%\"\n );\n};\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Visual variant that controls default sizing and shape.\n */\n variant?: SkeletonVariant;\n /**\n * Animation style applied to the skeleton.\n */\n animation?: SkeletonAnimation;\n /**\n * Number of lines to render for text-based skeletons.\n */\n lines?: number;\n /**\n * Optional width overrides for each line.\n */\n lineWidths?: Array<number | string>;\n /**\n * Gap between lines when rendering multiple.\n */\n lineGap?: number | string;\n /**\n * Width of the skeleton block (overrides the variant default).\n */\n width?: number | string;\n /**\n * Height of the skeleton block (overrides the variant default).\n */\n height?: number | string;\n /**\n * Additional class name applied to the container when multiple lines are rendered.\n */\n containerClassName?: string;\n /**\n * Optional inline styles for the container when rendering multiple lines.\n */\n containerStyle?: React.CSSProperties;\n /**\n * Border radius override for rectangular variants.\n */\n rounded?: SkeletonRounded;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n containerClassName,\n containerStyle,\n variant = \"rect\",\n animation = \"pulse\",\n lines = 1,\n lineWidths,\n lineGap = \"0.5rem\",\n width,\n height,\n rounded = \"large\",\n style,\n ...props\n },\n ref\n ) => {\n const resolvedLines = Math.max(1, lines);\n const baseVariant = variantDefaults[variant];\n\n const resolvedHeight =\n normalizeCssValue(height) ?? normalizeCssValue(baseVariant.height);\n const resolvedWidth =\n normalizeCssValue(width) ??\n (variant === \"circle\" ? resolvedHeight : undefined);\n\n const skeletonClasses = cn(\n \"block bg-surface-fill-neutral-subtle\",\n animationClassNames[animation],\n variant !== \"circle\" && roundedClassNames[rounded],\n baseVariant.className,\n className\n );\n\n if ((variant === \"text\" || variant === \"title\") && resolvedLines > 1) {\n const widths = getLineWidths(resolvedLines, lineWidths);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col\",\n containerClassName,\n animation === \"pulse\" ? \"animate-none\" : undefined\n )}\n style={{\n gap: normalizeCssValue(lineGap) ?? \"0.5rem\",\n ...containerStyle,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n >\n {widths.map((lineWidth, index) => (\n <span\n key={`skeleton-line-${index}`}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: lineWidth ?? resolvedWidth ?? \"100%\",\n ...style,\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: resolvedWidth ?? style?.width,\n ...style,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronDown } from \"lucide-react\";\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\";\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\nconst selectTriggerVariants = cva(\n \"flex items-center gap-1 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 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 [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 selectRef = React.useRef<HTMLDivElement>(null);\n const dropdownContainerRef = React.useRef<HTMLDivElement>(null);\n const componentRef = React.useRef<HTMLDivElement>(null);\n\n const textValue =\n controlledTextValue !== undefined\n ? controlledTextValue\n : uncontrolledTextValue;\n const selectValue =\n controlledSelectValue !== undefined\n ? controlledSelectValue\n : uncontrolledSelectValue;\n\n // Find the selected option\n const selectedOption = selectOptions.find(\n (opt) => opt.value === selectValue\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 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 (!isDisabled) {\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 // 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,\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={!isDisabled ? toggleSelectOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isSelectOpen}\n aria-disabled={isDisabled}\n >\n <span\n className={cn(\n \"text-left truncate max-w-[120px] whitespace-nowrap\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {selectedOption?.label || selectPlaceholder}\n </span>\n <ChevronDown\n className={cn(\n \"shrink-0 transition-transform\",\n size === \"small\"\n ? \"w-3 h-3\"\n : size === \"medium\"\n ? \"w-3.5 h-3.5\"\n : \"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 isSelectOpen && \"transform rotate-180\"\n )}\n />\n </div>\n\n {/* Dropdown Menu */}\n {isSelectOpen && !isDisabled && (\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 <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={widthStyle}\n />\n </div>\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={isDisabled}\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={isDisabled}\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\";\n\nconst switchVariants = cva(\n \"relative inline-flex items-center shrink-0 cursor-pointer rounded-full transition-all duration-200\",\n {\n variants: {\n size: {\n small: \"w-[20px] h-[12px]\",\n medium: \"w-[28px] h-[16px]\",\n large: \"w-[36px] h-[20px]\",\n },\n isChecked: {\n true: \"bg-action-fill-primary-default \",\n false: \"bg-surface-fill-neutral-subtle\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n isChecked: true,\n isDisabled: false,\n class: \"hover:bg-action-fill-primary-hover \",\n },\n {\n isChecked: false,\n isDisabled: false,\n class: \"hover:bg-action-fill-neutral-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n isDisabled: false,\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-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 * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the switch is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the switch track\n */\n trackClassName?: string;\n /**\n * Custom class name for the switch thumb\n */\n thumbClassName?: string;\n}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = \"medium\",\n isDisabled = false,\n containerClassName,\n labelClassName,\n trackClassName,\n thumbClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-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 return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"switch\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n <div\n className={cn(\n switchVariants({\n size,\n isChecked,\n isDisabled,\n }),\n trackClassName,\n className,\n \"focus-visible:ring-2 focus-visible:ring-action-outline-primary-faded focus-visible:ring-offset-2\"\n )}\n >\n <span\n className={cn(\n switchThumbVariants({\n size,\n isChecked,\n }),\n thumbClassName\n )}\n />\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\"w-full border-collapse\", {\n variants: {\n variant: {\n default: \"border-separate border-spacing-0\",\n bordered: \"border-separate border-spacing-0\",\n striped: \"border-separate border-spacing-0\",\n },\n size: {\n small: \"text-body-small-medium\",\n medium: \"text-body-medium-medium\",\n large: \"text-body-large-medium\",\n 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-10\"\n )}\n >\n {headerGroups.map((headerGroup, groupIndex) => {\n const stickyTop = stickyHeader ? groupIndex * headerHeight : undefined;\n\n return (\n <tr key={headerGroup.id}>\n {enableRowSelection && enableSelectAll && (\n <th\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n stickyHeader && \"sticky z-20\",\n \"w-10 rounded-tl-xlarge rounded-bl-xlarge\",\n headerClassName\n )}\n style={{ top: stickyTop }}\n >\n <Checkbox\n checked={isAllRowsSelected}\n isIndeterminate={isSomeRowsSelected}\n onChange={onToggleAllRows}\n aria-label=\"Select all rows\"\n />\n </th>\n )}\n {headerGroup.headers.map((header, index) => {\n const isFirstColumn = index === 0;\n const isLastColumn = index === headerGroup.headers.length - 1;\n\n return (\n <th\n key={header.id}\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground &&\n \"bg-surface-fill-neutral-moderate border-none\",\n stickyHeader && \"sticky z-20\",\n !enableRowSelection && index === 0 && \"rounded-tl-xlarge \",\n isLastColumn && \"rounded-tr-xlarge\",\n header.column.columnDef.meta?.headerClassName,\n headerClassName\n )}\n style={{\n ...getColumnStyle(header.column.id, {\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize,\n maxWidth: header.column.columnDef.maxSize,\n }),\n top: stickyTop,\n ...(isFirstColumn && { paddingLeft: \"24px\" }),\n ...(isLastColumn && { paddingRight: \"24px\" }),\n }}\n >\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() &&\n \"cursor-pointer select-none\"\n )}\n onClick={header.column.getToggleSortingHandler()}\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext()\n )}\n {header.column.getCanSort() && (\n <span className=\"text-surface-ink-neutral-muted\">\n {{\n asc: \"↑\",\n desc: \"↓\",\n }[header.column.getIsSorted() as string] ?? \"↕\"}\n </span>\n )}\n </div>\n )}\n </th>\n );\n })}\n </tr>\n );\n })}\n </thead>\n );\n}\n","import * as React from \"react\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableCellVariants } from \"./tableVariants\";\n\ninterface TableBodyProps<TData> {\n rows: Row<TData>[];\n enableRowSelection: boolean;\n size: \"small\" | \"medium\" | \"large\" | \"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-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n maxChar?: number;\n showCharCount?: boolean;\n containerClassName?: string;\n labelClassName?: string;\n textAreaClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n LinkComponent?: React.ReactNode;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n rows?: number;\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n maxChar,\n showCharCount = true,\n infoDescription,\n infoHeading,\n LinkComponent,\n linkText,\n linkHref,\n onLinkClick,\n containerClassName,\n labelClassName,\n textAreaClassName,\n className,\n value,\n onChange,\n rows = 4,\n ...props\n },\n ref\n ) => {\n const [internalValue, setInternalValue] = React.useState(\"\");\n const textAreaValue = value !== undefined ? value : internalValue;\n const currentLength = String(textAreaValue).length;\n\n const handleChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n const newValue = e.target.value;\n\n // Prevent exceeding maxChar if specified\n if (maxChar && newValue.length > maxChar) {\n return;\n }\n\n if (onChange) {\n onChange(e);\n } else {\n setInternalValue(newValue);\n }\n };\n\n // Determine which helper text to show\n const displayHelperText = errorText || successText || helperText;\n const currentValidationState = errorText\n ? \"negative\"\n : successText\n ? \"positive\"\n : validationState;\n\n // Check if we're approaching or at the limit\n const isNearLimit = maxChar && currentLength >= maxChar * 0.9;\n const isAtLimit = maxChar && currentLength >= maxChar;\n\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n },\n medium: {\n gap: \"gap-2\",\n },\n large: {\n gap: \"gap-3\",\n },\n };\n\n return (\n <div\n className={cn(\n \"w-full flex flex-col\",\n sizeConfig[size].gap,\n containerClassName\n )}\n >\n {label && (\n <FormHeader\n label={label}\n size={size}\n isRequired={isRequired}\n isOptional={isOptional}\n infoHeading={infoHeading}\n infoDescription={infoDescription}\n LinkComponent={LinkComponent}\n linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textAreaVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <textarea\n ref={ref}\n value={textAreaValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n rows={rows}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled 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 { 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","clsx","twMerge","cva","React","Slot","_jsxs","_Fragment","PulseLoader","ClipLoader","ExternalLink","CalendarIcon","X","createPortal","Loader2","Search","ChevronDown","ChevronLeft","ChevronRight","flexRender"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA;;;;;;;;;;;;;;;;;;;;AAoBG;AAEH;;;AAGG;AACH,MAAM,YAAY,GAAG;;AAEnB,IAAA,IAAI,EAAE,CAAA;;AAED,MAAA,CAAA;;AAGL,IAAA,KAAK,EAAE,CAAA;;AAEF,MAAA,CAAA;AAEL,IAAA,GAAG,EAAE,CAAA;;AAEA,MAAA,CAAA;;AAGL,IAAA,IAAI,EAAE,CAAA;;;AAGP,CAAA;;AAGC,IAAA,WAAW,EAAE,CAAA;;AAER,MAAA,CAAA;;AAGL,IAAA,KAAK,EAAE,CAAA;;AAEF,MAAA,CAAA;AACL,IAAA,MAAM,EAAE,CAAA;;;AAGT,CAAA;AACC,IAAA,IAAI,EAAE,CAAA;;;AAGP,CAAA;;AA6CM,MAAM,IAAI,GAA+B,CAAC,EAC/C,IAAI,EACJ,IAAI,GAAG,EAAE,EACT,SAAS,GAAG,EAAE,EACd,KAAK,GAAG,EAAE,EACV,GAAG,KAAK,EACT,KAAI;AACH,IAAA,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC;IAErC,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,IAAI,CACV,CAAA,MAAA,EAAS,MAAM,CAAC,IAAI,CAAC,CAAA,0BAAA,CAA4B;AAC/C,YAAA,CAAA,iBAAA,EAAoB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAC7D;AACD,QAAA,OAAO,IAAI;IACb;;AAGA,IAAA,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,EAAE,eAAe,CAAC;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;IAE9C,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,KAAK,CAAC,CAAA,8BAAA,EAAiC,MAAM,CAAC,IAAI,CAAC,CAAA,CAAA,CAAG,CAAC;AAC/D,QAAA,OAAO,IAAI;IACb;;IAGA,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,WAAW;;AAGjE,IAAA,IAAI,QAAQ,GAAG,UAAU,CAAC,SAAS;;;AAInC,IAAA,QAAQ,GAAG;AACR,SAAA,OAAO,CAAC,eAAe,EAAE,qBAAqB;AAC9C,SAAA,OAAO,CAAC,iBAAiB,EAAE,uBAAuB,CAAC;AAEtD,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,IAAI,EACX,MAAM,EAAE,IAAI,EACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAC,4BAA4B,KAC9B,KAAK,EACT,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAA,CAC7C;AAEN;AAEA;;;;;;;;;AASG;SACa,iBAAiB,GAAA;AAC/B,IAAA,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAe;AAChD;AAEA;;;;;;;;;;;AAWG;AACG,SAAU,OAAO,CAAC,IAAY,EAAA;IAClC,OAAO,IAAI,IAAI,YAAY;AAC7B;;ACnMA;AACA;AACA,MAAM,qBAAqB,GAAG;;IAE5B,6BAA6B;;IAE7B,aAAa;;IAEb,uEAAuE;;IAEvE,qDAAqD;;IAErD,eAAe;;IAEf,cAAc;IACd,iBAAiB;IACjB,gBAAgB;;;;;;IAMhB,UAAU;CACX;AAED,SAAS,aAAa,CAAC,SAAiB,EAAA;AACtC,IAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACzE;AAEM,SAAU,EAAE,CAAC,GAAG,MAAoB,EAAA;;AAExC,IAAA,MAAM,QAAQ,GAAGC,SAAI,CAAC,MAAM,CAAC;;IAG7B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,aAAa,CAAC,GAAG,CAAC,CAAC;AACjE,IAAA,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;;IAGpE,MAAM,cAAc,GAAGC,qBAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAEzD,IAAA,OAAOD,SAAI,CAAC,cAAc,EAAE,aAAa,CAAC;AAC5C;;ACtCA,MAAM,cAAc,GAAGE,0BAAG,CACxB,+NAA+N,EAC/N;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EACL,qGAAqG;AACvG,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,QAAQ,EAAE,8CAA8C;AACzD,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE,wDAAwD;AAChE,YAAA,KAAK,EAAE,wDAAwD;AAC/D,YAAA,MAAM,EAAE,6DAA6D;AACrE,YAAA,KAAK,EAAE,uDAAuD;AAC/D,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,aAAa;AACnB,YAAA,KAAK,EAAE,YAAY;AACpB,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE;;;;;;;;;;AAUJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE;;;;;;;;;;AAUJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE;;;;;;;;;;AAUJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE;;;;;;;;;;AAUJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,CAAA;;;;;;;;;AASJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;;;;;AAQJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,CAAA;;;;;;;;AAQJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;AAIJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,CAAA;;;;AAIJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,CAAA;;;;AAIJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,CAAA;;;;AAIJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,CAAA;;;;AAIJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;AAIJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,SAAS;AACjB,SAAA;AACD,QAAA;AACE,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,WAAW;AACnB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA;AACF,CAAA;AAwBH,MAAM,MAAM,GAAGC,gBAAK,CAAC,UAAU,CAC7B,CACE,EACE,SAAS,EACT,OAAO,GAAG,SAAS,EACnB,KAAK,GAAG,SAAS,EACjB,IAAI,EACJ,UAAU,EACV,SAAS,EACT,OAAO,GAAG,KAAK,EACf,WAAW,EACX,YAAY,EACZ,WAAW,GAAG,KAAK,EACnB,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,IAAI,GAAG,OAAO,GAAGC,cAAI,GAAG,QAAQ;AAEtC,IAAA,MAAM,UAAU,GAAG,QAAQ,IAAI,SAAS,IAAI,KAAK;IAEjD,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,OAAO,yCAAyC;QAClD;QACA,OAAO,CAAA,uBAAA,EAA0B,KAAK,CAAA,QAAA,CAAU;AAClD,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,IACjBC,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,SAAS,IAAI,CAAC,UAAU,KACvBP,eAACQ,yBAAW,EAAA,EAAC,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,GAAI,CACnD,EACA,SAAS,IAAI,UAAU,KACtBR,cAAA,CAACS,wBAAU,EAAA,EAAC,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,EAAE,EAAA,CAAI,CAClD,EACA,CAAC,SAAS,IAAI,WAAW,KACxBT,yBAAM,SAAS,EAAC,MAAM,EAAA,QAAA,EAAE,WAAW,EAAA,CAAQ,CAC5C,EACA,CAAC,UAAU,IAAI,CAAC,SAAS,IAAI,QAAQ,EACrC,UAAU,IAAI,CAAC,SAAS,IAAI,QAAQ,EACpC,CAAC,SAAS,IAAI,YAAY,IAAIA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAO,YAAY,EAAA,CAAQ,CAAA,EAAA,CACzD,CACJ;IAED,QACEA,eAAC,IAAI,EAAA,EACH,SAAS,EAAE,EAAE,CACX,cAAc,CAAC;YACb,OAAO;YACP,KAAK;YACL,IAAI;YACJ,UAAU;YACV,SAAS;YACT,UAAU;YACV,WAAW;AACZ,SAAA,CAAC,EACF,SAAS,CACV,EACD,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,UAAU,EAAA,GAChB,KAAK,YAER,aAAa,EAAA,CACT;AAEX,CAAC;AAEH,MAAM,CAAC,WAAW,GAAG,QAAQ;;ACnZ7B,MAAM,kBAAkB,GAAGG,0BAAG,CAC5B,wNAAwN,EACxN;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,oBAAoB;AAC1B,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA;AAuBH,MAAM,UAAU,GAAGC,gBAAK,CAAC,UAAU,CACjC,CACE,EACE,SAAS,EACT,KAAK,GAAG,SAAS,EACjB,IAAI,GAAG,QAAQ,EACf,SAAS,EACT,OAAO,GAAG,KAAK,EACf,IAAI,EACJ,WAAW,EACX,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,IAAI,GAAG,OAAO,GAAGC,cAAI,GAAG,QAAQ;AAEtC,IAAA,MAAM,UAAU,GAAG,QAAQ,IAAI,SAAS,IAAI,KAAK;IAEjD,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,OAAO,yCAAyC;QAClD;QACA,OAAO,CAAA,uBAAA,EAA0B,KAAK,CAAA,QAAA,CAAU;AAClD,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,QAAQ,IAAI;AACV,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,EAAE;AACX,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,EAAE;AACX,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,EAAE;AACX,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,EAAE;AACX,YAAA;AACE,gBAAA,OAAO,EAAE;;AAEf,IAAA,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAK;;AAE7B,QAAA,MAAM,QAAQ,GAA2B;AACvC,YAAA,OAAO,EACL,yJAAyJ;AAC3J,YAAA,QAAQ,EACN,6JAA6J;AAC/J,YAAA,QAAQ,EACN,6JAA6J;AAC/J,YAAA,MAAM,EACJ,qJAAqJ;AACvJ,YAAA,IAAI,EAAE,6IAA6I;AACnJ,YAAA,OAAO,EACL,yJAAyJ;AAC3J,YAAA,KAAK,EACH,qJAAqJ;SACxJ;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,OAAO;AAC5C,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,IACjBL,cAAA,CAAAO,mBAAA,EAAA,EAAA,QAAA,EACG,SAAS,IACRP,eAACS,wBAAU,EAAA,EAAC,KAAK,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,EAAA,CAAI,IAC1D,IAAI,IACNT,cAAA,CAAC,IAAI,IACH,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,WAAW,EAAE,EACnB,SAAS,EAAE,iBAAiB,EAAE,GAC9B,IACA,WAAW,IACbA,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAG,WAAW,EAAA,CAAQ,IACxD,IAAI,EAAA,CACP,CACJ;IAED,QACEA,eAAC,IAAI,EAAA,EACH,SAAS,EAAE,EAAE,CACX,kBAAkB,CAAC;YACjB,KAAK;YACL,IAAI;YACJ,SAAS;YACT,UAAU;AACX,SAAA,CAAC,EACF,SAAS,CACV,EACD,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,UAAU,EAAA,GAChB,KAAK,YAER,aAAa,EAAA,CACT;AAEX,CAAC;AAEH,UAAU,CAAC,WAAW,GAAG,YAAY;;AC1JrC,MAAM,YAAY,GAAGG,0BAAG,CACtB,sOAAsO,EACtO;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE,iBAAiB;AACzB,YAAA,MAAM,EAAE,6BAA6B;AACtC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE,+BAA+B;AACvC,YAAA,KAAK,EAAE,8BAA8B;AACrC,YAAA,MAAM,EAAE,iCAAiC;AACzC,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,CAAA;;;;;;AAMJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,CAAA;;;;;;AAMJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,CAAA;;;;;;AAMJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,CAAA;;;;;;AAMJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,CAAA;;;;;;AAMJ,UAAA,CAAA;AACJ,SAAA;AACD,QAAA;AACE,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,CAAA;;;;;AAKJ,UAAA,CAAA;AACJ,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AAyBH,MAAM,IAAI,GAAGC,gBAAK,CAAC,UAAU,CAC3B,CACE,EACE,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,SAAS,EACjB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,IAAI,GAAG,OAAO,GAAGC,cAAI,GAAG,GAAG;AAEjC,IAAA,MAAM,WAAW,GAAG,CAAC,CAAsC,KAAI;QAC7D,IAAI,UAAU,EAAE;YACd,CAAC,CAAC,cAAc,EAAE;YAClB;QACF;AACA,QAAA,OAAO,GAAG,CAAC,CAAC;AACd,IAAA,CAAC;;AAGD,IAAA,MAAM,QAAQ,GAAG;AACf,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE,EAAE;KACV,CAAC,IAAI,CAAC;;;AAIP,IAAA,MAAM,iBAAiB,GACrB,YAAY,KAAK,QAAQ,KAAK,IAAI,IAAIL,cAAA,CAACU,wBAAY,IAAC,IAAI,EAAE,QAAQ,EAAA,CAAI,CAAC,CAAC;AAE1E,IAAA,MAAM,WAAW,IACfJ,kDACG,WAAW,IAAI,CAAC,UAAU,KACzBN,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,WAAW,EAAA,CAAQ,CAChE,EACA,CAAC,UAAU,IAAI,QAAQ,EACvB,UAAU,IAAI,QAAQ,EACtB,iBAAiB,IAAI,CAAC,UAAU,KAC/BA,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,iBAAiB,EAAA,CAAQ,CACtE,EACA,UAAU;AACT,iBAAC,WAAW,IAAI,iBAAiB,KAC/BA,eAACU,wBAAY,EAAA,EAAC,IAAI,EAAE,QAAQ,EAAA,CAAI,CACjC,CAAC,CAAA,EAAA,CACH,CACJ;IAED,QACEV,eAAC,IAAI,EAAA,EACH,SAAS,EAAE,EAAE,CACX,YAAY,CAAC;YACX,IAAI;YACJ,KAAK;YACL,IAAI;YACJ,UAAU;YACV,UAAU;AACX,SAAA,CAAC,EACF,SAAS,CACV,EACD,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,WAAW,EAAA,eAAA,EACL,UAAU,EACzB,QAAQ,EAAE,UAAU,GAAG,EAAE,GAAG,SAAS,EAAA,GACjC,KAAK,EAAA,QAAA,EAER,WAAW,EAAA,CACP;AAEX,CAAC;AAEH,IAAI,CAAC,WAAW,GAAG,MAAM;;AC9NzB,MAAM,aAAa,GAAGG,0BAAG,CACvB,yDAAyD,EACzD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,kCAAkC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,kCAAkC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,8BAA8B;AACtC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;;AAED,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,+BAA+B;AACvC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,kCAAkC;AAC1C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACF,CAAA;AAGH,MAAM,iBAAiB,GAAGA,0BAAG,CAC3B,kEAAkE,EAClE;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,YAAY;AACtB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,kCAAkC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,8BAA8B;AACtC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;;AAED,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,oCAAoC;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,oCAAoC;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,oCAAoC;AAC5C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACF,CAAA,CACF;AAED,MAAM,iBAAiB,GAAGA,0BAAG,CAAC,EAAE,EAAE;AAChC,IAAA,QAAQ,EAAE;AACR,QAAA,QAAQ,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;;AAED,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,UAAU;AAClB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACD,QAAA;AACE,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,MAAM,EAAE,SAAS;AACjB,YAAA,KAAK,EAAE,mCAAmC;AAC3C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,QAAQ,EAAE,QAAQ;AAClB,QAAA,MAAM,EAAE,MAAM;AACf,KAAA;AACF,CAAA,CAAC;AAwDF,MAAM,cAAc,GAAG,CACrB,MAA4B,EAC5B,QAAgC,KAC9B;IACF,MAAM,QAAQ,GAAG,EAAE;IAGnB,QAAQ,QAAQ;AACd,QAAA,KAAK,SAAS;AACZ,YAAA,QACEH,cAAA,CAAC,IAAI,IACH,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,QAAQ,EACd,SAAS,EAAC,YAAY,iBACV,MAAM,EAAA,CAClB;AAEN,QAAA;AACE,YAAA,OAAOA,cAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,QAAQ,EAAA,aAAA,EAAc,MAAM,GAAG;;AAEpE,CAAC;AAED,MAAM,cAAc,GAAG,CACrB,MAA4B,KAC2C;IACvE,QAAQ,MAAM;AACZ,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,UAAU;AACnB,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,UAAU;AACnB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ;AACjB,QAAA,KAAK,MAAM;AACT,YAAA,OAAO,MAAM;AACf,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,SAAS;AAClB,QAAA;AACE,YAAA,OAAO,SAAS;;AAEtB,CAAC;AAED,MAAM,eAAe,GAAG,CACtB,gBAAoC,EACpC,mBAA6C,EAC7C,QAAgC,EAChC,MAA4B,KACF;AAC1B,IAAA,IAAI,CAAC,gBAAgB;AAAE,QAAA,OAAO,IAAI;;;AAMlC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,QACEA,eAAC,MAAM,EAAA,EACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,mBAAmB,EAAA,QAAA,EAE3B,gBAAgB,EAAA,CACV;IAEb;;IAGA,QACEA,eAAC,MAAM,EAAA,EACL,OAAO,EAAC,WAAW,EACnB,KAAK,EACH,MAMa,EAEf,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,mBAAmB,EAAA,QAAA,EAE3B,gBAAgB,EAAA,CACV;AAEb,CAAC;AACD,MAAM,aAAa,GAAG,CACpB,gBAAoC,EACpC,iBAA2C,EAC3C,QAAgC,EAChC,MAA4B,KACF;AAC1B,IAAA,IAAI,CAAC,gBAAgB;AAAE,QAAA,OAAO,IAAI;;;AAMlC,IAAA,IAAI,QAAQ,KAAK,SAAS,EAAE;QAC1B,QACEA,eAAC,IAAI,EAAA,EACH,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,OAAO,EACb,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,iBAAiB,EAAA,QAAA,EAEzB,gBAAgB,EAAA,CACZ;IAEX;;IAGA,QACEA,eAAC,IAAI,EAAA,EACH,IAAI,EAAC,QAAQ,EACb,KAAK,EACH,MAMa,EAEf,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,iBAAiB,EAAA,QAAA,EAEzB,gBAAgB,EAAA,CACZ;AAEX,CAAC;AAED,MAAM,KAAK,GAAGI,gBAAK,CAAC,UAAU,CAC5B,CACE,EACE,SAAS,EACT,QAAQ,GAAG,QAAQ,EACnB,MAAM,GAAG,MAAM,EACf,KAAK,EACL,QAAQ,EACR,WAAW,GAAG,KAAK,EACnB,OAAO,EACP,IAAI,EACJ,gBAAgB,EAChB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,WAAW,GAAG,IAAI,IAAI,cAAc,CAAC,MAAM,EAAE,QAAQ,CAAC;AAC5D,IAAA,MAAM,YAAY,GAAG,eAAe,CAClC,gBAAgB,EAChB,mBAAmB,EACnB,QAAQ,EACR,MAAM,CACP;AACD,IAAA,MAAM,UAAU,GAAG,aAAa,CAC9B,cAAc,EACd,iBAAiB,EACjB,QAAQ,EACR,MAAM,CACP;AACD,IAAA,MAAM,UAAU,GAAG,YAAY,IAAI,UAAU;IAE7C,QACEE,yBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,CAAC,EAC7D,IAAI,EAAC,OAAO,KACR,KAAK,EAAA,QAAA,EAAA,CAGTN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EACvC,kBAAkB,CACnB,EAAA,QAAA,EAEA,WAAW,GACR,EAEL,WAAW;;YAEVM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAAA,CAErEA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oCAAoC,EAAA,QAAA,EAAA,CAChD,KAAK,KACJN,wBACE,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACxC,EAAA,QAAA,EAEA,KAAK,EAAA,CACF,CACP,EACDA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACxC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACL,CAAA,EAAA,CACF,EAENM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAC9C,UAAU,KACTA,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,YAAY,EACZ,UAAU,CAAA,EAAA,CACV,CACJ,EACA,OAAO,KACNP,cAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,OAAO,EACZ,KAAK,EACH,QAAQ,KAAK,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,EAE3D,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,kBAAkB,EAClB,QAAQ,KAAK;AACX,sCAAE;AACF,sCAAE,mBAAmB,CACxB,EAAA,YAAA,EACU,aAAa,EAAA,CACxB,CACH,CAAA,EAAA,CACG,CAAA,EAAA,CACF;;YAGNM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CAErC,OAAO,KACNN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wBAAwB,EAAA,QAAA,EACrCA,eAAC,UAAU,EAAA,EACT,IAAI,EAAC,OAAO,EACZ,KAAK,EACH,QAAQ,KAAK,SAAS,GAAG,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,EAE3D,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CACX,kBAAkB,EAClB,QAAQ,KAAK;AACX,kCAAE;AACF,kCAAE,mBAAmB,CACxB,EAAA,YAAA,EACU,aAAa,GACxB,EAAA,CACE,CACP,EAGDM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAA,CACtC,KAAK,KACJN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACxC,EAAA,QAAA,EAEA,KAAK,GACF,CACP,EACDA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACxC,EAAA,QAAA,EAEA,QAAQ,EAAA,CACL,EAGL,UAAU,KACTM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,aACrC,YAAY,EACZ,UAAU,CAAA,EAAA,CACP,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF,CACP,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,KAAK,CAAC,WAAW,GAAG,OAAO;;ACnhB3B;;;;;;;;;;;AAWG;AACH,MAAM,MAAM,GAAGF,gBAAK,CAAC,UAAU,CAC7B,CACE,EACE,KAAK,EACL,QAAQ,EACR,MAAM,GAAG,OAAO,EAChB,qBAAqB,GAAG,CAAC,EACzB,qBAAqB,GAAG,CAAC,EACzB,YAAY,GAAG,IAAI,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,KACD;;AAEF,IAAA,MAAM,KAAK,GAAGA,gBAAK,CAAC,OAAO,CAAC,MAAK;;QAE/B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YAC9C,qBAAqB;YACrB,qBAAqB;AACtB,SAAA,CAAC;;QAGF,MAAM,cAAc,GAClB,SAGD,CAAC,aAAa,CAAC,KAAK,CAAC;QAEtB,IAAI,WAAW,GAAG,EAAE;QACpB,IAAI,WAAW,GAAG,EAAE;QACpB,IAAI,gBAAgB,GAAG,GAAG;AAE1B,QAAA,cAAc,CAAC,OAAO,CAAC,CAAC,IAAsB,KAAI;AAChD,YAAA,QAAQ,IAAI,CAAC,IAAI;AACf,gBAAA,KAAK,SAAS;AACZ,oBAAA,WAAW,IAAI,IAAI,CAAC,KAAK;oBACzB;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,gBAAgB,GAAG,IAAI,CAAC,KAAK;oBAC7B;AACF,gBAAA,KAAK,UAAU;AACb,oBAAA,WAAW,GAAG,IAAI,CAAC,KAAK;oBACxB;AACF,gBAAA,KAAK,OAAO;AACV,oBAAA,WAAW,IAAI,IAAI,CAAC,KAAK;oBACzB;;AAEN,QAAA,CAAC,CAAC;;AAGF,QAAA,MAAM,cAAc,GAAG,QAAQ,IAAI,YAAY,GAAG,CAAA,EAAG,QAAQ,CAAA,CAAA,CAAG,GAAG,EAAE;QAErE,OAAO;AACL,YAAA,QAAQ,EAAE,cAAc;AACxB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,gBAAgB,EAAE,gBAAgB;AAClC,YAAA,UAAU,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;SACnC;AACH,IAAA,CAAC,EAAE;QACD,KAAK;QACL,QAAQ;QACR,MAAM;QACN,qBAAqB;QACrB,qBAAqB;QACrB,YAAY;AACb,KAAA,CAAC;AAEF,IAAA,QACEE,eAAA,CAAA,MAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,SAAS,CAAC,EAAA,GAClD,KAAK,EAAA,QAAA,EAAA,CAER,KAAK,CAAC,QAAQ,IAAIN,mCAAO,KAAK,CAAC,QAAQ,EAAA,CAAQ,EAChDA,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,YAAY,EAAA,QAAA,EAAE,KAAK,CAAC,OAAO,EAAA,CAAQ,EAClD,KAAK,CAAC,UAAU,KACfM,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACEP,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,aAAa,YAAE,KAAK,CAAC,gBAAgB,EAAA,CAAQ,EAC7DA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,4BAA4B,EAAA,QAAA,EAAE,KAAK,CAAC,OAAO,EAAA,CAAO,CAAA,EAAA,CAChE,CACJ,CAAA,EAAA,CACI;AAEX,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;ACtJ7B;AACA,SAAS,gBAAgB,CACvB,OAAA,GAAsD,MAAM,EAC5D,IAAA,GAMe,QAAQ,EACvB,MAAA,GAA4C,SAAS,EACrD,KAAA,GAWgB,SAAS,EAAA;;AAGzB,IAAA,IAAI,SAAS,GAAG,CAAA,KAAA,EAAQ,OAAO,EAAE;;IAGjC,IAAI,IAAI,EAAE;AACR,QAAA,SAAS,IAAI,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE;IACzB;;IAGA,IAAI,MAAM,EAAE;AACV,QAAA,SAAS,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE;IAC3B;;AAGA,IAAA,MAAM,UAAU,GAAG,CAAA,WAAA,EAAc,KAAK,EAAE;AAExC,IAAA,OAAO,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,UAAU,EAAE;AACrC;AAwBA,MAAM,IAAI,GAAGI,gBAAK,CAAC,UAAU,CAC3B,CACE,EACE,SAAS,EACT,OAAO,GAAG,MAAM,EAChB,IAAI,GAAG,QAAQ,EACf,MAAM,GAAG,SAAS,EAClB,KAAK,GAAG,SAAS,EACjB,EAAE,GAAG,GAAG,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,SAAS,GAAG,EAAE;AAEpB,IAAA,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC;AAEhE,IAAA,OAAOA,gBAAK,CAAC,aAAa,CACxB,SAAS,EACT;AACE,QAAA,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;QACnC,GAAG;AACH,QAAA,GAAG,KAAK;KACT,EACD,QAAQ,CACT;AACH,CAAC;AAGH,IAAI,CAAC,WAAW,GAAG,MAAM;;ACzFzB,MAAM,mBAAmB,GAAgC;AACvD,IAAA,EAAE,EAAE,gDAAgD;AACpD,IAAA,EAAE,EAAE,gDAAgD;AACpD,IAAA,EAAE,EAAE,gDAAgD;AACpD,IAAA,EAAE,EAAE,gDAAgD;AACpD,IAAA,EAAE,EAAE,gDAAgD;CACrD;AAED,MAAM,cAAc,GAAGD,0BAAG,CACxB,6EAA6E,EAC7E;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,gDAAgD;AACpD,YAAA,EAAE,EAAE,gDAAgD;AACpD,YAAA,EAAE,EAAE,gDAAgD;AACpD,YAAA,EAAE,EAAE,gDAAgD;AACpD,YAAA,EAAE,EAAE,gDAAgD;AACrD,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,0DAA0D;AACjE,YAAA,MAAM,EAAE,2DAA2D;AACnE,YAAA,MAAM,EAAE,2DAA2D;AACpE,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,IAAI;AACX,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACF,CAAA;AAGH,MAAM,cAAc,GAAGA,0BAAG,CACxB,qGAAqG,EACrG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,MAAM,EAAE,4BAA4B;AACpC,YAAA,MAAM,EAAE,4BAA4B;AACrC,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,QAAQ,EAAE,iCAAiC;AAC3C,YAAA,QAAQ,EAAE,iCAAiC;AAC3C,YAAA,MAAM,EAAE,+BAA+B;AACvC,YAAA,IAAI,EAAE,6BAA6B;AACnC,YAAA,OAAO,EAAE,gCAAgC;AAC1C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,QAAQ;AACtB,KAAA;AACF,CAAA,CACF;AA2DD,MAAM,MAAM,GAAGC,gBAAK,CAAC,UAAU,CAC7B,CACE,EACE,SAAS,EACT,UAAU,GAAG,SAAS,EACtB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,GAAG,EACH,UAAU,GAAG,KAAK,EAClB,WAAW,GAAG,QAAQ,EACtB,UAAU,EACV,KAAK,EACL,iBAAiB,EACjB,kBAAkB,EAClB,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAEzD,MAAM,gBAAgB,GAAG,MAAK;QAC5B,aAAa,CAAC,IAAI,CAAC;AACrB,IAAA,CAAC;IAED,MAAM,iBAAiB,GAAG,MAAK;QAC7B,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,aAAa;AACtB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,SAAS;AAClB,YAAA;AACE,gBAAA,OAAO,SAAS;;AAEtB,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,QAAQ,IAAI;AACV,YAAA,KAAK,OAAO;AACV,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,QAAQ;AACjB,YAAA;AACE,gBAAA,OAAO,QAAQ;;AAErB,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAgB,KAAK,IAAI,IAAI;IAChD,MAAM,aAAa,IACjBE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,CACpCN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAC9C,UAAU,KAAK;AACb,sBAAE,mBAAmB,CAAC,aAAa;sBACjC,SAAS,EACb,SAAS,CACV,EAAA,GACG,KAAK,YAER,GAAG,IAAI,CAAC,UAAU,IACjBA,wBACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,IAAI,QAAQ,EACpB,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B,IAAI,KAAK,OAAO,GAAG,eAAe,GAAG,gBAAgB,CACtD,EACD,OAAO,EAAE,gBAAgB,GACzB,KAEF,QAAQ,CACT,EAAA,CACG,EACL,UAAU,KACTA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,EAAA,QAAA,EACtD,UAAU,KACTA,yBACE,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,iBAAiB,EAAE,CACpB,YAEA,UAAU,EAAA,CACN,CACR,EAAA,CACG,CACP,CAAA,EAAA,CACG,CACP;;AAGD,IAAA,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,EAAE;AAChC,QAAA,OAAOA,wBAAK,GAAG,EAAE,GAAG,EAAA,QAAA,EAAG,aAAa,GAAO;IAC7C;;AAGA,IAAA,QACEM,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,gCAAgC,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,CAElE,aAAa,EACb,KAAK,KACJN,cAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,MAAM,EACd,IAAI,EAAE,WAAW,EAAE,EACnB,MAAM,EAAC,QAAQ,EACf,KAAK,EAAC,SAAS,EACf,EAAE,EAAC,MAAM,EAAA,QAAA,EAER,KAAK,EAAA,CACD,CACR,EACA,iBAAiB,KAChBA,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAE,iBAAiB,EAAA,CAAQ,CACrD,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;AChP7B,MAAM,aAAa,GAAGG,0BAAG,CACvB,8DAA8D,EAC9D;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACX,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EACH,qEAAqE;AACvE,YAAA,MAAM,EACJ,sEAAsE;AACxE,YAAA,KAAK,EACH,qEAAqE;AACxE,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,6DAA6D;AACrE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,+DAA+D;AACvE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EAAE,+DAA+D;AACvE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,2DAA2D;AACnE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,uDAAuD;AAC/D,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EAAE,6DAA6D;AACrE,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EACH,kEAAkE;AACrE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EACH,mEAAmE;AACtE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,KAAK,EACH,mEAAmE;AACtE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EACH,iEAAiE;AACpE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,KAAK,EAAE,+DAA+D;AACvE,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,KAAK,EACH,kEAAkE;AACrE,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACF,CAAA;AAwBH,MAAM,KAAK,GAAGC,gBAAK,CAAC,UAAU,CAC5B,CACE,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EACxE,GAAG,KACD;IACF,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,IAAI,OAAO,KAAK,QAAQ,EAAE;AACxB,YAAA,OAAO,iCAAiC;QAC1C;;QAEA,QAAQ,KAAK;AACX,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,gCAAgC;AACzC,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,iCAAiC;AAC1C,YAAA,KAAK,UAAU;AACb,gBAAA,OAAO,iCAAiC;AAC1C,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,+BAA+B;AACxC,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,6BAA6B;AACtC,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,gCAAgC;AACzC,YAAA;AACE,gBAAA,OAAO,6BAA6B;;AAE1C,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,YAAA,OAAO,iBAAiB;QAC1B;AACA,QAAA,OAAO,SAAS;AAClB,IAAA,CAAC;IAED,QACEE,yBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GAC7D,KAAK,aAER,OAAO,KACNN,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CAAC,cAAc,EAAE,WAAW,EAAE,EAAE,UAAU,EAAE,CAAC,EAAA,aAAA,EAC9C,MAAM,EAAA,CAClB,CACH,EACA,QAAQ,CAAA,EAAA,CACL;AAEV,CAAC;AAGH,KAAK,CAAC,WAAW,GAAG,OAAO;;ACpL3B,MAAM,mBAAmB,GAAGG,0BAAG,CAAC,aAAa,EAAE;AAC7C,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,SAAS,EAAE,EAAE;AACd,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,UAAU;AACtB,YAAA,QAAQ,EAAE,UAAU;AACrB,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,gCAAgC;AACtC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACD,QAAA;AACE,YAAA,OAAO,EAAE,WAAW;AACpB,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,KAAK,EAAE,OAAO;AACf,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AAmBD,MAAM,WAAW,GAAGC,gBAAK,CAAC,UAAU,CAClC,CACE,EACE,SAAS,EACT,OAAO,GAAG,UAAU,EACpB,WAAW,GAAG,YAAY,EAC1B,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,WAAW,GAAG,KAAK,EACnB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,aAAa,GAAGA,gBAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,YAAY,GAAG,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,SAAS;IAElE,QACEJ,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,mBAAmB,CAAC;YAClB,OAAO;YACP,WAAW;YACX,IAAI;YACJ,UAAU;YACV,WAAW;AACZ,SAAA,CAAC,EACF,SAAS,CACV,EACD,IAAI,EAAC,OAAO,EAAA,GACR,KAAK,YAER,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;YAClC,IAAI,CAACI,gBAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;AAChC,gBAAA,OAAO,KAAK;YACd;AAEA,YAAA,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC;YAC3B,MAAM,MAAM,GAAG,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC;AACjD,YAAA,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM;;AAGpC,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK;AACpC,YAAA,MAAM,UAAU,GAAG,YAAY,IAAI,UAAU,KAAK,KAAK;;YAGvD,IAAI,YAAY,GAAG,EAAE;;AAGrB,YAAA,IAAI,OAAO,KAAK,UAAU,EAAE;AAC1B,gBAAA,IAAI,WAAW,KAAK,YAAY,EAAE;oBAChC,IAAI,OAAO,EAAE;wBACX,YAAY,GAAG,2BAA2B;oBAC5C;yBAAO,IAAI,MAAM,EAAE;wBACjB,YAAY,GAAG,gBAAgB;oBACjC;yBAAO,IAAI,QAAQ,EAAE;wBACnB,YAAY,GAAG,yBAAyB;oBAC1C;gBACF;qBAAO;;oBAEL,IAAI,OAAO,EAAE;wBACX,YAAY,GAAG,2BAA2B;oBAC5C;yBAAO,IAAI,MAAM,EAAE;wBACjB,YAAY,GAAG,gBAAgB;oBACjC;yBAAO,IAAI,QAAQ,EAAE;wBACnB,YAAY,GAAG,yBAAyB;oBAC1C;gBACF;YACF;;AAGA,YAAA,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO;AACxC,YAAA,MAAM,kBAAkB,GAAG,YAAY,KAAK,SAAS;;;YAIrD,IAAI,YAAY,GAAG,YAAY;YAC/B,IAAI,oBAAoB,GAAG,EAAE;YAE7B,IAAI,YAAY,EAAE;gBAChB,IAAI,kBAAkB,EAAE;;AAEtB,oBAAA,IAAI,UAAU,IAAI,YAAY,KAAK,UAAU,EAAE;wBAC7C,oBAAoB,GAAG,8BAA8B;oBACvD;AAAO,yBAAA,IAAI,UAAU,IAAI,YAAY,KAAK,WAAW,EAAE;wBACrD,oBAAoB;AAClB,4BAAA,kEAAkE;oBACtE;gBACF;qBAAO;;oBAEL,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW;gBACrD;YACF;;AAGA,YAAA,OAAOA,gBAAK,CAAC,YAAY,CAAC,KAAK,EAAE;gBAC/B,GAAG,KAAK,CAAC,KAAK;AACd,gBAAA,SAAS,EAAE,EAAE,CACX,KAAK,CAAC,KAAK,CAAC,SAAS,EACrB,YAAY,EACZ,WAAW,IAAI,QAAQ;;gBAEvB,OAAO,KAAK,UAAU,IAAI,UAAU,EACpC,OAAO,KAAK,UAAU,IAAI,CAAC,UAAU,IAAI,uBAAuB,EAChE,OAAO,KAAK,UAAU,IAAI,UAAU,IAAI,MAAM;;AAE9C,gBAAA,oBAAoB,CACrB;AACD,gBAAA,QAAQ,EAAE,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ;AAC5C,gBAAA,IAAI,EAAE,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI;;AAE9B,gBAAA,OAAO,EACL,YAAY,IAAI,UAAU,KAAK;AAC7B,sBAAE,CAAC,CAAmB,KAAI;wBACtB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;wBACxB,IAAI,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;4BACxC,QAAQ,CAAC,UAAU,CAAC;wBACtB;oBACF;AACF,sBAAE,KAAK,CAAC,KAAK,CAAC,OAAO;AACzB,gBAAA,OAAO,EAAE,YAAY;AACf,aAAA,CAAC;QACX,CAAC,CAAC,EAAA,CACE;AAEV,CAAC;AAGH,WAAW,CAAC,WAAW,GAAG,aAAa;;AChKvC,MAAM,UAAU,GAAGA,gBAAK,CAAC,UAAU,CACjC,CACE,EACE,UAAU,EACV,YAAY,EACZ,eAAe,GAAG,SAAS,EAC3B,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,GACtB,EACD,GAAG,KACD;;AAEF,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,aAAa,EAAE,6BAA6B;AAC5C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,4BAA4B;AAC3C,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,EAAE,SAAS;AACf,SAAA;KACO;AAEV,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;;IAG/B,MAAM,YAAY,GAAG,MAAK;AACxB,QAAA,IAAI,UAAU;AAAE,YAAA,OAAO,mCAAmC;QAC1D,IAAI,eAAe,KAAK,UAAU;AAChC,YAAA,OAAO,oCAAoC;QAC7C,IAAI,eAAe,KAAK,UAAU;AAChC,YAAA,OAAO,mCAAmC;QAC5C,IAAI,eAAe,KAAK,SAAS;AAC/B,YAAA,OAAO,iCAAiC;AAC1C,QAAA,OAAO,iCAAiC;AAC1C,IAAA,CAAC;AACD,IAAA,MAAM,oBAAoB,GAAG,YAAY,EAAE;AAC3C,IAAA,MAAM,sBAAsB,GAAG,YAAY,EAAE;;AAG7C,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,EAAE;AAChC,QAAA,OAAO,IAAI;IACb;IAEA,QACEE,yBACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,MAAM,CAAC,GAAG,EACV,SAAS,CACV,aAEA,UAAU,KACTA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,EAAA,QAAA,EAAA,CAChD,eAAe,KAAK,UAAU,KAC7BN,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,MAAM,CAAC,QAAQ,EACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,EACvB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,6CAA6C,EAAA,QAAA,EAEvDA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,gBAAgB,EAClB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EAAA,CACtB,EAAA,CACE,CACP,EACA,eAAe,KAAK,UAAU,KAC7BM,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAE,MAAM,CAAC,QAAQ,EACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,EACvB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,4CAA4C,EAAA,QAAA,EAAA,CAEtDN,2BACE,EAAE,EAAC,GAAG,EACN,EAAE,EAAC,GAAG,EACN,CAAC,EAAC,GAAG,EACL,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,GACf,EACFA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,mBAAmB,EACrB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,GAAG,EACf,aAAa,EAAC,OAAO,EAAA,CACrB,CAAA,EAAA,CACE,CACP,EACDA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,aAAa,EACpB,oBAAoB,EACpB,kCAAkC,EAClC,mBAAmB,CACpB,EAAA,QAAA,EAEA,UAAU,EAAA,CACN,CAAA,EAAA,CACH,CACP,EAEA,YAAY,KACXA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,aAAa,EACpB,sBAAsB,EACtB,oCAAoC,EACpC,qBAAqB,CACtB,EAAA,QAAA,EAEA,YAAY,EAAA,CACR,CACR,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,UAAU,CAAC,WAAW,GAAG,YAAY;;ACzKrC,MAAM,gBAAgB,GAAGG,0BAAG,CAC1B,oGAAoG,EACpG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,gDAAgD;AACvD,YAAA,MAAM,EAAE,gDAAgD;AACxD,YAAA,KAAK,EAAE,+CAA+C;AACvD,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EACH,yIAAyI;AAC5I,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,qGAAqG;AAC3G,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,kHAAkH;AACrH,SAAA;;AAED,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,6IAA6I;AAChJ,SAAA;;AAED,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,iJAAiJ;AACpJ,SAAA;;AAED,QAAA;AACE,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,6IAA6I;AAChJ,SAAA;;AAED,QAAA;AACE,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,iJAAiJ;AACpJ,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,eAAe,EAAE,KAAK;AACtB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AA2CH,MAAM,QAAQ,GAAGC,gBAAK,CAAC,UAAU,CAC/B,CACE,EACE,KAAK,EACL,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,eAAe,GAAG,KAAK,EACvB,aAAa,GAAG,IAAI,EACpB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnE,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACzD,MAAM,QAAQ,GAAGA,gBAAK,CAAC,MAAM,CAAmB,IAAI,CAAC;IACrD,MAAM,gBAAgB,GAAGA,gBAAK,CAAC,MAAM,CAAgB,IAAI,CAAC;;AAG1D,IAAAA,gBAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,OAAQ,CAAC;AAEvD,IAAA,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,eAAe;;AAGnE,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,QAAQ,CAAC,OAAO,EAAE;AACpB,YAAA,QAAQ,CAAC,OAAO,CAAC,aAAa,GAAG,eAAe;QAClD;AACF,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC;;AAGrB,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC5B,gBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACxC;AACF,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,YAAY,GAAG,CAAC,CAAsC,KAAI;QAC9D,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;aAAO;AACL,YAAA,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC;AACF,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,MAAK;AACzB,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;;AAE9B,YAAA,IAAI,gBAAgB,CAAC,OAAO,EAAE;AAC5B,gBAAA,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC;YACxC;YAEA,aAAa,CAAC,IAAI,CAAC;AACnB,YAAA,gBAAgB,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;gBACzC,aAAa,CAAC,KAAK,CAAC;AACpB,gBAAA,gBAAgB,CAAC,OAAO,GAAG,IAAI;AACjC,YAAA,CAAC,EAAE,GAAG,CAAC,CAAC;QACV;AACF,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;AAChC,QAAA,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE;AACnC,YAAA,aAAa,EAAE;AACf,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;QAC1B;AACF,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAsB,KAAI;AAC/C,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,UAAU,EAAE;YACvD,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,aAAa,EAAE;AACf,YAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;QAC3B;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,yBAAyB;AACpC,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,yBAAyB;AACpC,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA;KACF;AAED,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;;AAG/B,IAAA,MAAM,eAAe,GAAG,SAAS,IAAI,aAAa;IAElD,QACEE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,2BAA2B,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,CACjEA,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,0BAA0B,EAC1B,MAAM,CAAC,GAAG,EACV,UAAU,GAAG,oBAAoB,GAAG,gBAAgB,CACrD,EACD,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,aAAa,EACxB,IAAI,EAAC,UAAU,EAAA,cAAA,EACD,eAAe,GAAG,OAAO,GAAG,SAAS,EAAA,eAAA,EACpC,UAAU,EACzB,QAAQ,EAAE,UAAU,GAAG,EAAE,GAAG,CAAC,EAAA,QAAA,EAAA,CAE7BN,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,UAAU,EAAA,GAChB,KAAK,EAAA,CACT,EAEFM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,aAE3C,UAAU,KACTN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,eAAe,KAAK;AAClB,sCAAE;AACF,sCAAE,iCAAiC,CACtC,EACD,KAAK,EAAE;AACL,oCAAA,SAAS,EAAE,gCAAgC;iCAC5C,EAAA,CACD,CACH,EAEDM,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC;oCACf,IAAI;oCACJ,eAAe;AACf,oCAAA,SAAS,EAAE,SAAS,IAAI,CAAC,eAAe;oCACxC,eAAe;oCACf,UAAU;iCACX,CAAC,EACF,SAAS,CACV,EAAA,QAAA,EAAA,CAGA,SAAS,IAAI,CAAC,eAAe,KAC5BN,eAAC,IAAI,EAAA,EACH,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,QAAQ,EACrB,SAAS,EAAC,mCAAmC,GAC7C,CACH,EAGA,eAAe,KACdA,wBACE,KAAK,EAAE,MAAM,CAAC,QAAQ,EACtB,MAAM,EAAE,MAAM,CAAC,QAAQ,EACvB,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAC,mCAAmC,YAE7CA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,QAAQ,EACV,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EAAA,CACrB,EAAA,CACE,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF,EAEL,KAAK,KACJA,0BACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,SAAS,EAChB,sCAAsC,EACtC;AACE,8BAAE;AACF,8BAAE,iCAAiC,EACrC,cAAc,CACf,YAEA,KAAK,EAAA,CACA,CACT,CAAA,EAAA,CACG,EAGL,eAAe,KACdA,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,SAAS,EACrB,eAAe,EAAC,UAAU,EAC1B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EAAA,CACtB,CACH,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;ACrVjC,MAAM,eAAe,GAAGG,0BAAG,CACzB,4DAA4D,EAC5D;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EACH,yEAAyE;AAC3E,YAAA,MAAM,EACJ,uEAAuE;AACzE,YAAA,KAAK,EACH,wEAAwE;AAC3E,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD,QAAA,QAAQ,EAAE;AACR,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EACH,qEAAqE;AACxE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,KAAK,EACH,qEAAqE;AACxE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EACH,oEAAoE;AACvE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,UAAU;AACjB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,KAAK,EACH,qEAAqE;AACxE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,gEAAgE;AACxE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,KAAK,EACH,mEAAmE;AACtE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,4DAA4D;AACpE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,aAAa;AACpB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,KAAK,EACH,iEAAiE;AACpE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,gEAAgE;AACxE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,KAAK,EACH,oEAAoE;AACvE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,KAAK,EAAE,gEAAgE;AACxE,SAAA;;AAED,QAAA;AACE,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,KAAK,EACH,mEAAmE;AACtE,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,QAAQ,EAAE,QAAQ;AACnB,KAAA;AACF,CAAA;AAoCH,MAAM,OAAO,GAAGC,gBAAK,CAAC,UAAU,CAC9B,CACE,EACE,KAAK,EACL,GAAG,EACH,IAAI,GAAG,QAAQ,EACf,KAAK,GAAG,SAAS,EACjB,QAAQ,GAAG,QAAQ,EACnB,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,KACD;;AAEF,IAAA,MAAM,YAAY,GAAGA,gBAAK,CAAC,OAAO,CAAC,MAAK;AACtC,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,GAAG,EAAE;YACjE,OAAO,CAAA,EAAG,GAAG,CAAA,CAAA,CAAG;QAClB;AACA,QAAA,OAAO,KAAK;AACd,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAEhB,QACEJ,cAAA,CAAA,MAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,eAAe,CAAC;YACd,IAAI;YACJ,KAAK;YACL,QAAQ;SACT,CAAC,EACF,SAAS,CACV,EAAA,GACG,KAAK,EAAA,QAAA,EAER,YAAY,EAAA,CACR;AAEX,CAAC;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;AC3L/B,MAAM,eAAe,GAAGG,0BAAG,CACzB,oNAAoN,EACpN;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,sEAAsE;AAC5E,YAAA,KAAK,EAAE,+BAA+B;AACvC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA;AAGH,MAAM,oBAAoB,GAAGA,0BAAG,CAC9B,6DAA6D,EAC7D;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,SAAS,EAAE;AACT,YAAA,WAAW,EACT,gFAAgF;AAClF,YAAA,GAAG,EAAE,gFAAgF;AACrF,YAAA,SAAS,EACP,gFAAgF;AAClF,YAAA,cAAc,EACZ,mFAAmF;AACrF,YAAA,MAAM,EACJ,mFAAmF;AACrF,YAAA,YAAY,EACV,mFAAmF;AACtF,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA,CACF;AA2CD,MAAM,OAAO,GAAGC,gBAAK,CAAC,UAAU,CAC9B,CACE,EACE,QAAQ,EACR,OAAO,EACP,WAAW,EACX,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,IAAI,EAChB,SAAS,EACT,KAAK,GAAG,GAAG,EACX,QAAQ,GAAG,KAAK,GACjB,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACnE,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACrE,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE1D,SAAS,CAAC;IACZ,MAAM,UAAU,GAAGA,gBAAK,CAAC,MAAM,CAAuC,IAAI,CAAC;IAC3E,MAAM,UAAU,GAAGA,gBAAK,CAAC,MAAM,CAAc,IAAI,CAAC;IAClD,MAAM,UAAU,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AAErD,IAAA,MAAM,iBAAiB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;QAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO;YAAE;QAEhD,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE;QAC9D,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAC9D,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC;AACd,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,QAAA,MAAM,eAAe,GAAG,CAAC,CAAC;QAE1B,IAAI,GAAG,GAAG,CAAC;QACX,IAAI,IAAI,GAAG,CAAC;QACZ,IAAI,gBAAgB,GAAG,SAAS;;QAGhC,QAAQ,SAAS;AACf,YAAA,KAAK,WAAW;AACd,gBAAA,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;AAC5D,gBAAA,IAAI,GAAG,WAAW,CAAC,IAAI;gBACvB;AACF,YAAA,KAAK,KAAK;AACR,gBAAA,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;gBAC5D,IAAI;AACF,oBAAA,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;gBAClE;AACF,YAAA,KAAK,SAAS;AACZ,gBAAA,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;gBAC5D,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;gBAC5C;AACF,YAAA,KAAK,cAAc;gBACjB,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;AAC1C,gBAAA,IAAI,GAAG,WAAW,CAAC,IAAI;gBACvB;AACF,YAAA,KAAK,QAAQ;gBACX,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;gBAC1C,IAAI;AACF,oBAAA,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;gBAClE;AACF,YAAA,KAAK,YAAY;gBACf,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;gBAC1C,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK;gBAC5C;;;AAIJ,QAAA,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU;AACvC,QAAA,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;;AAGzC,QAAA,IAAI,IAAI,GAAG,eAAe,EAAE;;YAE1B,IAAI,GAAG,eAAe;QACxB;aAAO,IAAI,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,aAAa,GAAG,eAAe,EAAE;;YAErE,IAAI,GAAG,aAAa,GAAG,WAAW,CAAC,KAAK,GAAG,eAAe;QAC5D;;AAGA,QAAA,IAAI,GAAG,GAAG,eAAe,EAAE;;;AAGzB,YAAA,MAAM,UAAU,GAAG,cAAc,GAAG,WAAW,CAAC,MAAM;AACtD,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG;AAElC,YAAA,IAAI,UAAU,GAAG,UAAU,EAAE;;gBAE3B,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;;gBAE1C,IAAI,SAAS,KAAK,WAAW;oBAAE,gBAAgB,GAAG,cAAc;qBAC3D,IAAI,SAAS,KAAK,KAAK;oBAAE,gBAAgB,GAAG,QAAQ;qBACpD,IAAI,SAAS,KAAK,SAAS;oBAAE,gBAAgB,GAAG,YAAY;YACnE;iBAAO;;gBAEL,GAAG,GAAG,eAAe;YACvB;QACF;aAAO,IAAI,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,cAAc,GAAG,eAAe,EAAE;;;AAGtE,YAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG;AAClC,YAAA,MAAM,UAAU,GAAG,cAAc,GAAG,WAAW,CAAC,MAAM;AAEtD,YAAA,IAAI,UAAU,GAAG,UAAU,EAAE;;AAE3B,gBAAA,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,GAAG,GAAG,SAAS;;gBAE5D,IAAI,SAAS,KAAK,cAAc;oBAAE,gBAAgB,GAAG,WAAW;qBAC3D,IAAI,SAAS,KAAK,QAAQ;oBAAE,gBAAgB,GAAG,KAAK;qBACpD,IAAI,SAAS,KAAK,YAAY;oBAAE,gBAAgB,GAAG,SAAS;YACnE;iBAAO;;gBAEL,GAAG,GAAG,cAAc,GAAG,WAAW,CAAC,MAAM,GAAG,eAAe;YAC7D;QACF;;;QAIA,MAAM,cAAc,GAAG,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC;QAC/D,MAAM,WAAW,GAAG,IAAI;AACxB,QAAA,MAAM,SAAS,GAAG,cAAc,GAAG,WAAW;;AAG9C,QAAA,MAAM,YAAY,GAAG,EAAE,CAAC;QACxB,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAC/B,YAAY,EACZ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC,CACtD;AAED,QAAA,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC1B,QAAA,gBAAgB,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAC5C,kBAAkB,CAAC,gBAAgB,CAAC;AACtC,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAEf,MAAM,gBAAgB,GAAG,MAAK;AAC5B,QAAA,IAAI,QAAQ;YAAE;AAEd,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACtB,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;QAClC;AAEA,QAAA,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,MAAK;YACnC,YAAY,CAAC,IAAI,CAAC;QACpB,CAAC,EAAE,KAAK,CAAC;AACX,IAAA,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAK;AAC5B,QAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACtB,YAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;QAClC;QACA,YAAY,CAAC,KAAK,CAAC;AACrB,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,IAAI,QAAQ;YAAE;QACd,YAAY,CAAC,IAAI,CAAC;AACpB,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;QACtB,YAAY,CAAC,KAAK,CAAC;AACrB,IAAA,CAAC;AAED,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,SAAS,EAAE;AACb,YAAA,iBAAiB,EAAE;YACnB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC;AAC1D,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;QACtD;AAEA,QAAA,OAAO,MAAK;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC;AAC7D,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AACzD,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAElC,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;;QAEnB,kBAAkB,CAAC,SAAS,CAAC;AAC/B,IAAA,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;AAEf,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,OAAO,MAAK;AACV,YAAA,IAAI,UAAU,CAAC,OAAO,EAAE;AACtB,gBAAA,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC;YAClC;AACF,QAAA,CAAC;IACH,CAAC,EAAE,EAAE,CAAC;;AAGN,IAAA,MAAM,SAAS,GAAG,CAAC,GAAG,IAAW,KAAI;QACnC,OAAO,CAAC,IAAS,KAAI;AACnB,YAAA,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;AACnB,gBAAA,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;oBAC7B,GAAG,CAAC,IAAI,CAAC;gBACX;qBAAO,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,SAAS,IAAI,GAAG,EAAE;AAC5D,oBAAA,GAAW,CAAC,OAAO,GAAG,IAAI;gBAC7B;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACH,IAAA,CAAC;;AAGD,IAAA,MAAM,OAAO,GAAGA,gBAAK,CAAC,YAAY,CAAC,QAAQ,EAAE;QAC3C,GAAG,EAAE,SAAS,CAAC,UAAU,EAAG,QAAgB,CAAC,GAAG,CAAC;AACjD,QAAA,YAAY,EAAE,CAAC,CAAmB,KAAI;AACpC,YAAA,gBAAgB,EAAE;YAClB,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QAClC,CAAC;AACD,QAAA,YAAY,EAAE,CAAC,CAAmB,KAAI;AACpC,YAAA,gBAAgB,EAAE;YAClB,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;QAClC,CAAC;AACD,QAAA,OAAO,EAAE,CAAC,CAAmB,KAAI;AAC/B,YAAA,WAAW,EAAE;YACb,QAAQ,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAC7B,CAAC;AACD,QAAA,MAAM,EAAE,CAAC,CAAmB,KAAI;AAC9B,YAAA,UAAU,EAAE;YACZ,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5B,CAAC;QACD,kBAAkB,EAAE,SAAS,GAAG,iBAAiB,GAAG,SAAS;AAC9D,KAAA,CAAC;AAEF,IAAA,QACEE,eAAA,CAAAC,mBAAA,EAAA,EAAA,QAAA,EAAA,CACG,OAAO,EAERD,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,EAC/B,EAAE,EAAC,iBAAiB,EACpB,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,CAAC,EACxD,KAAK,EAAE;AACL,oBAAA,GAAG,EAAE,CAAA,EAAG,QAAQ,CAAC,GAAG,CAAA,EAAA,CAAI;AACxB,oBAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAA,EAAA,CAAI;AAC3B,iBAAA,EAAA,aAAA,EACY,CAAC,SAAS,EACvB,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,gBAAgB,EAAA,QAAA,EAAA,CAE7B,SAAS,KACRN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,oBAAoB,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CACrD,EACD,KAAK,EAAE;AACL,4BAAA,IAAI,EAAE,CAAA,EAAG,aAAa,CAAC,IAAI,CAAA,EAAA,CAAI;yBAChC,EAAA,CACD,CACH,EAEDM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAAA,CAC1C,OAAO,KACNN,cAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,QAAQ,EACb,MAAM,EAAC,UAAU,EACjB,KAAK,EAAC,WAAW,EAAA,QAAA,EAEhB,OAAO,EAAA,CACH,CACR,EACDA,cAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,SAAS,EAChB,KAAK,EAAC,WAAW,EAAA,QAAA,EAGhB,WAAW,EAAA,CACP,CAAA,EAAA,CACH,CAAA,EAAA,CACF,CAAA,EAAA,CACL;AAEP,CAAC;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;AClS/B,MAAM,UAAU,GAAGI,gBAAK,CAAC,UAAU,CACjC,CACE,EACE,KAAK,EACL,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,WAAW,EACX,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,cAAc,EACd,aAAa,GACd,EACD,GAAG,KACD;;AAEF,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,EAAE,SAAS;AACf,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,aAAa,EAAE,0BAA0B;AACzC,YAAA,oBAAoB,EAAE,6BAA6B;AACnD,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,aAAa,EAAE,2BAA2B;AAC1C,YAAA,oBAAoB,EAAE,4BAA4B;AAClD,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,GAAG,EAAE,SAAS;AACf,SAAA;KACF;AAED,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;AAE/B,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,wCAAwC,EACxC,MAAM,CAAC,GAAG,EACV,SAAS,CACV,EAAA,QAAA,EAAA,CAEDA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,EAAA,QAAA,EAAA,CACjDA,eAAA,CAAA,OAAA,EAAA,EACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,EAAE,CAAC,mBAAmB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,CAElDN,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,aAAa,EACpB,6BAA6B,CAC9B,EAAA,QAAA,EAEA,KAAK,EAAA,CACD,EACN,UAAU,KACTA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,aAAa,EACpB,4BAA4B,CAC7B,EAAA,QAAA,EAAA,GAAA,EAAA,CAGI,CACR,EACA,UAAU,KACTA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,oBAAoB,EAC3B,qCAAqC,CACtC,EAAA,QAAA,EAAA,YAAA,EAAA,CAGI,CACR,CAAA,EAAA,CACK,EACP,eAAe,KACdA,cAAA,CAAC,OAAO,EAAA,EAAC,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAA,QAAA,EACzDA,cAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAA,CAAI,EAAA,CACnC,CACX,CAAA,EAAA,CACG,EAEL;AACC,kBAAE;kBACA,QAAQ,KACNA,eAAC,IAAI,EAAA,EACH,IAAI,EAAE,QAAQ,EACd,OAAO,EAAE,WAAW,EACpB,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,SAAS,EACf,IAAI,EAAE,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ,EAC3C,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,gBAAgB,EAAA,QAAA,EAE7B,QAAQ,EAAA,CACJ,CACR,CAAA,EAAA,CACD;AAEV,CAAC;AAGH,UAAU,CAAC,WAAW,GAAG,YAAY;;AC9KrC,MAAM,kBAAkB,GAAGG,0BAAG,CAC5B,gHAAgH,EAChH;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,6BAA6B;AACpC,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,KAAK,EAAE,+BAA+B;AACvC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE;;;;;AAKkC,+CAAA,CAAA;AACxC,YAAA,QAAQ,EAAE;;;;AAIiC,kDAAA,CAAA;AAC3C,YAAA,QAAQ,EAAE,CAAA;;;AAGiC,kDAAA,CAAA;AAC5C,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE;;;;AAIwD,qEAAA,CAAA;AAC9D,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AA+HH;AACA,MAAM,SAAS,GAAG,CAAC,IAAsC,KAAiB;AACxE,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;IACtB,IAAI,IAAI,YAAY,IAAI;AAAE,QAAA,OAAO,IAAI;AACrC,IAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC;AAC7B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM;IAChD;AACA,IAAA,OAAO,IAAI;AACb,CAAC;AAED,MAAM,iBAAiB,GAAG,CAAC,IAAU,KAAY;AAC/C,IAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;AACtC,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,KAAK,EAAE,OAAO;AACd,QAAA,GAAG,EAAE,SAAS;AACf,KAAA,CAAC;AACJ,CAAC;AAED;AACA,MAAM,mBAAmB,GAAG,CAAC,IAAU,EAAE,MAAc,KAAY;AACjE,IAAA,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAClC,IAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE;AAE/B,IAAA,MAAM,UAAU,GAAG;QACjB,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;QACL,KAAK;KACN;AACD,IAAA,MAAM,cAAc,GAAG;QACrB,SAAS;QACT,UAAU;QACV,OAAO;QACP,OAAO;QACP,KAAK;QACL,MAAM;QACN,MAAM;QACN,QAAQ;QACR,WAAW;QACX,SAAS;QACT,UAAU;QACV,UAAU;KACX;AAED,IAAA,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;AAClE,IAAA,MAAM,YAAY,GAAG;QACnB,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,QAAQ;QACR,UAAU;KACX;;IAGD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,MAAA,GAAiB,CAAC,KAAY;AACpD,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE;AACxB,QAAA,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;AAAE,YAAA,OAAO,GAAG;AACpC,QAAA,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG;AAC9C,IAAA,CAAC;IAED,IAAI,SAAS,GAAG,MAAM;;AAGtB,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACvD,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/D,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACjE,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5D,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;AAChD,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;AACrD,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AACnE,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC9D,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;AAC9C,IAAA,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;AAEnD,IAAA,OAAO,SAAS;AAClB,CAAC;MAEY,UAAU,GAAGC,gBAAK,CAAC,UAAU,CACxC,CACE,EACE,SAAS,EACT,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,QAAQ,EACR,WAAW,GAAG,eAAe,EAC7B,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,IAAI,EACtB,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,OAAO,EACP,OAAO,EACP,UAAU,GAAG,iBAAiB,EAC9B,MAAM,EACN,WAAW,EACX,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAC7CA,gBAAK,CAAC,QAAQ,CAAc,SAAS,CAAC,YAAY,CAAC,CAAC;AACtD,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACjD,MAAM,aAAa,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IACxD,MAAM,WAAW,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AACtD,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE9D,QAAQ,CAAC;AACX,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC/D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC;AAC7C,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,MAAM,EAAE,CAAC;AACV,KAAA,CAAC;AACF,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEhE,IAAA,MAAM,KAAK,GACT,eAAe,KAAK;AAClB,UAAE,SAAS,CAAC,eAAe;UACzB,iBAAiB;AAEvB,IAAA,MAAM,QAAQ,GAAG,KAAK,KAAK,IAAI;;IAG/B,MAAM,eAAe,GAAGA,gBAAK,CAAC,WAAW,CACvC,CAAC,IAAU,KAAY;QACrB,IAAI,MAAM,EAAE;AACV,YAAA,OAAO,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC;QAC1C;AACA,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC;AACzB,IAAA,CAAC,EACD,CAAC,MAAM,EAAE,UAAU,CAAC,CACrB;;AAGD,IAAA,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU;IAChE,MAAM,sBAAsB,GAAG;AAC7B,UAAE;AACF,UAAE;AACF,cAAE;cACA,eAAe;AAEnB,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAAgB,KAAI;QAC5C,IAAI,CAAC,UAAU,EAAE;YACf,SAAS,CAAC,OAAO,CAAC;QACpB;AACF,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,gBAAgB,CAAC,CAAC,MAAM,CAAC;AAC3B,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAC3B,KAAoB,EACpB,KAA0C,KACxC;;;QAGF,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,oBAAoB,CAAC,IAAI,CAAC;YAC5B;AACA,YAAA,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS,CAAC,KAAK,CAAC;YAChB;QACF;AAEA,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK;;AAG5D,QAAA,IAAI,YAAY,YAAY,IAAI,EAAE;AAChC,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,oBAAoB,CAAC,YAAY,CAAC;YACpC;AACA,YAAA,QAAQ,GAAG,YAAY,CAAC;YACxB,SAAS,CAAC,KAAK,CAAC;QAClB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,CAAmB,KAAI;QAC1C,CAAC,CAAC,eAAe,EAAE;QACnB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE;QACX;aAAO;AACL,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,oBAAoB,CAAC,IAAI,CAAC;YAC5B;AACA,YAAA,QAAQ,GAAG,IAAI,CAAC;QAClB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;QACrD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO;AACrC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM;AAC1D,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG;AAElC,QAAA,MAAM,cAAc,GAAG,WAAW,CAAC;AACjC,cAAE,WAAW,CAAC,OAAO,CAAC;cACpB,CAAC;AAEL,QAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,YAAA,oBAAoB,CAAC,UAAU,IAAI,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;YACjE;QACF;QAEA,IAAI,UAAU,IAAI,cAAc,IAAI,UAAU,IAAI,UAAU,EAAE;YAC5D,oBAAoB,CAAC,QAAQ,CAAC;QAChC;aAAO;YACL,oBAAoB,CAAC,KAAK,CAAC;QAC7B;IACF,CAAC,EAAE,EAAE,CAAC;;AAGN,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;AACnC,YAAA,IAAI,OAAO,GAAuB,aAAa,CAAC,OAAO;YACvD,IAAI,UAAU,GAAG,KAAK;AACtB,YAAA,OAAO,OAAO,IAAI,CAAC,UAAU,EAAE;gBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;;AAE1C,gBAAA,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;oBACjE,UAAU,GAAG,IAAI;oBACjB,gBAAgB,CAAC,IAAI,CAAC;oBACtB;gBACF;AACA,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa;YACjC;YACA,IAAI,CAAC,UAAU,EAAE;gBACf,gBAAgB,CAAC,KAAK,CAAC;YACzB;QACF;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE;YACnC,MAAM,cAAc,GAAG,MAAK;gBAC1B,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE;gBAC3D,IAAI,IAAI,EAAE;AACR,oBAAA,WAAW,CAAC;wBACV,GAAG,EAAE,IAAI,CAAC,GAAG;wBACb,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,KAAK,EAAE,IAAI,CAAC,KAAK;wBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,qBAAA,CAAC;;AAEF,oBAAA,uBAAuB,EAAE;gBAC3B;AACF,YAAA,CAAC;AAED,YAAA,cAAc,EAAE;AAChB,YAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC;YACjD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC;AAEvD,YAAA,OAAO,MAAK;AACV,gBAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC;gBACpD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,CAAC;AAC5D,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAErC,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,MAAM;YAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;;AAGnC,QAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,MAAK;AACrC,YAAA,uBAAuB,EAAE;AAC3B,QAAA,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,MAAK;AACxB,YAAA,uBAAuB,EAAE;;AAEzB,YAAA,IAAI,aAAa,CAAC,OAAO,EAAE;gBACzB,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE;AAC1D,gBAAA,WAAW,CAAC;oBACV,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,iBAAA,CAAC;YACJ;AACF,QAAA,CAAC;AAED,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAErD,QAAA,OAAO,MAAK;YACV,oBAAoB,CAAC,KAAK,CAAC;AAC3B,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAC1D,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAErC,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,MAAM,EAAE;;AAEV,YAAA,MAAM,KAAK,GAAG,UAAU,CAAC,MAAK;AAC5B,gBAAA,uBAAuB,EAAE;YAC3B,CAAC,EAAE,CAAC,CAAC;AACL,YAAA,OAAO,MAAM,YAAY,CAAC,KAAK,CAAC;QAClC;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;;AAGrC,IAAAA,gBAAK,CAAC,eAAe,CAAC,MAAK;QACzB,IAAI,MAAM,IAAI,WAAW,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,EAAE;AAC1D,YAAA,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY;YACvD,iBAAiB,CAAC,cAAc,CAAC;YAEjC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,qBAAqB,EAAE;;YAG1D,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM;AACnD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG;YAE3B,IAAI,cAAc,GAAG,UAAU,IAAI,UAAU,GAAG,UAAU,EAAE;gBAC1D,oBAAoB,CAAC,KAAK,CAAC;YAC7B;iBAAO;gBACL,oBAAoB,CAAC,QAAQ,CAAC;YAChC;;AAGA,YAAA,WAAW,CAAC;gBACV,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;AACpB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;YAC/C,IACE,aAAa,CAAC,OAAO;gBACrB,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;AACrD,gBAAA,WAAW,CAAC,OAAO;gBACnB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EACnD;gBACA,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/D,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC5C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1B,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;AAClD,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACvD,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC;AACxC,IAAA,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,CAAC;AAExC,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;KACF;AAED,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EACpB,kBAAkB,CACnB,EAAA,QAAA,EAAA,CAEA,KAAK,KACJN,eAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,GAC9B,CACH,EAEDM,yBACE,GAAG,EAAE,aAAa,EAClB,SAAS,EAAE,EAAE,CACX,kBAAkB,CAAC;oBACjB,IAAI;AACJ,oBAAA,eAAe,EAAE,sBAAsB;oBACvC,UAAU;AACX,iBAAA,CAAC,EACF,gCAAgC,EAChC,SAAS,CACV,EACD,OAAO,EAAE,CAAC,UAAU,GAAG,UAAU,GAAG,SAAS,EAC7C,IAAI,EAAC,QAAQ,mBACC,QAAQ,EAAA,eAAA,EACP,MAAM,EAAA,eAAA,EACN,UAAU,KACrB,KAAK,EAAA,QAAA,EAAA,CAETN,cAAA,CAACW,oBAAY,IACX,SAAS,EAAE,EAAE,CACX,kBAAkB,EAClB;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;AACF,sCAAE,gCAAgC,CACrC,GACD,EAEFX,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,CAAC,QAAQ,IAAI,gCAAgC,EAC7C,UAAU,IAAI,mCAAmC,CAClD,EAAA,QAAA,EAEA,QAAQ,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,WAAW,EAAA,CACpD,EAEN,eAAe,IAAI,QAAQ,IAAI,CAAC,UAAU,KACzCA,2BACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,kIAAkI,EAC5I,QAAQ,EAAE,EAAE,EAAA,YAAA,EACD,YAAY,EAAA,QAAA,EAEvBA,cAAA,CAACY,aAAC,EAAA,EAAC,SAAS,EAAC,SAAS,GAAG,EAAA,CAClB,CACV,IACG,EAENZ,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;AACF,sBAAE,sBAAsB,EAE5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,EAGD,OAAO,QAAQ,KAAK,WAAW;gBAC9B,MAAM;AACN,gBAAA,CAAC,UAAU;AACX,gBAAA,CAAC,MAAK;;AAEJ,oBAAA,MAAM,GAAG,GAAG,CAAC,CAAC;AAEd,oBAAA,MAAM,WAAW,GACf,iBAAiB,KAAK;AACpB,0BAAE,QAAQ,CAAC,MAAM,GAAG;0BAClB,QAAQ,CAAC,GAAG,GAAG,cAAc,GAAG,GAAG;oBAEzC,MAAM,aAAa,IACjBA,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE;AACL,4BAAA,QAAQ,EAAE,OAAO;4BACjB,GAAG,EAAE,CAAA,EAAG,WAAW,CAAA,EAAA,CAAI;AACvB,4BAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAA,EAAA,CAAI;4BAC1B,MAAM,EAAE,aAAa,GAAG,KAAK,GAAG,IAAI;AACrC,yBAAA,EACD,SAAS,EAAE,EAAE,CACX,mEAAmE,EACnE,iBAAiB,CAClB,EACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EAAA,QAAA,EAEnCA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8BAA8B,EAAA,QAAA,EAC3CA,cAAA,CAAC,QAAQ,IACP,QAAQ,EAAE,oBAAoB,EAC9B,KAAK,EAAE,KAAK,IAAI,IAAI,EACpB,OAAO,EAAE,aAAa,IAAI,SAAS,EACnC,OAAO,EAAE,aAAa,IAAI,SAAS,EACnC,MAAM,EAAC,OAAO,EACd,kBAAkB,EAAE,CAAC,MAAM,EAAE,IAAI,KAAI;AACnC,oCAAA,MAAM,YAAY,GAAG;wCACnB,IAAI;wCACJ,IAAI;wCACJ,IAAI;wCACJ,IAAI;wCACJ,IAAI;wCACJ,IAAI;wCACJ,IAAI;qCACL;AACD,oCAAA,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACpC,gCAAA,CAAC,EAAA,CACD,EAAA,CACE,EAAA,CACF,CACP;oBAED,OAAOa,qBAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,CAAC;AACnD,gBAAA,CAAC,GAAG,CAAA,EAAA,CACF;AAEV,CAAC;AAGH,UAAU,CAAC,WAAW,GAAG,YAAY;;ACzuBrC,MAAM,eAAe,GAAGV,0BAAG,CAAC,EAAE,EAAE;AAC9B,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,QAAQ,EAAE,QAAQ;AACnB,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,OAAO,EAAE,EAAE;AACZ,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,MAAM,EAAE,eAAe;AACxB,SAAA;AACD,QAAA,OAAO,EAAE;AACP,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,kBAAkB;AAC1B,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,YAAY;AACzB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;;AAED,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,kBAAkB;AAC1B,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA;AACE,YAAA,WAAW,EAAE,UAAU;AACvB,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,uCAAuC;AAC/C,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,KAAK,EAAE,uCAAuC;AAC/C,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,OAAO;AAChB,YAAA,KAAK,EAAE,sCAAsC;AAC9C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,YAAY;AACzB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,SAAS,EAAE,OAAO;AAClB,QAAA,OAAO,EAAE,QAAQ;AAClB,KAAA;AACF,CAAA,CAAC;AA+BF,MAAM,OAAO,GAAGC,gBAAK,CAAC,UAAU,CAC9B,CACE,EACE,SAAS,EACT,WAAW,GAAG,YAAY,EAC1B,SAAS,GAAG,MAAM,EAClB,SAAS,GAAG,OAAO,EACnB,OAAO,GAAG,QAAQ,EAClB,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,QACEJ,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,WAAW,sBACE,WAAW,EAC7B,SAAS,EAAE,EAAE,CACX,eAAe,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAC/D,SAAS,CACV,EAAA,GACG,KAAK,EAAA,CACT;AAEN,CAAC;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;ACjJ/B,MAAM,gBAAgB,GAAGG,0BAAG,CAC1B,4EAA4E,EAC5E;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,CAAA;;;;;AAKN,UAAA,CAAA;AACH,YAAA,QAAQ,EACN,iFAAiF;AACnF,YAAA,OAAO,EAAE,CAAA;;;;;AAKN,UAAA,CAAA;AACH,YAAA,QAAQ,EAAE,CAAA;;;;AAIP,UAAA,CAAA;AACJ,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,kEAAkE;AACxE,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AA2DH,MAAM,gBAAgB,GAAqC,CAAC,EAAE,SAAS,EAAE,MACvEH,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAClC,SAAS,EAAE,SAAS,EAAA,QAAA,EAEpBA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,uBAAuB,EACzB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EACrB,cAAc,EAAC,OAAO,EAAA,CACtB,EAAA,CACE,CACP;AAED,MAAM,QAAQ,GAAGI,gBAAK,CAAC,UAAU,CAC/B,CACE,EACE,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,WAAW,EACX,KAAK,EACL,WAAW,EACX,YAAY,EACZ,WAAW,GAAG,IAAI,EAClB,OAAO,GAAG,SAAS,EACnB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,iBAAiB,EACjB,YAAY,GAAG,OAAO,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,OAAO,EACP,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,UAAU,CAAC;;AAG1E,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,mBAAmB,CAAC,UAAU,CAAC;AACjC,IAAA,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;AAEhB,IAAA,MAAM,WAAW,GAAG,CAAC,CAAmC,KAAI;AAC1D,QAAA,IAAI,UAAU;YAAE;AAEhB,QAAA,IAAI,IAAI,KAAK,UAAU,EAAE;AACvB,YAAA,MAAM,WAAW,GAAG,CAAC,gBAAgB;YACrC,mBAAmB,CAAC,WAAW,CAAC;AAChC,YAAA,iBAAiB,GAAG,WAAW,CAAC;QAClC;AAEA,QAAA,OAAO,GAAG,CAAC,CAAC;AACd,IAAA,CAAC;AAED,IAAA,MAAM,oBAAoB,GAAG,CAAC,CAAsC,KAAI;QACtE,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,UAAU;YAAE;AAEhB,QAAA,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO;QACpC,mBAAmB,CAAC,WAAW,CAAC;AAChC,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAClC,IAAA,CAAC;IAED,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC;YACf,OAAO;YACP,UAAU;YACV,UAAU,EAAE,IAAI,KAAK,UAAU,GAAG,gBAAgB,GAAG,KAAK;SAC3D,CAAC,EACF,kBAAkB,CACnB,EACD,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,IAAI,KAAK,UAAU,GAAG,UAAU,GAAG,QAAQ,EAAA,cAAA,EACnC,IAAI,KAAK,UAAU,GAAG,gBAAgB,GAAG,SAAS,EAAA,eAAA,EACjD,UAAU,EACzB,QAAQ,EAAE,UAAU,GAAG,EAAE,GAAG,CAAC,EAAA,GACzB,KAAK,EAAA,QAAA,EAAA,CAGR,IAAI,KAAK,UAAU,KAClBN,cAAA,CAAC,QAAQ,IACP,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,oBAAoB,EAC9B,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,YAAY,EAClB,SAAS,EAAC,iBAAiB,EAAA,CAC3B,CACH,EAGA,WAAW,KACVA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,CAAA,gDAAA,CAAkD,EAClD,OAAO,KAAK;AACV,sBAAE;sBACA,OAAO,KAAK;AACd,0BAAE;AACF,0BAAE,gCAAgC,EACpC,UAAU,IAAI,mCAAmC,CAClD,EAAA,QAAA,EAEA,WAAW,EAAA,CACR,CACP,EAGDM,yBACE,SAAS,EAAE,EAAE,CACX,6CAA6C,EAC7C,gBAAgB,CACjB,aAEDN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,mCAAmC,EACnC,OAAO,KAAK;AACV,8BAAE;8BACA,OAAO,KAAK;AACd,kCAAE;kCACA,gCAAgC,EACpC,UAAU,IAAI,mCAAmC,CAClD,EAAA,QAAA,EAEA,KAAK,EAAA,CACF,EACL,WAAW,KACVA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4EAA4E,EAC5E,UAAU,IAAI,mCAAmC,CAClD,EAAA,QAAA,EAEA,WAAW,EAAA,CACR,CACP,CAAA,EAAA,CACG,EAGL,CAAC,YAAY,IAAI,WAAW,MAC3BA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qDAAqD,EAAA,QAAA,EACjE,YAAY,IAAIA,cAAA,CAAC,gBAAgB,KAAG,EAAA,CACjC,CACP,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;ACtJ1B,MAAM,YAAY,GAAGI,gBAAK,CAAC,UAAU,CAC1C,CACE,EACE,KAAK,GAAG,EAAE,EACV,aAAa,EACb,cAAc,EACd,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,yBAAyB,EACtC,gBAAgB,GAAG,uDAAuD,EAC1E,aAAa,GAAG,sBAAsB,EACtC,gBAAgB,EAChB,iBAAiB,GAAG,SAAS,EAC7B,mBAAmB,GAAG,WAAW,EACjC,cAAc,EACd,gBAAgB,EAChB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,aAAa,GAAG,KAAK,EACrB,UAAU,EACV,YAAY,GAAG,YAAY,EAC3B,OAAO,EACP,YAAY,GAAG,EAAE,EACjB,SAAS,EACT,KAAK,GAAG,MAAM,GACf,EACD,GAAG,KACD;IACF,MAAM,aAAa,GAAG,MAAK;QACzB,IAAI,SAAS,EAAE;AACb,YAAA,QACEJ,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sDAAsD,EAAA,QAAA,EACnEA,cAAA,CAACc,mBAAO,EAAA,EAAC,SAAS,EAAC,4DAA4D,EAAA,CAAG,EAAA,CAC9E;QAEV;QAEA,IAAI,aAAa,EAAE;YACjB,QACER,yBAAK,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,CACrD,cAAc,KACbN,cAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAC,KAAK,EACR,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,QAAQ,EACf,SAAS,EAAC,sEAAsE,YAE/E,cAAc,EAAA,CACV,CACR,EACDA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,YAAE,aAAa,EAAA,CAAO,CAAA,EAAA,CACvC;QAEV;QAEA,IAAI,OAAO,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACjC,QACEM,yBAAK,SAAS,EAAC,iEAAiE,EAAA,QAAA,EAAA,CAC7E,SAAS,KACRN,cAAA,CAACe,kBAAM,EAAA,EAAC,SAAS,EAAC,+CAA+C,EAAA,CAAG,CACrE,EACDf,cAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,UAAU,EACjB,SAAS,EAAC,sCAAsC,EAAA,QAAA,EAE/C,UAAU,EAAA,CACN,EACPA,cAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAC,GAAG,EACN,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,SAAS,EAChB,SAAS,EAAC,qCAAqC,YAE9C,gBAAgB,EAAA,CACZ,EACN,aAAa,KACZA,eAAC,IAAI,EAAA,EACH,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,gBAAgB,EAAA,QAAA,EAExB,aAAa,EAAA,CACT,CACR,CAAA,EAAA,CACG;QAEV;QAEA,QACEM,yBAAK,SAAS,EAAC,yCAAyC,EAAA,QAAA,EAAA,CACrD,cAAc,KACbN,cAAA,CAAC,IAAI,IACH,EAAE,EAAC,KAAK,EACR,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,QAAQ,EACf,SAAS,EAAC,+CAA+C,YAExD,cAAc,EAAA,CACV,CACR,EACDA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EACjC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MACrBA,cAAA,CAAC,QAAQ,IAEP,KAAK,EAAE,IAAI,CAAC,KAAK,EACjB,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,IAAI,CAAC,UAAU,EAC3B,UAAU,EAAE,KAAK,KAAK,YAAY,EAClC,OAAO,EAAE,IAAI,CAAC,OAAO,EACrB,OAAO,EAAE,MAAK;AACZ,4BAAA,IAAI,CAAC,OAAO,IAAI;4BAChB,OAAO,IAAI;wBACb,CAAC,EACD,kBAAkB,EAAE,EAAE,CACpB,KAAK,KAAK,YAAY,IAAI,8BAA8B,CACzD,EAAA,EAfI,IAAI,CAAC,KAAK,CAgBf,CACH,CAAC,EAAA,CACE,CAAA,EAAA,CACF;AAEV,IAAA,CAAC;IAED,MAAM,UAAU,GACd,KAAK,KAAK,MAAM,GAAG,QAAQ,GAAG,KAAK,KAAK,MAAM,GAAG,QAAQ,GAAG,EAAE;AAChE,IAAA,MAAM,aAAa,GAAG,UAAU,IAAI,CAAC,aAAa;AAElD,IAAA,QACEM,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,yCAAyC,EACzC,UAAU,EACV,SAAS,CACV,EACD,KAAK,EAAE;AACL,YAAA,SAAS,EACP,mEAAmE;AACrE,YAAA,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;AAC3D,SAAA,EAAA,QAAA,EAAA,CAGA,aAAa,EAAE,EAGf,aAAa,KACZA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BN,cAAA,CAAC,OAAO,IAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAA,CAAG,EAC5CM,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,gBAAgB,EAChB,YAAY,KAAK;AACf,8BAAE;8BACA,uBAAuB,CAC5B,EAAA,QAAA,EAAA,CAEDN,cAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,WAAW,EACnB,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,QAAQ,EACb,WAAW,EAAA,IAAA,EACX,OAAO,EAAE,gBAAgB,EAAA,QAAA,EAExB,mBAAmB,EAAA,CACb,EACTA,eAAC,MAAM,EAAA,EACL,OAAO,EAAC,SAAS,EACjB,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,QAAQ,EACb,WAAW,EAAA,IAAA,EACX,OAAO,EAAE,cAAc,EAAA,QAAA,EAEtB,iBAAiB,EAAA,CACX,CAAA,EAAA,CACL,CAAA,EAAA,CACF,CACP,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,YAAY,CAAC,WAAW,GAAG,cAAc;;AC1SzC,MAAM,gBAAgB,GAAGG,0BAAG,CAC1B,2FAA2F,EAC3F;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,MAAM;AACd,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACF,CAAA;MAyGU,QAAQ,GAAGC,gBAAK,CAAC,UAAU,CACtC,CACE,EACE,SAAS,EACT,OAAO,EACP,KAAK,GAAG,EAAE,EACV,aAAa,EACb,cAAc,EACd,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK,EACf,UAAU,GAAG,yBAAyB,EACtC,gBAAgB,GAAG,uDAAuD,EAC1E,aAAa,GAAG,sBAAsB,EACtC,gBAAgB,EAChB,iBAAiB,GAAG,SAAS,EAC7B,mBAAmB,GAAG,WAAW,EACjC,cAAc,EACd,gBAAgB,EAChB,IAAI,GAAG,QAAQ,EACf,IAAI,EAAE,cAAc,EACpB,WAAW,GAAG,KAAK,EACnB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EACb,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,aAAa,GAAG,KAAK,EACrB,UAAU,EACV,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC3E,IAAA,MAAM,MAAM,GACV,cAAc,KAAK,SAAS,GAAG,cAAc,GAAG,gBAAgB;IAClE,MAAM,WAAW,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AAEtD,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAAgB,KAAI;AAC5C,QAAA,IAAI,cAAc,KAAK,SAAS,EAAE;YAChC,mBAAmB,CAAC,OAAO,CAAC;QAC9B;AACA,QAAA,YAAY,GAAG,OAAO,CAAC;AACzB,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,gBAAgB,CAAC,CAAC,MAAM,CAAC;AAC3B,IAAA,CAAC;;AAGD,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;YAC/C,IACE,WAAW,CAAC,OAAO;gBACnB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EACnD;gBACA,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/D,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC5C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1B,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;AAClD,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACvD,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,MAAM,OAAO,GAAG;AACd,QAAA,KAAK,EAAE,MAAM;AACb,QAAA,MAAM,EAAE,MAAM;AACd,QAAA,KAAK,EAAE,MAAM;KACd;AAED,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,kBAAkB,CAAC,EAAA,GACtD,KAAK,EAAA,QAAA,EAAA,CAGR,OAAO,KACNN,cAAA,CAAA,KAAA,EAAA,EAAK,OAAO,EAAE,UAAU,EAAE,SAAS,EAAC,gBAAgB,EAAA,QAAA,EACjD,OAAO,EAAA,CACJ,CACP,EAGA,MAAM,KACLA,cAAA,CAAC,YAAY,EAAA,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,EACxC,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,EACtC,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAAE,aAAa,EAAE,SAAS,CAAC,EAC7D,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,EAAA,CACpB,CACH,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;AC/KjC,MAAM,KAAK,GAAGI,gBAAK,CAAC,UAAU,CAC5B,CACE,EACE,MAAM,EACN,OAAO,EACP,KAAK,EACL,WAAW,EACX,MAAM,EACN,QAAQ,EACR,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,IAAI,EAC1B,aAAa,GAAG,IAAI,EACpB,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,eAAe,GAChB,EACD,GAAG,KACD;IACF,MAAM,QAAQ,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AACnD,IAAA,MAAM,UAAU,GAAG,GAAG,IAAI,QAAQ;;AAGlC,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,MAAM,EAAE,UAAU;AAClB,QAAA,KAAK,EAAE,UAAU;AACjB,QAAA,MAAM,EAAE,WAAW;KACpB;;AAGD,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,CAAC,MAAM,IAAI,CAAC,aAAa,IAAI,CAAC,OAAO;YAAE;AAE3C,QAAA,MAAM,YAAY,GAAG,CAAC,CAAgB,KAAI;AACxC,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE;AACtB,gBAAA,OAAO,EAAE;YACX;AACF,QAAA,CAAC;AAED,QAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;QAClD,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;IACpE,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;;AAGpC,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,MAAM,EAAE;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ;QACzC;aAAO;YACL,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;QACnC;AAEA,QAAA,OAAO,MAAK;YACV,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE;AACnC,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAA,MAAM,kBAAkB,GAAG,CAAC,CAAmC,KAAI;AACjE,QAAA,IAAI,mBAAmB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,aAAa,IAAI,OAAO,EAAE;AAClE,YAAA,OAAO,EAAE;QACX;AACF,IAAA,CAAC;;AAGD,IAAA,IAAI,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI;AAExB,IAAA,MAAM,SAAS,GAAG,KAAK,IAAI,WAAW;AAEtC,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,8DAA8D,EAC9D,SAAS,CACV,EACD,IAAI,EAAC,QAAQ,EAAA,YAAA,EACF,MAAM,EAAA,YAAA,EACL,SAAS,IAAI,KAAK,EAAA,kBAAA,EACZ,eAAe,aAGjCN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,gBAAgB,CACjB,EACD,OAAO,EAAE,kBAAkB,EAAA,aAAA,EACf,MAAM,EAAA,CAClB,EAGFM,yBACE,GAAG,EAAE,UAAU,EACf,SAAS,EAAE,EAAE,CACX,iEAAiE,EACjE,4BAA4B,EAC5B,UAAU,CAAC,IAAI,CAAC,EAChB,gBAAgB,CACjB,EAAA,QAAA,EAAA,CAGA,SAAS,KACRA,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,kDAAkD,EAClD,CAAC,WAAW,IAAI,MAAM,EACtB,WAAW,IAAI,MAAM,EACrB,eAAe,CAChB,EAAA,QAAA,EAAA,CAEDA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,QAAQ,EAAA,QAAA,EAAA,CACpB,KAAK,KACJN,cAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAC,IAAI,EACP,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,UAAU,EACjB,KAAK,EAAC,SAAS,YAEd,KAAK,EAAA,CACD,CACR,EACA,WAAW,KACVA,cAAA,CAAC,IAAI,EAAA,EACH,EAAE,EAAC,GAAG,EACN,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,SAAS,EAChB,KAAK,EAAC,QAAQ,EACd,SAAS,EAAC,MAAM,EAAA,QAAA,EAEf,WAAW,EAAA,CACP,CACR,CAAA,EAAA,CACG,EAEL,eAAe,IAAI,OAAO,KACzBA,cAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,OAAO,EAAA,YAAA,EACD,aAAa,EACxB,SAAS,EAAC,UAAU,EAAA,CACpB,CACH,CAAA,EAAA,CACG,CACP,EAGA,CAAC,SAAS,IAAI,eAAe,IAAI,OAAO,KACvCA,wBAAK,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAC1CA,cAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,OAAO,EAAA,YAAA,EACD,aAAa,EAAA,CACxB,EAAA,CACE,CACP,EAGDA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,6BAA6B,EAC7B,SAAS,GAAG,MAAM,GAAG,WAAW,EAChC,CAAC,MAAM,IAAI,MAAM,EACjB,aAAa,CACd,EAAA,QAAA,EAEA,QAAQ,EAAA,CACL,EAGL,MAAM,KACLM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BN,eAAC,OAAO,EAAA,EAAC,SAAS,EAAC,MAAM,EAAC,OAAO,EAAC,OAAO,EAAA,CAAG,EAC5CA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,+CAA+C,EAC/C,eAAe,CAChB,EAAA,QAAA,EAEA,MAAM,GACH,CAAA,EAAA,CACF,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF;AAEV,CAAC;AAGH,KAAK,CAAC,WAAW,GAAG,OAAO;;ACtQ3B,MAAM,cAAc,GAAGG,0BAAG,CACxB,gHAAgH,EAChH;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,6BAA6B;AACpC,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,KAAK,EAAE,+BAA+B;AACvC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE;;;;;AAKkC,+CAAA,CAAA;AACxC,YAAA,QAAQ,EAAE;;;;AAIiC,kDAAA,CAAA;AAC3C,YAAA,QAAQ,EAAE,CAAA;;;AAGiC,kDAAA,CAAA;AAC5C,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE;;;;AAIwD,qEAAA,CAAA;AAC9D,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AAqJI,MAAM,MAAM,GAAGC,gBAAK,CAAC,UAAU,CACpC,CACE,EACE,SAAS,EACT,OAAO,GAAG,EAAE,EACZ,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,QAAQ,EACR,WAAW,GAAG,kBAAkB,EAChC,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,KAAK,EACjB,IAAI,GAAG,QAAQ,EACf,MAAM,EACN,MAAM,EACN,eAAe,GAAG,KAAK,EACvB,OAAO,EACP,eAAe,GAAG,KAAK,EACvB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,SAAS,GAAG,MAAM,EAClB,cAAc,EACd,UAAU,GAAG,sBAAsB,EACnC,gBAAgB,GAAG,sCAAsC,EACzD,SAAS,EACT,WAAW,EACX,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE9D,YAAY,CAAC;AACf,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE9D,QAAQ,CAAC;IACX,MAAM,SAAS,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IACpD,MAAM,oBAAoB,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AAE/D,IAAA,MAAM,KAAK,GACT,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,iBAAiB;;AAGrE,IAAA,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC;IACjE,MAAM,QAAQ,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;;AAGpD,IAAA,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU;IAChE,MAAM,sBAAsB,GAAG;AAC7B,UAAE;AACF,UAAE;AACF,cAAE;cACA,eAAe;AAEnB,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAAgB,KAAI;AAC5C,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,EAAE;YAC7B,SAAS,CAAC,OAAO,CAAC;QACpB;AACF,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;AACtB,QAAA,gBAAgB,CAAC,CAAC,MAAM,CAAC;AAC3B,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,MAAoB,KAAI;AAC5C,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC;QACpC;QACA,QAAQ,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;QAChC,SAAS,CAAC,KAAK,CAAC;AAClB,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,CAAmB,KAAI;QAC1C,CAAC,CAAC,eAAe,EAAE;QACnB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE;QACX;aAAO;AACL,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,oBAAoB,CAAC,SAAS,CAAC;YACjC;AACA,YAAA,QAAQ,GAAG,EAAE,EAAE,EAAkB,CAAC;QACpC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;QACrD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO;AACjC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM;AAC1D,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG;AAElC,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC1C,cAAE,oBAAoB,CAAC,OAAO,CAAC;cAC7B,CAAC;AAEL,QAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,YAAA,oBAAoB,CAAC,UAAU,IAAI,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;YACjE;QACF;QAEA,IAAI,UAAU,IAAI,cAAc,IAAI,UAAU,IAAI,UAAU,EAAE;YAC5D,oBAAoB,CAAC,QAAQ,CAAC;QAChC;aAAO;YACL,oBAAoB,CAAC,KAAK,CAAC;QAC7B;IACF,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,uBAAuB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;AACrD,QAAA,IAAI,CAAC,MAAM;YAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,uBAAuB,CAAC;AAE1D,QAAA,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE;AACpD,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAErD,QAAA,OAAO,MAAK;YACV,oBAAoB,CAAC,KAAK,CAAC;AAC3B,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAC1D,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;AAErC,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,MAAM,GAAG,uBAAuB,EAAE;AACxC,QAAA,OAAO,MAAK;YACV,MAAM,IAAI;AACZ,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;AAE7B,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,MAAM,EAAE;AACV,YAAA,uBAAuB,EAAE;QAC3B;IACF,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;;AAGrD,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;YAC/C,IACE,SAAS,CAAC,OAAO;gBACjB,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EACjD;gBACA,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/D,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC5C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1B,gBAAgB,CAAC,KAAK,CAAC;YACzB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;AAClD,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACvD,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,aAAa,GAAG,CAAC,KAAoB,KAAI;YAC7C,IAAI,UAAU,IAAI,SAAS;gBAAE;AAE7B,YAAA,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE;gBAC3D,KAAK,CAAC,cAAc,EAAE;gBACtB,SAAS,CAAC,IAAI,CAAC;gBACf;YACF;YAEA,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;oBACxD,KAAK,CAAC,cAAc,EAAE;AACtB,oBAAA,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CACpC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,KAAK,CAC7B;AACD,oBAAA,MAAM,SAAS,GACb,KAAK,CAAC,GAAG,KAAK;AACZ,0BAAE,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC;0BAC7C,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC,CAAC;AAEnC,oBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE;AACxD,wBAAA,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAClC;gBACF;YACF;AACF,QAAA,CAAC;AAED,QAAA,IAAI,SAAS,CAAC,OAAO,EAAE;YACrB,SAAS,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC;AAC5D,YAAA,OAAO,MAAK;gBACV,SAAS,CAAC,OAAO,EAAE,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC;AAClE,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;;IAGnD,MAAM,SAAS,GAAuB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QAC7D,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,QAAA,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC;AACpC,KAAA,CAAC,CAAC;IAEH,MAAM,UAAU,GACd,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS;AAE3E,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;KACF;AAED,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EACpB,kBAAkB,CACnB,EAAA,QAAA,EAAA,CAEA,KAAK,KACJN,eAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,GAC9B,CACH,EAEDM,yBACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,EAAE,CACX,cAAc,CAAC;oBACb,IAAI;AACJ,oBAAA,eAAe,EAAE,sBAAsB;oBACvC,UAAU;iBACX,CAAC,EACF,gCAAgC,EAChC,SAAS,CACV,EACD,OAAO,EAAE,CAAC,UAAU,IAAI,CAAC,SAAS,GAAG,UAAU,GAAG,SAAS,EAC3D,IAAI,EAAC,UAAU,EAAA,eAAA,EACD,SAAS,EAAA,eAAA,EACR,MAAM,mBACN,UAAU,EAAA,GACrB,KAAK,EAAA,QAAA,EAAA,CAGR,MAAM,IACLN,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;sCACA,gCAAgC,CACrC,EAAA,QAAA,EAEA,MAAM,EAAA,CACF,IACL,eAAe,IAAI,cAAc,EAAE,WAAW,IAChDA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;AACF,sCAAE,gCAAgC,CACrC,EAAA,QAAA,EAEA,cAAc,CAAC,WAAW,EAAA,CACtB,IACL,IAAI,EAERA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,2BAA2B,EAC3B,CAAC,cAAc,IAAI,gCAAgC,EACnD,UAAU,IAAI,mCAAmC,CAClD,EAAA,QAAA,EAEA,SAAS,GAAG,YAAY,GAAG,cAAc,EAAE,KAAK,IAAI,WAAW,EAAA,CAC3D,EAEN,eAAe,IAAI,QAAQ,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,KACvDA,cAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,kIAAkI,EAC5I,QAAQ,EAAE,EAAE,EAAA,QAAA,EAEZA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,YAElCA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,sBAAsB,EACxB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,GACrB,EAAA,CACE,EAAA,CACC,CACV,EAEA,MAAM,IAAI,CAAC,eAAe,KACzBA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;AACF,sCAAE,gCAAgC,CACrC,EAAA,QAAA,EAEA,MAAM,GACF,CACR,EAEDA,cAAA,CAACgB,uBAAW,IACV,SAAS,EAAE,EAAE,CACX,uCAAuC,EACvC;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;AACF,sCAAE,gCAAgC,EACpC,MAAM,IAAI,sBAAsB,CACjC,EAAA,CACD,EAGD,MAAM,IAAI,CAAC,UAAU,IAAI,CAAC,SAAS,KAClChB,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,oBAAoB,EACzB,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,iBAAiB,KAAK;AACpB,8BAAE;AACF,8BAAE,kBAAkB,CACvB,EAAA,QAAA,EAEDA,cAAA,CAAC,YAAY,EAAA,EACX,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,cAAc,EAC9B,OAAO,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,EAC7B,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,IAAI,EACnB,OAAO,EAAE,MAAM,gBAAgB,CAAC,KAAK,CAAC,EACtC,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,UAAU,GACjB,EAAA,CACE,CACP,CAAA,EAAA,CACG,EAENA,eAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;AACF,sBAAE,sBAAsB,EAE5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,CAAA,EAAA,CACE;AAEV,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;AC5nB7B,MAAM,kBAAkB,GAAGG,0BAAG,CAC5B,8DAA8D,EAC9D;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,MAAM,EAAE,eAAe;AACvB,YAAA,KAAK,EAAE,iBAAiB;AACzB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACF,CAAA;MA+EU,UAAU,GAAGC,gBAAK,CAAC,UAAU,CACxC,CACE,EACE,SAAS,EACT,WAAW,EAAE,qBAAqB,EAClC,UAAU,EACV,WAAW,EAAE,qBAAqB,EAClC,kBAAkB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EACjD,eAAe,GAAG,IAAI,EACtB,YAAY,EACZ,mBAAmB,EACnB,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,gBAAgB,GAAG,cAAc,EACjC,OAAO,GAAG,IAAI,EACd,SAAS,GAAG,MAAM,EAClB,SAAS,GAAG,MAAM,EAClB,YAAY,GAAG,IAAI,EACnB,cAAc,GAAG,IAAI,EACrB,cAAc,GAAG,IAAI,EACrB,UAAU,EACV,cAAc,GAAG,CAAC,EAClB,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GACzDA,gBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnB,IAAA,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GACzDA,gBAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAE7C,IAAA,MAAM,WAAW,GACf,qBAAqB,KAAK;AACxB,UAAE;UACA,uBAAuB;AAE7B,IAAA,MAAM,WAAW,GACf,qBAAqB,KAAK;AACxB,UAAE;UACA,uBAAuB;;IAG7B,MAAM,wBAAwB,GAAmB,kBAAkB,CAAC,GAAG,CACrE,CAAC,KAAK,KAAI;AACR,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE9B,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,QAAQ,GAAG,QAAQ;QAC7D,OAAO;YACL,EAAE,EAAE,CAAA,KAAA,EAAQ,QAAQ,CAAA,CAAE;AACtB,YAAA,KAAK,EAAE,QAAQ;AACf,YAAA,KAAK,EAAE,KAAK;AACZ,YAAA,KAAK,EAAE,QAAQ;SAChB;AACH,IAAA,CAAC,CACF;;AAGD,IAAA,MAAM,WAAW,GAAmB,KAAK,CAAC,IAAI,CAC5C,EAAE,MAAM,EAAE,UAAU,EAAE,EACtB,CAAC,CAAC,EAAE,CAAC,KAAI;AACP,QAAA,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC;AACrB,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,OAAO;YACL,EAAE,EAAE,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE;AACrB,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,OAAO;YACd,KAAK,EAAE,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE;SACzB;AACH,IAAA,CAAC,CACF;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,OAAe,KAAI;AAC3C,QAAA,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,UAAU;YAAE;AACzC,QAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;YACvC,0BAA0B,CAAC,OAAO,CAAC;QACrC;AACA,QAAA,YAAY,GAAG,OAAO,CAAC;AACzB,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAG,CAAC,KAAsB,KAAI;AACzD,QAAA,MAAM,cAAc,GAClB,OAAO,KAAK,KAAK,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK;AACrD,QAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;YACvC,0BAA0B,CAAC,cAAc,CAAC;QAC5C;AACA,QAAA,mBAAmB,GAAG,cAAc,CAAC;;QAErC,gBAAgB,CAAC,CAAC,CAAC;AACrB,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,gBAAgB,CAAC,WAAW,GAAG,CAAC,CAAC;AACnC,IAAA,CAAC;IAED,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,gBAAgB,CAAC,WAAW,GAAG,CAAC,CAAC;AACnC,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,WAAW,IAAI,CAAC,IAAI,UAAU;AACrD,IAAA,MAAM,cAAc,GAAG,WAAW,IAAI,UAAU,IAAI,UAAU;IAE9D,MAAM,UAAU,GACd,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,QAAQ;;IAGpE,MAAM,UAAU,GACd,IAAI,KAAK,OAAO,GAAG,QAAQ,GAAG,IAAI,KAAK,OAAO,GAAG,OAAO,GAAG,OAAO;;IAGpE,MAAM,cAAc,GAAG,MAA0B;AAC/C,QAAA,IAAI,UAAU,IAAI,cAAc,EAAE;;YAEhC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5D;;QAGA,MAAM,mBAAmB,GACvB,UAAU;aACT,WAAW,IAAI;AACd,kBAAE;AACF,kBAAE,WAAW,IAAI,UAAU,GAAG;AAC9B,sBAAE;sBACA,QAAQ,CAAC;AAEf,QAAA,IAAI,mBAAmB,KAAK,OAAO,EAAE;;AAEnC,YAAA,OAAO,KAAK,CAAC,IAAI,CACf,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,EAChD,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAChB;QACH;AAAO,aAAA,IAAI,mBAAmB,KAAK,MAAM,EAAE;;AAEzC,YAAA,MAAM,KAAK,GAAG,UAAU,GAAG,cAAc,GAAG,CAAC;YAC7C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QACpE;AAAO,aAAA,IAAI,mBAAmB,KAAK,QAAQ,EAAE;;YAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC;AAC9C,YAAA,IAAI,KAAK,GAAG,WAAW,GAAG,OAAO;AACjC,YAAA,IAAI,GAAG,GAAG,WAAW,GAAG,OAAO;;AAG/B,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,gBAAA,GAAG,IAAI,CAAC,GAAG,KAAK;gBAChB,KAAK,GAAG,CAAC;YACX;AACA,YAAA,IAAI,GAAG,GAAG,UAAU,EAAE;AACpB,gBAAA,KAAK,IAAI,GAAG,GAAG,UAAU;gBACzB,GAAG,GAAG,UAAU;YAClB;YAEA,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;YAC1B,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;YAE/B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC;QACrE;;AAGA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,cAAc,EAAE;AAEpC,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,EAAA,GAClD,KAAK,EAAA,QAAA,EAAA,CAER,eAAe,KACdA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtCN,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kDAAkD,EAAA,QAAA,EAC/D,gBAAgB,EAAA,CACZ,EACPA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EACvBA,cAAA,CAAC,MAAM,EAAA,EACL,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,EAC7B,OAAO,EAAE,wBAAwB,EACjC,QAAQ,EAAE,uBAAuB,EACjC,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,EAAA,CACE,CAAA,EAAA,CACF,CACP,EAEDM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iCAAiC,EAAA,QAAA,EAAA,CAC7C,YAAY,KACXN,cAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAEA,cAAA,CAACiB,uBAAW,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,YAAA,EACrC,eAAe,EAAA,QAAA,EAEzB,SAAS,EAAA,CACH,CACV,EAEA,cAAc;;AAEb,oBAAAX,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACtCN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,UAAU,EAAA,QAAA,EACvBA,cAAA,CAAC,MAAM,EAAA,EACL,KAAK,EAAE,WAAW,CAAC,QAAQ,EAAE,EAC7B,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,CAAC,KAAK,KACd,gBAAgB,CACd,OAAO,KAAK,KAAK,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,CACpD,EAEH,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,GAChB,EAAA,CACE,EACNM,eAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kDAAkD,EAAA,QAAA,EAAA,CAC/D,OAAO,EAAA,GAAA,EAAG,UAAU,CAAA,EAAA,CAChB,CAAA,EAAA,CACH;;oBAGN,cAAc;AACd,wBAAA,WAAW,CAAC,MAAM,GAAG,CAAC,KACpBN,cAAA,CAAC,WAAW,EAAA,EACV,OAAO,EAAC,WAAW,EACnB,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAe,CAAC,EAAA,QAAA,EAErD,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,MACvBA,cAAA,CAAC,MAAM,EAAA,EAEL,KAAK,EAAE,OAAO,EACd,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EAAA,YAAA,EACH,CAAA,KAAA,EAAQ,OAAO,CAAA,CAAE,EAAA,cAAA,EACf,OAAO,KAAK,WAAW,GAAG,MAAM,GAAG,SAAS,EAAA,QAAA,EAEzD,OAAO,EAAA,EAPH,OAAO,CAQL,CACV,CAAC,EAAA,CACU,CACf,CACF,EAEA,YAAY,KACXA,cAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,cAAc,EAC1B,YAAY,EAAEA,cAAA,CAACkB,wBAAY,EAAA,EAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EAAA,YAAA,EACvC,WAAW,EAAA,QAAA,EAErB,SAAS,EAAA,CACH,CACV,CAAA,EAAA,CACG,CAAA,EAAA,CACF;AAEV,CAAC;AAGH,UAAU,CAAC,WAAW,GAAG,YAAY;;AC3WrC,MAAM,aAAa,GAAGf,0BAAG,CACvB,6GAA6G,EAC7G;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,kCAAkC;AACzC,YAAA,MAAM,EAAE,kCAAkC;AAC1C,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EACH,mFAAmF;AACtF,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,qGAAqG;AAC3G,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,CAAA;;;AAGJ,UAAA,CAAA;AACJ,SAAA;;AAED,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,6IAA6I;AAChJ,SAAA;;AAED,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,iJAAiJ;AACpJ,SAAA;;AAED,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,MAAM;AACvB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,0CAA0C;AAClD,SAAA;;AAED,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,eAAe,EAAE,OAAO;AACxB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,2CAA2C;AACnD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA;AAuCH,MAAM,KAAK,GAAGC,gBAAK,CAAC,UAAU,CAC5B,CACE,EACE,KAAK,EACL,SAAS,EACT,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,aAAa,GAAG,IAAI,EACpB,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACnE,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzD,IAAA,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACvD,MAAM,QAAQ,GAAGA,gBAAK,CAAC,MAAM,CAAmB,IAAI,CAAC;;AAGrD,IAAAA,gBAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,OAAQ,CAAC;AAEvD,IAAA,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,eAAe;AAEnE,IAAA,MAAM,YAAY,GAAG,CAAC,CAAsC,KAAI;QAC9D,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;aAAO;AACL,YAAA,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC;AACF,IAAA,CAAC;IAED,MAAM,aAAa,GAAG,MAAK;QACzB,IAAI,CAAC,UAAU,EAAE;YACf,aAAa,CAAC,IAAI,CAAC;YACnB,UAAU,CAAC,MAAK;gBACd,aAAa,CAAC,KAAK,CAAC;AACtB,YAAA,CAAC,EAAE,GAAG,CAAC,CAAC;QACV;AACF,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;AAChC,QAAA,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE;;AAEnC,YAAA,MAAM,aAAa,GAAG,CAAC,SAAS;YAChC,IAAI,aAAa,EAAE;AACjB,gBAAA,aAAa,EAAE;YACjB;AACA,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;QAC1B;AACF,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAsB,KAAI;AAC/C,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,UAAU,EAAE;YACvD,CAAC,CAAC,cAAc,EAAE;;AAElB,YAAA,MAAM,aAAa,GAAG,CAAC,SAAS;YAChC,IAAI,aAAa,EAAE;AACjB,gBAAA,aAAa,EAAE;YACjB;AACA,YAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;QAC3B;AACF,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,CAAC,UAAU,EAAE;YACf,YAAY,CAAC,IAAI,CAAC;QACpB;AACF,IAAA,CAAC;IAED,MAAM,UAAU,GAAG,MAAK;QACtB,YAAY,CAAC,KAAK,CAAC;AACrB,IAAA,CAAC;;AAGD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,yBAAyB;AACpC,YAAA,eAAe,EAAE,CAAC;AACnB,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,SAAS,EAAE,0BAA0B;AACrC,YAAA,eAAe,EAAE,CAAC;AACnB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,yBAAyB;AACpC,YAAA,eAAe,EAAE,CAAC;AACnB,SAAA;KACF;AAED,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;;AAG/B,IAAA,MAAM,eAAe,GAAG,SAAS,IAAI,aAAa;IAElD,QACEE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,CAC5DA,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,0BAA0B,EAC1B,MAAM,CAAC,GAAG,EACV,UAAU,GAAG,oBAAoB,GAAG,gBAAgB,CACrD,EACD,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,aAAa,EACxB,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAC,OAAO,EAAA,cAAA,EACE,SAAS,EAAA,eAAA,EACR,UAAU,EACzB,QAAQ,EAAE,UAAU,GAAG,EAAE,GAAG,CAAC,EAAA,QAAA,EAAA,CAE7BN,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,UAAU,EAAA,GAChB,KAAK,EAAA,CACT,EAEFM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,aAE3C,UAAU,KACTN,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4GAA4G,EAC5G,eAAe,KAAK;AAClB,sCAAE;AACF,sCAAE,iCAAiC,CACtC,EACD,KAAK,EAAE;AACL,oCAAA,SAAS,EAAE,gCAAgC;iCAC5C,EAAA,CACD,CACH,EAEDA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,aAAa,CAAC;oCACZ,IAAI;oCACJ,eAAe;oCACf,SAAS;oCACT,UAAU;oCACV,SAAS;AACV,iCAAA,CAAC,EACF,SAAS,CACV,EAAA,QAAA,EAGA,SAAS,KACRA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAC,sCAAsC,EAChD,KAAK,EAAE;AACL,wCAAA,KAAK,EAAE,CAAA,EAAG,MAAM,CAAC,eAAe,CAAA,EAAA,CAAI;AACpC,wCAAA,MAAM,EAAE,CAAA,EAAG,MAAM,CAAC,eAAe,CAAA,EAAA,CAAI;AACtC,qCAAA,EAAA,CACD,CACH,EAAA,CACG,CAAA,EAAA,CACF,EAEL,KAAK,KACJA,cAAA,CAAA,OAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,SAAS,EAChB,sCAAsC,EACtC;AACE,8BAAE;AACF,8BAAE,iCAAiC,EACrC,cAAc,CACf,YAEA,KAAK,EAAA,CACA,CACT,CAAA,EAAA,CACG,EAGL,eAAe,KACdA,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,SAAS,EACrB,eAAe,EAAC,UAAU,EAC1B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EAAA,CACtB,CACH,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,KAAK,CAAC,WAAW,GAAG,OAAO;;ACpL3B,MAAM,UAAU,GAAGI,gBAAK,CAAC,UAAU,CACjC,CACE,EACE,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,IAAI,GAAG,QAAQ,EACf,IAAI,EAAE,QAAQ,EACd,WAAW,GAAG,UAAU,EACxB,OAAO,GAAG,QAAQ,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,SAAS,EACT,EAAE,EACF,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE9D,YAAY,CAAC;AACf,IAAA,MAAM,OAAO,GAAGA,gBAAK,CAAC,KAAK,EAAE;AAC7B,IAAA,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAA,YAAA,EAAe,OAAO,EAAE;IACjD,MAAM,QAAQ,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IACnD,MAAM,SAAS,GAAGA,gBAAK,CAAC,MAAM,CAA8B,EAAE,CAAC;AAE/D,IAAA,MAAM,KAAK,GACT,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,iBAAiB;;AAGrE,IAAA,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU;IAChE,MAAM,sBAAsB,GAAG,SAAS,GAAG,OAAO,GAAG,eAAe;AAEpE,IAAA,MAAM,YAAY,GAAG,CAAC,WAAmB,KAAI;QAC3C,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,WAAW,CAAC;QACvB;aAAO;YACL,oBAAoB,CAAC,WAAW,CAAC;QACnC;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,aAAa,GAAG,CAAC,CAAsC,KAAI;AAC/D,QAAA,IAAI,UAAU;YAAE;AAEhB,QAAA,MAAM,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAC9C,CAAC,GAAG,KAAK,GAAG,KAAK,QAAQ,CAAC,aAAa,CACxC;QAED,IAAI,YAAY,KAAK,EAAE;YAAE;AAEzB,QAAA,MAAM,SAAS,GACb,WAAW,KAAK;AACd,cAAE,CAAC,CAAC,GAAG,KAAK;AACV,kBAAE;AACF,kBAAE,CAAC,CAAC,GAAG,KAAK;sBACV;AACF,sBAAE;AACJ,cAAE,CAAC,CAAC,GAAG,KAAK;AACZ,kBAAE;AACF,kBAAE,CAAC,CAAC,GAAG,KAAK;sBACV;sBACA,CAAC;QAEP,IAAI,SAAS,KAAK,CAAC;YAAE;QAErB,CAAC,CAAC,cAAc,EAAE;;QAGlB,IAAI,SAAS,GAAG,YAAY;AAC5B,QAAA,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM;QACtC,IAAI,QAAQ,GAAG,CAAC;AAEhB,QAAA,OAAO,QAAQ,GAAG,KAAK,EAAE;YACvB,SAAS,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,KAAK,IAAI,KAAK;YACnD,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC;AAE9C,YAAA,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;gBACpC,SAAS,CAAC,KAAK,EAAE;gBACjB,SAAS,CAAC,KAAK,EAAE;gBACjB;YACF;AAEA,YAAA,QAAQ,EAAE;QACZ;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,aAAa,GAAG;QACpB,KAAK,EAAE,WAAW,KAAK,YAAY,GAAG,OAAO,GAAG,OAAO;QACvD,MAAM,EAAE,WAAW,KAAK,YAAY,GAAG,OAAO,GAAG,OAAO;QACxD,KAAK,EAAE,WAAW,KAAK,YAAY,GAAG,OAAO,GAAG,OAAO;KACxD;;AAGD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;KACF;;IAGD,MAAM,aAAa,GAAG,MAAK;AACzB,QAAA,IAAI,CAAC,OAAO;AAAE,YAAA,OAAO,IAAI;QAEzB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACnC,YAAA,MAAM,SAAS,GAAG,KAAK,KAAK,MAAM,CAAC,KAAK;AACxC,YAAA,MAAM,cAAc,GAAG,UAAU,IAAI,MAAM,CAAC,UAAU;YAEtD,QACEJ,eAAC,KAAK,EAAA,EAEJ,GAAG,EAAE,CAAC,EAAE,KAAI;AACV,oBAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC/B,CAAC,EACD,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,KAAK,EAAE,MAAM,CAAC,KAAK,EACnB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,CAAC,CAAC,KAAI;AACd,oBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;AACpB,wBAAA,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC5B;AACF,gBAAA,CAAC,EACD,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,sBAAsB,EACvC,UAAU,EAAE,cAAc,EAC1B,aAAa,EAAE,KAAK,EACpB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAC7C,cAAc,EAAE,MAAM,CAAC,cAAc,IAlBhC,MAAM,CAAC,KAAK,CAmBjB;AAEN,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;;IAGD,MAAM,cAAc,GAAG,MAAK;AAC1B,QAAA,IAAI,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI;AAE1B,QAAA,OAAOI,gBAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAI;YACnD,IAAI,CAACA,gBAAK,CAAC,cAAc,CAAa,KAAK,CAAC,EAAE;AAC5C,gBAAA,OAAO,KAAK;YACd;AAEA,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK;AACpC,YAAA,MAAM,SAAS,GAAG,KAAK,KAAK,UAAU;YACtC,MAAM,aAAa,GAAG,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU;AAE1D,YAAA,OAAOA,gBAAK,CAAC,YAAY,CAAC,KAAK,EAAE;gBAC/B,GAAG,KAAK,CAAC,KAAK;AACd,gBAAA,GAAG,EAAE,CAAC,EAA2B,KAAI;AACnC,oBAAA,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBAC/B,CAAC;gBACD,IAAI;AACJ,gBAAA,OAAO,EAAE,SAAS;AAClB,gBAAA,QAAQ,EAAE,CAAC,CAAsC,KAAI;AACnD,oBAAA,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;AACpB,wBAAA,YAAY,CACV,OAAO,UAAU,KAAK;AACpB,8BAAE;8BACA,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAC7B;oBACH;;AAEA,oBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;AACxB,wBAAA,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACzB;gBACF,CAAC;AACD,gBAAA,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI;AAC9B,gBAAA,eAAe,EACb,KAAK,CAAC,KAAK,CAAC,eAAe,IAAI,sBAAsB;AACvD,gBAAA,UAAU,EAAE,aAAa;AACzB,gBAAA,aAAa,EAAE,KAAK;AACE,aAAA,CAAC;AAC3B,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC;IAED,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EACpB,kBAAkB,CACnB,EAAA,GACG,KAAK,EAAA,QAAA,EAAA,CAER,KAAK,KACJN,cAAA,CAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,EAAE,EACX,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,EAAA,CAC9B,CACH,EAEDA,wBACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,YAAY,EAAA,YAAA,EACL,KAAK,EAAA,eAAA,EACF,UAAU,EAAA,cAAA,EACX,sBAAsB,KAAK,OAAO,EAAA,eAAA,EACjC,UAAU,EACzB,SAAS,EAAE,EAAE,CACX,MAAM,EACN,WAAW,KAAK;AACd,sBAAE;sBACA,sBAAsB,EAC1B,aAAa,CAAC,OAAO,CAAC,EACtB,cAAc,EACd,SAAS,CACV,EACD,SAAS,EAAE,aAAa,EACxB,EAAE,EAAE,EAAE,EAAA,QAAA,EAEL,OAAO,GAAG,aAAa,EAAE,GAAG,cAAc,EAAE,EAAA,CACzC,EAENA,eAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;sBACA,sBAAsB,KAAK;AAC7B,0BAAE;AACF,0BAAE,SAAS,EAEf,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,CAAA,EAAA,CACE;AAEV,CAAC;AAGH,UAAU,CAAC,WAAW,GAAG,YAAY;;AClZrC,MAAM,iBAAiB,GAAGG,0BAAG,CAC3B,gHAAgH,EAChH;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,6BAA6B;AACpC,YAAA,MAAM,EAAE,6BAA6B;AACrC,YAAA,KAAK,EAAE,+BAA+B;AACvC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE;;;;;AAKkC,+CAAA,CAAA;AACxC,YAAA,QAAQ,EAAE;;;;AAIiC,kDAAA,CAAA;AAC3C,YAAA,QAAQ,EAAE,CAAA;;;AAGiC,kDAAA,CAAA;AAC5C,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE;;;;AAIwD,qEAAA,CAAA;AAC9D,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AA8BH,MAAM,SAAS,GAAGC,gBAAK,CAAC,UAAU,CAChC,CACE,EACE,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,SAAS,GAAG,KAAK,EACjB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,MAAM,EACN,MAAM,EACN,eAAe,GAAG,KAAK,EACvB,eAAe,EACf,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,OAAO,EACP,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,IAAA,MAAM,UAAU,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,aAAa;AAC9D,IAAA,MAAM,QAAQ,GAAG,UAAU,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC;AAE5D,IAAA,MAAM,YAAY,GAAG,CAAC,CAAsC,KAAI;QAC9D,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;aAAO;AACL,YAAA,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAClC;AACF,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,EAAE;QACX;aAAO;YACL,gBAAgB,CAAC,EAAE,CAAC;QACtB;;AAEA,QAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;QACrD,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,KAAK,EAAE;QACf;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU;IAChE,MAAM,sBAAsB,GAAG;AAC7B,UAAE;AACF,UAAE;AACF,cAAE;cACA,eAAe;AAEnB,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;KACF;AAED,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EACpB,kBAAkB,CACnB,aAEA,KAAK,KACJN,cAAA,CAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,EAAA,CAC9B,CACH,EAEDM,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC;oBAChB,IAAI;AACJ,oBAAA,eAAe,EAAE,sBAAsB;oBACvC,UAAU;AACX,iBAAA,CAAC,EACF,SAAS,IAAI,oBAAoB,EACjC,SAAS,CACV,EAAA,QAAA,EAAA,CAEA,MAAM,KACLN,yBACE,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;sCACA,gCAAgC,CACrC,EAAA,QAAA,EAEA,MAAM,EAAA,CACF,CACR,EAEDA,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,kMAAkM,EAClM,cAAc,CACf,EAAA,GACG,KAAK,EAAA,CACT,EAED,eAAe,IAAI,QAAQ,IAAI,CAAC,UAAU,KACzCA,cAAA,CAAA,QAAA,EAAA,EACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,WAAW,EACpB,SAAS,EAAC,kIAAkI,EAC5I,QAAQ,EAAE,EAAE,EAAA,QAAA,EAEZA,cAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAC,4BAA4B,EAAA,QAAA,EAElCA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,sBAAsB,EACxB,MAAM,EAAC,cAAc,EACrB,WAAW,EAAC,KAAK,EACjB,aAAa,EAAC,OAAO,EAAA,CACrB,EAAA,CACE,EAAA,CACC,CACV,EAEA,MAAM,KACLA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,4BAA4B,EAC5B;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;sCACA,gCAAgC,CACrC,EAAA,QAAA,EAEA,MAAM,EAAA,CACF,CACR,IACG,EAENA,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;AACF,sBAAE,sBAAsB,EAE5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,CAAA,EAAA,CACE;AAEV,CAAC;AAGH,SAAS,CAAC,WAAW,GAAG,WAAW;;ACzInC,MAAM,aAAa,GAAG,CACpB,IAA4B,EAC5B,KAAa,KACF;AACX,IAAA,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,EAAE;IACxC,QACE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;AAChD,SAAC,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;AAErE,CAAC;AAEM,MAAM,kBAAkB,GAAGI,gBAAK,CAAC,UAAU,CAIhD,CACE,EACE,SAAS,EACT,KAAK,GAAG,EAAE,EACV,cAAc,EACd,SAAS,GAAG,KAAK,EACjB,UAAU,GAAG,yBAAyB,EACtC,gBAAgB,GAAG,uDAAuD,EAC1E,aAAa,GAAG,sBAAsB,EACtC,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,aAAa,GAAG,MAAM,EACtB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,aAAa,GAAG,KAAK,EACrB,YAAY,GAAG,YAAY,EAC3B,cAAc,EACd,YAAY,EACZ,cAAc,GAAG,aAAa,EAC9B,WAAW,EAAE,qBAAqB,EAClC,kBAAkB,GAAG,EAAE,EACvB,iBAAiB,EACjB,eAAe,GAAG,CAAC,EACnB,WAAW,GAAG,IAAI,EAClB,UAAU,GAAG,KAAK,EAClB,wBAAwB,GAAG,IAAI,EAC/B,QAAQ,EACR,kBAAkB,EAClB,KAAK,EAAE,eAAe,EACtB,YAAY,EACZ,QAAQ,EACR,GAAG,cAAc,EAClB,EACD,GAAG,KACD;;IAEF,MAAM,gBAAgB,GAAGA,gBAAK,CAAC,WAAW,CACxC,CACE,GAAgC,KACM;AACtC,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE;AAAE,YAAA,OAAO,SAAS;AACrD,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;AACjD,IAAA,CAAC,EACD,CAAC,KAAK,CAAC,CACR;;AAGD,IAAA,MAAM,YAAY,GAChB,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,YAAY;AAChE,IAAA,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,YAAY,CAAC;IAC1D,MAAM,kBAAkB,GAAG;UACvB,mBAAmB,CAAC;UACpB,kBAAkB;AAEtB,IAAA,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GACzDA,gBAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;AACpC,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE9D,YAAY,CAAC;AACf,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACjD,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1D,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC/D,MAAM,WAAW,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IACtD,MAAM,QAAQ,GAAGA,gBAAK,CAAC,MAAM,CAAmB,IAAI,CAAC;IACrD,MAAM,OAAO,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IAClD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC;AAC7C,QAAA,GAAG,EAAE,CAAC;AACN,QAAA,IAAI,EAAE,CAAC;AACP,QAAA,KAAK,EAAE,CAAC;AACT,KAAA,CAAC;AAEF,IAAAA,gBAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,OAAQ,CAAC;;AAGvD,IAAA,MAAM,KAAK,GACT,eAAe,KAAK,SAAS,GAAG,eAAe,GAAG,iBAAiB;;AAGrE,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC;QAC5C,IAAI,YAAY,EAAE;AAChB,YAAA,MAAM,cAAc,GAAG,YAAY,CAAC,KAAK;AACzC,YAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;gBACvC,0BAA0B,CAAC,cAAc,CAAC;YAC5C;;;YAGA,IACE,qBAAqB,KAAK,SAAS;gBACnC,qBAAqB,KAAK,cAAc,EACxC;AACA,gBAAA,cAAc,GAAG,cAAc,CAAC;YAClC;QACF;aAAO,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE;;AAE9C,YAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;gBACvC,0BAA0B,CAAC,EAAE,CAAC;YAChC;iBAAO;AACL,gBAAA,cAAc,GAAG,EAAE,CAAC;YACtB;QACF;IACF,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,cAAc,CAAC,CAAC;;AAGpE,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE;AACjC,YAAA,IAAI,OAAO,GAAuB,WAAW,CAAC,OAAO;YACrD,IAAI,UAAU,GAAG,KAAK;AACtB,YAAA,OAAO,OAAO,IAAI,CAAC,UAAU,EAAE;gBAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;gBAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;;AAE1C,gBAAA,IAAI,MAAM,KAAK,KAAK,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE;oBACjE,UAAU,GAAG,IAAI;oBACjB,gBAAgB,CAAC,IAAI,CAAC;oBACtB;gBACF;AACA,gBAAA,OAAO,GAAG,OAAO,CAAC,aAAa;YACjC;YACA,IAAI,CAAC,UAAU,EAAE;gBACf,gBAAgB,CAAC,KAAK,CAAC;YACzB;QACF;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,IAAI,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE;YACjC,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,qBAAqB,EAAE;AACxD,YAAA,WAAW,CAAC;AACV,gBAAA,GAAG,EAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO;AACjC,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,aAAA,CAAC;QACJ;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AAEZ,IAAA,MAAM,WAAW,GACf,qBAAqB,KAAK;AACxB,UAAE;UACA,uBAAuB;AAE7B,IAAA,MAAM,kBAAkB,GAAG,CAAC,CAAsC,KAAI;AACpE,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;AAC/B,QAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;YACvC,0BAA0B,CAAC,QAAQ,CAAC;QACtC;AACA,QAAA,cAAc,GAAG,QAAQ,CAAC;;;AAI1B,QAAA,MAAM,YAAY,GAAG,gBAAgB,CAAC,KAAK,CAAC;QAC5C,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE;AACnD,YAAA,IAAI,eAAe,KAAK,SAAS,EAAE;gBACjC,oBAAoB,CAAC,SAAS,CAAC;YACjC;AACA,YAAA,QAAQ,GAAG,SAAS,EAAE,SAAS,CAAC;QAClC;;AAGA,QAAA,IAAI,QAAQ,CAAC,MAAM,IAAI,eAAe,EAAE;YACtC,SAAS,CAAC,IAAI,CAAC;QACjB;aAAO;YACL,SAAS,CAAC,KAAK,CAAC;QAClB;AACF,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;QACvB,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,IAAI,eAAe,EAAE;YACxD,SAAS,CAAC,IAAI,CAAC;QACjB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CAAC,IAA4B,KAAI;AACxD,QAAA,YAAY,GAAG,IAAI,CAAC;;AAGpB,QAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;AACvC,YAAA,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;QACxC;aAAO;AACL,YAAA,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9B;;AAGA,QAAA,IAAI,eAAe,KAAK,SAAS,EAAE;AACjC,YAAA,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC;;QAGA,QAAQ,GAAG,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;QAE5B,SAAS,CAAC,KAAK,CAAC;AAChB,QAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;AAC3B,IAAA,CAAC;;AAGD,IAAA,MAAM,aAAa,GAAGA,gBAAK,CAAC,OAAO,CAAC,MAAK;AACvC,QAAA,IAAI,CAAC,WAAW;AAAE,YAAA,OAAO,KAAK;AAC9B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAClE,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;;AAGxC,IAAA,MAAM,eAAe,GAAGA,gBAAK,CAAC,OAAO,CAAC,MAAK;AACzC,QAAA,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,EAAE;AAC/B,YAAA,OAAO,aAAa;QACtB;AAEA,QAAA,MAAM,UAAU,GAA2B;AACzC,YAAA,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,CAAA,OAAA,EAAU,WAAW,CAAA,CAAA,CAAG;AAC/B,YAAA,OAAO,EAAE,SAAS;YAClB,OAAO,EAAE,MAAK;gBACZ,IAAI,QAAQ,EAAE;oBACZ,QAAQ,CAAC,WAAW,CAAC;;oBAErB,SAAS,CAAC,KAAK,CAAC;AAChB,oBAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;gBAC3B;qBAAO;;AAEL,oBAAA,MAAM,OAAO,GAA2B;AACtC,wBAAA,KAAK,EAAE,WAAW;AAClB,wBAAA,KAAK,EAAE,WAAW;qBACnB;;oBAED,gBAAgB,CAAC,OAAO,CAAC;gBAC3B;YACF,CAAC;SACF;;;QAID,IAAI,wBAAwB,EAAE;AAC5B,YAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,gBAAA,OAAO,aAAa;YACtB;YACA,OAAO,CAAC,UAAU,CAAC;QACrB;aAAO;;AAEL,YAAA,OAAO,CAAC,UAAU,EAAE,GAAG,aAAa,CAAC;QACvC;AACF,IAAA,CAAC,EAAE;QACD,UAAU;QACV,wBAAwB;QACxB,WAAW;QACX,aAAa;QACb,YAAY;QACZ,QAAQ;QACR,qBAAqB;AACtB,KAAA,CAAC;;AAGF,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,eAAe,CAAC,EAAE,CAAC;AACrB,IAAA,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;AAG5B,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;YAC/C,IACE,WAAW,CAAC,OAAO;gBACnB,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;AACnD,gBAAA,OAAO,CAAC,OAAO;gBACf,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAC/C;gBACA,SAAS,CAAC,KAAK,CAAC;YAClB;AACF,QAAA,CAAC;QAED,IAAI,MAAM,EAAE;AACV,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/D,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;;AAGZ,IAAA,MAAM,aAAa,GAAG,CAAC,CAAwC,KAAI;QACjE,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,CAAC,GAAG,KAAK,WAAW,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,EAAE;gBAC9C,SAAS,CAAC,IAAI,CAAC;gBACf,CAAC,CAAC,cAAc,EAAE;YACpB;YACA;QACF;AAEA,QAAA,QAAQ,CAAC,CAAC,GAAG;AACX,YAAA,KAAK,WAAW;gBACd,CAAC,CAAC,cAAc,EAAE;gBAClB,eAAe,CAAC,CAAC,IAAI,KACnB,IAAI,GAAG,eAAe,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CACpD;gBACD;AACF,YAAA,KAAK,SAAS;gBACZ,CAAC,CAAC,cAAc,EAAE;gBAClB,eAAe,CAAC,CAAC,IAAI,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;gBACrD;AACF,YAAA,KAAK,OAAO;gBACV,CAAC,CAAC,cAAc,EAAE;gBAClB,IAAI,YAAY,IAAI,CAAC,IAAI,eAAe,CAAC,YAAY,CAAC,EAAE;AACtD,oBAAA,gBAAgB,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;gBACjD;gBACA;AACF,YAAA,KAAK,QAAQ;gBACX,CAAC,CAAC,cAAc,EAAE;gBAClB,SAAS,CAAC,KAAK,CAAC;AAChB,gBAAA,eAAe,CAAC,EAAE,CAAC;gBACnB;;AAEN,IAAA,CAAC;;;IAID,MAAM,iBAAiB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;;AAErD,QAAA,MAAM,YAAY,GAAG,UAAU,IAAI,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;QAElE,OAAO;AACL,YAAA,GAAG,IAAI;YACP,OAAO,EAAE,MAAK;;AAEZ,gBAAA,IAAI,CAAC,OAAO,IAAI;;;gBAGhB,IAAI,CAAC,YAAY,EAAE;oBACjB,gBAAgB,CAAC,IAAI,CAAC;gBACxB;YACF,CAAC;SACF;AACH,IAAA,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,MAAM,IAAI,WAAW,CAAC,MAAM,IAAI,eAAe;IAEpE,MAAM,YAAY,GAAG,YAAY,KAC/BJ,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE;AACL,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,GAAG,EAAE,CAAA,EAAG,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAA,EAAA,CAAI;AAC5B,YAAA,IAAI,EAAE,CAAA,EAAG,QAAQ,CAAC,IAAI,CAAA,EAAA,CAAI;AAC1B,YAAA,KAAK,EAAE,aAAa,KAAK,MAAM,GAAG,CAAA,EAAG,QAAQ,CAAC,KAAK,CAAA,EAAA,CAAI,GAAG,MAAM;YAChE,MAAM,EAAE,aAAa,GAAG,KAAK,GAAG,IAAI;AACrC,SAAA,EAAA,QAAA,EAEDA,eAAC,YAAY,EAAA,EACX,KAAK,EAAE,iBAAiB,EACxB,cAAc,EAAE,cAAc,EAC9B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,UAAU,EACpD,UAAU,EAAE,UAAU,EACtB,gBAAgB,EAAE,gBAAgB,EAClC,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,gBAAgB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,mBAAmB,EAAE,mBAAmB,EACxC,cAAc,EAAE,cAAc,EAC9B,gBAAgB,EAAE,gBAAgB,EAClC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,UAAU,EACR,CAAC,iBAAiB,IAAI,mBAAmB,KAAK,CAAC;AAC7C,kBAAE;AACF,kBAAE,KAAK,EAEX,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,SAAS,CAAC,KAAK,CAAC,EAC/B,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,iBAAiB,EAC5B,KAAK,EAAE,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,EAAA,CACjD,EAAA,CACE,CACP;IAED,QACEM,kDACEN,cAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAClEA,cAAA,CAAC,SAAS,IACR,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAC,MAAM,EAAA,GACrB,cAAc,EAAA,CAClB,GACE,EAGL,OAAO,QAAQ,KAAK,WAAW;gBAC9B,YAAY;gBACZa,qBAAY,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA,EAAA,CAC1C;AAEP,CAAC;AAGH,kBAAkB,CAAC,WAAW,GAAG,oBAAoB;;ACriBrD,MAAM,eAAe,GAGjB;IACF,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;IACvD,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;IACvD,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE;IACxD,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,4BAA4B,EAAE;CAChE;AAED,MAAM,iBAAiB,GAAoC;AACzD,IAAA,IAAI,EAAE,cAAc;AACpB,IAAA,KAAK,EAAE,eAAe;AACtB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,KAAK,EAAE,eAAe;AACtB,IAAA,IAAI,EAAE,cAAc;CACrB;AAED,MAAM,mBAAmB,GAAkD;AACzE,IAAA,KAAK,EAAE,kBAAkB;AACzB,IAAA,IAAI,EAAE,SAAS;CAChB;AAED,MAAM,iBAAiB,GAAG,CAAC,KAAuB,KAAwB;IACxE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE;AACzC,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK;AACzD,CAAC;AAED,MAAM,aAAa,GAAG,CACpB,KAAa,EACb,QAAiC,KACJ;AAC7B,IAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC/B,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAC5C,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CACpE;IACH;AAEA,IAAA,IAAI,KAAK,KAAK,CAAC,EAAE;QACf,OAAO,CAAC,MAAM,CAAC;IACjB;AAEA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAC5C,KAAK,KAAK,KAAK,GAAG,CAAC,GAAG,KAAK,GAAG,MAAM,CACrC;AACH,CAAC;AA8CD,MAAM,QAAQ,GAAGT,gBAAK,CAAC,UAAU,CAC/B,CACE,EACE,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,OAAO,GAAG,MAAM,EAChB,SAAS,GAAG,OAAO,EACnB,KAAK,GAAG,CAAC,EACT,UAAU,EACV,OAAO,GAAG,QAAQ,EAClB,KAAK,EACL,MAAM,EACN,OAAO,GAAG,OAAO,EACjB,KAAK,EACL,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC;AACxC,IAAA,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC;AAE5C,IAAA,MAAM,cAAc,GAClB,iBAAiB,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,WAAW,CAAC,MAAM,CAAC;AACpE,IAAA,MAAM,aAAa,GACjB,iBAAiB,CAAC,KAAK,CAAC;AACxB,SAAC,OAAO,KAAK,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;IAErD,MAAM,eAAe,GAAG,EAAE,CACxB,sCAAsC,EACtC,mBAAmB,CAAC,SAAS,CAAC,EAC9B,OAAO,KAAK,QAAQ,IAAI,iBAAiB,CAAC,OAAO,CAAC,EAClD,WAAW,CAAC,SAAS,EACrB,SAAS,CACV;AAED,IAAA,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,OAAO,KAAK,aAAa,GAAG,CAAC,EAAE;QACpE,MAAM,MAAM,GAAG,aAAa,CAAC,aAAa,EAAE,UAAU,CAAC;AAEvD,QAAA,QACEJ,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,kBAAkB,EAClB,SAAS,KAAK,OAAO,GAAG,cAAc,GAAG,SAAS,CACnD,EACD,KAAK,EAAE;AACL,gBAAA,GAAG,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,QAAQ;AAC3C,gBAAA,GAAG,cAAc;aAClB,EAAA,WAAA,EACS,QAAQ,EAAA,WAAA,EACR,MAAM,EAAA,GACZ,KAAK,YAER,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,MAC3BA,cAAA,CAAA,MAAA,EAAA,EAEE,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE;AACL,oBAAA,MAAM,EAAE,cAAc;AACtB,oBAAA,KAAK,EAAE,SAAS,IAAI,aAAa,IAAI,MAAM;AAC3C,oBAAA,GAAG,KAAK;iBACT,EAAA,aAAA,EACW,MAAM,EAAA,EAPb,CAAA,cAAA,EAAiB,KAAK,CAAA,CAAE,CAQ7B,CACH,CAAC,EAAA,CACE;IAEV;IAEA,QACEA,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,eAAe,EAC1B,KAAK,EAAE;AACL,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,KAAK,EAAE,aAAa,IAAI,KAAK,EAAE,KAAK;AACpC,YAAA,GAAG,KAAK;AACT,SAAA,EAAA,WAAA,EACS,QAAQ,EAAA,WAAA,EACR,MAAM,KACZ,KAAK,EAAA,CACT;AAEN,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;AC3GjC,MAAM,qBAAqB,GAAGG,0BAAG,CAC/B,kFAAkF,EAClF;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,cAAc;AACrB,YAAA,MAAM,EAAE,cAAc;AACtB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,EAAE;AACb,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;MAGU,eAAe,GAAGC,gBAAK,CAAC,UAAU,CAI7C,CACE,EACE,SAAS,EAAE,mBAAmB,EAC9B,gBAAgB,EAChB,YAAY,EACZ,aAAa,GAAG,EAAE,EAClB,WAAW,EAAE,qBAAqB,EAClC,kBAAkB,EAClB,cAAc,EACd,iBAAiB,GAAG,QAAQ,EAC5B,sBAAsB,EACtB,mBAAmB,EACnB,eAAe,GAAG,MAAM,EACxB,oBAAoB,EACpB,gBAAgB,GAAG,sBAAsB,EACzC,sBAAsB,GAAG,sCAAsC,EAC/D,eAAe,EACf,QAAQ,GAAG,QAAQ,EACnB,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,IAAI,GAAG,QAAQ,EACf,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,SAAS,EACT,GAAG,cAAc,EAClB,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CACtE,gBAAgB,IAAI,EAAE,CACvB;AACD,IAAA,MAAM,CAAC,uBAAuB,EAAE,0BAA0B,CAAC,GACzDA,gBAAK,CAAC,QAAQ,CAA8B,kBAAkB,CAAC;AACjE,IAAA,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC7D,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAE9D,QAAQ,CAAC;IACX,MAAM,SAAS,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IACpD,MAAM,oBAAoB,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;IAC/D,MAAM,YAAY,GAAGA,gBAAK,CAAC,MAAM,CAAiB,IAAI,CAAC;AAEvD,IAAA,MAAM,SAAS,GACb,mBAAmB,KAAK;AACtB,UAAE;UACA,qBAAqB;AAC3B,IAAA,MAAM,WAAW,GACf,qBAAqB,KAAK;AACxB,UAAE;UACA,uBAAuB;;AAG7B,IAAA,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,CACvC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,KAAK,WAAW,CACnC;;AAGD,IAAA,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU;IAChE,MAAM,sBAAsB,GAAG;AAC7B,UAAE;AACF,UAAE;AACF,cAAE;cACA,eAAe;AAEnB,IAAA,MAAM,gBAAgB,GAAG,CAAC,CAAsC,KAAI;AAClE,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;QAC/B,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,QAAQ,CAAC;QACxB;aAAO;YACL,wBAAwB,CAAC,QAAQ,CAAC;QACpC;AACF,IAAA,CAAC;AAED,IAAA,MAAM,sBAAsB,GAAG,CAAC,OAAgB,KAAI;QAClD,IAAI,CAAC,UAAU,EAAE;YACf,eAAe,CAAC,OAAO,CAAC;QAC1B;AACF,IAAA,CAAC;IAED,MAAM,gBAAgB,GAAG,MAAK;AAC5B,QAAA,sBAAsB,CAAC,CAAC,YAAY,CAAC;AACvC,IAAA,CAAC;AAED,IAAA,MAAM,YAAY,GAAG,CAAC,MAAoB,KAAI;AAC5C,QAAA,IAAI,qBAAqB,KAAK,SAAS,EAAE;AACvC,YAAA,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC;QAC1C;QACA,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC;QACtC,eAAe,CAAC,KAAK,CAAC;AACxB,IAAA,CAAC;AAED,IAAA,MAAM,uBAAuB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;QACrD,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO;AACjC,QAAA,IAAI,CAAC,OAAO;YAAE;AAEd,QAAA,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE;QACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM;AAC1D,QAAA,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG;AAElC,QAAA,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC1C,cAAE,oBAAoB,CAAC,OAAO,CAAC;cAC7B,CAAC;AAEL,QAAA,IAAI,cAAc,KAAK,CAAC,EAAE;AACxB,YAAA,oBAAoB,CAAC,UAAU,IAAI,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;YACjE;QACF;QAEA,IAAI,UAAU,IAAI,cAAc,IAAI,UAAU,IAAI,UAAU,EAAE;YAC5D,oBAAoB,CAAC,QAAQ,CAAC;QAChC;aAAO;YACL,oBAAoB,CAAC,KAAK,CAAC;QAC7B;IACF,CAAC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,uBAAuB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;AACrD,QAAA,IAAI,CAAC,YAAY;YAAE;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE;AACnC,QAAA,IAAI,KAAK,GAAG,qBAAqB,CAAC,uBAAuB,CAAC;AAE1D,QAAA,MAAM,YAAY,GAAG,MAAM,uBAAuB,EAAE;AACpD,QAAA,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC;QAC/C,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAErD,QAAA,OAAO,MAAK;YACV,oBAAoB,CAAC,KAAK,CAAC;AAC3B,YAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,CAAC;YAClD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAC1D,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC;AAE3C,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,MAAM,GAAG,uBAAuB,EAAE;AACxC,QAAA,OAAO,MAAK;YACV,MAAM,IAAI;AACZ,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,uBAAuB,CAAC,CAAC;AAE7B,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,YAAY,EAAE;AAChB,YAAA,uBAAuB,EAAE;QAC3B;IACF,CAAC,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;;AAGjE,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,kBAAkB,GAAG,CAAC,KAAiB,KAAI;AAC/C,YAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAc;YACnC,IACE,SAAS,CAAC,OAAO;AACjB,gBAAA,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;AACnC,gBAAA,oBAAoB,CAAC,OAAO;gBAC5B,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,EAC9C;gBACA,sBAAsB,CAAC,KAAK,CAAC;YAC/B;AACF,QAAA,CAAC;QAED,IAAI,YAAY,EAAE;AAChB,YAAA,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC1D,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,CAAC;AAC/D,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;;AAGlB,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,MAAM,YAAY,GAAG,CAAC,KAAoB,KAAI;AAC5C,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;gBAC1B,sBAAsB,CAAC,KAAK,CAAC;YAC/B;AACF,QAAA,CAAC;QAED,IAAI,YAAY,EAAE;AAChB,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC;AAClD,YAAA,OAAO,MAAK;AACV,gBAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,YAAY,CAAC;AACvD,YAAA,CAAC;QACH;AACF,IAAA,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;;IAGlB,MAAM,SAAS,GAAuB,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,MAAM;QACnE,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;AACvB,QAAA,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC;AACpC,KAAA,CAAC,CAAC;AAEH,IAAA,MAAM,UAAU,GACd,eAAe,KAAK;AAClB,UAAE;UACA,eAAe,KAAK;AACtB,cAAE;cACA,eAAe;AAErB,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;KACF;;IAGD,MAAM,eAAe,IACnBE,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,oCAAoC,CAAC,aACtDA,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,SAAS,EACd,SAAS,EAAE,EAAE,CACX,qBAAqB,CAAC;oBACpB,IAAI;AACJ,oBAAA,eAAe,EAAE,sBAAsB;oBACvC,UAAU;AACX,iBAAA,CAAC,EACF,uCAAuC,EACvC,QAAQ,KAAK;AACX,sBAAE;AACF,sBAAE,8CAA8C,EAClD,sBAAsB,EACtB,QAAQ,KAAK,QAAQ,GAAG,MAAM,GAAG,MAAM,CACxC,EACD,OAAO,EAAE,CAAC,UAAU,GAAG,gBAAgB,GAAG,SAAS,EACnD,IAAI,EAAC,UAAU,EAAA,eAAA,EACD,SAAS,EAAA,eAAA,EACR,YAAY,EAAA,eAAA,EACZ,UAAU,aAEzBN,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,oDAAoD,EACpD,CAAC,cAAc,IAAI,gCAAgC,EACnD,UAAU,IAAI,mCAAmC,CAClD,EAAA,QAAA,EAEA,cAAc,EAAE,KAAK,IAAI,iBAAiB,EAAA,CACtC,EACPA,eAACgB,uBAAW,EAAA,EACV,SAAS,EAAE,EAAE,CACX,+BAA+B,EAC/B,IAAI,KAAK;AACP,8BAAE;8BACA,IAAI,KAAK;AACX,kCAAE;kCACA,SAAS,EACb;AACE,8BAAE;8BACA,sBAAsB,KAAK;AAC7B,kCAAE;kCACA,sBAAsB,KAAK;AAC7B,sCAAE;AACF,sCAAE,gCAAgC,EACpC,YAAY,IAAI,sBAAsB,CACvC,EAAA,CACD,CAAA,EAAA,CACE,EAGL,YAAY,IAAI,CAAC,UAAU,KAC1BhB,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,oBAAoB,EACzB,SAAS,EAAE,EAAE,CACX,eAAe,EACf,QAAQ,KAAK,QAAQ,GAAG,cAAc,GAAG,eAAe,EACxD,iBAAiB,KAAK;AACpB,sBAAE;AACF,sBAAE,kBAAkB,CACvB,EAAA,QAAA,EAEDA,cAAA,CAAC,YAAY,EAAA,EACX,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,oBAAoB,EACpC,OAAO,EAAE,aAAa,CAAC,MAAM,KAAK,CAAC,EACnC,UAAU,EAAE,gBAAgB,EAC5B,gBAAgB,EAAE,sBAAsB,EACxC,SAAS,EAAE,eAAe,EAC1B,aAAa,EAAE,IAAI,EACnB,OAAO,EAAE,MAAM,sBAAsB,CAAC,KAAK,CAAC,EAC5C,SAAS,EAAE,mBAAmB,EAC9B,KAAK,EAAE,UAAU,EAAA,CACjB,EAAA,CACE,CACP,CAAA,EAAA,CACG,CACP;IAED,QACEM,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EACpB,kBAAkB,CACnB,EAAA,QAAA,EAAA,CAEA,KAAK,KACJN,cAAA,CAAC,UAAU,IACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,cAAc,CAAC,WAAW,EACvC,eAAe,EAAE,cAAc,CAAC,eAAe,EAC/C,aAAa,EAAE,cAAc,CAAC,aAAa,EAC3C,QAAQ,EAAE,cAAc,CAAC,QAAQ,EACjC,QAAQ,EAAE,cAAc,CAAC,QAAQ,EACjC,WAAW,EAAE,cAAc,CAAC,WAAW,EACvC,OAAO,EAAE,cAAc,CAAC,EAAE,EAC1B,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,EAAA,CAC9B,CACH,EAEDA,cAAA,CAAC,SAAS,EAAA,EACR,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,gBAAgB,EAAA,IACrB,QAAQ,KAAK;AAChB,sBAAE,EAAE,MAAM,EAAE,eAAe;sBACzB,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,EAChC,IAAI,EAAE,IAAI,EACV,eAAe,EAAE,sBAAsB,EACvC,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAC,OAAO,EAC1B,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAAA,GAC1B,cAAc,GAClB,EAEFA,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,EAC7B,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;AACF,sBAAE,sBAAsB,EAE5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,CAAA,EAAA,CACE;AAEV,CAAC;AAGH,eAAe,CAAC,WAAW,GAAG,iBAAiB;;ACxd/C,MAAM,cAAc,GAAGG,0BAAG,CACxB,oGAAoG,EACpG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,mBAAmB;AAC1B,YAAA,MAAM,EAAE,mBAAmB;AAC3B,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,iCAAiC;AACvC,YAAA,KAAK,EAAE,gCAAgC;AACxC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;AAChB,QAAA;AACE,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,qCAAqC;AAC7C,SAAA;AACD,QAAA;AACE,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,oCAAoC;AAC5C,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,KAAK;AAChB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AAGH,MAAM,mBAAmB,GAAGA,0BAAG,CAC7B,gFAAgF,EAChF;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,iBAAiB;AACxB,YAAA,MAAM,EAAE,mBAAmB;AAC3B,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA;;AAED,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA;;AAED,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,KAAK,EAAE,oBAAoB;AAC5B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,SAAS,EAAE,KAAK;AACjB,KAAA;AACF,CAAA,CACF;AAkCD,MAAM,MAAM,GAAGC,gBAAK,CAAC,UAAU,CAC7B,CACE,EACE,KAAK,EACL,IAAI,GAAG,QAAQ,EACf,UAAU,GAAG,KAAK,EAClB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,cAAc,EACd,SAAS,EACT,OAAO,EACP,QAAQ,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IACnE,MAAM,QAAQ,GAAGA,gBAAK,CAAC,MAAM,CAAmB,IAAI,CAAC;;AAGrD,IAAAA,gBAAK,CAAC,mBAAmB,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAC,OAAQ,CAAC;AAEvD,IAAA,MAAM,SAAS,GAAG,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,eAAe;AAEnE,IAAA,MAAM,YAAY,GAAG,CAAC,CAAsC,KAAI;QAC9D,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;aAAO;AACL,YAAA,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACtC;AACF,IAAA,CAAC;IAED,MAAM,oBAAoB,GAAG,MAAK;AAChC,QAAA,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC,OAAO,EAAE;AACnC,YAAA,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE;QAC1B;AACF,IAAA,CAAC;AAED,IAAA,MAAM,aAAa,GAAG,CAAC,CAAsB,KAAI;AAC/C,QAAA,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,KAAK,CAAC,UAAU,EAAE;YACvD,CAAC,CAAC,cAAc,EAAE;AAClB,YAAA,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE;QAC3B;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,yBAAyB;AACrC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,SAAS;AACd,YAAA,SAAS,EAAE,yBAAyB;AACrC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,SAAS,EAAE,0BAA0B;AACtC,SAAA;KACF;AAED,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAE/B,QACEJ,wBAAK,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAC5DM,yBACE,SAAS,EAAE,EAAE,CACX,0BAA0B,EAC1B,MAAM,CAAC,GAAG,EACV,UAAU,GAAG,oBAAoB,GAAG,gBAAgB,CACrD,EACD,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,aAAa,EACxB,IAAI,EAAC,QAAQ,EAAA,cAAA,EACC,SAAS,EAAA,eAAA,EACR,UAAU,EACzB,QAAQ,EAAE,UAAU,GAAG,EAAE,GAAG,CAAC,EAAA,QAAA,EAAA,CAE7BN,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,SAAS,EACnB,OAAO,EAAE,SAAS,EAClB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,UAAU,EAAA,GAChB,KAAK,EAAA,CACT,EAEFA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,+BAA+B,EAAA,QAAA,EAC5CA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,cAAc,CAAC;4BACb,IAAI;4BACJ,SAAS;4BACT,UAAU;AACX,yBAAA,CAAC,EACF,cAAc,EACd,SAAS,EACT,kGAAkG,CACnG,EAAA,QAAA,EAEDA,cAAA,CAAA,MAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,mBAAmB,CAAC;gCAClB,IAAI;gCACJ,SAAS;6BACV,CAAC,EACF,cAAc,CACf,EAAA,CACD,GACE,EAAA,CACF,EAEL,KAAK,KACJA,0BACE,SAAS,EAAE,EAAE,CACX,MAAM,CAAC,SAAS,EAChB,sCAAsC,EACtC;AACE,0BAAE;AACF,0BAAE,iCAAiC,EACrC,cAAc,CACf,EAAA,QAAA,EAEA,KAAK,EAAA,CACA,CACT,CAAA,EAAA,CACG,EAAA,CACF;AAEV,CAAC;AAGH,MAAM,CAAC,WAAW,GAAG,QAAQ;;ACvQtB,MAAM,aAAa,GAAGG,0BAAG,CAAC,wBAAwB,EAAE;AACzD,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,OAAO,EAAE,kCAAkC;AAC3C,YAAA,QAAQ,EAAE,kCAAkC;AAC5C,YAAA,OAAO,EAAE,kCAAkC;AAC5C,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,KAAK,EAAE,wBAAwB;AAC/B,YAAA,IAAI,EAAE,yBAAyB;AAChC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,SAAS;AAClB,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACF,CAAA;AAEM,MAAM,mBAAmB,GAAGA,0BAAG,CACpC,6HAA6H,EAC7H;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,IAAI,EAAE,oBAAoB;AAC3B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACf,KAAA;AACF,CAAA;AAGI,MAAM,iBAAiB,GAAGA,0BAAG,CAClC,kJAAkJ,EAClJ;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,MAAM,EAAE,oBAAoB;AAC5B,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,IAAI,EAAE,WAAW;AAClB,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,KAAK,EAAE,EAAE;;;AAGV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;;ACjCG,SAAU,WAAW,CAAQ,EACjC,YAAY,EACZ,kBAAkB,EAClB,eAAe,EACf,oBAAoB,EACpB,YAAY,EACZ,IAAI,EACJ,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACU,EAAA;AACxB,IAAA,MAAM,YAAY,GAChB;AACE,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,IAAI,EAAE,EAAE;AACT,KAAA,CAAC,IAAI,CAAC,IAAI,EAAE;AAEf,IAAA,QACEH,cAAA,CAAA,OAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,oBAAoB,GAAG,kCAAkC,GAAG,UAAU,EACtE,YAAY,IAAI,mBAAmB,CACpC,EAAA,QAAA,EAEA,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,UAAU,KAAI;AAC5C,YAAA,MAAM,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,YAAY,GAAG,SAAS;AAEtE,YAAA,QACEM,eAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,CACG,kBAAkB,IAAI,eAAe,KACpCN,cAAA,CAAA,IAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAC7B,oBAAoB,IAAI,kCAAkC,EAC1D,YAAY,IAAI,aAAa,EAC7B,0CAA0C,EAC1C,eAAe,CAChB,EACD,KAAK,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,EAAA,QAAA,EAEzBA,cAAA,CAAC,QAAQ,EAAA,EACP,OAAO,EAAE,iBAAiB,EAC1B,eAAe,EAAE,kBAAkB,EACnC,QAAQ,EAAE,eAAe,EAAA,YAAA,EACd,iBAAiB,EAAA,CAC5B,EAAA,CACC,CACN,EACA,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;AACzC,wBAAA,MAAM,aAAa,GAAG,KAAK,KAAK,CAAC;wBACjC,MAAM,YAAY,GAAG,KAAK,KAAK,WAAW,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AAE7D,wBAAA,QACEA,cAAA,CAAA,IAAA,EAAA,EAEE,SAAS,EAAE,EAAE,CACX,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,EAC7B,oBAAoB;AAClB,gCAAA,8CAA8C,EAChD,YAAY,IAAI,aAAa,EAC7B,CAAC,kBAAkB,IAAI,KAAK,KAAK,CAAC,IAAI,oBAAoB,EAC1D,YAAY,IAAI,mBAAmB,EACnC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,eAAe,EAC7C,eAAe,CAChB,EACD,KAAK,EAAE;AACL,gCAAA,GAAG,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE;AAClC,oCAAA,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;AACvB,oCAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;AACzC,oCAAA,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;iCAC1C,CAAC;AACF,gCAAA,GAAG,EAAE,SAAS;gCACd,IAAI,aAAa,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gCAC7C,IAAI,YAAY,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;6BAC9C,EAAA,QAAA,EAEA,MAAM,CAAC,aAAa,GAAG,IAAI,IAC1BM,yBACE,SAAS,EAAE,EAAE,CACX,yBAAyB,EACzB,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE;AACxB,oCAAA,4BAA4B,CAC/B,EACD,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,uBAAuB,EAAE,aAE/Ca,qBAAU,CACT,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAC9B,MAAM,CAAC,UAAU,EAAE,CACpB,EACA,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,KACzBnB,yBAAM,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAC7C;AACC,4CAAA,GAAG,EAAE,GAAG;AACR,4CAAA,IAAI,EAAE,GAAG;AACV,yCAAA,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAY,CAAC,IAAI,GAAG,GAC1C,CACR,CAAA,EAAA,CACG,CACP,EAAA,EA5CI,MAAM,CAAC,EAAE,CA6CX;AAET,oBAAA,CAAC,CAAC,CAAA,EAAA,EAzEK,WAAW,CAAC,EAAE,CA0ElB;QAET,CAAC,CAAC,EAAA,CACI;AAEZ;;AC/GM,SAAU,SAAS,CAAQ,EAC/B,IAAI,EACJ,kBAAkB,EAClB,IAAI,EACJ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,GACQ,EAAA;AACtB,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAGI,gBAAK,CAAC,QAAQ,CAAmB,IAAI,CAAC;AAC5E,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC;AAEvE,IAAA,QACEJ,cAAA,CAAA,OAAA,EAAA,EAAO,SAAS,EAAE,EAAE,CAAC,iCAAiC,CAAC,EAAA,QAAA,EACpD,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,YAAA,MAAM,YAAY,GAAG,UAAU,KAAK,GAAG,CAAC,EAAE;YAC1C,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC;YAEtD,QACEM,wBAEE,SAAS,EAAE,EAAE,CACX,OAAO,KAAK,SAAS;AACnB,oBAAA,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;AACnB,oBAAA,kCAAkC,EACpC,UAAU,IAAI,gBAAgB,EAC9B,YAAY;oBACV,YAAY;oBACZ,kCAAkC,EACpC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,CAC9B,EACD,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,MAAM,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,EACzC,YAAY,EAAE,MAAM,aAAa,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,CAEtC,kBAAkB,KACjBN,cAAA,CAAA,IAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC,EAAE,IAAI,EAAE,CAAC,EAC3B,MAAM,EACN,aAAa,CACd,EACD,KAAK,EAAE;AACL,4BAAA,UAAU,EAAE,MAAM;AAClB,4BAAA,aAAa,EAAE,MAAM;yBACtB,EAAA,QAAA,EAEDA,cAAA,CAAC,QAAQ,EAAA,EACP,OAAO,EAAE,GAAG,CAAC,aAAa,EAAE,EAC5B,eAAe,EAAE,GAAG,CAAC,iBAAiB,EAAE,EACxC,QAAQ,EAAE,GAAG,CAAC,wBAAwB,EAAE,EACxC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,EAAA,YAAA,EACvB,CAAA,WAAA,EAAc,GAAG,CAAC,EAAE,CAAA,CAAE,EAAA,CAClC,EAAA,CACC,CACN,EACA,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;wBAC7C,MAAM,aAAa,GACjB,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,EAAE;AAC7B,4BAAA,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC,EAAE;wBACjC,MAAM,SAAS,GAAG,aAAa,GAAG,OAAO,GAAG,SAAS;AACrD,wBAAA,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,EAAE;AAC1C,wBAAA,MAAM,WAAW,GAAG,SAAS,KAAK,CAAC;wBACnC,MAAM,UAAU,GAAG,SAAS,KAAK,YAAY,CAAC,MAAM,GAAG,CAAC;AAExD,wBAAA,QACEA,cAAA,CAAA,IAAA,EAAA,EAEE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EACzC,aAAa,CACd,EACD,KAAK,EAAE;AACL,gCAAA,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;AAChC,oCAAA,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;AAC5B,oCAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;AACvC,oCAAA,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO;iCACxC,CAAC;AACF,gCAAA,UAAU,EAAE,MAAM;AAClB,gCAAA,aAAa,EAAE,MAAM;gCACrB,IAAI,WAAW,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;gCAC3C,IAAI,UAAU,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;6BAC5C,EACD,QAAQ,EAAE,CAAC,EACX,OAAO,EAAE,MACP,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAEpD,MAAM,EAAE,MAAM,cAAc,CAAC,IAAI,CAAC,EAAA,QAAA,EAEjCmB,qBAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,EAAA,EAvBrD,IAAI,CAAC,EAAE,CAwBT;AAET,oBAAA,CAAC,CAAC,CAAA,EAAA,EAzEG,GAAG,CAAC,EAAE,CA0ER;QAET,CAAC,CAAC,EAAA,CACI;AAEZ;;ACzHM,SAAU,yBAAyB,CAAC,EAAE,OAAO,EAAqB,EAAA;IACtE,QACEnB,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACEA,cAAA,CAAA,IAAA,EAAA,EACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,kDAAkD,EAAA,QAAA,EAE5DM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wCAAwC,EAAA,QAAA,EAAA,CACrDN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,iFAAiF,EAAA,CAAG,EACnGA,cAAA,CAAA,MAAA,EAAA,EAAA,QAAA,EAAA,YAAA,EAAA,CAAuB,CAAA,EAAA,CACnB,EAAA,CACH,EAAA,CACF;AAET;AAEM,SAAU,uBAAuB,CAAC,EAAE,OAAO,EAAqB,EAAA;AACpE,IAAA,QACEA,cAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EACEA,cAAA,CAAA,IAAA,EAAA,EACE,OAAO,EAAE,OAAO,EAChB,SAAS,EAAC,kDAAkD,EAAA,QAAA,EAAA,mBAAA,EAAA,CAGzD,EAAA,CACF;AAET;;ACgBA;AAEA,SAAS,cAAc,CACrB,EACE,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,OAAO,EACP,IAAI,GAAG,QAAQ,EACf,KAAK,EACL,kBAAkB,GAAG,KAAK,EAC1B,eAAe,GAAG,KAAK,EACvB,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,sBAAsB,GAAG,KAAK,EAC9B,YAAY,GAAG,KAAK,EACpB,YAAY,GAAG,IAAI,EACnB,UAAU,EACV,YAAY,EACZ,eAAe,EACf,aAAa,EACb,oBAAoB,GAAG,IAAI,EAC3B,mBAAmB,EACnB,qBAAqB,EACrB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,GAAG,KAAK,EACU,EACpB,GAAuC,EAAA;;AAIvC,IAAA,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC;AACpD,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,EAAE;AAE5C,IAAA,MAAM,kBAAkB,GAAG,CAAC,KAAuB,KAAI;QACrD,IAAI,KAAK,KAAK,SAAS;AAAE,YAAA,OAAO,SAAS;AACzC,QAAA,OAAO,OAAO,KAAK,KAAK,QAAQ,GAAG,CAAA,EAAG,KAAK,CAAA,EAAA,CAAI,GAAG,KAAK;AACzD,IAAA,CAAC;IAED,MAAM,cAAc,GAAGI,gBAAK,CAAC,WAAW,CACtC,CACE,QAAgB,EAChB,QAIC,KACsB;AACvB,QAAA,MAAM,KAAK,GAAG,YAAY,GAAG,QAAQ,CAAC,IAAI,QAAQ,EAAE,KAAK,IAAI,SAAS;AACtE,QAAA,MAAM,QAAQ,GACZ,eAAe,GAAG,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,IAAI,SAAS;AAChE,QAAA,MAAM,QAAQ,GACZ,eAAe,GAAG,QAAQ,CAAC,IAAI,QAAQ,EAAE,QAAQ,IAAI,SAAS;QAEhE,OAAO;AACL,YAAA,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC;AAChC,YAAA,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;AACtC,YAAA,QAAQ,EAAE,kBAAkB,CAAC,QAAQ,CAAC;SACvC;IACH,CAAC,EACD,CAAC,YAAY,EAAE,eAAe,EAAE,eAAe,CAAC,CACjD;;AAGD,IAAA,MAAM,eAAe,GACnB,OAAO,OAAO,KAAK,SAAS,GAAG,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;AAE7D,IAAA,MAAM,gBAAgB,GAAG,mBAAmB,IAAI,CAAC;AAEjD,IAAA,MAAM,OAAO,GAAG,IAAI,IAAI,QAAQ;AAEhC,IAAA,MAAM,iBAAiB,GAGnB;AACF,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,MAAM,EAAE,EAAE;AACV,QAAA,KAAK,EAAE,EAAE;AACT,QAAA,IAAI,EAAE,MAAM;KACb;IAED,MAAM,kBAAkB,GAAG,kBAAkB,CAC3C,qBAAqB,IAAI,iBAAiB,CAAC,OAAO,CAAC,CACpD;IAED,MAAM,qBAAqB,GACzB,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,OAAO,KAAK,OAAO,GAAG,EAAE,GAAG,EAAE;AAE1D,IAAA,MAAM,kBAAkB,GAAGA,gBAAK,CAAC,WAAW,CAAC,MAAK;AAChD,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,qBAAqB,EAAE;AAEpD,QAAA,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/B,YAAA,OAAO,yBAAyB,CAAC;gBAC/B,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC;AAC3C,aAAA,CAAC;QACJ;QAEA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,MAC9DE,eAAA,CAAA,IAAA,EAAA,EAAA,QAAA,EAAA,CACG,kBAAkB,KACjBN,uBACE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EACpC,MAAM,EACN,aAAa,CACd,EAAA,QAAA,EAEDA,cAAA,CAAC,QAAQ,EAAA,EACP,OAAO,EAAC,QAAQ,EAChB,KAAK,EAAE,qBAAqB,EAC5B,MAAM,EAAE,qBAAqB,GAC7B,EAAA,CACC,CACN,EACA,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,MACzBA,uBAEE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EACpC,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,aAAa,EACpC,aAAa,CACd,EACD,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,EAAE;AAC/B,wBAAA,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;AACvB,wBAAA,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;AAClC,wBAAA,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,OAAO;AACnC,qBAAA,CAAC,EAAA,QAAA,EAEFA,cAAA,CAAC,QAAQ,EAAA,EACP,SAAS,EAAC,QAAQ,EAClB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,EAAC,QAAQ,EAAA,CAChB,EAAA,EAhBG,CAAA,EAAG,MAAM,CAAC,EAAE,CAAA,CAAA,EAAI,QAAQ,EAAE,CAiB5B,CACN,CAAC,CAAA,EAAA,EApCK,gBAAgB,QAAQ,CAAA,CAAE,CAqC9B,CACN,CAAC;AACJ,IAAA,CAAC,EAAE;QACD,aAAa;QACb,kBAAkB;QAClB,cAAc;QACd,qBAAqB;QACrB,OAAO;QACP,kBAAkB;QAClB,gBAAgB;QAChB,KAAK;AACN,KAAA,CAAC;AAEF,IAAA,MAAM,oBAAoB,GAAGI,gBAAK,CAAC,WAAW,CAAC,MAAK;AAClD,QAAA,IAAI,gBAAgB;AAAE,YAAA,OAAO,gBAAgB;QAC7C,OAAO,kBAAkB,EAAE;AAC7B,IAAA,CAAC,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;;IAI1C,MAAM,eAAe,GAAGA,gBAAK,CAAC,WAAW,CACvC,CAAC,GAAU,KAAY;AACrB,QAAA,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE;AACtC,YAAA,OAAO,YAAY,CAAC,GAAG,CAAC;QAC1B;QACA,OAAO,YAAY,IAAI,EAAE;AAC3B,IAAA,CAAC,EACD,CAAC,YAAY,CAAC,CACf;IAED,MAAM,sBAAsB,GAAGA,gBAAK,CAAC,WAAW,CAC9C,CAAC,GAAU,KAAI;QACb,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,GAAG,CAAC;QACjB;AACF,IAAA,CAAC,EACD,CAAC,UAAU,CAAC,CACb;;IAID,MAAM,gBAAgB,GAAG,MAAK;AAC5B,QAAA,IAAI,cAAc;AAAE,YAAA,OAAO,cAAc;AACzC,QAAA,OAAO,uBAAuB,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,MAAM,EAAE,CAAC;AAC3E,IAAA,CAAC;;IAID,QACEJ,wBAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,KAAM,KAAK,EAAA,QAAA,EACjEA,wBACE,SAAS,EAAE,EAAE,CACX,UAAU,EACV,sBAAsB,GAAG,iBAAiB,GAAG,mBAAmB,EAChE,kBAAkB,CACnB,EAAA,QAAA,EAEDM,2BAAO,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC,aAC/DN,cAAA,CAAC,WAAW,IACV,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,kBAAkB,EACtC,eAAe,EAAE,eAAe,EAChC,oBAAoB,EAAE,oBAAoB,EAC1C,YAAY,EAAE,YAAY,EAC1B,IAAI,EAAE,IAA6C,EACnD,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,+BAA+B,EAAE,CAAC,CAAC,CAAC,EAClE,iBAAiB,EAAE,KAAK,CAAC,oBAAoB,EAAE,EAC/C,kBAAkB,EAAE,KAAK,CAAC,qBAAqB,EAAE,EACjD,cAAc,EAAE,cAAc,EAAA,CAC9B,EAED,eAAe,IACdA,cAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAQ,oBAAoB,EAAE,EAAA,CAAS,IACrC,CAAC,OAAO,IACVA,cAAA,CAAA,OAAA,EAAA,EAAA,QAAA,EAAQ,gBAAgB,EAAE,GAAS,KAEnCA,eAAC,SAAS,EAAA,EACR,IAAI,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAC9B,kBAAkB,EAAE,kBAAkB,EACtC,IAAI,EAAE,IAAI,IAAI,QAAQ,EACtB,OAAO,EAAE,OAAO,IAAI,SAAS,EAC7B,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,aAAa,EAC5B,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,eAAe,EAChC,cAAc,EAAE,sBAAsB,EACtC,cAAc,EAAE,cAAc,EAAA,CAC9B,CACH,CAAA,EAAA,CACK,EAAA,CACJ,EAAA,CACF;AAEV;AAEA;AAEO,MAAM,KAAK,GAAGI,gBAAK,CAAC,UAAU,CAAC,cAAc;AAMnD,KAAa,CAAC,WAAW,GAAG,OAAO;;AC5Q7B,MAAM,gBAAgB,GAAGA,gBAAK,CAAC,UAAU,CAG9C,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,GAAG,OAAO,EAAE,EAAE,GAAG,KAAI;AACnE,IAAA,QACEJ,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CACX,kJAAkJ,EAClJ,MAAM,GAAG,eAAe,GAAG,kBAAkB,EAC7C,SAAS,CACV,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAA,QAAA,EAEf,QAAQ,EAAA,CACL;AAEV,CAAC;AAED,gBAAgB,CAAC,WAAW,GAAG,kBAAkB;;ACjC3C,SAAU,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,GACO,EAAA;IAChB,QACEM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,eAAe,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAC5CA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yDAAyD,EAAA,QAAA,EAAA,CACrE,QAAQ,EAAE,GAAG,EACb,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE;AAC7B,wBAAA,qBAAqB,EAAE,CAAC;AACxB,wBAAA,qBAAqB,EAAE,CAAC;AACzB,qBAAA,CAAC,CAAA,EAAA,CACE,EACL,QAAQ,KACPN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wDAAwD,YACpE,QAAQ,EAAA,CACL,CACP,CAAA,EAAA,CACG;AAEV;AAUM,SAAU,QAAQ,CAAC,EACvB,IAAI,EACJ,UAAU,GAAG,SAAS,EACtB,SAAS,GACK,EAAA;AACd,IAAA,MAAM,WAAW,GAAG;AAClB,QAAA,OAAO,EAAE,+BAA+B;AACxC,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,OAAO,EAAE,+BAA+B;AACxC,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,MAAM,EAAE,+BAA+B;KACxC;AAED,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,kEAAkE,EAClE,WAAW,CAAC,UAAU,CAAC,EACvB,SAAS,CACV,YAEA,IAAI,EAAA,CACD;AAEV;AAEA;SAEgB,UAAU,GAAA;AACxB,IAAA,OAAOA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,eAAe,GAAG;AAC1C;AAUM,SAAU,QAAQ,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAiB,EAAA;IAC3E,QACEA,wBACE,SAAS,EAAA,IAAA,EACT,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,EAAE,CACX,qEAAqE,EACrE,SAAS,CACV,EAAA,QAAA,EAEDM,eAAA,CAAA,KAAA,EAAA,EACE,KAAK,EAAC,IAAI,EACV,MAAM,EAAC,IAAI,EACX,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,gCAAgC,EAAA,QAAA,EAAA,CAE1CN,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,uGAAuG,EACzG,IAAI,EAAC,cAAc,EAAA,CACnB,EACFA,yBACE,CAAC,EAAC,uGAAuG,EACzG,IAAI,EAAC,cAAc,EAAA,CACnB,EACFA,cAAA,CAAA,MAAA,EAAA,EACE,CAAC,EAAC,gHAAgH,EAClH,IAAI,EAAC,cAAc,EAAA,CACnB,EACFA,yBACE,CAAC,EAAC,gHAAgH,EAClH,IAAI,EAAC,cAAc,EAAA,CACnB,EACFA,yBACE,CAAC,EAAC,gHAAgH,EAClH,IAAI,EAAC,cAAc,EAAA,CACnB,EACFA,yBACE,CAAC,EAAC,yHAAyH,EAC3H,IAAI,EAAC,cAAc,EAAA,CACnB,CAAA,EAAA,CACE,EAAA,CACF;AAEV;SAagB,UAAU,CAAC,EACzB,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,GAAG,IAAI,EACZ,SAAS,GACO,EAAA;AAChB,IAAA,QACEM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,yBAAyB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CACrD,MAAM,IACLN,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,IAAI,EACT,SAAS,EAAC,qCAAqC,GAC/C,KAEFA,wBACE,SAAS,EAAE,EAAE,CACX,iFAAiF,EACjF,CAAA,GAAA,EAAM,KAAK,CAAA,CAAE,CACd,YAEA,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GACrC,CACP,EACDM,yBAAK,SAAS,EAAC,eAAe,EAAA,QAAA,EAAA,CAC5BN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yDAAyD,EAAA,QAAA,EACrE,IAAI,GACD,EACL,QAAQ,KACPA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,wDAAwD,YACpE,QAAQ,EAAA,CACL,CACP,CAAA,EAAA,CACG,CAAA,EAAA,CACF;AAEV;;AChLA,MAAM,eAAe,GAAGG,0BAAG,CACzB,wNAAwN,EACxN;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,OAAO,EAAE;AACP,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,UAAU,EAAE,kBAAkB;AAC/B,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,eAAe;AACtB,YAAA,MAAM,EAAE,gBAAgB;AACxB,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,EAAE;AACR,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,+BAA+B;AACrC,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACD,QAAA,WAAW,EAAE;AACX,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,gBAAgB,EAAE;;AAEhB,QAAA;AACE,YAAA,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;AACnC,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,CAAA;;;;AAI6C,2DAAA,CAAA;AACrD,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,2IAA2I;AAC9I,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,YAAY;AACrB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EACH,0IAA0I;AAC7I,SAAA;;AAED,QAAA;AACE,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AACzB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,yBAAyB;AACjC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;AACzB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE,2BAA2B;AACnC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,KAAK,EAAE,wBAAwB;AAChC,SAAA;AACD,QAAA;AACE,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE,0BAA0B;AAClC,SAAA;;AAED,QAAA;AACE,YAAA,OAAO,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC;AACnC,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,KAAK,EAAE,8CAA8C;AACtD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,OAAO,EAAE,UAAU;AACnB,QAAA,IAAI,EAAE,OAAO;AACb,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,WAAW,EAAE,KAAK;AACnB,KAAA;AACF,CAAA,CACF;AA8CD,MAAM,OAAO,GAAGC,gBAAK,CAAC,UAAU,CAC9B,CACE,EACE,gBAAgB,EAChB,KAAK,EACL,iBAAiB,EACjB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,IAAI,GAAG,OAAO,EACd,OAAO,GAAG,UAAU,EACpB,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,OAAO,EACP,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,QACEE,eAAA,CAAA,QAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EAAA,eAAA,EACK,UAAU,EACzB,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAE,EAAE,CACX,eAAe,CAAC;YACd,OAAO;YACP,IAAI;YACJ,UAAU;YACV,UAAU;YACV,WAAW;AACZ,SAAA,CAAC,EACF,SAAS,CACV,EACD,OAAO,EAAE,OAAO,EAAA,GACZ,KAAK,aAER,gBAAgB,KACfN,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,gBAAgB,EAAA,CAAQ,CACrE,EACDA,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,KAAK,EAAA,CAAQ,EACxD,iBAAiB,KAChBA,yBAAM,SAAS,EAAC,0BAA0B,EAAA,QAAA,EAAE,iBAAiB,GAAQ,CACtE,CAAA,EAAA,CACM;AAEb,CAAC;AAGH,OAAO,CAAC,WAAW,GAAG,SAAS;;AC9G/B,MAAM,IAAI,GAAGI,gBAAK,CAAC,UAAU,CAC3B,CACE,EACE,IAAI,EACJ,aAAa,EACb,oBAAoB,EACpB,WAAW,EACX,OAAO,GAAG,UAAU,EACpB,IAAI,GAAG,OAAO,EACd,WAAW,GAAG,KAAK,EACnB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GAAG,IAAI,EACpB,GAAG,KAAK,EACT,EACD,GAAG,KACD;;IAEF,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAEhE,oBAAoB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC;;AAG5C,IAAA,MAAM,YAAY,GAAG,aAAa,KAAK,SAAS;IAChD,MAAM,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,kBAAkB;;AAGrE,IAAA,MAAM,cAAc,GAAG,CAAC,KAAsB,KAAI;QAChD,IAAI,CAAC,YAAY,EAAE;YACjB,qBAAqB,CAAC,KAAK,CAAC;QAC9B;AACA,QAAA,WAAW,GAAG,KAAK,CAAC;AACtB,IAAA,CAAC;;AAGD,IAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,KAAK,WAAW,CAAC;IAE5D,QACEE,eAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAA,GAAM,KAAK,EAAA,QAAA,EAAA,CAE1DN,cAAA,CAAA,KAAA,EAAA,EACE,IAAI,EAAC,SAAS,EACd,SAAS,EAAE,EAAE,CACX,gCAAgC,EAChC;AACE,oBAAA,QAAQ,EAAE,WAAW;oBACrB,gEAAgE,EAC9D,OAAO,KAAK,UAAU;AACzB,iBAAA,EACD,gBAAgB,CACjB,EAAA,QAAA,EAEA,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,MACZA,cAAA,CAAC,OAAO,EAAA,EAEN,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAClB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB,EACtC,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EACxC,UAAU,EAAE,GAAG,CAAC,EAAE,KAAK,WAAW,EAClC,UAAU,EAAE,GAAG,CAAC,UAAU,EAC1B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA,EAVnD,GAAG,CAAC,EAAE,CAWX,CACH,CAAC,EAAA,CACE,EAGL,aAAa,IAAI,SAAS,EAAE,OAAO,KAClCA,cAAA,CAAA,KAAA,EAAA,EACE,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC,EAAA,iBAAA,EACtB,MAAM,CAAC,WAAW,CAAC,EAAA,QAAA,EAEnC,SAAS,CAAC,OAAO,EAAA,CACd,CACP,CAAA,EAAA,CACG;AAEV,CAAC;AAGH,IAAI,CAAC,WAAW,GAAG,MAAM;;AC9JzB,MAAM,gBAAgB,GAAGG,0BAAG,CAC1B,sGAAsG,EACtG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,gCAAgC;AACvC,YAAA,MAAM,EAAE,gCAAgC;AACxC,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE;;;;;AAKkC,+CAAA,CAAA;AACxC,YAAA,QAAQ,EAAE;;;;AAIiC,kDAAA,CAAA;AAC3C,YAAA,QAAQ,EAAE,CAAA;;;AAGiC,kDAAA,CAAA;AAC5C,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE;;;;AAIwD,qEAAA,CAAA;AAC9D,YAAA,KAAK,EAAE,iCAAiC;AACzC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AA4BH,MAAM,QAAQ,GAAGC,gBAAK,CAAC,UAAU,CAC/B,CACE,EACE,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,OAAO,EACP,aAAa,GAAG,IAAI,EACpB,eAAe,EACf,WAAW,EACX,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,QAAQ,EACR,IAAI,GAAG,CAAC,EACR,GAAG,KAAK,EACT,EACD,GAAG,KACD;AACF,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5D,IAAA,MAAM,aAAa,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,aAAa;IACjE,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM;AAElD,IAAA,MAAM,YAAY,GAAG,CAAC,CAAyC,KAAI;AACjE,QAAA,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK;;QAG/B,IAAI,OAAO,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,EAAE;YACxC;QACF;QAEA,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,CAAC,CAAC;QACb;aAAO;YACL,gBAAgB,CAAC,QAAQ,CAAC;QAC5B;AACF,IAAA,CAAC;;AAGD,IAAA,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU;IAChE,MAAM,sBAAsB,GAAG;AAC7B,UAAE;AACF,UAAE;AACF,cAAE;cACA,eAAe;;IAGnB,MAAM,WAAW,GAAG,OAAO,IAAI,aAAa,IAAI,OAAO,GAAG,GAAG;AAC7D,IAAA,MAAM,SAAS,GAAG,OAAO,IAAI,aAAa,IAAI,OAAO;AAErD,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACb,SAAA;KACF;AAED,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,sBAAsB,EACtB,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EACpB,kBAAkB,CACnB,aAEA,KAAK,KACJN,cAAA,CAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,KAAK,CAAC,EAAE,EACjB,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,EAAA,CAC9B,CACH,EAEDA,cAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,gBAAgB,CAAC;oBACf,IAAI;AACJ,oBAAA,eAAe,EAAE,sBAAsB;oBACvC,UAAU;AACX,iBAAA,CAAC,EACF,SAAS,CACV,YAEDA,cAAA,CAAA,UAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,EAAE,CACX,8MAA8M,EAC9M,IAAI,KAAK,OAAO,IAAI,SAAS,EAC7B,IAAI,KAAK,QAAQ,IAAI,SAAS,EAC9B,IAAI,KAAK,OAAO,IAAI,WAAW,EAC/B,iBAAiB,CAClB,KACG,KAAK,EAAA,CACT,GACE,EACNA,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,EAC7B,YAAY,EACV,OAAO,IAAI,aAAa,GAAG,CAAA,EAAG,aAAa,CAAA,CAAA,EAAI,OAAO,EAAE,GAAG,SAAS,EAEtE,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;sBACA,sBAAsB,EAE5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAChB,qBAAqB,EAAE,EAAE,CACvB,mBAAmB,EACnB;AACE,sBAAE;AACF,sBAAE;AACF,0BAAE;AACF,0BAAE,EAAE,CACP,EAAA,CACD,CAAA,EAAA,CACE;AAEV,CAAC;AAGH,QAAQ,CAAC,WAAW,GAAG,UAAU;;AC1NjC,MAAM,iBAAiB,GAAGG,0BAAG,CAC3B,qHAAqH,EACrH;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,KAAK,EAAE,yBAAyB;AAChC,YAAA,MAAM,EAAE,yBAAyB;AACjC,YAAA,KAAK,EAAE,yBAAyB;AACjC,SAAA;AACD,QAAA,eAAe,EAAE;AACf,YAAA,IAAI,EAAE;;;;;;AAM4B,yCAAA,CAAA;AAClC,YAAA,QAAQ,EAAE;;;;;AAKwB,yCAAA,CAAA;AAClC,YAAA,QAAQ,EAAE;;;;;AAKwB,yCAAA,CAAA;AACnC,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE;;;;;;AAMO,oBAAA,CAAA;AACb,YAAA,KAAK,EAAE,gBAAgB;AACxB,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,IAAI,EAAE,kEAAkE;AACxE,YAAA,KAAK,EAAE,EAAE;AACV,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,UAAU,EAAE,KAAK;AAClB,KAAA;AACF,CAAA;AA6CH,MAAM,cAAc,GAAG,CAAC,KAAa,KAAY;IAC/C,IAAI,KAAK,KAAK,CAAC;AAAE,QAAA,OAAO,SAAS;IACjC,MAAM,CAAC,GAAG,IAAI;IACd,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;IACzC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACnD,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,MAAM,WAAW,GAAG,CAAC,IAAW,EAAE,GAAY,KAAa;IACzD,IAAI,IAAI,EAAE;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IACvC;IACA,IAAI,GAAG,EAAE;AACP,QAAA,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE;QAClC,QACE,QAAQ,CAAC,KAAK,CAAC,4CAA4C,CAAC,KAAK,IAAI;YACrE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,IAAI;IAEtC;AACA,IAAA,OAAO,KAAK;AACd,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,IAAW,EAAE,GAAY,KAAa;IACvD,IAAI,IAAI,EAAE;AACR,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,iBAAiB;IACxC;IACA,IAAI,GAAG,EAAE;QACP,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,IAAI;IAC3D;AACA,IAAA,OAAO,KAAK;AACd,CAAC;AAMD,MAAM,kBAAkB,GAAG,CAAC,GAAW,KAAY;AACjD,IAAA,IAAI;AACF,QAAA,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC;AAC3B,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAChC,QAAA,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,MAAM;AACpD,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC;IACrC;AAAE,IAAA,MAAM;;QAEN,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5B,QAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,MAAM;AAClD,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD;AACF,CAAC;AAED;AACA,MAAM,YAAY,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAgC,KAAI;AAClE,IAAA,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAGC,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;IAErD,IAAI,QAAQ,EAAE;QACZ,QACEJ,wBAAK,SAAS,EAAC,oGAAoG,EAAA,QAAA,EACjHA,cAAA,CAAC,IAAI,EAAA,EACH,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,iCAAiC,EAAA,CAC3C,EAAA,CACE;IAEV;AAEA,IAAA,QACEA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oDAAoD,EAAA,QAAA,EACjEA,cAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,GAAG,EAAE,GAAG,EACR,SAAS,EAAC,4BAA4B,EACtC,OAAO,EAAE,MAAM,WAAW,CAAC,IAAI,CAAC,EAAA,CAChC,EAAA,CACE;AAEV,CAAC;AAED,MAAM,SAAS,GAAGI,gBAAK,CAAC,UAAU,CAChC,CACE,EACE,KAAK,EACL,UAAU,EACV,SAAS,EACT,WAAW,EACX,IAAI,GAAG,QAAQ,EACf,eAAe,GAAG,MAAM,EACxB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,UAAU,GAAG,KAAK,EAClB,MAAM,EACN,QAAQ,GAAG,KAAK,EAChB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,GAAG,IAAI,EAClB,SAAS,EACT,GAAG,KAAK,EACT,EACD,GAAG,KACD;IACF,MAAM,YAAY,GAAGA,gBAAK,CAAC,MAAM,CAAmB,IAAI,CAAC;AACzD,IAAA,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAC,KAAK,CAAC;AACzD,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CACtD,EAAE,CACH;AACD,IAAA,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,gBAAK,CAAC,QAAQ,CAAgB,IAAI,CAAC;;AAG7D,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;QACnB,IAAI,KAAK,EAAE;AACT,YAAA,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC;YACzD,MAAM,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC7C,gBAAA,IAAI,IAAI,YAAY,IAAI,EAAE;AACxB,oBAAA,MAAM,YAAY,GAAiB;AACjC,wBAAA,IAAI,EAAE,IAAI;wBACV,IAAI,EAAE,IAAI,CAAC,IAAI;wBACf,IAAI,EAAE,IAAI,CAAC,IAAI;AACf,wBAAA,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAA,CAAE;qBACrD;AACD,oBAAA,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE;wBACpC,YAAY,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;oBAClD;AACA,oBAAA,OAAO,YAAY;gBACrB;AAAO,qBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;;AAEnC,oBAAA,MAAM,YAAY,GAAiB;AACjC,wBAAA,GAAG,EAAE,IAAI;AACT,wBAAA,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC;wBAC9B,EAAE,EAAE,OAAO,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;qBAChC;;;oBAGD,IAAI,WAAW,EAAE;AACf,wBAAA,YAAY,CAAC,OAAO,GAAG,IAAI;oBAC7B;AACA,oBAAA,OAAO,YAAY;gBACrB;qBAAO;;oBAEL,MAAM,YAAY,GAAG,IAAoB;;oBAEzC,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,IAAI,WAAW,EAAE;AAC5D,wBAAA,YAAY,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG;oBACzC;AACA,oBAAA,OAAO,YAAY;gBACrB;AACF,YAAA,CAAC,CAAC;YACF,gBAAgB,CAAC,cAAc,CAAC;QAClC;aAAO;YACL,gBAAgB,CAAC,EAAE,CAAC;QACtB;AACF,IAAA,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;;AAGxB,IAAAA,gBAAK,CAAC,SAAS,CAAC,MAAK;AACnB,QAAA,OAAO,MAAK;AACV,YAAA,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAI;;;gBAGrC,IACE,YAAY,CAAC,OAAO;oBACpB,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,EACxC;AACA,oBAAA,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;gBAC3C;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC;AACH,IAAA,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAEnB,IAAA,MAAM,YAAY,GAAG,CAAC,KAAwB,KAAY;QACxD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACnC,MAAM,UAAU,GAAW,EAAE;QAC7B,IAAI,YAAY,GAAkB,IAAI;;AAGtC,QAAA,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,QAAQ,EAAE;AAClE,YAAA,YAAY,GAAG,CAAA,QAAA,EAAW,QAAQ,CAAA,gBAAA,CAAkB;YACpD,QAAQ,CAAC,YAAY,CAAC;AACtB,YAAA,OAAO,UAAU;QACnB;AAEA,QAAA,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;;YAEzB,IAAI,OAAO,IAAI,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE;gBAClC,YAAY,GAAG,CAAA,MAAA,EACb,IAAI,CAAC,IACP,CAAA,0BAAA,EAA6B,cAAc,CAAC,OAAO,CAAC,CAAA,CAAE;gBACtD,QAAQ,CAAC,YAAY,CAAC;gBACtB;YACF;;YAGA,IAAI,MAAM,EAAE;gBACV,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAClE,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,KAAI;AAC7C,oBAAA,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;AACxB,wBAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC7D;AACA,oBAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;wBACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACnC,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC;oBAC7C;AACA,oBAAA,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI;AAC3B,gBAAA,CAAC,CAAC;gBAEF,IAAI,CAAC,UAAU,EAAE;AACf,oBAAA,YAAY,GAAG,CAAA,WAAA,EAAc,IAAI,CAAC,IAAI,mBAAmB;oBACzD,QAAQ,CAAC,YAAY,CAAC;oBACtB;gBACF;YACF;AAEA,YAAA,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;AACvB,QAAA,CAAC,CAAC;QAEF,IAAI,YAAY,EAAE;YAChB,QAAQ,CAAC,YAAY,CAAC;QACxB;aAAO;YACL,QAAQ,CAAC,IAAI,CAAC;QAChB;AAEA,QAAA,OAAO,UAAU;AACnB,IAAA,CAAC;AAED,IAAA,MAAM,WAAW,GAAG,CAAC,KAAa,KAAI;AACpC,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE;QAExB,MAAM,gBAAgB,GAAmB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;AAC1D,YAAA,MAAM,YAAY,GAAiB;gBACjC,IAAI;AACJ,gBAAA,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAA,CAAA,EAAI,IAAI,CAAC,YAAY,CAAA,CAAA,EAAI,IAAI,CAAC,GAAG,EAAE,CAAA,CAAE;aACnE;AAED,YAAA,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE;gBACpC,YAAY,CAAC,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;YAClD;AAEA,YAAA,OAAO,YAAY;AACrB,QAAA,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG;AACnB,cAAE,CAAC,GAAG,aAAa,EAAE,GAAG,gBAAgB;cACtC,gBAAgB;QAEpB,gBAAgB,CAAC,YAAY,CAAC;;QAG9B,IAAI,QAAQ,EAAE;YACZ,MAAM,aAAa,GAAG;iBACnB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI;iBACnB,MAAM,CAAC,CAAC,IAAI,KAAmB,IAAI,KAAK,SAAS,CAAC;AACrD,YAAA,QAAQ,CAAC,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/D;AACF,IAAA,CAAC;AAED,IAAA,MAAM,qBAAqB,GAAG,CAAC,CAAsC,KAAI;AACvE,QAAA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/C,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,WAAW,CAAC,UAAU,CAAC;YACzB;;AAEA,YAAA,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE;QACrB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,cAAc,GAAG,CAAC,CAAkC,KAAI;QAC5D,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QACnB,IAAI,CAAC,UAAU,EAAE;YACf,aAAa,CAAC,IAAI,CAAC;QACrB;AACF,IAAA,CAAC;AAED,IAAA,MAAM,eAAe,GAAG,CAAC,CAAkC,KAAI;QAC7D,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QACnB,aAAa,CAAC,KAAK,CAAC;AACtB,IAAA,CAAC;AAED,IAAA,MAAM,UAAU,GAAG,CAAC,CAAkC,KAAI;QACxD,CAAC,CAAC,cAAc,EAAE;QAClB,CAAC,CAAC,eAAe,EAAE;QACnB,aAAa,CAAC,KAAK,CAAC;AAEpB,QAAA,IAAI,UAAU;YAAE;AAEhB,QAAA,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3D,MAAM,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;AACrD,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,WAAW,CAAC,UAAU,CAAC;YACzB;QACF;AACF,IAAA,CAAC;IAED,MAAM,WAAW,GAAG,MAAK;AACvB,QAAA,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,OAAO,EAAE;AACvC,YAAA,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE;QAC9B;AACF,IAAA,CAAC;AAED,IAAA,MAAM,gBAAgB,GAAG,CACvB,CAAmB,EACnB,YAA0B,KACxB;QACF,CAAC,CAAC,eAAe,EAAE;AACnB,QAAA,IAAI,UAAU;YAAE;;AAGhB,QAAA,IAAI,YAAY,CAAC,OAAO,EAAE;AACxB,YAAA,GAAG,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC;QAC3C;AAEA,QAAA,MAAM,YAAY,GAAG,aAAa,CAAC,MAAM,CACvC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,EAAE,CAChC;QACD,gBAAgB,CAAC,YAAY,CAAC;QAE9B,IAAI,YAAY,EAAE;YAChB,YAAY,CAAC,YAAY,CAAC;QAC5B;QAEA,IAAI,QAAQ,EAAE;;YAEZ,MAAM,aAAa,GAAG;iBACnB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI;iBACnB,MAAM,CAAC,CAAC,IAAI,KAAmB,IAAI,KAAK,SAAS,CAAC;AACrD,YAAA,QAAQ,CAAC,QAAQ,GAAG,aAAa,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAC/D;AACF,IAAA,CAAC;;IAGD,MAAM,iBAAiB,GAAG,SAAS,IAAI,WAAW,IAAI,UAAU,IAAI,KAAK;IACzE,MAAM,sBAAsB,GAAG;AAC7B,UAAE;AACF,UAAE;AACF,cAAE;cACA,eAAe;AAEnB,IAAA,MAAM,UAAU,GAAG;AACjB,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,wBAAwB;AACnC,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,wBAAwB;AACnC,SAAA;AACD,QAAA,KAAK,EAAE;AACL,YAAA,GAAG,EAAE,OAAO;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,QAAQ,EAAE,wBAAwB;AACnC,SAAA;KACF;AAED,IAAA,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC;IAE/B,MAAM,iBAAiB,GAAG,kCAAkC;IAC5D,MAAM,eAAe,GAAG,iBAAiB;AAEzC,IAAA,QACEE,eAAA,CAAA,KAAA,EAAA,EACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAE,MAAM,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAA,GACjE,KAAK,EAAA,QAAA,EAAA,CAER,KAAK,KACJN,eAAC,UAAU,EAAA,EACT,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAC,MAAM,EAChB,cAAc,EAAE,cAAc,EAAA,CAC9B,CACH,EAEDM,eAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,iBAAiB,CAAC;oBAChB,IAAI;AACJ,oBAAA,eAAe,EAAE,sBAAsB;oBACvC,UAAU;oBACV,UAAU;iBACX,CAAC,EACF,mBAAmB,EACnB,SAAS,CACV,EACD,UAAU,EAAE,cAAc,EAC1B,WAAW,EAAE,eAAe,EAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,WAAW,EAAA,QAAA,EAAA,CAEpBN,cAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,YAAY,EACjB,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,UAAU,EACpB,QAAQ,EAAE,qBAAqB,EAC/B,SAAS,EAAC,QAAQ,EAAA,YAAA,EACN,KAAK,IAAI,aAAa,EAAA,CAClC,EAED,aAAa,CAAC,MAAM,KAAK,CAAC,IACzBM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,6DAA6D,EAAA,QAAA,EAAA,CAC1EN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sFAAsF,EAAA,QAAA,EACnGA,cAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAA,CAAI,EAAA,CACzC,EACNM,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,qBAAqB,EAAA,QAAA,EAAA,CAClCN,cAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,QAAQ,EACf,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,EAAA,QAAA,EAEzC;8CACG,QAAQ,IAAI;8CACZ,UAAU,IAAI,iBAAiB,GAC9B,EACN,MAAM,KACLM,eAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,2BAE7B,MAAM,CAAA,EAAA,CACZ,CACR,EACA,OAAO,KACNA,eAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,2BAE7B,cAAc,CAAC,OAAO,CAAC,CAAA,EAAA,CAC7B,CACR,CAAA,EAAA,CACG,CAAA,EAAA,CACF,KAENA,eAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,4BAA4B,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,CAC/D,aAAa,CAAC,GAAG,CAAC,CAAC,YAAY,KAAI;AAClC,gCAAA,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY;gCAC3D,MAAM,QAAQ,GACZ,IAAI;AACJ,oCAAA,IAAI,EAAE,IAAI;AACV,qCAAC,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;AAClD,gCAAA,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,EAAE,IAAI;AACnC,gCAAA,MAAM,UAAU,GAAG,WAAW,IAAI,OAAO;gCACzC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC;gCACtC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC;;;;AAIlC,gCAAA,MAAM,iBAAiB,GACrB,UAAU,IAAI,OAAO,KAAK,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;gCAEvD,QACEA,yBAEE,SAAS,EAAC,sHAAsH,EAAA,QAAA,EAAA,CAE/H,iBAAiB,IAChBN,eAAC,YAAY,EAAA,EAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAA,CAAI,IAC3C,UAAU,IAAI,KAAK,IACrBA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8IAA8I,EAAA,QAAA,EAC3JA,eAAC,IAAI,EAAA,EACH,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,iCAAiC,GAC3C,EAAA,CACE,KAENA,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8IAA8I,EAAA,QAAA,EAC3JA,cAAA,CAAC,IAAI,EAAA,EACH,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,EACR,SAAS,EAAC,iCAAiC,EAAA,CAC3C,GACE,CACP,EAEDM,yBAAK,SAAS,EAAC,oCAAoC,EAAA,QAAA,EAAA,CACjDN,cAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EACtCA,eAAC,IAAI,EAAA,EACH,OAAO,EAAC,MAAM,EACd,IAAI,EAAC,OAAO,EACZ,MAAM,EAAC,QAAQ,EACf,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,EAC1C,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,UAAU,EACpB,KAAK,EAAE,QAAQ,EAAA,QAAA,EAEd,QAAQ,EAAA,CACJ,GACH,EACL,QAAQ,KAAK,SAAS,KACrBA,cAAA,CAAC,IAAI,EAAA,EACH,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,OAAO,EACZ,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,EACxC,EAAE,EAAC,MAAM,YAER,cAAc,CAAC,QAAQ,CAAC,EAAA,CACpB,CACR,IACG,EAEL,CAAC,UAAU,KACVA,cAAA,CAAC,UAAU,EAAA,EACT,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,EAAE,YAAY,CAAC,EAAA,YAAA,EACrC,CAAA,OAAA,EAAU,QAAQ,CAAA,CAAE,EAAA,CAChC,CACH,CAAA,EAAA,EAxDI,EAAE,CAyDH;AAEV,4BAAA,CAAC,CAAC,EAED,QAAQ,IAAI,CAAC,UAAU,KACtBA,cAAA,CAAC,MAAM,EAAA,EACL,OAAO,EAAC,UAAU,EAClB,KAAK,EAAC,SAAS,EACf,IAAI,EAAC,OAAO,EACZ,OAAO,EAAE,WAAW,EACpB,WAAW,EAAEA,cAAA,CAAC,IAAI,EAAA,EAAC,IAAI,EAAC,KAAK,EAAC,IAAI,EAAE,EAAE,EAAA,CAAI,EAC1C,SAAS,EAAC,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,CAGf,CACV,CAAA,EAAA,CACG,CACP,CAAA,EAAA,CACG,EAENA,cAAA,CAAC,UAAU,EAAA,EACT,UAAU,EAAE,iBAAiB,IAAI,SAAS,EAC1C,eAAe,EACb,sBAAsB,KAAK;AACzB,sBAAE;AACF,sBAAE,sBAAsB,EAE5B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,EACtB,SAAS,EAAC,MAAM,EAAA,CAChB,CAAA,EAAA,CACE;AAEV,CAAC;AAGH,SAAS,CAAC,WAAW,GAAG,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}