infinity-ui-elements 1.7.1 → 1.7.2

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/utils.ts","../src/components/Text/Text.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/lib/icons.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../src/components/Divider/Divider.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Link/Link.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/Modal/Modal.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/TextField/TextField.tsx","../src/components/SearchableDropdown/SearchableDropdown.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/tableVariants.ts","../src/components/Table/TableHeader.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/DetailPanel.tsx","../src/components/Table/tableHelpers.tsx","../src/components/Table/Table.tsx","../src/components/Table/TableDetailPanel.tsx","../src/components/Table/TableCellTypes.tsx","../src/components/TabItem/TabItem.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { 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 { 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\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 },\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 },\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?: \"a1\" | \"a2\" | \"a3\" | \"a4\" | \"a5\";\n /**\n * The size of the avatar\n */\n size?: \"small\" | \"medium\";\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 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 avatarElement = (\n <div className=\"relative inline-block\">\n <div\n className={cn(avatarVariants({ color, size }), className)}\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 { 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:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\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 },\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-6 py-2 rounded-medium text-body-medium-medium\",\n large: \"md:h-[44px] px-6 rounded-xlarge 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 // Secondary variant colors\n {\n variant: \"secondary\",\n color: \"primary\",\n class: `\n border-action-outline-info-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 // 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 // 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?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\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 buttonContent = (\n <>\n {isLoading && !isIconOnly && (\n <PulseLoader\n color={`var(--color-action-ink-${color}-normal)`}\n size={10}\n />\n )}\n {isLoading && isIconOnly && (\n <ClipLoader\n color={`var(--color-action-ink-${color}-normal)`}\n size={20}\n />\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 { 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\";\nimport { Text } from \"../Text\";\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 textSize: \"xsmall\" as const,\n iconSize: 12,\n gap: \"gap-1\",\n },\n medium: {\n textSize: \"small\" as const,\n iconSize: 14,\n gap: \"gap-1\",\n },\n large: {\n textSize: \"medium\" as const,\n iconSize: 16,\n gap: \"gap-1.5\",\n },\n };\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 \"disabled\";\n if (validationState === \"positive\") return \"positive\";\n if (validationState === \"negative\") return \"negative\";\n if (validationState === \"default\") return \"default\";\n return \"default\";\n };\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 <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"regular\"\n color={getTextColor()}\n className={cn(\n \"italic font-size-100 leading-100\",\n helperTextClassName\n )}\n >\n {helperText}\n </Text>\n </div>\n )}\n\n {trailingText && (\n <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"regular\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n className={cn(\n \"font-size-100 leading-100 shrink-0\",\n trailingTextClassName\n )}\n >\n {trailingText}\n </Text>\n )}\n </div>\n );\n }\n);\n\nFormFooter.displayName = \"FormFooter\";\n\nexport { FormFooter };\n","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\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 * 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\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] rounded-small border-[1.5px]\",\n medium: \"w-[16px] h-[16px] rounded-small border-[1.5px]\",\n large: \"w-[20px] h-[20px] rounded-medium border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover focus:ring-2 ring-action-outline-negative-faded-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isIndeterminate: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"border-action-outline-neutral-faded hover:bg-action-fill-neutral-faded hover:border-action-outline-neutral-faded\",\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover border-action-fill-primary-default\",\n },\n // Checked or Indeterminate state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n // Indeterminate state - none validation\n {\n isIndeterminate: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default border-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover\",\n },\n // Indeterminate state - error validation (same as checked error)\n {\n isIndeterminate: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isIndeterminate: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the checkbox\n */\n label?: string;\n /**\n * Error text to display below the checkbox\n */\n errorText?: string;\n /**\n * Size of the checkbox\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the checkbox\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the checkbox is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the checkbox is in an indeterminate state\n */\n isIndeterminate?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isIndeterminate = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n 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.5\",\n labelSize: \"text-body-medium-regular\",\n iconSize: 12,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n iconSize: 14,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", 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\nexport interface CounterProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n VariantProps<typeof counterVariants> {\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\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\";\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 { 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 },\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 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?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\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 { 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 id: string | number;\n title: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n onClick?: () => void;\n}\n\nexport interface DropdownMenuProps {\n /**\n * Items to display in the dropdown\n */\n items?: DropdownMenuItem[];\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 * 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 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 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 (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.id}\n title={item.title}\n description={item.description}\n leadingIcon={item.leadingIcon}\n trailingIcon={item.trailingIcon}\n showChevron={showChevron}\n isDisabled={item.isDisabled}\n isSelected={index === focusedIndex}\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\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 {!disableFooter && (\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 * 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\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n className,\n trigger,\n items = [],\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 ...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 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 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 { 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 { Text } from \"../Text\";\nimport { Tooltip } from \"../Tooltip\";\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 * 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 * 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 linkText,\n linkHref,\n onLinkClick,\n htmlFor,\n className,\n labelClassName,\n linkClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textSize: \"xsmall\" as const,\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textSize: \"small\" as const,\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textSize: \"medium\" as const,\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 <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"semibold\"\n color=\"subtle\"\n >\n {label}\n </Text>\n {isRequired && (\n <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"semibold\"\n color=\"negative\"\n className=\"ml-0.5\"\n >\n *\n </Text>\n )}\n {isOptional && (\n <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"regular\"\n className=\"text-surface-ink-neutral-muted italic ml-1\"\n >\n (optional)\n </Text>\n )}\n </label>\n {infoDescription && (\n <Tooltip description={infoDescription} heading={infoHeading}>\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-surface-ink-neutral-muted\"\n >\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M7 6V10M7 4.5V4\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </svg>\n </Tooltip>\n )}\n </div>\n\n {linkText && (\n <a\n href={linkHref}\n onClick={onLinkClick}\n className={cn(\n \"text-surface-ink-primary-normal hover:text-surface-ink-primary-hover transition-colors cursor-pointer font-display font-semibold leading-tight shrink-0\",\n size === \"small\" && \"text-xs\",\n size === \"medium\" && \"text-xs\",\n size === \"large\" && \"text-sm\",\n linkClassName\n )}\n >\n {linkText}\n </a>\n )}\n </div>\n );\n }\n);\n\nFormHeader.displayName = \"FormHeader\";\n\nexport { FormHeader };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { X } from \"lucide-react\";\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) 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) {\n onClose();\n }\n };\n\n // Don't render if not open\n if (!isOpen) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Modal Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative w-full bg-white rounded-large shadow-xl transition-all\",\n \"flex flex-col max-h-[90vh]\",\n sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4 px-6 pt-6\",\n !description && \"pb-4\",\n description && \"pb-2\",\n headerClassName\n )}\n >\n <div className=\"flex-1\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"subtle\"\n className=\"mt-1\"\n >\n {description}\n </Text>\n )}\n </div>\n\n {showCloseButton && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"shrink-0 rounded-medium p-1.5 transition-colors\",\n \"text-surface-ink-neutral-muted hover:text-surface-ink-neutral-default\",\n \"hover:bg-surface-fill-neutral-faded focus:outline-none focus:ring-2\",\n \"focus:ring-action-outline-primary-default focus:ring-offset-2\"\n )}\n aria-label=\"Close modal\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n )}\n </div>\n )}\n\n {/* Header with close button only (no title/description) */}\n {!hasHeader && showCloseButton && (\n <div className=\"absolute top-4 right-4 z-10\">\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"shrink-0 rounded-medium p-1.5 transition-colors\",\n \"text-surface-ink-neutral-muted hover:text-surface-ink-neutral-default\",\n \"hover:bg-surface-fill-neutral-faded focus:outline-none focus:ring-2\",\n \"focus:ring-action-outline-primary-default focus:ring-offset-2\"\n )}\n aria-label=\"Close modal\"\n >\n <X className=\"h-5 w-5\" />\n </button>\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 extends DropdownMenuItem {\n value: string | number;\n label?: string;\n}\n\nconst selectVariants = cva(\n \"relative flex items-center gap-2 border rounded-medium transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface SelectProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"prefix\"> {\n /**\n * Options to display in the select dropdown\n */\n options?: SelectOption[];\n /**\n * Selected value (controlled)\n */\n value?: string | number;\n /**\n * Default selected value (uncontrolled)\n */\n defaultValue?: string | number;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string | number, option: SelectOption) => void;\n /**\n * Placeholder text when no value is selected\n */\n placeholder?: string;\n /**\n * Label for the select\n */\n label?: string;\n /**\n * Helper text below the select\n */\n helperText?: string;\n /**\n * Error text (overrides helperText when present)\n */\n errorText?: string;\n /**\n * Success text (overrides helperText when present)\n */\n successText?: string;\n /**\n * Validation state for the select\n */\n validationState?: \"none\" | \"positive\" | \"negative\";\n /**\n * Whether the select is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the select is required\n */\n isRequired?: boolean;\n /**\n * Whether the select is optional\n */\n isOptional?: boolean;\n /**\n * Whether the select is in loading state\n */\n isLoading?: boolean;\n /**\n * Size of the select\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Prefix element (icon or text)\n */\n prefix?: React.ReactNode;\n /**\n * Suffix element (icon or text)\n */\n suffix?: React.ReactNode;\n /**\n * Show clear button when value is selected\n */\n showClearButton?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom class for the container\n */\n containerClassName?: string;\n /**\n * Custom class for the label\n */\n labelClassName?: string;\n /**\n * Custom class for the trigger button\n */\n triggerClassName?: string;\n /**\n * Custom class for the dropdown menu\n */\n menuClassName?: string;\n /**\n * Width of the dropdown menu\n */\n menuWidth?: \"auto\" | \"full\" | string;\n /**\n * Section heading for the dropdown\n */\n sectionHeading?: string;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Show search icon in empty state\n */\n emptyIcon?: React.ReactNode;\n /**\n * Info heading for tooltip\n */\n infoHeading?: string;\n /**\n * Info description for tooltip\n */\n infoDescription?: string;\n /**\n * Link text\n */\n linkText?: string;\n /**\n * Link href\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n isLoading = false,\n size = \"medium\",\n prefix,\n suffix,\n showClearButton = false,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n menuClassName,\n menuWidth = \"full\",\n sectionHeading,\n emptyTitle = \"No options available\",\n emptyDescription = \"There are no options to select from.\",\n emptyIcon,\n infoHeading,\n infoDescription,\n 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 selectRef = 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 // 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 ...option,\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 linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={selectRef}\n className={cn(\n selectVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled && !isLoading ? toggleOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {isLoading\n ? \"Loading...\"\n : selectedOption?.label || selectedOption?.title || 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 className=\"absolute z-50 left-0 right-0 top-full mt-1\">\n <DropdownMenu\n ref={ref}\n items={menuItems}\n sectionHeading={sectionHeading}\n isEmpty={options.length === 0}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyIcon={emptyIcon}\n disableFooter={true}\n onClose={() => handleOpenChange(false)}\n className={menuClassName}\n width={widthStyle}\n />\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport { selectVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Select, type SelectOption } from \"../Select\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\n\nconst paginationVariants = cva(\n \"flex items-center gap-4 font-display text-body-medium-medium\",\n {\n variants: {\n size: {\n small: \"text-xs gap-2\",\n medium: \"text-sm gap-4\",\n large: \"text-base gap-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Current page number (1-indexed)\n */\n currentPage?: number;\n /**\n * Total number of pages\n */\n totalPages: number;\n /**\n * Rows per page value\n */\n rowsPerPage?: number;\n /**\n * Available options for rows per page\n */\n rowsPerPageOptions?: number[];\n /**\n * Show rows per page selector\n */\n showRowsPerPage?: boolean;\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n /**\n * Callback when rows per page changes\n */\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n /**\n * Size of the pagination controls\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Disable the pagination controls\n */\n isDisabled?: boolean;\n /**\n * Custom text for \"Row per page\" label\n */\n rowsPerPageLabel?: string;\n /**\n * Custom text for \"of\" label\n */\n ofLabel?: string;\n /**\n * Custom text for \"Prev\" button\n */\n prevLabel?: string;\n /**\n * Custom text for \"Next\" button\n */\n nextLabel?: string;\n /**\n * Show prev/next buttons\n */\n showPrevNext?: boolean;\n /**\n * Show page jumper (dropdown) instead of numbered buttons\n */\n showPageJumper?: boolean;\n /**\n * Show page number (used with showPageJumper=false)\n */\n showPageNumber?: boolean;\n /**\n * Page status for displaying page numbers\n */\n pageStatus?: \"none\" | \"first\" | \"middle\" | \"last\";\n /**\n * Maximum number of page buttons to show\n */\n maxPageButtons?: number;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage: controlledCurrentPage,\n totalPages,\n rowsPerPage: controlledRowsPerPage,\n rowsPerPageOptions = [5, 10, 15, 20, 25, 50, 100],\n showRowsPerPage = true,\n onPageChange,\n onRowsPerPageChange,\n size = \"medium\",\n isDisabled = false,\n rowsPerPageLabel = \"Row per page\",\n ofLabel = \"of\",\n prevLabel = \"Prev\",\n nextLabel = \"Next\",\n showPrevNext = true,\n showPageJumper = true,\n showPageNumber = true,\n pageStatus,\n maxPageButtons = 5,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCurrentPage, setUncontrolledCurrentPage] =\n React.useState(1);\n const [uncontrolledRowsPerPage, setUncontrolledRowsPerPage] =\n React.useState(rowsPerPageOptions[0] || 10);\n\n const currentPage =\n controlledCurrentPage !== undefined\n ? controlledCurrentPage\n : uncontrolledCurrentPage;\n\n const rowsPerPage =\n controlledRowsPerPage !== undefined\n ? controlledRowsPerPage\n : uncontrolledRowsPerPage;\n\n // Generate rows per page options\n const rowsPerPageSelectOptions: SelectOption[] = rowsPerPageOptions.map(\n (value) => {\n const valueStr = String(value);\n // Pad with leading zero if needed (manual implementation for compatibility)\n const label = valueStr.length < 2 ? \"0\" + valueStr : valueStr;\n return {\n id: `rows-${valueStr}`,\n value: valueStr,\n label: label,\n title: valueStr,\n };\n }\n );\n\n // Generate page options\n const pageOptions: SelectOption[] = Array.from(\n { length: totalPages },\n (_, i) => {\n const pageNum = i + 1;\n const pageStr = String(pageNum);\n return {\n id: `page-${pageStr}`,\n value: pageStr,\n label: pageStr,\n title: `Page ${pageNum}`,\n };\n }\n );\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > totalPages) return;\n if (controlledCurrentPage === undefined) {\n setUncontrolledCurrentPage(newPage);\n }\n onPageChange?.(newPage);\n };\n\n const handleRowsPerPageChange = (value: string | number) => {\n const newRowsPerPage =\n typeof value === \"string\" ? parseInt(value) : value;\n if (controlledRowsPerPage === undefined) {\n setUncontrolledRowsPerPage(newRowsPerPage);\n }\n onRowsPerPageChange?.(newRowsPerPage);\n // Reset to first page when rows per page changes\n handlePageChange(1);\n };\n\n const handlePrevPage = () => {\n handlePageChange(currentPage - 1);\n };\n\n const handleNextPage = () => {\n handlePageChange(currentPage + 1);\n };\n\n const isPrevDisabled = currentPage <= 1 || isDisabled;\n const isNextDisabled = currentPage >= totalPages || isDisabled;\n\n const selectSize =\n size === \"small\" ? \"small\" : size === \"large\" ? \"large\" : \"medium\";\n\n // Map pagination size to button size\n const buttonSize =\n size === \"small\" ? \"xsmall\" : size === \"large\" ? \"large\" : \"small\";\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= maxPageButtons) {\n // Show all pages if total is less than max\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n // Determine page status if not provided\n const effectivePageStatus =\n pageStatus ||\n (currentPage <= 2\n ? \"first\"\n : currentPage >= totalPages - 1\n ? \"last\"\n : \"middle\");\n\n if (effectivePageStatus === \"first\") {\n // Show first pages: 1, 2, 3, 4, 5\n return Array.from(\n { length: Math.min(maxPageButtons, totalPages) },\n (_, i) => i + 1\n );\n } else if (effectivePageStatus === \"last\") {\n // Show last pages\n const start = totalPages - maxPageButtons + 1;\n return Array.from({ length: maxPageButtons }, (_, i) => start + i);\n } else if (effectivePageStatus === \"middle\") {\n // Show pages around current page\n const halfMax = Math.floor(maxPageButtons / 2);\n let start = currentPage - halfMax;\n let end = currentPage + halfMax;\n\n // Adjust if at boundaries\n if (start < 1) {\n end += 1 - start;\n start = 1;\n }\n if (end > totalPages) {\n start -= end - totalPages;\n end = totalPages;\n }\n\n start = Math.max(1, start);\n end = Math.min(totalPages, end);\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n\n // pageStatus === \"none\" - don't show any page numbers\n return [];\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div\n ref={ref}\n className={cn(paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {rowsPerPageLabel}\n </span>\n <div className=\"w-[80px]\">\n <Select\n value={rowsPerPage.toString()}\n options={rowsPerPageSelectOptions}\n onChange={handleRowsPerPageChange}\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3 ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<ChevronLeft className=\"w-4 h-4\" />}\n aria-label=\"Previous page\"\n >\n {prevLabel}\n </Button>\n )}\n\n {showPageJumper ? (\n // Show page dropdown selector\n <div className=\"flex items-center gap-3\">\n <div className=\"w-[80px]\">\n <Select\n value={currentPage.toString()}\n options={pageOptions}\n onChange={(value) =>\n handlePageChange(\n typeof value === \"string\" ? parseInt(value) : value\n )\n }\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {ofLabel} {totalPages}\n </span>\n </div>\n ) : (\n // Show numbered page buttons\n showPageNumber &&\n pageNumbers.length > 0 && (\n <ButtonGroup\n variant=\"separated\"\n size={buttonSize}\n isDisabled={isDisabled}\n value={currentPage}\n onChange={(value) => handlePageChange(value as number)}\n >\n {pageNumbers.map((pageNum) => (\n <Button\n key={pageNum}\n value={pageNum}\n variant=\"tertiary\"\n color=\"primary\"\n aria-label={`Page ${pageNum}`}\n aria-current={pageNum === currentPage ? \"page\" : undefined}\n >\n {pageNum}\n </Button>\n ))}\n </ButtonGroup>\n )\n )}\n\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handleNextPage}\n isDisabled={isNextDisabled}\n trailingIcon={<ChevronRight className=\"w-4 h-4\" />}\n aria-label=\"Next page\"\n >\n {nextLabel}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { paginationVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst radioVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 border transition-all cursor-pointer rounded-full\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] border-[1.5px]\",\n medium: \"w-[16px] h-[16px] border-[1.5px]\",\n large: \"w-[20px] h-[20px] border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n isFocused: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class: `border-action-outline-neutral-faded \n hover:bg-action-fill-neutral-faded \n hover:border-action-outline-neutral-faded\n `,\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover border-action-fill-primary-default hover:border-action-fill-primary-hover\",\n },\n // Checked state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default hover:bg-action-fill-negative-hover border-action-fill-negative-default hover:border-action-fill-negative-hover\",\n },\n // Focused state - none validation\n {\n isFocused: true,\n validationState: \"none\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-primary-faded\",\n },\n // Focused state - error validation\n {\n isFocused: true,\n validationState: \"error\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-negative-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isDisabled: false,\n isFocused: false,\n },\n }\n);\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the radio button\n */\n label?: string;\n /**\n * Error text to display below the radio button\n */\n errorText?: string;\n /**\n * Size of the radio button\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the radio button\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio button is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled) {\n setShowRipple(true);\n setTimeout(() => {\n setShowRipple(false);\n }, 360); // Match animation duration (0.36s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current?.click();\n }\n };\n\n const handleFocus = () => {\n if (!isDisabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n innerCircleSize: 6,\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 7,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 8,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"radio\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n radioVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n className\n )}\n >\n {/* Inner White Circle (creates ring effect) */}\n {isChecked && (\n <div\n className=\"rounded-full bg-white transition-all\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport { Radio, radioVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n showClearButton?: boolean;\n onClear?: () => void;\n containerClassName?: string;\n labelClassName?: string;\n inputClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n prefix,\n suffix,\n showClearButton = false,\n infoDescription,\n infoHeading,\n 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 linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textFieldVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <input\n ref={ref}\n value={inputValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display\",\n inputClassName\n )}\n {...props}\n />\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { TextField, textFieldVariants };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/utils\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\n\nexport interface SearchableDropdownItem extends DropdownMenuItem {\n value?: string;\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\nconst defaultFilter = (\n item: SearchableDropdownItem,\n query: string\n): boolean => {\n const searchQuery = query.toLowerCase();\n return (\n item.title.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 = \"Primary\",\n secondaryButtonText = \"Secondary\",\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 containerClassName,\n ...textFieldProps\n },\n ref\n ) => {\n const [uncontrolledSearchValue, setUncontrolledSearchValue] =\n React.useState(defaultSearchValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [focusedIndex, setFocusedIndex] = React.useState(-1);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Update position when dropdown opens or window resizes\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const searchValue =\n controlledSearchValue !== undefined\n ? controlledSearchValue\n : uncontrolledSearchValue;\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newValue);\n }\n onSearchChange?.(newValue);\n\n // Show dropdown if minimum search length is met\n if (newValue.length >= minSearchLength) {\n setIsOpen(true);\n } else {\n setIsOpen(false);\n }\n };\n\n const handleFocus = () => {\n if (showOnFocus && searchValue.length >= minSearchLength) {\n setIsOpen(true);\n }\n };\n\n const handleItemSelect = (item: SearchableDropdownItem) => {\n onItemSelect?.(item);\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(item.title);\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 // 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 < filteredItems.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 && filteredItems[focusedIndex]) {\n handleItemSelect(filteredItems[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 const itemsWithHandlers = filteredItems.map((item) => ({\n ...item,\n onClick: () => handleItemSelect(item),\n }));\n\n const showDropdown = isOpen && searchValue.length >= minSearchLength;\n\n const dropdownMenu = showDropdown && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n top: `${position.top + 8}px`,\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: 9999,\n }}\n >\n <DropdownMenu\n items={itemsWithHandlers}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={filteredItems.length === 0}\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 footerLayout={footerLayout}\n onClose={() => setIsOpen(false)}\n focusedIndex={focusedIndex}\n className={dropdownClassName}\n width={dropdownWidth === \"full\" ? \"full\" : \"auto\"}\n />\n </div>\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n <TextField\n ref={inputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\n </div>\n\n {/* Dropdown Menu Portal */}\n {typeof document !== \"undefined\" &&\n dropdownMenu &&\n createPortal(dropdownMenu, document.body)}\n </>\n );\n }\n);\n\nSearchableDropdown.displayName = \"SearchableDropdown\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SkeletonVariant = \"rect\" | \"text\" | \"title\" | \"circle\";\ntype SkeletonAnimation = \"pulse\" | \"none\";\ntype SkeletonRounded = \"none\" | \"small\" | \"medium\" | \"large\" | \"full\";\n\nconst variantDefaults: Record<\n SkeletonVariant,\n { height: number | string; className: string }\n> = {\n rect: { height: 16, className: \"w-full rounded-large\" },\n text: { height: 12, className: \"w-full rounded-large\" },\n title: { height: 20, className: \"w-full rounded-large\" },\n circle: { height: 40, className: \"rounded-full aspect-square\" },\n};\n\nconst roundedClassNames: Record<SkeletonRounded, string> = {\n none: \"rounded-none\",\n small: \"rounded-small\",\n medium: \"rounded-medium\",\n large: \"rounded-large\",\n full: \"rounded-full\",\n};\n\nconst animationClassNames: Record<SkeletonAnimation, string | undefined> = {\n pulse: \"animate-skeleton\",\n none: undefined,\n};\n\nconst normalizeCssValue = (value?: number | string): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n return typeof value === \"number\" ? `${value}px` : value;\n};\n\nconst getLineWidths = (\n count: number,\n provided?: Array<number | string>\n): Array<string | undefined> => {\n if (provided && provided.length) {\n return Array.from({ length: count }, (_, index) =>\n normalizeCssValue(provided[index] ?? provided[provided.length - 1])\n );\n }\n\n if (count === 1) {\n return [\"100%\"];\n }\n\n return Array.from({ length: count }, (_, index) =>\n index === count - 1 ? \"60%\" : \"100%\"\n );\n};\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Visual variant that controls default sizing and shape.\n */\n variant?: SkeletonVariant;\n /**\n * Animation style applied to the skeleton.\n */\n animation?: SkeletonAnimation;\n /**\n * Number of lines to render for text-based skeletons.\n */\n lines?: number;\n /**\n * Optional width overrides for each line.\n */\n lineWidths?: Array<number | string>;\n /**\n * Gap between lines when rendering multiple.\n */\n lineGap?: number | string;\n /**\n * Width of the skeleton block (overrides the variant default).\n */\n width?: number | string;\n /**\n * Height of the skeleton block (overrides the variant default).\n */\n height?: number | string;\n /**\n * Additional class name applied to the container when multiple lines are rendered.\n */\n containerClassName?: string;\n /**\n * Optional inline styles for the container when rendering multiple lines.\n */\n containerStyle?: React.CSSProperties;\n /**\n * Border radius override for rectangular variants.\n */\n rounded?: SkeletonRounded;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n containerClassName,\n containerStyle,\n variant = \"rect\",\n animation = \"pulse\",\n lines = 1,\n lineWidths,\n lineGap = \"0.5rem\",\n width,\n height,\n rounded = \"large\",\n style,\n ...props\n },\n ref\n ) => {\n const resolvedLines = Math.max(1, lines);\n const baseVariant = variantDefaults[variant];\n\n const resolvedHeight =\n normalizeCssValue(height) ?? normalizeCssValue(baseVariant.height);\n const resolvedWidth =\n normalizeCssValue(width) ??\n (variant === \"circle\" ? resolvedHeight : undefined);\n\n const skeletonClasses = cn(\n \"block bg-surface-fill-neutral-subtle\",\n animationClassNames[animation],\n variant !== \"circle\" && roundedClassNames[rounded],\n baseVariant.className,\n className\n );\n\n if ((variant === \"text\" || variant === \"title\") && resolvedLines > 1) {\n const widths = getLineWidths(resolvedLines, lineWidths);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col\",\n containerClassName,\n animation === \"pulse\" ? \"animate-none\" : undefined\n )}\n style={{\n gap: normalizeCssValue(lineGap) ?? \"0.5rem\",\n ...containerStyle,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n >\n {widths.map((lineWidth, index) => (\n <span\n key={`skeleton-line-${index}`}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: lineWidth ?? resolvedWidth ?? \"100%\",\n ...style,\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: resolvedWidth ?? style?.width,\n ...style,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchVariants = cva(\n \"relative inline-flex items-center shrink-0 cursor-pointer rounded-full transition-all duration-200\",\n {\n variants: {\n size: {\n small: \"w-[20px] h-[12px]\",\n medium: \"w-[28px] h-[16px]\",\n large: \"w-[36px] h-[20px]\",\n },\n isChecked: {\n true: \"bg-action-fill-primary-default \",\n false: \"bg-surface-fill-neutral-subtle\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n isChecked: true,\n isDisabled: false,\n class: \"hover:bg-action-fill-primary-hover \",\n },\n {\n isChecked: false,\n isDisabled: false,\n class: \"hover:bg-action-fill-neutral-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n isDisabled: false,\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-neutral-00 shadow-sm transition-transform duration-200\",\n {\n variants: {\n size: {\n small: \"h-[8px] w-[8px]\",\n medium: \"h-[12px] w-[12px]\",\n large: \"h-[16px] w-[16px]\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Small size translations\n {\n size: \"small\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"small\",\n isChecked: true,\n class: \"translate-x-[10px]\",\n },\n // Medium size translations\n {\n size: \"medium\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"medium\",\n isChecked: true,\n class: \"translate-x-[14px]\",\n },\n // Large size translations\n {\n size: \"large\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"large\",\n isChecked: true,\n class: \"translate-x-[18px]\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the switch\n */\n label?: string;\n /**\n * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the switch is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the switch track\n */\n trackClassName?: string;\n /**\n * Custom class name for the switch thumb\n */\n thumbClassName?: string;\n}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = \"medium\",\n isDisabled = false,\n containerClassName,\n labelClassName,\n trackClassName,\n thumbClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"switch\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n <div\n className={cn(\n switchVariants({\n size,\n isChecked,\n isDisabled,\n }),\n trackClassName,\n className,\n \"focus-visible:ring-2 focus-visible:ring-action-outline-primary-faded focus-visible:ring-offset-2\"\n )}\n >\n <span\n className={cn(\n switchThumbVariants({\n size,\n isChecked,\n }),\n thumbClassName\n )}\n />\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\"w-full border-collapse\", {\n variants: {\n variant: {\n default: \"border-separate border-spacing-0\",\n bordered: \"border-separate border-spacing-0\",\n striped: \"border-separate border-spacing-0\",\n },\n size: {\n small: \"text-body-small-medium\",\n medium: \"text-body-medium-medium\",\n large: \"text-body-large-medium\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"medium\",\n },\n});\n\nexport const tableHeaderVariants = cva(\n \"text-body-medium-regular text-left text-surface-ink-neutral-normal border-b border-surface-outline-neutral-muted\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[32px]\",\n medium: \"px-4 py-3 h-[40px]\",\n large: \"px-6 py-4 h-[48px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport const tableCellVariants = cva(\n \"text-body-medium-regular border-b border-surface-outline-neutral-muted text-surface-ink-neutral-normal transition-colors duration-150\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[40px]\",\n medium: \"px-4 py-3 h-[72px]\",\n large: \"px-6 py-4 h-[56px]\",\n },\n state: {\n default: \"\",\n focus: \"\",\n // focus:\n // \"outline outline-2 outline-action-outline-primary-default outline-offset-[-2px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n state: \"default\",\n },\n }\n);\n","import * as React from \"react\";\nimport {\n flexRender,\n type Header,\n type HeaderGroup,\n} from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableHeaderVariants } from \"./tableVariants\";\n\ninterface TableHeaderProps<TData> {\n headerGroups: HeaderGroup<TData>[];\n enableRowSelection: boolean;\n enableSelectAll: boolean;\n showHeaderBackground: boolean;\n stickyHeader: boolean;\n size: \"small\" | \"medium\" | \"large\";\n headerClassName?: string;\n isDetailPanelOpen: boolean;\n visibleHeadersCount: number;\n onToggleAllRows: (e?: unknown) => void;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n}\n\nexport function TableHeader<TData>({\n headerGroups,\n enableRowSelection,\n enableSelectAll,\n showHeaderBackground,\n stickyHeader,\n size,\n headerClassName,\n isDetailPanelOpen,\n visibleHeadersCount,\n onToggleAllRows,\n isAllRowsSelected,\n isSomeRowsSelected,\n}: TableHeaderProps<TData>) {\n return (\n <thead\n className={cn(\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n stickyHeader && \"sticky top-0 z-10\"\n )}\n >\n {headerGroups.map((headerGroup) => (\n <tr key={headerGroup.id}>\n {enableRowSelection && enableSelectAll && (\n <th\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n \"w-10 rounded-tl-xlarge rounded-bl-xlarge\",\n headerClassName\n )}\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 shouldHideColumn =\n isDetailPanelOpen && index >= visibleHeadersCount;\n const isLastVisibleColumn = isDetailPanelOpen\n ? index === visibleHeadersCount - 1\n : 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 !enableRowSelection &&\n index === 0 &&\n \"rounded-tl-xlarge rounded-bl-xlarge\",\n isLastVisibleColumn && \"rounded-tr-xlarge rounded-br-xlarge\",\n header.column.columnDef.meta?.headerClassName,\n headerClassName,\n \"transition-all duration-300 ease-in-out\",\n shouldHideColumn\n ? \"opacity-0 translate-x-8 pointer-events-none\"\n : \"opacity-100 translate-x-0\"\n )}\n style={{\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize,\n maxWidth: header.column.columnDef.maxSize,\n }}\n >\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() && \"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 </thead>\n );\n}\n","import * as React from \"react\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableCellVariants } from \"./tableVariants\";\n\ninterface TableBodyProps<TData> {\n rows: Row<TData>[];\n enableRowSelection: boolean;\n size: \"small\" | \"medium\" | \"large\";\n variant: \"default\" | \"bordered\" | \"striped\";\n showRowHover: boolean;\n cellClassName?: string;\n isDetailPanelOpen: boolean;\n visibleHeadersCount: number;\n effectiveSelectedRowId: string | null;\n onRowClick?: (row: TData) => void;\n getRowClassName: (row: TData) => string;\n handleRowClick: (row: TData, rowId: string) => void;\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 isDetailPanelOpen,\n visibleHeadersCount,\n effectiveSelectedRowId,\n onRowClick,\n getRowClassName,\n handleRowClick,\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=\"bg-surface-fill-neutral-intense\">\n {rows.map((row) => {\n const isRowSelected = row.id === effectiveSelectedRowId;\n const isRowHovered = hoveredRow === row.id;\n const handleClick = () => handleRowClick(row.original, row.id);\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 isRowSelected && \"bg-action-fill-primary-faded\",\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 >\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 shouldHideColumn =\n isDetailPanelOpen && cellIndex >= visibleHeadersCount;\n const isCellFocused =\n focusedCell?.rowId === row.id &&\n focusedCell?.cellId === cell.id;\n const cellState = isCellFocused ? \"focus\" : \"default\";\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 \"transition-all duration-300 ease-in-out\",\n shouldHideColumn\n ? \"opacity-0 translate-x-8 pointer-events-none\"\n : \"opacity-100 translate-x-0\"\n )}\n style={{\n width: cell.column.getSize(),\n minWidth: cell.column.columnDef.minSize,\n maxWidth: cell.column.columnDef.maxSize,\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 { cn } from \"../../lib/utils\";\n\ninterface DetailPanelProps<TData> {\n isOpen: boolean;\n content: (data: TData) => React.ReactNode;\n data: TData | null;\n onClose: () => void;\n}\n\nexport function DetailPanel<TData>({\n isOpen,\n content,\n data,\n onClose,\n}: DetailPanelProps<TData>) {\n return (\n <div\n className={cn(\n \"absolute top-0 right-0 h-full z-20 transition-all duration-300 ease-in-out\",\n isOpen\n ? \"translate-x-0 opacity-100\"\n : \"translate-x-full opacity-0 pointer-events-none\"\n )}\n style={{ width: \"332px\", paddingLeft: \"12px\" }}\n >\n <div className=\"w-full h-full bg-white border border-surface-outline-neutral-muted rounded-tr-xlarge rounded-br-xlarge overflow-hidden\">\n <div className=\"w-full h-full overflow-auto\">\n {data && (\n <div className=\"relative h-full\">\n <button\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className=\"absolute top-4 right-4 z-10 p-2 rounded-medium hover:bg-surface-fill-neutral-faded transition-colors\"\n aria-label=\"Close detail panel\"\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=\"M12 4L4 12M4 4l8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n {content(data)}\n </div>\n )}\n </div>\n </div>\n </div>\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 { DetailPanel } from \"./DetailPanel\";\nimport { tableVariants } from \"./tableVariants\";\nimport {\n renderDefaultLoadingState,\n renderDefaultEmptyState,\n} from \"./tableHelpers\";\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 detailPanel?: (row: TData) => React.ReactNode;\n hideColumnsOnDetailOpen?: number;\n selectedRowId?: string;\n onRowSelectionChange?: (rowId: string | null) => void;\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 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 detailPanel,\n hideColumnsOnDetailOpen = 3,\n selectedRowId,\n onRowSelectionChange,\n ...props\n }: TableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // ==================== State ====================\n\n const [internalSelectedRowId, setInternalSelectedRowId] = React.useState<\n string | null\n >(null);\n const selectedRowIdRef = React.useRef<string | null>(null);\n\n const effectiveSelectedRowId =\n selectedRowId !== undefined ? selectedRowId : internalSelectedRowId;\n const isDetailPanelOpen = Boolean(effectiveSelectedRowId);\n\n // ==================== Effects ====================\n\n // Keep ref in sync\n React.useEffect(() => {\n selectedRowIdRef.current = effectiveSelectedRowId;\n }, [effectiveSelectedRowId]);\n\n // Clear selection if selected row is not in current data\n React.useEffect(() => {\n if (effectiveSelectedRowId) {\n const rowExists = table\n .getRowModel()\n .rows.some((r) => r.id === effectiveSelectedRowId);\n\n if (!rowExists) {\n if (selectedRowId === undefined) {\n setInternalSelectedRowId(null);\n }\n if (onRowSelectionChange) {\n onRowSelectionChange(null);\n }\n }\n }\n }, [\n table.getRowModel().rows,\n effectiveSelectedRowId,\n selectedRowId,\n onRowSelectionChange,\n ]);\n\n // ==================== Computed Values ====================\n\n const hasData = table.getRowModel().rows?.length > 0;\n const headerGroups = table.getHeaderGroups();\n const headers = headerGroups[0]?.headers || [];\n\n const visibleHeadersCount = React.useMemo(() => {\n return isDetailPanelOpen\n ? headers.length - hideColumnsOnDetailOpen\n : headers.length;\n }, [isDetailPanelOpen, headers.length, hideColumnsOnDetailOpen]);\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, rowId: string) => {\n const currentSelectedId = selectedRowIdRef.current;\n const newSelectedId = currentSelectedId === rowId ? null : rowId;\n\n if (selectedRowId === undefined) {\n setInternalSelectedRowId(newSelectedId);\n }\n\n if (onRowSelectionChange) {\n onRowSelectionChange(newSelectedId);\n }\n\n if (onRowClick) {\n onRowClick(row);\n }\n },\n [selectedRowId, onRowSelectionChange, onRowClick]\n );\n\n const getSelectedRowData = (): TData | null => {\n if (!effectiveSelectedRowId) return null;\n const row = table\n .getRowModel()\n .rows.find((r) => r.id === effectiveSelectedRowId);\n return row ? row.original : null;\n };\n\n const handleDetailPanelClose = () => {\n if (selectedRowId === undefined) {\n setInternalSelectedRowId(null);\n }\n if (onRowSelectionChange) {\n onRowSelectionChange(null);\n }\n };\n\n // ==================== Render Helpers ====================\n\n const renderLoadingState = () => {\n if (loadingComponent) return loadingComponent;\n return renderDefaultLoadingState({ colSpan: table.getAllColumns().length });\n };\n\n const renderEmptyState = () => {\n if (emptyComponent) return emptyComponent;\n return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });\n };\n\n // ==================== Render ====================\n\n return (\n <div ref={ref} className={cn(\"w-full\", wrapperClassName)} {...props}>\n <div\n className={cn(\n \"relative overflow-x-hidden\",\n maxHeight && \"overflow-y-auto\",\n containerClassName\n )}\n style={maxHeight ? { maxHeight } : undefined}\n >\n <table className={cn(tableVariants({ variant, size }), className)}>\n <TableHeader\n headerGroups={headerGroups}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n showHeaderBackground={showHeaderBackground}\n stickyHeader={stickyHeader}\n size={size || \"medium\"}\n headerClassName={headerClassName}\n isDetailPanelOpen={isDetailPanelOpen}\n visibleHeadersCount={visibleHeadersCount}\n onToggleAllRows={(e) => table.getToggleAllRowsSelectedHandler()(e)}\n isAllRowsSelected={table.getIsAllRowsSelected()}\n isSomeRowsSelected={table.getIsSomeRowsSelected()}\n />\n\n {isLoading ? (\n <tbody>{renderLoadingState()}</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 isDetailPanelOpen={isDetailPanelOpen}\n visibleHeadersCount={visibleHeadersCount}\n effectiveSelectedRowId={effectiveSelectedRowId}\n onRowClick={onRowClick}\n getRowClassName={getRowClassName}\n handleRowClick={handleRowClickInternal}\n />\n )}\n </table>\n\n {detailPanel && (\n <DetailPanel\n isOpen={isDetailPanelOpen}\n content={detailPanel}\n data={getSelectedRowData()}\n onClose={handleDetailPanelClose}\n />\n )}\n </div>\n </div>\n );\n}\n\n// ==================== Export ====================\n\nexport const Table = React.forwardRef(TableComponent) as <\n TData extends RowData\n>(\n props: TableProps<TData> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof TableComponent>;\n\n(Table as any).displayName = \"Table\";\n\nexport * from \"./tableVariants\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TableDetailPanelProps {\n /**\n * Whether the panel is open\n */\n isOpen: boolean;\n /**\n * Callback to close the panel\n */\n onClose?: () => void;\n /**\n * Content to display in the panel\n */\n children: React.ReactNode;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Panel width\n */\n width?: string | number;\n}\n\nexport const TableDetailPanel = React.forwardRef<\n HTMLDivElement,\n TableDetailPanelProps\n>(({ isOpen, onClose, children, className, width = \"400px\" }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"absolute top-0 right-0 h-full bg-white border border-surface-outline-neutral-muted transition-transform duration-300 ease-in-out overflow-auto\",\n isOpen ? \"translate-x-0\" : \"translate-x-full\",\n className\n )}\n style={{ width }}\n >\n {children}\n </div>\n );\n});\n\nTableDetailPanel.displayName = \"TableDetailPanel\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// ==================== Number Cell ====================\n\ninterface NumberCellProps {\n value: number;\n currency?: string;\n subtitle?: string;\n className?: string;\n}\n\nexport function NumberCell({\n value,\n currency,\n subtitle,\n className,\n}: NumberCellProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {currency}{\" \"}\n {value.toLocaleString(\"en-IN\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n );\n}\n\n// ==================== Icon Cell ====================\n\ninterface IconCellProps {\n icon: React.ReactNode;\n background?: \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\n className?: string;\n}\n\nexport function IconCell({\n icon,\n background = \"neutral\",\n className,\n}: IconCellProps) {\n const backgrounds = {\n neutral: \"bg-surface-fill-neutral-faded\",\n primary: \"bg-action-fill-primary-faded\",\n success: \"bg-action-fill-positive-faded\",\n warning: \"bg-action-fill-warning-faded\",\n danger: \"bg-action-fill-negative-faded\",\n };\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center w-10 h-10 rounded-medium\",\n backgrounds[background],\n className\n )}\n >\n {icon}\n </div>\n );\n}\n\n// ==================== Spacer Cell ====================\n\nexport function SpacerCell() {\n return <div className=\"w-full h-full\" />;\n}\n\n// ==================== Slot Cell ====================\n\ninterface SlotCellProps {\n onDragStart?: (e: React.DragEvent) => void;\n onDragEnd?: (e: React.DragEvent) => void;\n className?: string;\n}\n\nexport function SlotCell({ onDragStart, onDragEnd, className }: SlotCellProps) {\n return (\n <div\n draggable\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n className={cn(\n \"flex items-center justify-center cursor-grab active:cursor-grabbing\",\n className\n )}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"text-surface-ink-neutral-muted\"\n >\n <path\n d=\"M6 4C6 3.44772 5.55228 3 5 3C4.44772 3 4 3.44772 4 4C4 4.55228 4.44772 5 5 5C5.55228 5 6 4.55228 6 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 8C6 7.44772 5.55228 7 5 7C4.44772 7 4 7.44772 4 8C4 8.55228 4.44772 9 5 9C5.55228 9 6 8.55228 6 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13C5.55228 13 6 12.5523 6 12Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 4C12 3.44772 11.5523 3 11 3C10.4477 3 10 3.44772 10 4C10 4.55228 10.4477 5 11 5C11.5523 5 12 4.55228 12 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 8C12 7.44772 11.5523 7 11 7C10.4477 7 10 7.44772 10 8C10 8.55228 10.4477 9 11 9C11.5523 9 12 8.55228 12 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 12C12 11.4477 11.5523 11 11 11C10.4477 11 10 11.4477 10 12C10 12.5523 10.4477 13 11 13C11.5523 13 12 12.5523 12 12Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n );\n}\n\n// ==================== Avatar Cell ====================\n\ninterface AvatarCellProps {\n name: string;\n initials?: string;\n avatar?: string;\n subtitle?: string;\n color?: string;\n className?: string;\n}\n\nexport function AvatarCell({\n name,\n initials,\n avatar,\n subtitle,\n color = \"a1\",\n className,\n}: AvatarCellProps) {\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n {avatar ? (\n <img\n src={avatar}\n alt={name}\n className=\"w-10 h-10 rounded-full object-cover\"\n />\n ) : (\n <div\n className={cn(\n \"w-10 h-10 rounded-full flex items-center justify-center text-body-medium-medium\",\n `bg-${color}`\n )}\n >\n {initials || name.charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"flex flex-col\">\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {name}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst tabItemVariants = cva(\n `inline-flex items-center justify-center gap-3 whitespace-nowrap transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 relative cursor-pointer -mb-[1.5px]`,\n {\n variants: {\n variant: {\n bordered: \"border-b-[1.5px]\",\n borderless: \"border-b-[1.5px]\",\n },\n size: {\n small: \"px-2 py-3 h-9\",\n medium: \"px-3 py-4 h-11\",\n large: \"px-3 py-4 h-12\",\n },\n isSelected: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"\",\n },\n isFullWidth: {\n true: \"flex-1\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Bordered and borderless variants - not selected\n {\n variant: [\"bordered\", \"borderless\"],\n isSelected: false,\n isDisabled: false,\n class: `text-text-body-secondary \n border-b-transparent\n text-action-ink-neutral-muted\n hover:text-action-ink-neutral-subtle\n hover:border-b-action-outline-neutral-faded-hover`,\n },\n // Bordered variant - selected\n {\n variant: \"bordered\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Borderless variant - selected\n {\n variant: \"borderless\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Typography by size and selection\n {\n size: [\"small\", \"medium\"],\n isSelected: false,\n class: \"text-body-medium-medium\",\n },\n {\n size: [\"small\", \"medium\"],\n isSelected: true,\n class: \"text-body-medium-semibold\",\n },\n {\n size: \"large\",\n isSelected: false,\n class: \"text-body-large-medium\",\n },\n {\n size: \"large\",\n isSelected: true,\n class: \"text-body-large-semibold\",\n },\n // Bordered and borderless variants - disabled\n {\n variant: [\"bordered\", \"borderless\"],\n isDisabled: true,\n class: \"text-text-body-disabled border-b-transparent\",\n },\n ],\n defaultVariants: {\n variant: \"bordered\",\n size: \"large\",\n isSelected: false,\n isDisabled: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface TabItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is currently selected\n */\n isSelected?: boolean;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab size variant\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Whether the tab should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Click handler\n */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst TabItem = React.forwardRef<HTMLButtonElement, TabItemProps>(\n (\n {\n leadingComponent,\n title,\n trailingComponent,\n isSelected = false,\n isDisabled = false,\n size = \"large\",\n variant = \"bordered\",\n isFullWidth = false,\n className,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={cn(\n tabItemVariants({\n variant,\n size,\n isSelected,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n onClick={onClick}\n {...props}\n >\n {leadingComponent && (\n <span className=\"inline-flex items-center\">{leadingComponent}</span>\n )}\n <span className=\"inline-flex items-center\">{title}</span>\n {trailingComponent && (\n <span className=\"inline-flex items-center\">{trailingComponent}</span>\n )}\n </button>\n );\n }\n);\n\nTabItem.displayName = \"TabItem\";\n\nexport { TabItem, tabItemVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { TabItem, type TabItemProps } from \"../TabItem/TabItem\";\n\nexport interface Tab {\n /**\n * Unique identifier for the tab\n */\n id: string | number;\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab content to render when selected\n */\n content?: React.ReactNode;\n}\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Array of tab configurations\n */\n tabs: Tab[];\n /**\n * Currently selected tab ID\n */\n selectedTabId?: string | number;\n /**\n * Default selected tab ID (for uncontrolled mode)\n */\n defaultSelectedTabId?: string | number;\n /**\n * Callback when tab selection changes\n */\n onTabChange?: (tabId: string | number) => void;\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Tab size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether tabs should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name for the tabs container\n */\n className?: string;\n /**\n * Custom class name for the tab list\n */\n tabListClassName?: string;\n /**\n * Custom class name for the tab content area\n */\n contentClassName?: string;\n /**\n * Whether to render tab content\n */\n renderContent?: boolean;\n}\n\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n tabs,\n selectedTabId,\n defaultSelectedTabId,\n onTabChange,\n variant = \"bordered\",\n size = \"large\",\n isFullWidth = false,\n className,\n tabListClassName,\n contentClassName,\n renderContent = true,\n ...props\n },\n ref\n ) => {\n // Internal state for uncontrolled mode\n const [internalSelectedId, setInternalSelectedId] = React.useState<\n string | number\n >(defaultSelectedTabId || tabs[0]?.id || \"\");\n\n // Determine if component is controlled\n const isControlled = selectedTabId !== undefined;\n const activeTabId = isControlled ? selectedTabId : internalSelectedId;\n\n // Handle tab selection\n const handleTabClick = (tabId: string | number) => {\n if (!isControlled) {\n setInternalSelectedId(tabId);\n }\n onTabChange?.(tabId);\n };\n\n // Get the active tab content\n const activeTab = tabs.find((tab) => tab.id === activeTabId);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {/* Tab List */}\n <div\n role=\"tablist\"\n className={cn(\n \"inline-flex items-center gap-4\",\n {\n \"w-full\": isFullWidth,\n \"border-b border-b-[1.5px] border-surface-outline-neutral-muted\":\n variant === \"bordered\",\n },\n tabListClassName\n )}\n >\n {tabs.map((tab) => (\n <TabItem\n key={tab.id}\n id={String(tab.id)}\n leadingComponent={tab.leadingComponent}\n title={tab.title}\n trailingComponent={tab.trailingComponent}\n isSelected={tab.id === activeTabId}\n isDisabled={tab.isDisabled}\n variant={variant}\n size={size}\n isFullWidth={isFullWidth}\n onClick={() => !tab.isDisabled && handleTabClick(tab.id)}\n />\n ))}\n </div>\n\n {/* Tab Content */}\n {renderContent && activeTab?.content && (\n <div\n role=\"tabpanel\"\n className={cn(\"mt-4\", contentClassName)}\n aria-labelledby={String(activeTabId)}\n >\n {activeTab.content}\n </div>\n )}\n </div>\n );\n }\n);\n\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textAreaVariants = cva(\n \"relative flex flex-col border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"p-3 min-h-[56px] text-xs gap-2\",\n medium: \"p-4 min-h-[56px] text-sm gap-2\",\n large: \"p-5 min-h-[64px]text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n maxChar?: number;\n showCharCount?: boolean;\n containerClassName?: string;\n labelClassName?: string;\n textAreaClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n 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 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 linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textAreaVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <textarea\n ref={ref}\n value={textAreaValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n rows={rows}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display resize-none\",\n size === \"small\" && \"text-xs\",\n size === \"medium\" && \"text-sm\",\n size === \"large\" && \"text-base\",\n textAreaClassName\n )}\n {...props}\n />\n </div>\n <FormFooter\n helperText={displayHelperText}\n trailingText={\n maxChar && showCharCount ? `${currentLength}/${maxChar}` : undefined\n }\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n trailingTextClassName={cn(\n \"transition-colors\",\n isAtLimit\n ? \"text-feedback-ink-negative-subtle\"\n : isNearLimit\n ? \"text-feedback-ink-warning-subtle\"\n : \"\"\n )}\n />\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport { TextArea, textAreaVariants };\n"],"names":["clsx","twMerge","React","cva","_jsxs","_jsx","Slot","PulseLoader","ClipLoader","ExternalLink","Loader2","Search","_Fragment","X","ChevronDown","ChevronLeft","ChevronRight","createPortal","flexRender"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/utils.ts","../src/components/Text/Text.tsx","../src/components/Avatar/Avatar.tsx","../src/components/Badge/Badge.tsx","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/FormFooter/FormFooter.tsx","../src/lib/icons.tsx","../src/components/Checkbox/Checkbox.tsx","../src/components/Counter/Counter.tsx","../src/components/Divider/Divider.tsx","../src/components/ListItem/ListItem.tsx","../src/components/Link/Link.tsx","../src/components/Dropdown/DropdownMenu.tsx","../src/components/Dropdown/Dropdown.tsx","../src/components/Tooltip/Tooltip.tsx","../src/components/FormHeader/FormHeader.tsx","../src/components/Modal/Modal.tsx","../src/components/Select/Select.tsx","../src/components/Pagination/Pagination.tsx","../src/components/Radio/Radio.tsx","../src/components/TextField/TextField.tsx","../src/components/SearchableDropdown/SearchableDropdown.tsx","../src/components/Skeleton/Skeleton.tsx","../src/components/Switch/Switch.tsx","../src/components/Table/tableVariants.ts","../src/components/Table/TableHeader.tsx","../src/components/Table/TableBody.tsx","../src/components/Table/DetailPanel.tsx","../src/components/Table/tableHelpers.tsx","../src/components/Table/Table.tsx","../src/components/Table/TableDetailPanel.tsx","../src/components/Table/TableCellTypes.tsx","../src/components/TabItem/TabItem.tsx","../src/components/Tabs/Tabs.tsx","../src/components/TextArea/TextArea.tsx"],"sourcesContent":["import { 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 { 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 },\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 },\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\";\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 { 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:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\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 },\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-6 py-2 rounded-medium text-body-medium-medium\",\n large: \"md:h-[44px] px-6 rounded-xlarge 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 // Secondary variant colors\n {\n variant: \"secondary\",\n color: \"primary\",\n class: `\n border-action-outline-info-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 // 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 // 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?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\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 buttonContent = (\n <>\n {isLoading && !isIconOnly && (\n <PulseLoader\n color={`var(--color-action-ink-${color}-normal)`}\n size={10}\n />\n )}\n {isLoading && isIconOnly && (\n <ClipLoader\n color={`var(--color-action-ink-${color}-normal)`}\n size={20}\n />\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 { 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\";\nimport { Text } from \"../Text\";\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 textSize: \"xsmall\" as const,\n iconSize: 12,\n gap: \"gap-1\",\n },\n medium: {\n textSize: \"small\" as const,\n iconSize: 14,\n gap: \"gap-1\",\n },\n large: {\n textSize: \"medium\" as const,\n iconSize: 16,\n gap: \"gap-1.5\",\n },\n };\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 \"disabled\";\n if (validationState === \"positive\") return \"positive\";\n if (validationState === \"negative\") return \"negative\";\n if (validationState === \"default\") return \"default\";\n return \"default\";\n };\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 <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"regular\"\n color={getTextColor()}\n className={cn(\n \"italic font-size-100 leading-100\",\n helperTextClassName\n )}\n >\n {helperText}\n </Text>\n </div>\n )}\n\n {trailingText && (\n <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"regular\"\n color={isDisabled ? \"disabled\" : \"muted\"}\n className={cn(\n \"font-size-100 leading-100 shrink-0\",\n trailingTextClassName\n )}\n >\n {trailingText}\n </Text>\n )}\n </div>\n );\n }\n);\n\nFormFooter.displayName = \"FormFooter\";\n\nexport { FormFooter };\n","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\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 * 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\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] rounded-small border-[1.5px]\",\n medium: \"w-[16px] h-[16px] rounded-small border-[1.5px]\",\n large: \"w-[20px] h-[20px] rounded-medium border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover focus:ring-2 ring-action-outline-negative-faded-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isIndeterminate: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"border-action-outline-neutral-faded hover:bg-action-fill-neutral-faded hover:border-action-outline-neutral-faded\",\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover border-action-fill-primary-default\",\n },\n // Checked or Indeterminate state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n // Indeterminate state - none validation\n {\n isIndeterminate: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default border-action-fill-primary-default hover:bg-action-fill-primary-hover hover:border-action-fill-primary-hover\",\n },\n // Indeterminate state - error validation (same as checked error)\n {\n isIndeterminate: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default border-action-fill-negative-default hover:bg-action-fill-negative-hover hover:border-action-fill-negative-hover\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isIndeterminate: false,\n isDisabled: false,\n },\n }\n);\n\nexport interface CheckboxProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the checkbox\n */\n label?: string;\n /**\n * Error text to display below the checkbox\n */\n errorText?: string;\n /**\n * Size of the checkbox\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the checkbox\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the checkbox is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the checkbox is in an indeterminate state\n */\n isIndeterminate?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isIndeterminate = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n 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.5\",\n labelSize: \"text-body-medium-regular\",\n iconSize: 12,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n iconSize: 14,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", 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\nexport interface CounterProps\n extends Omit<React.HTMLAttributes<HTMLSpanElement>, \"color\">,\n VariantProps<typeof counterVariants> {\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\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\";\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 { 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 },\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 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?: \"primary\" | \"positive\" | \"negative\" | \"notice\" | \"info\" | \"neutral\";\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 { 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 id: string | number;\n title: string;\n description?: string;\n leadingIcon?: React.ReactNode;\n trailingIcon?: React.ReactNode;\n isDisabled?: boolean;\n onClick?: () => void;\n}\n\nexport interface DropdownMenuProps {\n /**\n * Items to display in the dropdown\n */\n items?: DropdownMenuItem[];\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 * 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 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 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 (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.id}\n title={item.title}\n description={item.description}\n leadingIcon={item.leadingIcon}\n trailingIcon={item.trailingIcon}\n showChevron={showChevron}\n isDisabled={item.isDisabled}\n isSelected={index === focusedIndex}\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\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 {!disableFooter && (\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 * 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\nexport const Dropdown = React.forwardRef<HTMLDivElement, DropdownProps>(\n (\n {\n className,\n trigger,\n items = [],\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 ...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 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 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 { 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 { Text } from \"../Text\";\nimport { Tooltip } from \"../Tooltip\";\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 * 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 * 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 linkText,\n linkHref,\n onLinkClick,\n htmlFor,\n className,\n labelClassName,\n linkClassName,\n },\n ref\n ) => {\n // Size-based configurations\n const sizeConfig = {\n small: {\n textSize: \"xsmall\" as const,\n iconSize: 12,\n gap: \"gap-1.5\",\n },\n medium: {\n textSize: \"small\" as const,\n iconSize: 14,\n gap: \"gap-2\",\n },\n large: {\n textSize: \"medium\" as const,\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 <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"semibold\"\n color=\"subtle\"\n >\n {label}\n </Text>\n {isRequired && (\n <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"semibold\"\n color=\"negative\"\n className=\"ml-0.5\"\n >\n *\n </Text>\n )}\n {isOptional && (\n <Text\n as=\"span\"\n variant=\"body\"\n size={config.textSize}\n weight=\"regular\"\n className=\"text-surface-ink-neutral-muted italic ml-1\"\n >\n (optional)\n </Text>\n )}\n </label>\n {infoDescription && (\n <Tooltip description={infoDescription} heading={infoHeading}>\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-surface-ink-neutral-muted\"\n >\n <circle\n cx=\"7\"\n cy=\"7\"\n r=\"6\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n />\n <path\n d=\"M7 6V10M7 4.5V4\"\n stroke=\"currentColor\"\n strokeWidth=\"1\"\n strokeLinecap=\"round\"\n />\n </svg>\n </Tooltip>\n )}\n </div>\n\n {linkText && (\n <a\n href={linkHref}\n onClick={onLinkClick}\n className={cn(\n \"text-surface-ink-primary-normal hover:text-surface-ink-primary-hover transition-colors cursor-pointer font-display font-semibold leading-tight shrink-0\",\n size === \"small\" && \"text-xs\",\n size === \"medium\" && \"text-xs\",\n size === \"large\" && \"text-sm\",\n linkClassName\n )}\n >\n {linkText}\n </a>\n )}\n </div>\n );\n }\n);\n\nFormHeader.displayName = \"FormHeader\";\n\nexport { FormHeader };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Text } from \"../Text\";\nimport { X } from \"lucide-react\";\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) 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) {\n onClose();\n }\n };\n\n // Don't render if not open\n if (!isOpen) return null;\n\n const hasHeader = title || description;\n\n return (\n <div\n className={cn(\n \"fixed inset-0 z-50 flex items-center justify-center p-4\",\n className\n )}\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={ariaLabel || title}\n aria-describedby={ariaDescribedBy}\n >\n {/* Overlay */}\n <div\n className={cn(\n \"absolute inset-0 bg-black/50 backdrop-blur-sm transition-opacity\",\n overlayClassName\n )}\n onClick={handleOverlayClick}\n aria-hidden=\"true\"\n />\n\n {/* Modal Content */}\n <div\n ref={contentRef}\n className={cn(\n \"relative w-full bg-white rounded-large shadow-xl transition-all\",\n \"flex flex-col max-h-[90vh]\",\n sizeConfig[size],\n contentClassName\n )}\n >\n {/* Header */}\n {hasHeader && (\n <div\n className={cn(\n \"flex items-start justify-between gap-4 px-6 pt-6\",\n !description && \"pb-4\",\n description && \"pb-2\",\n headerClassName\n )}\n >\n <div className=\"flex-1\">\n {title && (\n <Text\n as=\"h2\"\n variant=\"body\"\n size=\"large\"\n weight=\"semibold\"\n color=\"default\"\n >\n {title}\n </Text>\n )}\n {description && (\n <Text\n as=\"p\"\n variant=\"body\"\n size=\"small\"\n weight=\"regular\"\n color=\"subtle\"\n className=\"mt-1\"\n >\n {description}\n </Text>\n )}\n </div>\n\n {showCloseButton && (\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"shrink-0 rounded-medium p-1.5 transition-colors\",\n \"text-surface-ink-neutral-muted hover:text-surface-ink-neutral-default\",\n \"hover:bg-surface-fill-neutral-faded focus:outline-none focus:ring-2\",\n \"focus:ring-action-outline-primary-default focus:ring-offset-2\"\n )}\n aria-label=\"Close modal\"\n >\n <X className=\"h-5 w-5\" />\n </button>\n )}\n </div>\n )}\n\n {/* Header with close button only (no title/description) */}\n {!hasHeader && showCloseButton && (\n <div className=\"absolute top-4 right-4 z-10\">\n <button\n type=\"button\"\n onClick={onClose}\n className={cn(\n \"shrink-0 rounded-medium p-1.5 transition-colors\",\n \"text-surface-ink-neutral-muted hover:text-surface-ink-neutral-default\",\n \"hover:bg-surface-fill-neutral-faded focus:outline-none focus:ring-2\",\n \"focus:ring-action-outline-primary-default focus:ring-offset-2\"\n )}\n aria-label=\"Close modal\"\n >\n <X className=\"h-5 w-5\" />\n </button>\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 extends DropdownMenuItem {\n value: string | number;\n label?: string;\n}\n\nconst selectVariants = cva(\n \"relative flex items-center gap-2 border rounded-medium transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface SelectProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\" | \"prefix\"> {\n /**\n * Options to display in the select dropdown\n */\n options?: SelectOption[];\n /**\n * Selected value (controlled)\n */\n value?: string | number;\n /**\n * Default selected value (uncontrolled)\n */\n defaultValue?: string | number;\n /**\n * Callback when selection changes\n */\n onChange?: (value: string | number, option: SelectOption) => void;\n /**\n * Placeholder text when no value is selected\n */\n placeholder?: string;\n /**\n * Label for the select\n */\n label?: string;\n /**\n * Helper text below the select\n */\n helperText?: string;\n /**\n * Error text (overrides helperText when present)\n */\n errorText?: string;\n /**\n * Success text (overrides helperText when present)\n */\n successText?: string;\n /**\n * Validation state for the select\n */\n validationState?: \"none\" | \"positive\" | \"negative\";\n /**\n * Whether the select is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether the select is required\n */\n isRequired?: boolean;\n /**\n * Whether the select is optional\n */\n isOptional?: boolean;\n /**\n * Whether the select is in loading state\n */\n isLoading?: boolean;\n /**\n * Size of the select\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Prefix element (icon or text)\n */\n prefix?: React.ReactNode;\n /**\n * Suffix element (icon or text)\n */\n suffix?: React.ReactNode;\n /**\n * Show clear button when value is selected\n */\n showClearButton?: boolean;\n /**\n * Callback when clear button is clicked\n */\n onClear?: () => void;\n /**\n * Custom class for the container\n */\n containerClassName?: string;\n /**\n * Custom class for the label\n */\n labelClassName?: string;\n /**\n * Custom class for the trigger button\n */\n triggerClassName?: string;\n /**\n * Custom class for the dropdown menu\n */\n menuClassName?: string;\n /**\n * Width of the dropdown menu\n */\n menuWidth?: \"auto\" | \"full\" | string;\n /**\n * Section heading for the dropdown\n */\n sectionHeading?: string;\n /**\n * Empty state title\n */\n emptyTitle?: string;\n /**\n * Empty state description\n */\n emptyDescription?: string;\n /**\n * Show search icon in empty state\n */\n emptyIcon?: React.ReactNode;\n /**\n * Info heading for tooltip\n */\n infoHeading?: string;\n /**\n * Info description for tooltip\n */\n infoDescription?: string;\n /**\n * Link text\n */\n linkText?: string;\n /**\n * Link href\n */\n linkHref?: string;\n /**\n * Link click handler\n */\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nexport const Select = React.forwardRef<HTMLDivElement, SelectProps>(\n (\n {\n className,\n options = [],\n value: controlledValue,\n defaultValue,\n onChange,\n placeholder = \"Select an option\",\n label,\n helperText,\n errorText,\n successText,\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n isLoading = false,\n size = \"medium\",\n prefix,\n suffix,\n showClearButton = false,\n onClear,\n containerClassName,\n labelClassName,\n triggerClassName,\n menuClassName,\n menuWidth = \"full\",\n sectionHeading,\n emptyTitle = \"No options available\",\n emptyDescription = \"There are no options to select from.\",\n emptyIcon,\n infoHeading,\n infoDescription,\n 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 selectRef = 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 // 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 ...option,\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 linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n ref={selectRef}\n className={cn(\n selectVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n \"relative w-full cursor-pointer\",\n className\n )}\n onClick={!isDisabled && !isLoading ? toggleOpen : undefined}\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={isDisabled}\n {...props}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <span\n className={cn(\n \"flex-1 text-left truncate\",\n !selectedOption && \"text-surface-ink-neutral-muted\",\n isDisabled && \"text-surface-ink-neutral-disabled\"\n )}\n >\n {isLoading\n ? \"Loading...\"\n : selectedOption?.label || selectedOption?.title || 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 className=\"absolute z-50 left-0 right-0 top-full mt-1\">\n <DropdownMenu\n ref={ref}\n items={menuItems}\n sectionHeading={sectionHeading}\n isEmpty={options.length === 0}\n emptyTitle={emptyTitle}\n emptyDescription={emptyDescription}\n emptyIcon={emptyIcon}\n disableFooter={true}\n onClose={() => handleOpenChange(false)}\n className={menuClassName}\n width={widthStyle}\n />\n </div>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport { selectVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"../../lib/utils\";\nimport { Select, type SelectOption } from \"../Select\";\nimport { Button } from \"../Button\";\nimport { ButtonGroup } from \"../ButtonGroup\";\n\nconst paginationVariants = cva(\n \"flex items-center gap-4 font-display text-body-medium-medium\",\n {\n variants: {\n size: {\n small: \"text-xs gap-2\",\n medium: \"text-sm gap-4\",\n large: \"text-base gap-5\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport interface PaginationProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Current page number (1-indexed)\n */\n currentPage?: number;\n /**\n * Total number of pages\n */\n totalPages: number;\n /**\n * Rows per page value\n */\n rowsPerPage?: number;\n /**\n * Available options for rows per page\n */\n rowsPerPageOptions?: number[];\n /**\n * Show rows per page selector\n */\n showRowsPerPage?: boolean;\n /**\n * Callback when page changes\n */\n onPageChange?: (page: number) => void;\n /**\n * Callback when rows per page changes\n */\n onRowsPerPageChange?: (rowsPerPage: number) => void;\n /**\n * Size of the pagination controls\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Disable the pagination controls\n */\n isDisabled?: boolean;\n /**\n * Custom text for \"Row per page\" label\n */\n rowsPerPageLabel?: string;\n /**\n * Custom text for \"of\" label\n */\n ofLabel?: string;\n /**\n * Custom text for \"Prev\" button\n */\n prevLabel?: string;\n /**\n * Custom text for \"Next\" button\n */\n nextLabel?: string;\n /**\n * Show prev/next buttons\n */\n showPrevNext?: boolean;\n /**\n * Show page jumper (dropdown) instead of numbered buttons\n */\n showPageJumper?: boolean;\n /**\n * Show page number (used with showPageJumper=false)\n */\n showPageNumber?: boolean;\n /**\n * Page status for displaying page numbers\n */\n pageStatus?: \"none\" | \"first\" | \"middle\" | \"last\";\n /**\n * Maximum number of page buttons to show\n */\n maxPageButtons?: number;\n}\n\nexport const Pagination = React.forwardRef<HTMLDivElement, PaginationProps>(\n (\n {\n className,\n currentPage: controlledCurrentPage,\n totalPages,\n rowsPerPage: controlledRowsPerPage,\n rowsPerPageOptions = [5, 10, 15, 20, 25, 50, 100],\n showRowsPerPage = true,\n onPageChange,\n onRowsPerPageChange,\n size = \"medium\",\n isDisabled = false,\n rowsPerPageLabel = \"Row per page\",\n ofLabel = \"of\",\n prevLabel = \"Prev\",\n nextLabel = \"Next\",\n showPrevNext = true,\n showPageJumper = true,\n showPageNumber = true,\n pageStatus,\n maxPageButtons = 5,\n ...props\n },\n ref\n ) => {\n const [uncontrolledCurrentPage, setUncontrolledCurrentPage] =\n React.useState(1);\n const [uncontrolledRowsPerPage, setUncontrolledRowsPerPage] =\n React.useState(rowsPerPageOptions[0] || 10);\n\n const currentPage =\n controlledCurrentPage !== undefined\n ? controlledCurrentPage\n : uncontrolledCurrentPage;\n\n const rowsPerPage =\n controlledRowsPerPage !== undefined\n ? controlledRowsPerPage\n : uncontrolledRowsPerPage;\n\n // Generate rows per page options\n const rowsPerPageSelectOptions: SelectOption[] = rowsPerPageOptions.map(\n (value) => {\n const valueStr = String(value);\n // Pad with leading zero if needed (manual implementation for compatibility)\n const label = valueStr.length < 2 ? \"0\" + valueStr : valueStr;\n return {\n id: `rows-${valueStr}`,\n value: valueStr,\n label: label,\n title: valueStr,\n };\n }\n );\n\n // Generate page options\n const pageOptions: SelectOption[] = Array.from(\n { length: totalPages },\n (_, i) => {\n const pageNum = i + 1;\n const pageStr = String(pageNum);\n return {\n id: `page-${pageStr}`,\n value: pageStr,\n label: pageStr,\n title: `Page ${pageNum}`,\n };\n }\n );\n\n const handlePageChange = (newPage: number) => {\n if (newPage < 1 || newPage > totalPages) return;\n if (controlledCurrentPage === undefined) {\n setUncontrolledCurrentPage(newPage);\n }\n onPageChange?.(newPage);\n };\n\n const handleRowsPerPageChange = (value: string | number) => {\n const newRowsPerPage =\n typeof value === \"string\" ? parseInt(value) : value;\n if (controlledRowsPerPage === undefined) {\n setUncontrolledRowsPerPage(newRowsPerPage);\n }\n onRowsPerPageChange?.(newRowsPerPage);\n // Reset to first page when rows per page changes\n handlePageChange(1);\n };\n\n const handlePrevPage = () => {\n handlePageChange(currentPage - 1);\n };\n\n const handleNextPage = () => {\n handlePageChange(currentPage + 1);\n };\n\n const isPrevDisabled = currentPage <= 1 || isDisabled;\n const isNextDisabled = currentPage >= totalPages || isDisabled;\n\n const selectSize =\n size === \"small\" ? \"small\" : size === \"large\" ? \"large\" : \"medium\";\n\n // Map pagination size to button size\n const buttonSize =\n size === \"small\" ? \"xsmall\" : size === \"large\" ? \"large\" : \"small\";\n\n // Generate page numbers to display\n const getPageNumbers = (): (number | string)[] => {\n if (totalPages <= maxPageButtons) {\n // Show all pages if total is less than max\n return Array.from({ length: totalPages }, (_, i) => i + 1);\n }\n\n // Determine page status if not provided\n const effectivePageStatus =\n pageStatus ||\n (currentPage <= 2\n ? \"first\"\n : currentPage >= totalPages - 1\n ? \"last\"\n : \"middle\");\n\n if (effectivePageStatus === \"first\") {\n // Show first pages: 1, 2, 3, 4, 5\n return Array.from(\n { length: Math.min(maxPageButtons, totalPages) },\n (_, i) => i + 1\n );\n } else if (effectivePageStatus === \"last\") {\n // Show last pages\n const start = totalPages - maxPageButtons + 1;\n return Array.from({ length: maxPageButtons }, (_, i) => start + i);\n } else if (effectivePageStatus === \"middle\") {\n // Show pages around current page\n const halfMax = Math.floor(maxPageButtons / 2);\n let start = currentPage - halfMax;\n let end = currentPage + halfMax;\n\n // Adjust if at boundaries\n if (start < 1) {\n end += 1 - start;\n start = 1;\n }\n if (end > totalPages) {\n start -= end - totalPages;\n end = totalPages;\n }\n\n start = Math.max(1, start);\n end = Math.min(totalPages, end);\n\n return Array.from({ length: end - start + 1 }, (_, i) => start + i);\n }\n\n // pageStatus === \"none\" - don't show any page numbers\n return [];\n };\n\n const pageNumbers = getPageNumbers();\n\n return (\n <div\n ref={ref}\n className={cn(paginationVariants({ size }), className)}\n {...props}\n >\n {showRowsPerPage && (\n <div className=\"flex items-center gap-3\">\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {rowsPerPageLabel}\n </span>\n <div className=\"w-[80px]\">\n <Select\n value={rowsPerPage.toString()}\n options={rowsPerPageSelectOptions}\n onChange={handleRowsPerPageChange}\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n </div>\n )}\n\n <div className=\"flex items-center gap-3 ml-auto\">\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handlePrevPage}\n isDisabled={isPrevDisabled}\n leadingIcon={<ChevronLeft className=\"w-4 h-4\" />}\n aria-label=\"Previous page\"\n >\n {prevLabel}\n </Button>\n )}\n\n {showPageJumper ? (\n // Show page dropdown selector\n <div className=\"flex items-center gap-3\">\n <div className=\"w-[80px]\">\n <Select\n value={currentPage.toString()}\n options={pageOptions}\n onChange={(value) =>\n handlePageChange(\n typeof value === \"string\" ? parseInt(value) : value\n )\n }\n size={selectSize}\n isDisabled={isDisabled}\n menuWidth=\"auto\"\n />\n </div>\n <span className=\"text-surface-ink-neutral-muted whitespace-nowrap\">\n {ofLabel} {totalPages}\n </span>\n </div>\n ) : (\n // Show numbered page buttons\n showPageNumber &&\n pageNumbers.length > 0 && (\n <ButtonGroup\n variant=\"separated\"\n size={buttonSize}\n isDisabled={isDisabled}\n value={currentPage}\n onChange={(value) => handlePageChange(value as number)}\n >\n {pageNumbers.map((pageNum) => (\n <Button\n key={pageNum}\n value={pageNum}\n variant=\"tertiary\"\n color=\"primary\"\n aria-label={`Page ${pageNum}`}\n aria-current={pageNum === currentPage ? \"page\" : undefined}\n >\n {pageNum}\n </Button>\n ))}\n </ButtonGroup>\n )\n )}\n\n {showPrevNext && (\n <Button\n variant=\"tertiary\"\n color=\"neutral\"\n size={buttonSize}\n onClick={handleNextPage}\n isDisabled={isNextDisabled}\n trailingIcon={<ChevronRight className=\"w-4 h-4\" />}\n aria-label=\"Next page\"\n >\n {nextLabel}\n </Button>\n )}\n </div>\n </div>\n );\n }\n);\n\nPagination.displayName = \"Pagination\";\n\nexport { paginationVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst radioVariants = cva(\n \"relative inline-flex items-center justify-center shrink-0 border transition-all cursor-pointer rounded-full\",\n {\n variants: {\n size: {\n small: \"w-[14px] h-[14px] border-[1.5px]\",\n medium: \"w-[16px] h-[16px] border-[1.5px]\",\n large: \"w-[20px] h-[20px] border-[2px]\",\n },\n validationState: {\n none: \"\",\n error:\n \"border-action-outline-negative-default hover:border-action-outline-negative-hover\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60 border-action-outline-neutral-disabled bg-surface-fill-neutral-subtle\",\n false: \"\",\n },\n isFocused: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Unchecked state - none validation\n {\n isChecked: false,\n validationState: \"none\",\n isDisabled: false,\n class: `border-action-outline-neutral-faded \n hover:bg-action-fill-neutral-faded \n hover:border-action-outline-neutral-faded\n `,\n },\n // Checked state - none validation\n {\n isChecked: true,\n validationState: \"none\",\n isDisabled: false,\n class:\n \"bg-action-fill-primary-default hover:bg-action-fill-primary-hover border-action-fill-primary-default hover:border-action-fill-primary-hover\",\n },\n // Checked state - error validation\n {\n isChecked: true,\n validationState: \"error\",\n isDisabled: false,\n class:\n \"bg-action-fill-negative-default hover:bg-action-fill-negative-hover border-action-fill-negative-default hover:border-action-fill-negative-hover\",\n },\n // Focused state - none validation\n {\n isFocused: true,\n validationState: \"none\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-primary-faded\",\n },\n // Focused state - error validation\n {\n isFocused: true,\n validationState: \"error\",\n isDisabled: false,\n class: \"ring-2 ring-action-outline-negative-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isChecked: false,\n isDisabled: false,\n isFocused: false,\n },\n }\n);\n\nexport interface RadioProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the radio button\n */\n label?: string;\n /**\n * Error text to display below the radio button\n */\n errorText?: string;\n /**\n * Size of the radio button\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Validation state of the radio button\n */\n validationState?: \"none\" | \"error\";\n /**\n * Whether the radio button is disabled\n */\n isDisabled?: boolean;\n /**\n * Whether to show error text (defaults to true if errorText is provided)\n */\n showErrorText?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n label,\n errorText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n showErrorText = true,\n containerClassName,\n labelClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const [showRipple, setShowRipple] = React.useState(false);\n const [isFocused, setIsFocused] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const triggerRipple = () => {\n if (!isDisabled) {\n setShowRipple(true);\n setTimeout(() => {\n setShowRipple(false);\n }, 360); // Match animation duration (0.36s)\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n // Only show ripple when checking (not unchecking)\n const willBeChecked = !isChecked;\n if (willBeChecked) {\n triggerRipple();\n }\n inputRef.current?.click();\n }\n };\n\n const handleFocus = () => {\n if (!isDisabled) {\n setIsFocused(true);\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n innerCircleSize: 6,\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n innerCircleSize: 7,\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n innerCircleSize: 8,\n },\n };\n\n const config = sizeConfig[size];\n\n // Determine if we should show the error text\n const shouldShowError = errorText && showErrorText;\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n role=\"radio\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"radio\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n {/* Ripple Effect */}\n {showRipple && (\n <div\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full pointer-events-none w-full h-full\",\n validationState === \"error\"\n ? \"bg-action-outline-negative-faded\"\n : \"bg-action-outline-primary-faded\"\n )}\n style={{\n animation: \"var(--animate-checkbox-ripple)\",\n }}\n />\n )}\n\n <div\n className={cn(\n radioVariants({\n size,\n validationState,\n isChecked,\n isDisabled,\n isFocused,\n }),\n className\n )}\n >\n {/* Inner White Circle (creates ring effect) */}\n {isChecked && (\n <div\n className=\"rounded-full bg-white transition-all\"\n style={{\n width: `${config.innerCircleSize}px`,\n height: `${config.innerCircleSize}px`,\n }}\n />\n )}\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n\n {/* Error text */}\n {shouldShowError && (\n <FormFooter\n helperText={errorText}\n validationState=\"negative\"\n size={size}\n isDisabled={isDisabled}\n />\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport { Radio, radioVariants };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textFieldVariants = cva(\n \"relative flex items-center gap-2 border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"h-[28px] px-3 text-xs gap-2\",\n medium: \"h-[36px] px-4 text-sm gap-2\",\n large: \"h-[44px] px-5 text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextFieldProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\" | \"prefix\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n prefix?: React.ReactNode;\n suffix?: React.ReactNode;\n showClearButton?: boolean;\n onClear?: () => void;\n containerClassName?: string;\n labelClassName?: string;\n inputClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n linkText?: string;\n linkHref?: string;\n onLinkClick?: (e: React.MouseEvent<HTMLAnchorElement>) => void;\n}\n\nconst TextField = React.forwardRef<HTMLInputElement, TextFieldProps>(\n (\n {\n label,\n helperText,\n errorText,\n successText,\n size = \"medium\",\n validationState = \"none\",\n isDisabled = false,\n isRequired = false,\n isOptional = false,\n prefix,\n suffix,\n showClearButton = false,\n infoDescription,\n infoHeading,\n 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 linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textFieldVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n {prefix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {prefix}\n </span>\n )}\n\n <input\n ref={ref}\n value={inputValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display\",\n inputClassName\n )}\n {...props}\n />\n\n {showClearButton && hasValue && !isDisabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"shrink-0 flex items-center justify-center text-surface-ink-neutral-muted hover:text-surface-ink-neutral-normal transition-colors\"\n tabIndex={-1}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 4L4 12M4 4L12 12\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n )}\n\n {suffix && (\n <span\n className={cn(\n \"shrink-0 flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : currentValidationState === \"positive\"\n ? \"text-feedback-ink-positive-intense\"\n : currentValidationState === \"negative\"\n ? \"text-feedback-ink-negative-subtle\"\n : \"text-surface-ink-neutral-muted\"\n )}\n >\n {suffix}\n </span>\n )}\n </div>\n\n <FormFooter\n helperText={displayHelperText}\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n />\n </div>\n );\n }\n);\n\nTextField.displayName = \"TextField\";\n\nexport { TextField, textFieldVariants };\n","import * as React from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"../../lib/utils\";\nimport { TextField, type TextFieldProps } from \"../TextField\";\nimport { DropdownMenu, type DropdownMenuItem } from \"../Dropdown/DropdownMenu\";\n\nexport interface SearchableDropdownItem extends DropdownMenuItem {\n value?: string;\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\nconst defaultFilter = (\n item: SearchableDropdownItem,\n query: string\n): boolean => {\n const searchQuery = query.toLowerCase();\n return (\n item.title.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 = \"Primary\",\n secondaryButtonText = \"Secondary\",\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 containerClassName,\n ...textFieldProps\n },\n ref\n ) => {\n const [uncontrolledSearchValue, setUncontrolledSearchValue] =\n React.useState(defaultSearchValue);\n const [isOpen, setIsOpen] = React.useState(false);\n const [focusedIndex, setFocusedIndex] = React.useState(-1);\n const dropdownRef = React.useRef<HTMLDivElement>(null);\n const inputRef = React.useRef<HTMLInputElement>(null);\n const menuRef = React.useRef<HTMLDivElement>(null);\n const [position, setPosition] = React.useState({\n top: 0,\n left: 0,\n width: 0,\n });\n\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n // Update position when dropdown opens or window resizes\n React.useEffect(() => {\n if (isOpen && dropdownRef.current) {\n const rect = dropdownRef.current.getBoundingClientRect();\n setPosition({\n top: rect.bottom + window.scrollY,\n left: rect.left + window.scrollX,\n width: rect.width,\n });\n }\n }, [isOpen]);\n\n const searchValue =\n controlledSearchValue !== undefined\n ? controlledSearchValue\n : uncontrolledSearchValue;\n\n const handleSearchChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(newValue);\n }\n onSearchChange?.(newValue);\n\n // Show dropdown if minimum search length is met\n if (newValue.length >= minSearchLength) {\n setIsOpen(true);\n } else {\n setIsOpen(false);\n }\n };\n\n const handleFocus = () => {\n if (showOnFocus && searchValue.length >= minSearchLength) {\n setIsOpen(true);\n }\n };\n\n const handleItemSelect = (item: SearchableDropdownItem) => {\n onItemSelect?.(item);\n if (controlledSearchValue === undefined) {\n setUncontrolledSearchValue(item.title);\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 // 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 < filteredItems.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 && filteredItems[focusedIndex]) {\n handleItemSelect(filteredItems[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 const itemsWithHandlers = filteredItems.map((item) => ({\n ...item,\n onClick: () => handleItemSelect(item),\n }));\n\n const showDropdown = isOpen && searchValue.length >= minSearchLength;\n\n const dropdownMenu = showDropdown && (\n <div\n ref={menuRef}\n style={{\n position: \"absolute\",\n top: `${position.top + 8}px`,\n left: `${position.left}px`,\n width: dropdownWidth === \"full\" ? `${position.width}px` : \"auto\",\n zIndex: 9999,\n }}\n >\n <DropdownMenu\n items={itemsWithHandlers}\n sectionHeading={sectionHeading}\n isLoading={isLoading}\n isEmpty={filteredItems.length === 0}\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 footerLayout={footerLayout}\n onClose={() => setIsOpen(false)}\n focusedIndex={focusedIndex}\n className={dropdownClassName}\n width={dropdownWidth === \"full\" ? \"full\" : \"auto\"}\n />\n </div>\n );\n\n return (\n <>\n <div ref={dropdownRef} className={cn(\"relative\", containerClassName)}>\n <TextField\n ref={inputRef}\n value={searchValue}\n onChange={handleSearchChange}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n containerClassName=\"mb-0\"\n {...textFieldProps}\n />\n </div>\n\n {/* Dropdown Menu Portal */}\n {typeof document !== \"undefined\" &&\n dropdownMenu &&\n createPortal(dropdownMenu, document.body)}\n </>\n );\n }\n);\n\nSearchableDropdown.displayName = \"SearchableDropdown\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\ntype SkeletonVariant = \"rect\" | \"text\" | \"title\" | \"circle\";\ntype SkeletonAnimation = \"pulse\" | \"none\";\ntype SkeletonRounded = \"none\" | \"small\" | \"medium\" | \"large\" | \"full\";\n\nconst variantDefaults: Record<\n SkeletonVariant,\n { height: number | string; className: string }\n> = {\n rect: { height: 16, className: \"w-full rounded-large\" },\n text: { height: 12, className: \"w-full rounded-large\" },\n title: { height: 20, className: \"w-full rounded-large\" },\n circle: { height: 40, className: \"rounded-full aspect-square\" },\n};\n\nconst roundedClassNames: Record<SkeletonRounded, string> = {\n none: \"rounded-none\",\n small: \"rounded-small\",\n medium: \"rounded-medium\",\n large: \"rounded-large\",\n full: \"rounded-full\",\n};\n\nconst animationClassNames: Record<SkeletonAnimation, string | undefined> = {\n pulse: \"animate-skeleton\",\n none: undefined,\n};\n\nconst normalizeCssValue = (value?: number | string): string | undefined => {\n if (value === undefined || value === null) {\n return undefined;\n }\n return typeof value === \"number\" ? `${value}px` : value;\n};\n\nconst getLineWidths = (\n count: number,\n provided?: Array<number | string>\n): Array<string | undefined> => {\n if (provided && provided.length) {\n return Array.from({ length: count }, (_, index) =>\n normalizeCssValue(provided[index] ?? provided[provided.length - 1])\n );\n }\n\n if (count === 1) {\n return [\"100%\"];\n }\n\n return Array.from({ length: count }, (_, index) =>\n index === count - 1 ? \"60%\" : \"100%\"\n );\n};\n\nexport interface SkeletonProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"children\"> {\n /**\n * Visual variant that controls default sizing and shape.\n */\n variant?: SkeletonVariant;\n /**\n * Animation style applied to the skeleton.\n */\n animation?: SkeletonAnimation;\n /**\n * Number of lines to render for text-based skeletons.\n */\n lines?: number;\n /**\n * Optional width overrides for each line.\n */\n lineWidths?: Array<number | string>;\n /**\n * Gap between lines when rendering multiple.\n */\n lineGap?: number | string;\n /**\n * Width of the skeleton block (overrides the variant default).\n */\n width?: number | string;\n /**\n * Height of the skeleton block (overrides the variant default).\n */\n height?: number | string;\n /**\n * Additional class name applied to the container when multiple lines are rendered.\n */\n containerClassName?: string;\n /**\n * Optional inline styles for the container when rendering multiple lines.\n */\n containerStyle?: React.CSSProperties;\n /**\n * Border radius override for rectangular variants.\n */\n rounded?: SkeletonRounded;\n}\n\nconst Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n (\n {\n className,\n containerClassName,\n containerStyle,\n variant = \"rect\",\n animation = \"pulse\",\n lines = 1,\n lineWidths,\n lineGap = \"0.5rem\",\n width,\n height,\n rounded = \"large\",\n style,\n ...props\n },\n ref\n ) => {\n const resolvedLines = Math.max(1, lines);\n const baseVariant = variantDefaults[variant];\n\n const resolvedHeight =\n normalizeCssValue(height) ?? normalizeCssValue(baseVariant.height);\n const resolvedWidth =\n normalizeCssValue(width) ??\n (variant === \"circle\" ? resolvedHeight : undefined);\n\n const skeletonClasses = cn(\n \"block bg-surface-fill-neutral-subtle\",\n animationClassNames[animation],\n variant !== \"circle\" && roundedClassNames[rounded],\n baseVariant.className,\n className\n );\n\n if ((variant === \"text\" || variant === \"title\") && resolvedLines > 1) {\n const widths = getLineWidths(resolvedLines, lineWidths);\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex w-full flex-col\",\n containerClassName,\n animation === \"pulse\" ? \"animate-none\" : undefined\n )}\n style={{\n gap: normalizeCssValue(lineGap) ?? \"0.5rem\",\n ...containerStyle,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n >\n {widths.map((lineWidth, index) => (\n <span\n key={`skeleton-line-${index}`}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: lineWidth ?? resolvedWidth ?? \"100%\",\n ...style,\n }}\n aria-hidden=\"true\"\n />\n ))}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={skeletonClasses}\n style={{\n height: resolvedHeight,\n width: resolvedWidth ?? style?.width,\n ...style,\n }}\n aria-live=\"polite\"\n aria-busy=\"true\"\n {...props}\n />\n );\n }\n);\n\nSkeleton.displayName = \"Skeleton\";\n\nexport { Skeleton };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst switchVariants = cva(\n \"relative inline-flex items-center shrink-0 cursor-pointer rounded-full transition-all duration-200\",\n {\n variants: {\n size: {\n small: \"w-[20px] h-[12px]\",\n medium: \"w-[28px] h-[16px]\",\n large: \"w-[36px] h-[20px]\",\n },\n isChecked: {\n true: \"bg-action-fill-primary-default \",\n false: \"bg-surface-fill-neutral-subtle\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-60\",\n false: \"\",\n },\n },\n compoundVariants: [\n {\n isChecked: true,\n isDisabled: false,\n class: \"hover:bg-action-fill-primary-hover \",\n },\n {\n isChecked: false,\n isDisabled: false,\n class: \"hover:bg-action-fill-neutral-faded\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n isDisabled: false,\n },\n }\n);\n\nconst switchThumbVariants = cva(\n \"inline-block rounded-full bg-neutral-00 shadow-sm transition-transform duration-200\",\n {\n variants: {\n size: {\n small: \"h-[8px] w-[8px]\",\n medium: \"h-[12px] w-[12px]\",\n large: \"h-[16px] w-[16px]\",\n },\n isChecked: {\n true: \"\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Small size translations\n {\n size: \"small\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"small\",\n isChecked: true,\n class: \"translate-x-[10px]\",\n },\n // Medium size translations\n {\n size: \"medium\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"medium\",\n isChecked: true,\n class: \"translate-x-[14px]\",\n },\n // Large size translations\n {\n size: \"large\",\n isChecked: false,\n class: \"translate-x-[2px]\",\n },\n {\n size: \"large\",\n isChecked: true,\n class: \"translate-x-[18px]\",\n },\n ],\n defaultVariants: {\n size: \"medium\",\n isChecked: false,\n },\n }\n);\n\nexport interface SwitchProps\n extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n /**\n * Label text to display next to the switch\n */\n label?: string;\n /**\n * Size of the switch\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether the switch is disabled\n */\n isDisabled?: boolean;\n /**\n * Custom class name for the container\n */\n containerClassName?: string;\n /**\n * Custom class name for the label\n */\n labelClassName?: string;\n /**\n * Custom class name for the switch track\n */\n trackClassName?: string;\n /**\n * Custom class name for the switch thumb\n */\n thumbClassName?: string;\n}\n\nconst Switch = React.forwardRef<HTMLInputElement, SwitchProps>(\n (\n {\n label,\n size = \"medium\",\n isDisabled = false,\n containerClassName,\n labelClassName,\n trackClassName,\n thumbClassName,\n className,\n checked,\n onChange,\n ...props\n },\n ref\n ) => {\n const [internalChecked, setInternalChecked] = React.useState(false);\n const inputRef = React.useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n React.useImperativeHandle(ref, () => inputRef.current!);\n\n const isChecked = checked !== undefined ? checked : internalChecked;\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (onChange) {\n onChange(e);\n } else {\n setInternalChecked(e.target.checked);\n }\n };\n\n const handleContainerClick = () => {\n if (!isDisabled && inputRef.current) {\n inputRef.current.click();\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent) => {\n if ((e.key === \" \" || e.key === \"Enter\") && !isDisabled) {\n e.preventDefault();\n inputRef.current?.click();\n }\n };\n\n // Size-based configurations\n const sizeConfig = {\n small: {\n gap: \"gap-2\",\n labelSize: \"text-body-small-regular\",\n },\n medium: {\n gap: \"gap-2.5\",\n labelSize: \"text-body-medium-regular\",\n },\n large: {\n gap: \"gap-3\",\n labelSize: \"text-body-large-regular\",\n },\n };\n\n const config = sizeConfig[size];\n\n return (\n <div className={cn(\"inline-flex flex-col\", containerClassName)}>\n <div\n className={cn(\n \"inline-flex items-center\",\n config.gap,\n isDisabled ? \"cursor-not-allowed\" : \"cursor-pointer\"\n )}\n onClick={handleContainerClick}\n onKeyDown={handleKeyDown}\n role=\"switch\"\n aria-checked={isChecked}\n aria-disabled={isDisabled}\n tabIndex={isDisabled ? -1 : 0}\n >\n <input\n ref={inputRef}\n type=\"checkbox\"\n role=\"switch\"\n className=\"sr-only\"\n checked={isChecked}\n onChange={handleChange}\n disabled={isDisabled}\n {...props}\n />\n\n <div className=\"relative inline-flex shrink-0\">\n <div\n className={cn(\n switchVariants({\n size,\n isChecked,\n isDisabled,\n }),\n trackClassName,\n className,\n \"focus-visible:ring-2 focus-visible:ring-action-outline-primary-faded focus-visible:ring-offset-2\"\n )}\n >\n <span\n className={cn(\n switchThumbVariants({\n size,\n isChecked,\n }),\n thumbClassName\n )}\n />\n </div>\n </div>\n\n {label && (\n <label\n className={cn(\n config.labelSize,\n \"select-none inline-flex items-center\",\n isDisabled\n ? \"text-surface-ink-neutral-disabled\"\n : \"text-surface-ink-neutral-normal\",\n labelClassName\n )}\n >\n {label}\n </label>\n )}\n </div>\n </div>\n );\n }\n);\n\nSwitch.displayName = \"Switch\";\n\nexport { Switch, switchVariants };\n","import { cva } from \"class-variance-authority\";\n\nexport const tableVariants = cva(\"w-full border-collapse\", {\n variants: {\n variant: {\n default: \"border-separate border-spacing-0\",\n bordered: \"border-separate border-spacing-0\",\n striped: \"border-separate border-spacing-0\",\n },\n size: {\n small: \"text-body-small-medium\",\n medium: \"text-body-medium-medium\",\n large: \"text-body-large-medium\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"medium\",\n },\n});\n\nexport const tableHeaderVariants = cva(\n \"text-body-medium-regular text-left text-surface-ink-neutral-normal border-b border-surface-outline-neutral-muted\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[32px]\",\n medium: \"px-4 py-3 h-[40px]\",\n large: \"px-6 py-4 h-[48px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n },\n }\n);\n\nexport const tableCellVariants = cva(\n \"text-body-medium-regular border-b border-surface-outline-neutral-muted text-surface-ink-neutral-normal transition-colors duration-150\",\n {\n variants: {\n size: {\n small: \"px-3 py-2 h-[40px]\",\n medium: \"px-4 py-3 h-[72px]\",\n large: \"px-6 py-4 h-[56px]\",\n },\n state: {\n default: \"\",\n focus: \"\",\n // focus:\n // \"outline outline-2 outline-action-outline-primary-default outline-offset-[-2px]\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n state: \"default\",\n },\n }\n);\n","import * as React from \"react\";\nimport {\n flexRender,\n type Header,\n type HeaderGroup,\n} from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableHeaderVariants } from \"./tableVariants\";\n\ninterface TableHeaderProps<TData> {\n headerGroups: HeaderGroup<TData>[];\n enableRowSelection: boolean;\n enableSelectAll: boolean;\n showHeaderBackground: boolean;\n stickyHeader: boolean;\n size: \"small\" | \"medium\" | \"large\";\n headerClassName?: string;\n isDetailPanelOpen: boolean;\n visibleHeadersCount: number;\n onToggleAllRows: (e?: unknown) => void;\n isAllRowsSelected: boolean;\n isSomeRowsSelected: boolean;\n}\n\nexport function TableHeader<TData>({\n headerGroups,\n enableRowSelection,\n enableSelectAll,\n showHeaderBackground,\n stickyHeader,\n size,\n headerClassName,\n isDetailPanelOpen,\n visibleHeadersCount,\n onToggleAllRows,\n isAllRowsSelected,\n isSomeRowsSelected,\n}: TableHeaderProps<TData>) {\n return (\n <thead\n className={cn(\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n stickyHeader && \"sticky top-0 z-10\"\n )}\n >\n {headerGroups.map((headerGroup) => (\n <tr key={headerGroup.id}>\n {enableRowSelection && enableSelectAll && (\n <th\n className={cn(\n tableHeaderVariants({ size }),\n showHeaderBackground && \"bg-surface-fill-neutral-moderate\",\n \"w-10 rounded-tl-xlarge rounded-bl-xlarge\",\n headerClassName\n )}\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 shouldHideColumn =\n isDetailPanelOpen && index >= visibleHeadersCount;\n const isLastVisibleColumn = isDetailPanelOpen\n ? index === visibleHeadersCount - 1\n : 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 !enableRowSelection &&\n index === 0 &&\n \"rounded-tl-xlarge rounded-bl-xlarge\",\n isLastVisibleColumn && \"rounded-tr-xlarge rounded-br-xlarge\",\n header.column.columnDef.meta?.headerClassName,\n headerClassName,\n \"transition-all duration-300 ease-in-out\",\n shouldHideColumn\n ? \"opacity-0 translate-x-8 pointer-events-none\"\n : \"opacity-100 translate-x-0\"\n )}\n style={{\n width: header.getSize(),\n minWidth: header.column.columnDef.minSize,\n maxWidth: header.column.columnDef.maxSize,\n }}\n >\n {header.isPlaceholder ? null : (\n <div\n className={cn(\n \"flex items-center gap-2\",\n header.column.getCanSort() && \"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 </thead>\n );\n}\n","import * as React from \"react\";\nimport { flexRender, type Row } from \"@tanstack/react-table\";\nimport { cn } from \"../../lib/utils\";\nimport { Checkbox } from \"../Checkbox\";\nimport { tableCellVariants } from \"./tableVariants\";\n\ninterface TableBodyProps<TData> {\n rows: Row<TData>[];\n enableRowSelection: boolean;\n size: \"small\" | \"medium\" | \"large\";\n variant: \"default\" | \"bordered\" | \"striped\";\n showRowHover: boolean;\n cellClassName?: string;\n isDetailPanelOpen: boolean;\n visibleHeadersCount: number;\n effectiveSelectedRowId: string | null;\n onRowClick?: (row: TData) => void;\n getRowClassName: (row: TData) => string;\n handleRowClick: (row: TData, rowId: string) => void;\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 isDetailPanelOpen,\n visibleHeadersCount,\n effectiveSelectedRowId,\n onRowClick,\n getRowClassName,\n handleRowClick,\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=\"bg-surface-fill-neutral-intense\">\n {rows.map((row) => {\n const isRowSelected = row.id === effectiveSelectedRowId;\n const isRowHovered = hoveredRow === row.id;\n const handleClick = () => handleRowClick(row.original, row.id);\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 isRowSelected && \"bg-action-fill-primary-faded\",\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 >\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 shouldHideColumn =\n isDetailPanelOpen && cellIndex >= visibleHeadersCount;\n const isCellFocused =\n focusedCell?.rowId === row.id &&\n focusedCell?.cellId === cell.id;\n const cellState = isCellFocused ? \"focus\" : \"default\";\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 \"transition-all duration-300 ease-in-out\",\n shouldHideColumn\n ? \"opacity-0 translate-x-8 pointer-events-none\"\n : \"opacity-100 translate-x-0\"\n )}\n style={{\n width: cell.column.getSize(),\n minWidth: cell.column.columnDef.minSize,\n maxWidth: cell.column.columnDef.maxSize,\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 { cn } from \"../../lib/utils\";\n\ninterface DetailPanelProps<TData> {\n isOpen: boolean;\n content: (data: TData) => React.ReactNode;\n data: TData | null;\n onClose: () => void;\n}\n\nexport function DetailPanel<TData>({\n isOpen,\n content,\n data,\n onClose,\n}: DetailPanelProps<TData>) {\n return (\n <div\n className={cn(\n \"absolute top-0 right-0 h-full z-20 transition-all duration-300 ease-in-out\",\n isOpen\n ? \"translate-x-0 opacity-100\"\n : \"translate-x-full opacity-0 pointer-events-none\"\n )}\n style={{ width: \"332px\", paddingLeft: \"12px\" }}\n >\n <div className=\"w-full h-full bg-white border border-surface-outline-neutral-muted rounded-tr-xlarge rounded-br-xlarge overflow-hidden\">\n <div className=\"w-full h-full overflow-auto\">\n {data && (\n <div className=\"relative h-full\">\n <button\n onClick={(e) => {\n e.stopPropagation();\n onClose();\n }}\n className=\"absolute top-4 right-4 z-10 p-2 rounded-medium hover:bg-surface-fill-neutral-faded transition-colors\"\n aria-label=\"Close detail panel\"\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=\"M12 4L4 12M4 4l8 8\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n </button>\n {content(data)}\n </div>\n )}\n </div>\n </div>\n </div>\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 { DetailPanel } from \"./DetailPanel\";\nimport { tableVariants } from \"./tableVariants\";\nimport {\n renderDefaultLoadingState,\n renderDefaultEmptyState,\n} from \"./tableHelpers\";\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 detailPanel?: (row: TData) => React.ReactNode;\n hideColumnsOnDetailOpen?: number;\n selectedRowId?: string;\n onRowSelectionChange?: (rowId: string | null) => void;\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 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 detailPanel,\n hideColumnsOnDetailOpen = 3,\n selectedRowId,\n onRowSelectionChange,\n ...props\n }: TableProps<TData>,\n ref: React.ForwardedRef<HTMLDivElement>\n) {\n // ==================== State ====================\n\n const [internalSelectedRowId, setInternalSelectedRowId] = React.useState<\n string | null\n >(null);\n const selectedRowIdRef = React.useRef<string | null>(null);\n\n const effectiveSelectedRowId =\n selectedRowId !== undefined ? selectedRowId : internalSelectedRowId;\n const isDetailPanelOpen = Boolean(effectiveSelectedRowId);\n\n // ==================== Effects ====================\n\n // Keep ref in sync\n React.useEffect(() => {\n selectedRowIdRef.current = effectiveSelectedRowId;\n }, [effectiveSelectedRowId]);\n\n // Clear selection if selected row is not in current data\n React.useEffect(() => {\n if (effectiveSelectedRowId) {\n const rowExists = table\n .getRowModel()\n .rows.some((r) => r.id === effectiveSelectedRowId);\n\n if (!rowExists) {\n if (selectedRowId === undefined) {\n setInternalSelectedRowId(null);\n }\n if (onRowSelectionChange) {\n onRowSelectionChange(null);\n }\n }\n }\n }, [\n table.getRowModel().rows,\n effectiveSelectedRowId,\n selectedRowId,\n onRowSelectionChange,\n ]);\n\n // ==================== Computed Values ====================\n\n const hasData = table.getRowModel().rows?.length > 0;\n const headerGroups = table.getHeaderGroups();\n const headers = headerGroups[0]?.headers || [];\n\n const visibleHeadersCount = React.useMemo(() => {\n return isDetailPanelOpen\n ? headers.length - hideColumnsOnDetailOpen\n : headers.length;\n }, [isDetailPanelOpen, headers.length, hideColumnsOnDetailOpen]);\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, rowId: string) => {\n const currentSelectedId = selectedRowIdRef.current;\n const newSelectedId = currentSelectedId === rowId ? null : rowId;\n\n if (selectedRowId === undefined) {\n setInternalSelectedRowId(newSelectedId);\n }\n\n if (onRowSelectionChange) {\n onRowSelectionChange(newSelectedId);\n }\n\n if (onRowClick) {\n onRowClick(row);\n }\n },\n [selectedRowId, onRowSelectionChange, onRowClick]\n );\n\n const getSelectedRowData = (): TData | null => {\n if (!effectiveSelectedRowId) return null;\n const row = table\n .getRowModel()\n .rows.find((r) => r.id === effectiveSelectedRowId);\n return row ? row.original : null;\n };\n\n const handleDetailPanelClose = () => {\n if (selectedRowId === undefined) {\n setInternalSelectedRowId(null);\n }\n if (onRowSelectionChange) {\n onRowSelectionChange(null);\n }\n };\n\n // ==================== Render Helpers ====================\n\n const renderLoadingState = () => {\n if (loadingComponent) return loadingComponent;\n return renderDefaultLoadingState({ colSpan: table.getAllColumns().length });\n };\n\n const renderEmptyState = () => {\n if (emptyComponent) return emptyComponent;\n return renderDefaultEmptyState({ colSpan: table.getAllColumns().length });\n };\n\n // ==================== Render ====================\n\n return (\n <div ref={ref} className={cn(\"w-full\", wrapperClassName)} {...props}>\n <div\n className={cn(\n \"relative overflow-x-hidden\",\n maxHeight && \"overflow-y-auto\",\n containerClassName\n )}\n style={maxHeight ? { maxHeight } : undefined}\n >\n <table className={cn(tableVariants({ variant, size }), className)}>\n <TableHeader\n headerGroups={headerGroups}\n enableRowSelection={enableRowSelection}\n enableSelectAll={enableSelectAll}\n showHeaderBackground={showHeaderBackground}\n stickyHeader={stickyHeader}\n size={size || \"medium\"}\n headerClassName={headerClassName}\n isDetailPanelOpen={isDetailPanelOpen}\n visibleHeadersCount={visibleHeadersCount}\n onToggleAllRows={(e) => table.getToggleAllRowsSelectedHandler()(e)}\n isAllRowsSelected={table.getIsAllRowsSelected()}\n isSomeRowsSelected={table.getIsSomeRowsSelected()}\n />\n\n {isLoading ? (\n <tbody>{renderLoadingState()}</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 isDetailPanelOpen={isDetailPanelOpen}\n visibleHeadersCount={visibleHeadersCount}\n effectiveSelectedRowId={effectiveSelectedRowId}\n onRowClick={onRowClick}\n getRowClassName={getRowClassName}\n handleRowClick={handleRowClickInternal}\n />\n )}\n </table>\n\n {detailPanel && (\n <DetailPanel\n isOpen={isDetailPanelOpen}\n content={detailPanel}\n data={getSelectedRowData()}\n onClose={handleDetailPanelClose}\n />\n )}\n </div>\n </div>\n );\n}\n\n// ==================== Export ====================\n\nexport const Table = React.forwardRef(TableComponent) as <\n TData extends RowData\n>(\n props: TableProps<TData> & { ref?: React.ForwardedRef<HTMLDivElement> }\n) => ReturnType<typeof TableComponent>;\n\n(Table as any).displayName = \"Table\";\n\nexport * from \"./tableVariants\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nexport interface TableDetailPanelProps {\n /**\n * Whether the panel is open\n */\n isOpen: boolean;\n /**\n * Callback to close the panel\n */\n onClose?: () => void;\n /**\n * Content to display in the panel\n */\n children: React.ReactNode;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Panel width\n */\n width?: string | number;\n}\n\nexport const TableDetailPanel = React.forwardRef<\n HTMLDivElement,\n TableDetailPanelProps\n>(({ isOpen, onClose, children, className, width = \"400px\" }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\n \"absolute top-0 right-0 h-full bg-white border border-surface-outline-neutral-muted transition-transform duration-300 ease-in-out overflow-auto\",\n isOpen ? \"translate-x-0\" : \"translate-x-full\",\n className\n )}\n style={{ width }}\n >\n {children}\n </div>\n );\n});\n\nTableDetailPanel.displayName = \"TableDetailPanel\";\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\n// ==================== Number Cell ====================\n\ninterface NumberCellProps {\n value: number;\n currency?: string;\n subtitle?: string;\n className?: string;\n}\n\nexport function NumberCell({\n value,\n currency,\n subtitle,\n className,\n}: NumberCellProps) {\n return (\n <div className={cn(\"flex flex-col\", className)}>\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {currency}{\" \"}\n {value.toLocaleString(\"en-IN\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n );\n}\n\n// ==================== Icon Cell ====================\n\ninterface IconCellProps {\n icon: React.ReactNode;\n background?: \"neutral\" | \"primary\" | \"success\" | \"warning\" | \"danger\";\n className?: string;\n}\n\nexport function IconCell({\n icon,\n background = \"neutral\",\n className,\n}: IconCellProps) {\n const backgrounds = {\n neutral: \"bg-surface-fill-neutral-faded\",\n primary: \"bg-action-fill-primary-faded\",\n success: \"bg-action-fill-positive-faded\",\n warning: \"bg-action-fill-warning-faded\",\n danger: \"bg-action-fill-negative-faded\",\n };\n\n return (\n <div\n className={cn(\n \"inline-flex items-center justify-center w-10 h-10 rounded-medium\",\n backgrounds[background],\n className\n )}\n >\n {icon}\n </div>\n );\n}\n\n// ==================== Spacer Cell ====================\n\nexport function SpacerCell() {\n return <div className=\"w-full h-full\" />;\n}\n\n// ==================== Slot Cell ====================\n\ninterface SlotCellProps {\n onDragStart?: (e: React.DragEvent) => void;\n onDragEnd?: (e: React.DragEvent) => void;\n className?: string;\n}\n\nexport function SlotCell({ onDragStart, onDragEnd, className }: SlotCellProps) {\n return (\n <div\n draggable\n onDragStart={onDragStart}\n onDragEnd={onDragEnd}\n className={cn(\n \"flex items-center justify-center cursor-grab active:cursor-grabbing\",\n className\n )}\n >\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 16 16\"\n fill=\"none\"\n className=\"text-surface-ink-neutral-muted\"\n >\n <path\n d=\"M6 4C6 3.44772 5.55228 3 5 3C4.44772 3 4 3.44772 4 4C4 4.55228 4.44772 5 5 5C5.55228 5 6 4.55228 6 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 8C6 7.44772 5.55228 7 5 7C4.44772 7 4 7.44772 4 8C4 8.55228 4.44772 9 5 9C5.55228 9 6 8.55228 6 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6 12C6 11.4477 5.55228 11 5 11C4.44772 11 4 11.4477 4 12C4 12.5523 4.44772 13 5 13C5.55228 13 6 12.5523 6 12Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 4C12 3.44772 11.5523 3 11 3C10.4477 3 10 3.44772 10 4C10 4.55228 10.4477 5 11 5C11.5523 5 12 4.55228 12 4Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 8C12 7.44772 11.5523 7 11 7C10.4477 7 10 7.44772 10 8C10 8.55228 10.4477 9 11 9C11.5523 9 12 8.55228 12 8Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12 12C12 11.4477 11.5523 11 11 11C10.4477 11 10 11.4477 10 12C10 12.5523 10.4477 13 11 13C11.5523 13 12 12.5523 12 12Z\"\n fill=\"currentColor\"\n />\n </svg>\n </div>\n );\n}\n\n// ==================== Avatar Cell ====================\n\ninterface AvatarCellProps {\n name: string;\n initials?: string;\n avatar?: string;\n subtitle?: string;\n color?: string;\n className?: string;\n}\n\nexport function AvatarCell({\n name,\n initials,\n avatar,\n subtitle,\n color = \"a1\",\n className,\n}: AvatarCellProps) {\n return (\n <div className={cn(\"flex items-center gap-3\", className)}>\n {avatar ? (\n <img\n src={avatar}\n alt={name}\n className=\"w-10 h-10 rounded-full object-cover\"\n />\n ) : (\n <div\n className={cn(\n \"w-10 h-10 rounded-full flex items-center justify-center text-body-medium-medium\",\n `bg-${color}`\n )}\n >\n {initials || name.charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"flex flex-col\">\n <div className=\"text-body-medium-medium text-surface-ink-neutral-normal\">\n {name}\n </div>\n {subtitle && (\n <div className=\"text-body-small-regular text-surface-ink-neutral-muted\">\n {subtitle}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nimport { cva } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst tabItemVariants = cva(\n `inline-flex items-center justify-center gap-3 whitespace-nowrap transition-all focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 relative cursor-pointer -mb-[1.5px]`,\n {\n variants: {\n variant: {\n bordered: \"border-b-[1.5px]\",\n borderless: \"border-b-[1.5px]\",\n },\n size: {\n small: \"px-2 py-3 h-9\",\n medium: \"px-3 py-4 h-11\",\n large: \"px-3 py-4 h-12\",\n },\n isSelected: {\n true: \"\",\n false: \"\",\n },\n isDisabled: {\n true: \"cursor-not-allowed opacity-50\",\n false: \"\",\n },\n isFullWidth: {\n true: \"flex-1\",\n false: \"\",\n },\n },\n compoundVariants: [\n // Bordered and borderless variants - not selected\n {\n variant: [\"bordered\", \"borderless\"],\n isSelected: false,\n isDisabled: false,\n class: `text-text-body-secondary \n border-b-transparent\n text-action-ink-neutral-muted\n hover:text-action-ink-neutral-subtle\n hover:border-b-action-outline-neutral-faded-hover`,\n },\n // Bordered variant - selected\n {\n variant: \"bordered\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Borderless variant - selected\n {\n variant: \"borderless\",\n isSelected: true,\n isDisabled: false,\n class:\n \"text-text-body-primary border-b-action-fill-primary-default text-action-ink-primary-normal hover:border-b-action-fill-primary-hover z-10\",\n },\n // Typography by size and selection\n {\n size: [\"small\", \"medium\"],\n isSelected: false,\n class: \"text-body-medium-medium\",\n },\n {\n size: [\"small\", \"medium\"],\n isSelected: true,\n class: \"text-body-medium-semibold\",\n },\n {\n size: \"large\",\n isSelected: false,\n class: \"text-body-large-medium\",\n },\n {\n size: \"large\",\n isSelected: true,\n class: \"text-body-large-semibold\",\n },\n // Bordered and borderless variants - disabled\n {\n variant: [\"bordered\", \"borderless\"],\n isDisabled: true,\n class: \"text-text-body-disabled border-b-transparent\",\n },\n ],\n defaultVariants: {\n variant: \"bordered\",\n size: \"large\",\n isSelected: false,\n isDisabled: false,\n isFullWidth: false,\n },\n }\n);\n\nexport interface TabItemProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"children\"> {\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is currently selected\n */\n isSelected?: boolean;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab size variant\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Whether the tab should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name\n */\n className?: string;\n /**\n * Click handler\n */\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n}\n\nconst TabItem = React.forwardRef<HTMLButtonElement, TabItemProps>(\n (\n {\n leadingComponent,\n title,\n trailingComponent,\n isSelected = false,\n isDisabled = false,\n size = \"large\",\n variant = \"bordered\",\n isFullWidth = false,\n className,\n onClick,\n ...props\n },\n ref\n ) => {\n return (\n <button\n ref={ref}\n type=\"button\"\n role=\"tab\"\n aria-selected={isSelected}\n disabled={isDisabled}\n className={cn(\n tabItemVariants({\n variant,\n size,\n isSelected,\n isDisabled,\n isFullWidth,\n }),\n className\n )}\n onClick={onClick}\n {...props}\n >\n {leadingComponent && (\n <span className=\"inline-flex items-center\">{leadingComponent}</span>\n )}\n <span className=\"inline-flex items-center\">{title}</span>\n {trailingComponent && (\n <span className=\"inline-flex items-center\">{trailingComponent}</span>\n )}\n </button>\n );\n }\n);\n\nTabItem.displayName = \"TabItem\";\n\nexport { TabItem, tabItemVariants };\n","import * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { TabItem, type TabItemProps } from \"../TabItem/TabItem\";\n\nexport interface Tab {\n /**\n * Unique identifier for the tab\n */\n id: string | number;\n /**\n * Leading component (e.g., icon)\n */\n leadingComponent?: React.ReactNode;\n /**\n * Tab title/label\n */\n title: string;\n /**\n * Trailing component (e.g., badge, close button)\n */\n trailingComponent?: React.ReactNode;\n /**\n * Whether the tab is disabled\n */\n isDisabled?: boolean;\n /**\n * Tab content to render when selected\n */\n content?: React.ReactNode;\n}\n\nexport interface TabsProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\"> {\n /**\n * Array of tab configurations\n */\n tabs: Tab[];\n /**\n * Currently selected tab ID\n */\n selectedTabId?: string | number;\n /**\n * Default selected tab ID (for uncontrolled mode)\n */\n defaultSelectedTabId?: string | number;\n /**\n * Callback when tab selection changes\n */\n onTabChange?: (tabId: string | number) => void;\n /**\n * Tab visual variant\n */\n variant?: \"bordered\" | \"borderless\";\n /**\n * Tab size\n */\n size?: \"small\" | \"medium\" | \"large\";\n /**\n * Whether tabs should take full width\n */\n isFullWidth?: boolean;\n /**\n * Custom class name for the tabs container\n */\n className?: string;\n /**\n * Custom class name for the tab list\n */\n tabListClassName?: string;\n /**\n * Custom class name for the tab content area\n */\n contentClassName?: string;\n /**\n * Whether to render tab content\n */\n renderContent?: boolean;\n}\n\nconst Tabs = React.forwardRef<HTMLDivElement, TabsProps>(\n (\n {\n tabs,\n selectedTabId,\n defaultSelectedTabId,\n onTabChange,\n variant = \"bordered\",\n size = \"large\",\n isFullWidth = false,\n className,\n tabListClassName,\n contentClassName,\n renderContent = true,\n ...props\n },\n ref\n ) => {\n // Internal state for uncontrolled mode\n const [internalSelectedId, setInternalSelectedId] = React.useState<\n string | number\n >(defaultSelectedTabId || tabs[0]?.id || \"\");\n\n // Determine if component is controlled\n const isControlled = selectedTabId !== undefined;\n const activeTabId = isControlled ? selectedTabId : internalSelectedId;\n\n // Handle tab selection\n const handleTabClick = (tabId: string | number) => {\n if (!isControlled) {\n setInternalSelectedId(tabId);\n }\n onTabChange?.(tabId);\n };\n\n // Get the active tab content\n const activeTab = tabs.find((tab) => tab.id === activeTabId);\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)} {...props}>\n {/* Tab List */}\n <div\n role=\"tablist\"\n className={cn(\n \"inline-flex items-center gap-4\",\n {\n \"w-full\": isFullWidth,\n \"border-b border-b-[1.5px] border-surface-outline-neutral-muted\":\n variant === \"bordered\",\n },\n tabListClassName\n )}\n >\n {tabs.map((tab) => (\n <TabItem\n key={tab.id}\n id={String(tab.id)}\n leadingComponent={tab.leadingComponent}\n title={tab.title}\n trailingComponent={tab.trailingComponent}\n isSelected={tab.id === activeTabId}\n isDisabled={tab.isDisabled}\n variant={variant}\n size={size}\n isFullWidth={isFullWidth}\n onClick={() => !tab.isDisabled && handleTabClick(tab.id)}\n />\n ))}\n </div>\n\n {/* Tab Content */}\n {renderContent && activeTab?.content && (\n <div\n role=\"tabpanel\"\n className={cn(\"mt-4\", contentClassName)}\n aria-labelledby={String(activeTabId)}\n >\n {activeTab.content}\n </div>\n )}\n </div>\n );\n }\n);\n\nTabs.displayName = \"Tabs\";\n\nexport { Tabs };\n","import * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\nimport { FormHeader } from \"../FormHeader\";\nimport { FormFooter } from \"../FormFooter\";\n\nconst textAreaVariants = cva(\n \"relative flex flex-col border rounded-large transition-all font-display font-size-100 leading-100\",\n {\n variants: {\n size: {\n small: \"p-3 min-h-[56px] text-xs gap-2\",\n medium: \"p-4 min-h-[56px] text-sm gap-2\",\n large: \"p-5 min-h-[64px]text-base gap-3\",\n },\n validationState: {\n none: `\n border-action-outline-neutral-faded \n hover:border-action-outline-primary-hover \n focus-within:border-action-outline-primary-hover \n focus-within:ring-2 \n ring-action-outline-primary-faded-hover`,\n positive: `\n border-action-outline-positive-default \n focus-within:border-action-outline-positive-hover\n focus-within:ring-2\n ring-action-outline-positive-faded-hover`,\n negative: `border-action-outline-negative-default \n focus-within:border-action-outline-negative-hover\n focus-within:ring-2 \n ring-action-outline-negative-faded-hover`,\n },\n isDisabled: {\n true: `\n border-[var(--border-width-thinner)]\n hover:border-action-outline-neutral-disabled\n border-action-outline-neutral-disabled\n bg-surface-fill-neutral-intense cursor-not-allowed opacity-60`,\n false: \"bg-surface-fill-neutral-intense\",\n },\n },\n defaultVariants: {\n size: \"medium\",\n validationState: \"none\",\n isDisabled: false,\n },\n }\n);\n\nexport interface TextAreaProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"size\"> {\n label?: string;\n helperText?: string;\n errorText?: string;\n successText?: string;\n size?: \"small\" | \"medium\" | \"large\";\n validationState?: \"none\" | \"positive\" | \"negative\";\n isDisabled?: boolean;\n isRequired?: boolean;\n isOptional?: boolean;\n maxChar?: number;\n showCharCount?: boolean;\n containerClassName?: string;\n labelClassName?: string;\n textAreaClassName?: string;\n infoHeading?: string;\n infoDescription?: string;\n 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 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 linkText={linkText}\n linkHref={linkHref}\n onLinkClick={onLinkClick}\n htmlFor={props.id}\n className=\"mb-2\"\n labelClassName={labelClassName}\n />\n )}\n\n <div\n className={cn(\n textAreaVariants({\n size,\n validationState: currentValidationState,\n isDisabled,\n }),\n className\n )}\n >\n <textarea\n ref={ref}\n value={textAreaValue}\n onChange={handleChange}\n disabled={isDisabled}\n required={isRequired}\n rows={rows}\n className={cn(\n \"flex-1 bg-transparent border-none outline-none text-surface-ink-neutral-normal placeholder:text-surface-ink-neutral-muted disabled:cursor-not-allowed disabled:text-surface-ink-neutral-disabled font-display resize-none\",\n size === \"small\" && \"text-xs\",\n size === \"medium\" && \"text-sm\",\n size === \"large\" && \"text-base\",\n textAreaClassName\n )}\n {...props}\n />\n </div>\n <FormFooter\n helperText={displayHelperText}\n trailingText={\n maxChar && showCharCount ? `${currentLength}/${maxChar}` : undefined\n }\n validationState={\n currentValidationState === \"none\"\n ? \"default\"\n : currentValidationState\n }\n size={size}\n isDisabled={isDisabled}\n className=\"mt-1\"\n trailingTextClassName={cn(\n \"transition-colors\",\n isAtLimit\n ? \"text-feedback-ink-negative-subtle\"\n : isNearLimit\n ? \"text-feedback-ink-warning-subtle\"\n : \"\"\n )}\n />\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport { TextArea, textAreaVariants };\n"],"names":["clsx","twMerge","React","cva","_jsxs","_jsx","Slot","PulseLoader","ClipLoader","ExternalLink","Loader2","Search","_Fragment","X","ChevronDown","ChevronLeft","ChevronRight","createPortal","flexRender"],"mappings":"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"}