@adsgency_npm/adsgency-ads-ui 0.1.0-alpha.12 → 0.1.0-alpha.13

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/AdsAccordion/index.tsx","../src/i18n/AdsI18nProvider.tsx","../src/i18n/defaultMessages.ts","../src/lib/cn.ts","../src/primitives/accordion.tsx","../src/components/AdsAlert/index.tsx","../src/primitives/alert.tsx","../src/components/AdsBadge/index.tsx","../src/primitives/badge.tsx","../src/components/AdsAlertDialog/index.tsx","../src/lib/colorClassNames.ts","../src/components/AdsButton/index.tsx","../src/primitives/button.tsx","../src/components/AdsSpinner/index.tsx","../src/components/AdsBreadcrumb/index.tsx","../src/primitives/breadcrumb.tsx","../src/components/AdsCheckbox/index.tsx","../src/primitives/checkbox.tsx","../src/components/AdsField/index.tsx","../src/primitives/field.tsx","../src/primitives/label.tsx","../src/primitives/separator.tsx","../src/components/AdsCalendar/index.tsx","../src/primitives/input.tsx","../src/components/AdsPopover/index.tsx","../src/primitives/popover.tsx","../src/primitives/calendar.tsx","../src/primitives/select.tsx","../src/components/AdsButtonGroup/index.tsx","../src/primitives/button-group.tsx","../src/components/AdsSeparator/index.tsx","../src/components/AdsSkeleton/index.tsx","../src/primitives/skeleton.tsx","../src/components/AdsInput/index.tsx","../src/lib/adsClearButton.tsx","../src/components/AdsInputGroup/index.tsx","../src/primitives/textarea.tsx","../src/components/AdsInputOTP/index.tsx","../src/primitives/input-otp.tsx","../src/components/AdsDataPagination/index.tsx","../src/components/AdsPagination/index.tsx","../src/primitives/pagination.tsx","../src/components/AdsSelect/index.tsx","../src/components/AdsDataTable/index.tsx","../src/components/AdsEmpty/index.tsx","../src/components/AdsTable/index.tsx","../src/components/AdsRadioGroup/index.tsx","../src/primitives/radio-group.tsx","../src/primitives/table.tsx","../src/components/AdsDataTableToolbar/index.tsx","../src/components/AdsViewCustomersDataTable/index.tsx","../src/components/AdsProgress/index.tsx","../src/primitives/progress.tsx","../src/components/AdsSlider/index.tsx","../src/primitives/slider.tsx","../src/components/AdsSwitch/index.tsx","../src/primitives/switch.tsx","../src/components/AdsTabs/index.tsx","../src/primitives/tabs.tsx","../src/components/AdsToggle/index.tsx","../src/primitives/toggle.tsx","../src/components/AdsToggleGroup/index.tsx","../src/primitives/toggle-group.tsx","../src/components/AdsTextarea/index.tsx","../src/components/AdsTooltip/index.tsx","../src/primitives/tooltip.tsx","../src/components/AdsToast/index.tsx","../src/components/AdsDialog/index.tsx","../src/components/AdsMasonry/index.tsx","../src/tokens/designTokens.ts"],"sourcesContent":["\"use client\";\n\nexport * from \"./components\";\nexport * from \"./i18n\";\nexport * from \"./tokens/designTokens\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../../primitives/accordion\";\n\nexport type AdsAccordionMode = \"single\" | \"multiple\";\n\nexport type AdsAccordionItem = {\n content: React.ReactNode;\n disabled?: boolean;\n title: React.ReactNode;\n value: string;\n};\n\nexport interface AdsAccordionProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"dir\" | \"onChange\"> {\n defaultValue?: string | string[];\n dir?: \"ltr\" | \"rtl\";\n getToggleLabel?: (item: AdsAccordionItem, isOpen: boolean) => string;\n items: AdsAccordionItem[];\n mode?: AdsAccordionMode;\n onValueChange?: (value: string | string[]) => void;\n value?: string | string[];\n}\n\nfunction toValueSet(value: string | string[] | undefined): Set<string> {\n if (!value || value === \"\") {\n return new Set();\n }\n\n return new Set(Array.isArray(value) ? value : [value]);\n}\n\nfunction toExternalValue(value: Set<string>, mode: AdsAccordionMode) {\n if (mode === \"single\") {\n return Array.from(value)[0] ?? \"\";\n }\n\n return Array.from(value);\n}\n\nfunction toPrimitiveValue(\n value: string | string[] | undefined,\n mode: AdsAccordionMode,\n) {\n if (mode === \"single\") {\n return Array.isArray(value) ? value[0] ?? \"\" : value ?? \"\";\n }\n\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nexport const AdsAccordion = React.forwardRef<HTMLDivElement, AdsAccordionProps>(\n (\n {\n className,\n defaultValue,\n getToggleLabel,\n items,\n mode = \"single\",\n onValueChange,\n value,\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string | string[]>(() =>\n mode === \"single\" ? toPrimitiveValue(defaultValue, \"single\") : toPrimitiveValue(defaultValue, \"multiple\"),\n );\n const resolvedValue = isControlled ? toPrimitiveValue(value, mode) : internalValue;\n const openValues = toValueSet(\n Array.isArray(resolvedValue) ? resolvedValue : resolvedValue || undefined,\n );\n\n const handleValueChange = (nextValue: string | string[]) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onValueChange?.(toExternalValue(toValueSet(nextValue), mode));\n };\n\n const content = items.map((item, index) => {\n const isOpen = openValues.has(item.value);\n const isLastItem = index === items.length - 1;\n const toggleLabel =\n getToggleLabel?.(item, isOpen) ??\n (isOpen ? messages.accordion.collapse : messages.accordion.expand);\n\n return (\n <AccordionItem\n className={cn(\"w-full border-border\", (!isLastItem || isOpen) && \"border-b\")}\n disabled={item.disabled}\n key={item.value}\n value={item.value}\n >\n <AccordionTrigger\n className={cn(\n \"group flex h-[52px] w-full items-center py-lg text-left text-sm font-medium leading-5 text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background hover:no-underline [&>svg]:ml-md [&>svg]:text-foreground\",\n item.disabled\n ? \"cursor-not-allowed opacity-50\"\n : \"cursor-pointer hover:text-foreground\",\n )}\n >\n <span className=\"min-w-0 flex-1 pr-md\">\n <span className=\"break-words group-hover:underline\">{item.title}</span>\n </span>\n <span className=\"sr-only\">{toggleLabel}</span>\n </AccordionTrigger>\n <AccordionContent className=\"grid overflow-hidden transition-[grid-template-rows,opacity] duration-200 ease-out data-[state=closed]:grid-rows-[0fr] data-[state=closed]:opacity-0 data-[state=open]:grid-rows-[1fr] data-[state=open]:opacity-100\">\n <div className=\"min-h-0 overflow-hidden\">\n <div className=\"flex w-full flex-col gap-lg pb-lg text-sm font-normal leading-5 text-foreground\">\n {item.content}\n </div>\n </div>\n </AccordionContent>\n </AccordionItem>\n );\n });\n\n if (mode === \"single\") {\n return (\n <Accordion\n className={cn(\"flex w-full max-w-[503px] flex-col\", className)}\n collapsible\n onValueChange={handleValueChange}\n ref={ref}\n type=\"single\"\n value={typeof resolvedValue === \"string\" ? resolvedValue : \"\"}\n {...props}\n >\n {content}\n </Accordion>\n );\n }\n\n return (\n <Accordion\n className={cn(\"flex w-full max-w-[503px] flex-col\", className)}\n onValueChange={handleValueChange}\n ref={ref}\n type=\"multiple\"\n value={Array.isArray(resolvedValue) ? resolvedValue : []}\n {...props}\n >\n {content}\n </Accordion>\n );\n },\n);\nAdsAccordion.displayName = \"AdsAccordion\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { adsDefaultMessages } from \"./defaultMessages\";\nimport type { AdsLocale, AdsMessages, AdsMessagesOverride } from \"./types\";\n\ntype AdsI18nContextValue = {\n locale: AdsLocale;\n messages: AdsMessages;\n};\n\nconst AdsI18nContext = React.createContext<AdsI18nContextValue>({\n locale: \"en\",\n messages: adsDefaultMessages.en,\n});\n\nfunction mergeMessages(\n locale: AdsLocale,\n messages?: AdsMessagesOverride,\n): AdsMessages {\n const baseMessages = adsDefaultMessages[locale];\n\n return {\n accordion: {\n ...baseMessages.accordion,\n ...messages?.accordion,\n },\n button: {\n ...baseMessages.button,\n ...messages?.button,\n },\n dialog: {\n ...baseMessages.dialog,\n ...messages?.dialog,\n },\n input: {\n ...baseMessages.input,\n ...messages?.input,\n },\n select: {\n ...baseMessages.select,\n ...messages?.select,\n },\n toast: {\n ...baseMessages.toast,\n ...messages?.toast,\n },\n table: {\n ...baseMessages.table,\n ...messages?.table,\n },\n pagination: {\n ...baseMessages.pagination,\n ...messages?.pagination,\n },\n };\n}\n\nexport function AdsI18nProvider({\n children,\n locale = \"en\",\n messages,\n}: {\n children: React.ReactNode;\n locale?: AdsLocale;\n messages?: AdsMessagesOverride;\n}) {\n const value = React.useMemo(\n () => ({\n locale,\n messages: mergeMessages(locale, messages),\n }),\n [locale, messages],\n );\n\n return (\n <AdsI18nContext.Provider value={value}>{children}</AdsI18nContext.Provider>\n );\n}\n\nexport function useAdsI18n() {\n return React.useContext(AdsI18nContext);\n}\n","import type { AdsMessages } from \"./types\";\n\nexport const adsDefaultMessages: Record<\"en\" | \"zh\", AdsMessages> = {\n en: {\n accordion: {\n expand: \"Expand section\",\n collapse: \"Collapse section\",\n },\n button: {\n loading: \"Loading\",\n },\n dialog: {\n close: \"Close dialog\",\n },\n input: {\n clear: \"Clear input\",\n chooseFile: \"Choose File\",\n noFileChosen: \"No file chosen\",\n optional: \"Optional\",\n },\n select: {\n clear: \"Clear selection\",\n },\n toast: {\n notifications: \"Notifications\",\n },\n table: {\n clearSort: \"Clear sort\",\n collapseRow: \"Collapse row\",\n expandRow: \"Expand row\",\n filterColumn: \"Filter column\",\n loadingRows: \"Loading table rows\",\n noDataAvailable: \"No data available\",\n selectAllRows: \"Select all rows\",\n selectRow: \"Select row\",\n sortAscending: \"Sort ascending\",\n sortDescending: \"Sort descending\",\n },\n pagination: {\n first: \"First\",\n last: \"Last\",\n previous: \"Previous\",\n next: \"Next\",\n morePages: \"More pages\",\n navigation: \"Pagination\",\n itemsPerPage: \"Items per page\",\n itemsPerPageOption: \"{{value}} / page\",\n jumpTo: \"Jump to page\",\n total: \"Showing {{start}}-{{end}} of {{total}}\",\n compactTotal: \"Total: {{total}}\",\n pageStatus: \"Page {{page}} of {{pages}}\",\n },\n },\n zh: {\n accordion: {\n expand: \"展开内容\",\n collapse: \"收起内容\",\n },\n button: {\n loading: \"加载中\",\n },\n dialog: {\n close: \"关闭弹窗\",\n },\n input: {\n clear: \"清除输入\",\n chooseFile: \"选择文件\",\n noFileChosen: \"未选择文件\",\n optional: \"可选\",\n },\n select: {\n clear: \"清除选择\",\n },\n toast: {\n notifications: \"通知\",\n },\n table: {\n clearSort: \"清除排序\",\n collapseRow: \"收起行\",\n expandRow: \"展开行\",\n filterColumn: \"筛选列\",\n loadingRows: \"正在加载表格行\",\n noDataAvailable: \"暂无数据\",\n selectAllRows: \"选择全部行\",\n selectRow: \"选择行\",\n sortAscending: \"升序排序\",\n sortDescending: \"降序排序\",\n },\n pagination: {\n first: \"第一页\",\n last: \"最后一页\",\n previous: \"上一页\",\n next: \"下一页\",\n morePages: \"更多页码\",\n navigation: \"分页\",\n itemsPerPage: \"每页条数\",\n itemsPerPageOption: \"{{value}} / 页\",\n jumpTo: \"跳转页码\",\n total: \"显示第 {{start}}-{{end}} 条,共 {{total}} 条\",\n compactTotal: \"总数: {{total}}\",\n pageStatus: \"第 {{page}} / {{pages}} 页\",\n },\n },\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { CircleAlert, CircleCheck, Info, TriangleAlert } from \"lucide-react\";\n\nimport {\n Alert as BaseAlert,\n AlertDescription as BaseAlertDescription,\n AlertTitle as BaseAlertTitle,\n} from \"../../primitives/alert\";\nimport { cn } from \"../../lib/cn\";\n\nconst adsAlertVariants = cva(\n \"relative flex w-full rounded-radius-lg border border-border bg-card px-4 py-3 [&>[data-slot=alert-icon]]:!text-[inherit]\",\n {\n variants: {\n variant: {\n default: \"text-foreground\",\n destructive: \"text-destructive\",\n success: \"text-success\",\n warning: \"text-warning\",\n info: \"text-info\",\n },\n hasSupportingContent: {\n true: \"items-start gap-3\",\n false: \"items-center gap-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n hasSupportingContent: true,\n },\n },\n);\n\nconst descriptionVariants = cva(\n \"min-w-0 text-sm leading-5 text-current [&_p]:leading-5\",\n {\n variants: {\n variant: {\n default: \"font-light\",\n destructive: \"font-normal\",\n success: \"font-normal\",\n warning: \"font-normal\",\n info: \"font-normal\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ntype AdsAlertProps = Omit<\n React.ComponentProps<typeof BaseAlert>,\n \"variant\" | \"className\"\n> &\n VariantProps<typeof adsAlertVariants> & {\n className?: string;\n };\n\nconst defaultVariantIcons = {\n default: CircleCheck,\n destructive: CircleAlert,\n success: CircleCheck,\n warning: TriangleAlert,\n info: Info,\n} as const;\n\nfunction isComponentElement<P>(\n child: React.ReactNode,\n component: React.ComponentType<P>,\n): child is React.ReactElement<P> {\n return React.isValidElement(child) && child.type === component;\n}\n\nfunction cloneWithClassName(\n child: React.ReactElement,\n className: string,\n dataSlot: string,\n extraProps?: {\n style?: React.CSSProperties;\n },\n) {\n const element = child as React.ReactElement<{\n className?: string;\n \"data-slot\"?: string;\n style?: React.CSSProperties;\n }>;\n\n return React.cloneElement(element, {\n className: cn(className, element.props.className),\n \"data-slot\": dataSlot,\n style: {\n ...element.props.style,\n ...extraProps?.style,\n },\n });\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AdsAlertProps>(\n ({ children, className, variant, ...props }, ref) => {\n const items = React.Children.toArray(children);\n\n let title: React.ReactElement | null = null;\n let description: React.ReactElement | null = null;\n let icon: React.ReactElement<{ className?: string }> | null = null;\n const extras: React.ReactNode[] = [];\n let hasSeenBodyContent = false;\n\n for (const child of items) {\n if (!title && isComponentElement(child, AlertTitle)) {\n title = child;\n hasSeenBodyContent = true;\n continue;\n }\n\n if (!description && isComponentElement(child, AlertDescription)) {\n description = child;\n hasSeenBodyContent = true;\n continue;\n }\n\n if (\n !icon &&\n !hasSeenBodyContent &&\n React.isValidElement<{ className?: string }>(child)\n ) {\n icon = child;\n continue;\n }\n\n extras.push(child);\n }\n\n const hasSupportingContent = Boolean(description || extras.length > 0);\n const resolvedIcon = cloneWithClassName(\n icon ??\n React.createElement(defaultVariantIcons[variant ?? \"default\"], {\n \"aria-hidden\": true,\n }),\n \"size-4 shrink-0\",\n \"alert-icon\",\n {\n style: { color: \"inherit\" },\n },\n );\n\n const resolvedTitle = title\n ? cloneWithClassName(\n title as React.ReactElement<{ className?: string }>,\n \"min-w-0 text-sm font-medium leading-5 tracking-normal text-current\",\n \"alert-title\",\n )\n : null;\n\n const supportingContent =\n description || extras.length > 0 ? (\n <div className=\"flex min-w-0 w-full flex-col gap-1\" data-slot=\"alert-supporting\">\n {description\n ? cloneWithClassName(\n description as React.ReactElement<{ className?: string }>,\n descriptionVariants({ variant }),\n \"alert-description\",\n )\n : null}\n {extras.length > 0 ? (\n <div\n className={cn(\n \"min-w-0 text-sm leading-5 text-current\",\n \"w-full\",\n \"[&_ol]:list-decimal [&_ol]:pl-[21px] [&_ol]:space-y-0\",\n \"[&_ul]:list-disc [&_ul]:pl-[21px] [&_ul]:space-y-0\",\n )}\n data-slot=\"alert-extra\"\n >\n {extras}\n </div>\n ) : null}\n </div>\n ) : null;\n\n return (\n <BaseAlert\n ref={ref}\n className={cn(\n adsAlertVariants({ variant, hasSupportingContent }),\n className,\n )}\n role=\"alert\"\n {...props}\n >\n {hasSupportingContent ? (\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\" data-slot=\"alert-body\">\n <div className=\"flex min-w-0 items-center gap-3\" data-slot=\"alert-heading-row\">\n {resolvedIcon}\n {resolvedTitle}\n </div>\n {supportingContent ? (\n <div className=\"flex min-w-0 gap-3\" data-slot=\"alert-content-row\">\n <div aria-hidden className=\"size-4 shrink-0\" />\n {supportingContent}\n </div>\n ) : null}\n </div>\n ) : (\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\" data-slot=\"alert-body\">\n <div className=\"flex min-w-0 items-center gap-3\" data-slot=\"alert-heading-row\">\n {resolvedIcon}\n {resolvedTitle ?? children}\n </div>\n </div>\n )}\n </BaseAlert>\n );\n },\n);\nAlert.displayName = \"AdsAlert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <BaseAlertTitle ref={ref} className={cn(className)} {...props} />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <BaseAlertDescription ref={ref} className={cn(className)} {...props} />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Badge as PrimitiveBadge,\n type BadgeProps as PrimitiveBadgeProps,\n} from \"../../primitives/badge\";\n\nconst adsBadgeVariants = cva(\n [\n \"h-5 min-h-5\",\n \"border text-xs font-medium leading-4 tracking-normal\",\n \"shadow-none\",\n \"focus:ring-offset-background\",\n ],\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary\",\n destructive:\n \"border-transparent bg-destructive text-primary-foreground hover:bg-destructive\",\n outline: \"border-border bg-transparent text-foreground hover:bg-transparent\",\n },\n format: {\n label: \"!rounded-radius-lg px-[10px] py-[2px]\",\n icon: \"!rounded-radius-lg gap-1 px-[10px] py-[2px]\",\n number: \"!rounded-full px-[10px] py-[2px]\",\n },\n },\n compoundVariants: [\n {\n format: \"number\",\n variant: \"outline\",\n className: \"px-1 font-mono\",\n },\n ],\n defaultVariants: {\n format: \"label\",\n variant: \"default\",\n },\n },\n);\n\nexport interface AdsBadgeProps\n extends Omit<PrimitiveBadgeProps, \"variant\">,\n VariantProps<typeof adsBadgeVariants> {\n icon?: React.ReactNode;\n}\n\nfunction renderIcon(icon: React.ReactNode) {\n if (!icon) {\n return null;\n }\n\n if (React.isValidElement<{ className?: string }>(icon)) {\n return React.cloneElement(icon, {\n className: cn(\"h-3 w-3 shrink-0\", icon.props.className),\n });\n }\n\n return <span className=\"inline-flex h-3 w-3 shrink-0 items-center justify-center\">{icon}</span>;\n}\n\nfunction AdsBadge({ children, className, format, icon, variant, ...props }: AdsBadgeProps) {\n const resolvedFormat = format ?? (icon ? \"icon\" : \"label\");\n\n return (\n <PrimitiveBadge\n className={cn(adsBadgeVariants({ format: resolvedFormat, variant }), className)}\n variant={variant}\n {...props}\n >\n {renderIcon(icon)}\n {children}\n </PrimitiveBadge>\n );\n}\n\nexport { AdsBadge };\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 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\n\nexport type AlertDialogProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Root\n>;\nexport type AlertDialogTriggerProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Trigger\n>;\nexport type AlertDialogPortalProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Portal\n>;\nexport type AlertDialogOverlayProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Overlay\n>;\nexport type AlertDialogActionProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Action\n>;\nexport type AlertDialogCancelProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Cancel\n>;\nexport type AlertDialogTitleProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Title\n>;\nexport type AlertDialogDescriptionProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Description\n>;\n\nexport type AlertDialogContentProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Content\n>;\n\nexport type AlertDialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport type AlertDialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst overlayClassName =\n \"fixed inset-0 z-50 bg-black/80 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\";\n\nconst contentClassName =\n \"fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-[512px] -translate-x-1/2 -translate-y-1/2 gap-lg rounded-radius-lg border border-border bg-card p-xl shadow-[0px_4px_6px_-4px_rgba(0,0,0,0.1),0px_10px_15px_-3px_rgba(0,0,0,0.1)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\";\n\nconst actionClassName =\n \"inline-flex h-9 items-center justify-center rounded-radius-md border-0 bg-brand-gradient px-lg py-sm text-sm font-medium leading-5 tracking-normal shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none disabled:opacity-[0.65]\";\n\nconst cancelClassName =\n \"inline-flex h-9 items-center justify-center rounded-radius-md border border-border bg-card px-lg py-sm text-sm font-medium leading-5 tracking-normal shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none disabled:opacity-[0.65]\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n AlertDialogOverlayProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(overlayClassName, className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\";\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n className={cn(contentClassName, adsTextColorClassName.card, className)}\n ref={ref}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\nconst AlertDialogHeader = React.forwardRef<\n HTMLDivElement,\n AlertDialogHeaderProps\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\"flex flex-col gap-sm text-left\", className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = React.forwardRef<\n HTMLDivElement,\n AlertDialogFooterProps\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n \"flex flex-col-reverse gap-sm sm:flex-row sm:justify-end\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n AlertDialogTitleProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n className={cn(\n \"text-lg font-semibold leading-7\",\n adsTextColorClassName.card,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n AlertDialogDescriptionProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n className={cn(\n \"text-sm font-normal leading-5\",\n adsTextColorClassName.muted,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n AlertDialogActionProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n className={cn(actionClassName, adsTextColorClassName.primary, className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogAction.displayName = \"AlertDialogAction\";\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n AlertDialogCancelProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n className={cn(cancelClassName, adsTextColorClassName.secondary, className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\nconst AdsAlertDialog = AlertDialog;\nconst AdsAlertDialogTrigger = AlertDialogTrigger;\nconst AdsAlertDialogPortal = AlertDialogPortal;\nconst AdsAlertDialogOverlay = AlertDialogOverlay;\nconst AdsAlertDialogContent = AlertDialogContent;\nconst AdsAlertDialogHeader = AlertDialogHeader;\nconst AdsAlertDialogFooter = AlertDialogFooter;\nconst AdsAlertDialogTitle = AlertDialogTitle;\nconst AdsAlertDialogDescription = AlertDialogDescription;\nconst AdsAlertDialogAction = AlertDialogAction;\nconst AdsAlertDialogCancel = AlertDialogCancel;\n\nexport type AdsAlertDialogProps = AlertDialogProps;\nexport type AdsAlertDialogTriggerProps = AlertDialogTriggerProps;\nexport type AdsAlertDialogPortalProps = AlertDialogPortalProps;\nexport type AdsAlertDialogOverlayProps = AlertDialogOverlayProps;\nexport type AdsAlertDialogContentProps = AlertDialogContentProps;\nexport type AdsAlertDialogHeaderProps = AlertDialogHeaderProps;\nexport type AdsAlertDialogFooterProps = AlertDialogFooterProps;\nexport type AdsAlertDialogTitleProps = AlertDialogTitleProps;\nexport type AdsAlertDialogDescriptionProps = AlertDialogDescriptionProps;\nexport type AdsAlertDialogActionProps = AlertDialogActionProps;\nexport type AdsAlertDialogCancelProps = AlertDialogCancelProps;\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n AdsAlertDialog,\n AdsAlertDialogTrigger,\n AdsAlertDialogPortal,\n AdsAlertDialogOverlay,\n AdsAlertDialogContent,\n AdsAlertDialogHeader,\n AdsAlertDialogFooter,\n AdsAlertDialogTitle,\n AdsAlertDialogDescription,\n AdsAlertDialogAction,\n AdsAlertDialogCancel,\n};\n","\"use client\";\n\nexport const adsTextColorClassName = {\n card: \"text-[var(--card-foreground)]\",\n default: \"text-[var(--foreground)]\",\n muted: \"text-[var(--muted-foreground)]\",\n popover: \"text-[var(--popover-foreground)]\",\n primary: \"text-[var(--primary-foreground)]\",\n secondary: \"text-[var(--secondary-foreground)]\",\n} as const;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Button, type ButtonProps } from \"../../primitives/button\";\nimport { AdsSpinner } from \"../AdsSpinner\";\nimport type { AdsIntent, AdsSize } from \"../shared/types\";\n\nconst intentClassName: Record<AdsIntent, string> = {\n brand:\n \"border-0 bg-brand-gradient shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:opacity-90\",\n primary:\n \"border-0 bg-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-brand-primary-hover\",\n secondary:\n \"border border-border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-accent\",\n tertiary:\n \"border-0 bg-card shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\",\n ghost:\n \"border-0 bg-card shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\",\n danger:\n \"border-0 bg-destructive shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-destructive/90\",\n destructive:\n \"border-0 bg-destructive shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-destructive/90\",\n link: \"border-0 bg-transparent text-primary shadow-none underline-offset-2 hover:bg-transparent hover:text-primary hover:underline\",\n};\n\nconst intentTextClassName: Record<AdsIntent, string> = {\n brand: adsTextColorClassName.primary,\n primary: adsTextColorClassName.primary,\n secondary: adsTextColorClassName.secondary,\n tertiary: adsTextColorClassName.card,\n ghost: adsTextColorClassName.card,\n danger: adsTextColorClassName.primary,\n destructive: adsTextColorClassName.primary,\n link: \"text-primary\",\n};\n\nconst sizeClassName: Record<AdsSize, string> = {\n sm: \"!h-8 px-md py-sm\",\n md: \"!h-9 px-lg py-sm\",\n lg: \"!h-10 px-xl py-[10px]\",\n};\n\nconst focusClassName: Record<AdsIntent, string> = {\n brand:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n primary:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n secondary:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n tertiary:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n ghost:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n danger:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n destructive:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n link: \"focus-visible:border focus-visible:border-ring focus-visible:ring-0 focus-visible:ring-offset-0\",\n};\n\nexport interface AdsButtonProps extends Omit<\n ButtonProps,\n \"size\" | \"variant\" | \"disabled\"\n> {\n icon?: React.ReactNode;\n intent?: AdsIntent;\n leadingIcon?: React.ReactNode;\n size?: AdsSize;\n loading?: boolean;\n loadingLabel?: string;\n disabled?: boolean;\n}\n\nfunction renderLeadingIcon(icon: React.ReactNode) {\n if (!icon) {\n return null;\n }\n\n if (React.isValidElement<{ className?: string }>(icon)) {\n const sizedIcon = React.cloneElement(icon, {\n className: cn(\"!h-4 !w-4 h-4 w-4\", icon.props.className),\n });\n\n return (\n <span className=\"inline-flex h-4 w-4 items-center justify-center [&>svg]:!h-4 [&>svg]:!w-4\">\n {sizedIcon}\n </span>\n );\n }\n\n return (\n <span className=\"inline-flex h-4 w-4 items-center justify-center\">\n {icon}\n </span>\n );\n}\n\nexport const AdsButton = React.forwardRef<HTMLButtonElement, AdsButtonProps>(\n (\n {\n children,\n className,\n disabled = false,\n icon,\n intent = \"brand\",\n leadingIcon,\n loading = false,\n loadingLabel,\n size = \"md\",\n type = \"button\",\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const isDisabled = disabled || loading;\n const resolvedIcon = icon ?? leadingIcon;\n const resolvedLoadingLabel = loadingLabel ?? messages.button.loading;\n const hasTextContent = React.Children.count(children) > 0;\n const isIconOnly = Boolean(resolvedIcon) && !hasTextContent;\n\n return (\n <Button\n aria-busy={loading || undefined}\n className={cn(\n \"min-w-0 rounded-radius-md text-sm font-medium leading-5 tracking-normal\",\n \"active:translate-y-px\",\n \"active:not-aria-[haspopup]:translate-y-px\",\n \"focus-visible:outline-none\",\n \"disabled:pointer-events-none\",\n intentClassName[intent],\n intentTextClassName[intent],\n focusClassName[intent],\n sizeClassName[size],\n isIconOnly &&\n (size === \"sm\"\n ? \"!w-8 px-0\"\n : size === \"lg\"\n ? \"!w-10 px-0\"\n : \"!w-9 px-0\"),\n loading ? \"disabled:opacity-100\" : \"disabled:opacity-[0.65]\",\n className,\n )}\n disabled={isDisabled}\n ref={ref}\n type={type}\n variant=\"ghost\"\n {...props}\n >\n <span className=\"inline-flex items-center justify-center gap-1\">\n <span className=\"inline-flex items-center justify-center gap-sm\">\n {renderLeadingIcon(resolvedIcon)}\n {hasTextContent ? <span>{children}</span> : null}\n </span>\n {loading ? (\n <>\n <AdsSpinner\n className=\"!h-4 !w-4 h-4 w-4\"\n data-testid=\"ads-button-loading-icon\"\n size=\"sm\"\n />\n <span className=\"sr-only\">{resolvedLoadingLabel}</span>\n </>\n ) : null}\n </span>\n </Button>\n );\n },\n);\nAdsButton.displayName = \"AdsButton\";\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium 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 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { LoaderCircle } from \"lucide-react\";\n\nimport { cn } from \"../../lib/cn\";\n\nconst sizeClassName = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n} as const;\n\nconst toneClassName = {\n current: \"text-current\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n primary: \"text-primary\",\n success: \"text-success\",\n warning: \"text-warning\",\n info: \"text-info\",\n destructive: \"text-destructive\",\n} as const;\n\nexport type AdsSpinnerSize = keyof typeof sizeClassName;\nexport type AdsSpinnerTone = keyof typeof toneClassName;\n\nexport interface AdsSpinnerProps\n extends Omit<React.ComponentPropsWithoutRef<typeof LoaderCircle>, \"color\" | \"size\"> {\n size?: AdsSpinnerSize;\n tone?: AdsSpinnerTone;\n}\n\nexport const AdsSpinner = React.forwardRef<SVGSVGElement, AdsSpinnerProps>(\n (\n {\n \"aria-label\": ariaLabel,\n className,\n size = \"sm\",\n strokeWidth = 1.75,\n tone = \"current\",\n ...props\n },\n ref,\n ) => (\n <LoaderCircle\n aria-hidden={ariaLabel ? undefined : true}\n aria-label={ariaLabel}\n className={cn(\n \"shrink-0 animate-spin\",\n sizeClassName[size],\n toneClassName[tone],\n className,\n )}\n data-slot=\"ads-spinner\"\n ref={ref}\n strokeWidth={strokeWidth}\n {...props}\n />\n ),\n);\nAdsSpinner.displayName = \"AdsSpinner\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight, MoreHorizontal, Slash } from \"lucide-react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Breadcrumb as PrimitiveBreadcrumb,\n BreadcrumbEllipsis as PrimitiveBreadcrumbEllipsis,\n BreadcrumbItem as PrimitiveBreadcrumbItem,\n BreadcrumbLink as PrimitiveBreadcrumbLink,\n BreadcrumbList as PrimitiveBreadcrumbList,\n BreadcrumbPage as PrimitiveBreadcrumbPage,\n BreadcrumbSeparator as PrimitiveBreadcrumbSeparator,\n} from \"../../primitives/breadcrumb\";\n\nexport type AdsBreadcrumbSeparatorIcon = \"chevron\" | \"slash\";\n\nexport type AdsBreadcrumbProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumb\n>;\n\nexport const AdsBreadcrumb = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumb>,\n AdsBreadcrumbProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumb className={cn(\"w-full\", className)} ref={ref} {...props} />\n));\nAdsBreadcrumb.displayName = \"AdsBreadcrumb\";\n\nexport type AdsBreadcrumbListProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbList\n>;\n\nexport const AdsBreadcrumbList = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbList>,\n AdsBreadcrumbListProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbList\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm leading-5 text-muted-foreground\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbList.displayName = \"AdsBreadcrumbList\";\n\nexport type AdsBreadcrumbItemProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbItem\n>;\n\nexport const AdsBreadcrumbItem = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbItem>,\n AdsBreadcrumbItemProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbItem\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbItem.displayName = \"AdsBreadcrumbItem\";\n\nexport type AdsBreadcrumbLinkProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbLink\n>;\n\nexport const AdsBreadcrumbLink = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbLink>,\n AdsBreadcrumbLinkProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbLink\n className={cn(\n \"text-sm font-normal leading-5 text-muted-foreground transition-colors hover:text-foreground\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbLink.displayName = \"AdsBreadcrumbLink\";\n\nexport type AdsBreadcrumbPageProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbPage\n>;\n\nexport const AdsBreadcrumbPage = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbPage>,\n AdsBreadcrumbPageProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbPage\n className={cn(\"text-sm font-normal leading-5 text-foreground\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbPage.displayName = \"AdsBreadcrumbPage\";\n\nexport interface AdsBreadcrumbSeparatorProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveBreadcrumbSeparator> {\n icon?: AdsBreadcrumbSeparatorIcon;\n}\n\nconst separatorIcons: Record<AdsBreadcrumbSeparatorIcon, React.ReactNode> = {\n chevron: <ChevronRight className=\"size-3.5\" />,\n slash: <Slash className=\"size-3.5\" />,\n};\n\nexport const AdsBreadcrumbSeparator = ({\n children,\n className,\n icon = \"chevron\",\n ...props\n}: AdsBreadcrumbSeparatorProps) => (\n <PrimitiveBreadcrumbSeparator\n className={cn(\"text-muted-foreground [&_svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? separatorIcons[icon]}\n </PrimitiveBreadcrumbSeparator>\n);\nAdsBreadcrumbSeparator.displayName = \"AdsBreadcrumbSeparator\";\n\nexport type AdsBreadcrumbEllipsisProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbEllipsis\n>;\n\nexport const AdsBreadcrumbEllipsis = ({\n className,\n children,\n ...props\n}: AdsBreadcrumbEllipsisProps) => (\n <PrimitiveBreadcrumbEllipsis\n className={cn(\"size-3.5 text-muted-foreground\", className)}\n {...props}\n >\n {children ?? <MoreHorizontal className=\"size-3.5\" />}\n </PrimitiveBreadcrumbEllipsis>\n);\nAdsBreadcrumbEllipsis.displayName = \"AdsBreadcrumbEllipsis\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\">\n>(({ className, ...props }, ref) => (\n <nav\n aria-label=\"breadcrumb\"\n className={cn(\"w-full\", className)}\n ref={ref}\n {...props}\n />\n));\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n ref={ref}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\ntype BreadcrumbLinkProps = React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean;\n};\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ asChild = false, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n\n return <Comp className={cn(\"transition-colors\", className)} ref={ref} {...props} />;\n },\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={cn(\"font-normal text-foreground\", className)}\n ref={ref}\n role=\"link\"\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentPropsWithoutRef<\"li\">) => (\n <li\n aria-hidden=\"true\"\n className={cn(\"[&_svg]:size-3.5\", className)}\n role=\"presentation\"\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<\"span\">) => (\n <span\n aria-hidden=\"true\"\n className={cn(\"flex size-3.5 items-center justify-center\", className)}\n role=\"presentation\"\n {...props}\n >\n <MoreHorizontal className=\"size-3.5\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Checkbox as PrimitiveCheckbox } from \"../../primitives/checkbox\";\nimport { AdsFieldCheckboxRow } from \"../AdsField\";\n\ntype PrimitiveCheckboxProps = React.ComponentPropsWithoutRef<typeof PrimitiveCheckbox>;\n\nconst checkboxBaseClassName =\n \"h-4 w-4 rounded-[4px] border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\";\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof PrimitiveCheckbox>,\n PrimitiveCheckboxProps\n>(({ className, ...props }, ref) => (\n <PrimitiveCheckbox className={cn(checkboxBaseClassName, className)} ref={ref} {...props} />\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport interface AdsCheckboxProps extends PrimitiveCheckboxProps {\n checkboxClassName?: string;\n description?: React.ReactNode;\n label?: React.ReactNode;\n wrapperClassName?: string;\n}\n\nexport const AdsCheckbox = React.forwardRef<\n React.ElementRef<typeof PrimitiveCheckbox>,\n AdsCheckboxProps\n>(({ checkboxClassName, className, description, id, label, wrapperClassName, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n if (!label) {\n return (\n <Checkbox\n className={cn(className, checkboxClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n );\n }\n\n return (\n <label className={cn(\"block w-full cursor-pointer\", wrapperClassName)} htmlFor={inputId}>\n <AdsFieldCheckboxRow\n control={\n <Checkbox\n className={cn(className, checkboxClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n }\n description={description}\n label={label}\n />\n </label>\n );\n});\nAdsCheckbox.displayName = \"AdsCheckbox\";\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"grid place-content-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport {\n Field as PrimitiveField,\n FieldDescription as PrimitiveFieldDescription,\n FieldError as PrimitiveFieldError,\n FieldGroup as PrimitiveFieldGroup,\n FieldLabel as PrimitiveFieldLabel,\n FieldLegend as PrimitiveFieldLegend,\n FieldSeparator as PrimitiveFieldSeparator,\n FieldSet as PrimitiveFieldSet,\n FieldTitle as PrimitiveFieldTitle,\n} from \"../../primitives/field\";\n\nexport type AdsFieldDescriptionPlacement = \"above\" | \"below\";\n\ntype UseAdsFieldDescriptionParams = {\n describedBy?: string;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n};\n\nexport type AdsFieldDescriptionState = {\n describedBy?: string;\n errorId?: string;\n helperId?: string;\n inputId: string;\n};\n\nexport function useAdsFieldDescription({\n describedBy,\n errorText,\n helperText,\n id,\n}: UseAdsFieldDescriptionParams): AdsFieldDescriptionState {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const helperId = helperText ? `${inputId}-helper` : undefined;\n const errorId = errorText ? `${inputId}-error` : undefined;\n const descriptionIds = [describedBy, helperId, errorId]\n .filter(Boolean)\n .join(\" \");\n\n return {\n describedBy: descriptionIds || undefined,\n errorId,\n helperId,\n inputId,\n };\n}\n\nexport const AdsField = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldGroup\n className={cn(\"w-full gap-7\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsField.displayName = \"AdsField\";\n\ntype AdsFieldHeaderProps = React.ComponentPropsWithoutRef<\"div\"> & {\n description?: React.ReactNode;\n title: React.ReactNode;\n};\n\nexport const AdsFieldHeader = React.forwardRef<\n HTMLDivElement,\n AdsFieldHeaderProps\n>(({ className, description, title, ...props }, ref) => (\n <div\n className={cn(\"flex w-full flex-col gap-3\", className)}\n ref={ref}\n {...props}\n >\n <PrimitiveFieldTitle\n className={cn(\n \"w-full text-base font-medium leading-6\",\n adsTextColorClassName.default,\n )}\n >\n {title}\n </PrimitiveFieldTitle>\n {description ? (\n <PrimitiveFieldDescription\n className={cn(\"w-full text-sm leading-5\", adsTextColorClassName.muted)}\n >\n {description}\n </PrimitiveFieldDescription>\n ) : null}\n </div>\n));\nAdsFieldHeader.displayName = \"AdsFieldHeader\";\n\nexport const AdsFieldItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveField>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <PrimitiveField\n className={cn(\"w-full gap-3\", className)}\n orientation={orientation}\n ref={ref}\n {...props}\n />\n));\nAdsFieldItem.displayName = \"AdsFieldItem\";\n\nexport const AdsFieldLabel = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldLabel>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldLabel>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldLabel\n className={cn(\n \"w-full text-sm font-medium leading-5\",\n adsTextColorClassName.default,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsFieldLabel.displayName = \"AdsFieldLabel\";\n\nexport const AdsFieldLegend = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldLegend>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldLegend>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldLegend\n className={cn(\n \"mb-3 text-base font-medium leading-6\",\n adsTextColorClassName.default,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsFieldLegend.displayName = \"AdsFieldLegend\";\n\nexport const AdsFieldDescription = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldDescription>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldDescription>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldDescription\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldDescription.displayName = \"AdsFieldDescription\";\n\nexport const AdsFieldError = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldError>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldError>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldError\n className={cn(\"text-sm leading-5 text-destructive\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldError.displayName = \"AdsFieldError\";\n\nexport const AdsFieldSeparator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldSeparator>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldSeparator\n className={cn(\"py-2\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldSeparator.displayName = \"AdsFieldSeparator\";\n\nexport const AdsFieldGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldGroup\n className={cn(\"w-full gap-6\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldGroup.displayName = \"AdsFieldGroup\";\n\nexport const AdsFieldSet = React.forwardRef<\n HTMLFieldSetElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldSet>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldSet\n className={cn(\"w-full gap-6\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldSet.displayName = \"AdsFieldSet\";\n\ntype AdsFieldCheckboxRowProps = React.ComponentPropsWithoutRef<\"div\"> & {\n control: React.ReactNode;\n description?: React.ReactNode;\n label: React.ReactNode;\n};\n\nexport const AdsFieldCheckboxRow = React.forwardRef<\n HTMLDivElement,\n AdsFieldCheckboxRowProps\n>(({ className, control, description, label, ...props }, ref) => (\n <div\n className={cn(\n \"flex w-full items-start gap-3\",\n description ? \"min-h-5\" : \"items-center\",\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"shrink-0 pt-px\">{control}</div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div className={cn(\"text-sm leading-5\", adsTextColorClassName.default)}>\n {label}\n </div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n </div>\n));\nAdsFieldCheckboxRow.displayName = \"AdsFieldCheckboxRow\";\n\ntype AdsFieldChoiceCardProps = React.ComponentPropsWithoutRef<\"label\"> & {\n checked?: boolean;\n control?: React.ReactNode;\n description?: React.ReactNode;\n title: React.ReactNode;\n};\n\nexport const AdsFieldChoiceCard = React.forwardRef<\n HTMLLabelElement,\n AdsFieldChoiceCardProps\n>(({ checked, className, control, description, title, ...props }, ref) => (\n <label\n className={cn(\n \"flex w-full items-start gap-3 rounded-radius-md border border-border bg-card p-md shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors\",\n adsTextColorClassName.card,\n checked ? \"border-primary bg-primary/5\" : undefined,\n className,\n )}\n ref={ref}\n {...props}\n >\n {control ? <div className=\"shrink-0 pt-px\">{control}</div> : null}\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div\n className={cn(\n \"text-sm font-medium leading-5\",\n adsTextColorClassName.card,\n )}\n >\n {title}\n </div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n </label>\n));\nAdsFieldChoiceCard.displayName = \"AdsFieldChoiceCard\";\n\nexport const AdsFieldActions = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\"flex w-full flex-wrap items-center gap-3\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldActions.displayName = \"AdsFieldActions\";\n","\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/primitives/label\"\nimport { Separator } from \"@/primitives/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field data-[invalid=true]:text-destructive flex w-full gap-3\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start\",\n ],\n responsive: [\n \"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors) {\n return null\n }\n\n if (errors?.length === 1 && errors[0]?.message) {\n return errors[0].message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {errors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport type { DateRange } from \"@daypicker/react\";\nimport { ChevronDown } from \"lucide-react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Button as PrimitiveButton } from \"../../primitives/button\";\nimport { Input as PrimitiveInput } from \"../../primitives/input\";\nimport {\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\nimport {\n AdsPopover,\n AdsPopoverContent,\n AdsPopoverTrigger,\n} from \"../AdsPopover\";\nimport {\n Calendar,\n type CalendarCellSize,\n type CalendarProps,\n type CalendarSystem,\n} from \"../../primitives/calendar\";\n\nexport type AdsCalendarProps = CalendarProps;\nexport type AdsCalendarSystem = CalendarSystem;\nexport type AdsCalendarCellSize = CalendarCellSize;\n\nexport interface AdsDatePickerProps\n extends Omit<\n AdsCalendarProps,\n \"mode\" | \"onSelect\" | \"required\" | \"selected\"\n > {\n defaultSelected?: Date;\n formatDateLabel?: (value: Date) => string;\n id?: string;\n label?: React.ReactNode;\n onSelect?: (value: Date | undefined) => void;\n placeholder?: string;\n selected?: Date;\n triggerClassName?: string;\n}\n\nexport interface AdsDateTimePickerProps extends AdsDatePickerProps {\n onTimeChange?: React.ChangeEventHandler<HTMLInputElement>;\n timeLabel?: React.ReactNode;\n timeValue?: string;\n}\n\nconst dateTriggerClassName =\n \"flex h-9 w-full items-center justify-between gap-2 rounded-radius-md border border-border bg-card px-md py-2 text-left text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors hover:border-border-focus focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:cursor-not-allowed disabled:opacity-50\";\n\nconst timeInputClassName =\n \"flex h-9 w-full rounded-radius-md border border-border bg-card px-md py-2 text-center text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)]\";\n\nfunction useControllableDate({\n defaultSelected,\n onSelect,\n selected,\n}: Pick<AdsDatePickerProps, \"defaultSelected\" | \"onSelect\" | \"selected\">) {\n const [internalSelected, setInternalSelected] = React.useState<Date | undefined>(\n defaultSelected,\n );\n const isControlled = selected !== undefined;\n const value = isControlled ? selected : internalSelected;\n\n const handleSelect = React.useCallback(\n (nextValue: Date | undefined) => {\n if (!isControlled) {\n setInternalSelected(nextValue);\n }\n onSelect?.(nextValue);\n },\n [isControlled, onSelect],\n );\n\n return [value, handleSelect] as const;\n}\n\nfunction getDateLabel(value: Date | undefined, formatter?: (value: Date) => string) {\n if (!value) {\n return null;\n }\n\n return formatter ? formatter(value) : format(value, \"MMM d, yyyy\");\n}\n\nexport const AdsCalendar = React.forwardRef<HTMLDivElement, AdsCalendarProps>(\n ({ className, ...props }, ref) => (\n <Calendar className={cn(className)} ref={ref} {...props} />\n ),\n);\nAdsCalendar.displayName = \"AdsCalendar\";\n\nexport const AdsDatePicker = React.forwardRef<HTMLDivElement, AdsDatePickerProps>(\n (\n {\n className,\n defaultSelected,\n formatDateLabel,\n id,\n label,\n onSelect,\n placeholder = \"Select a date\",\n selected,\n triggerClassName,\n ...calendarProps\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [value, handleSelect] = useControllableDate({\n defaultSelected,\n onSelect,\n selected,\n });\n const description = useAdsFieldDescription({ id });\n const labelText = getDateLabel(value, formatDateLabel) ?? placeholder;\n\n const onCalendarSelect = React.useCallback(\n (nextValue: Date | undefined) => {\n handleSelect(nextValue);\n setOpen(false);\n },\n [handleSelect],\n );\n\n return (\n <AdsFieldItem className={cn(\"gap-3\", className)} ref={ref}>\n {label ? <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel> : null}\n <AdsPopover onOpenChange={setOpen} open={open}>\n <AdsPopoverTrigger asChild>\n <PrimitiveButton\n aria-label={labelText}\n aria-expanded={open}\n className={cn(\n dateTriggerClassName,\n !value ? \"text-muted-foreground\" : undefined,\n triggerClassName,\n )}\n id={description.inputId}\n type=\"button\"\n >\n <span className=\"truncate\">{labelText}</span>\n <ChevronDown aria-hidden className=\"size-4 shrink-0 text-icon-muted\" />\n </PrimitiveButton>\n </AdsPopoverTrigger>\n <AdsPopoverContent className=\"w-auto p-0\" inset sideOffset={4}>\n <AdsCalendar\n {...calendarProps}\n mode=\"single\"\n onSelect={onCalendarSelect}\n selected={value}\n />\n </AdsPopoverContent>\n </AdsPopover>\n </AdsFieldItem>\n );\n },\n);\nAdsDatePicker.displayName = \"AdsDatePicker\";\n\nexport const AdsDateTimePicker = React.forwardRef<\n HTMLDivElement,\n AdsDateTimePickerProps\n>(\n (\n {\n className,\n timeLabel = \"Time\",\n timeValue = \"\",\n onTimeChange,\n ...props\n },\n ref,\n ) => (\n <div className={cn(\"flex flex-wrap items-start gap-4\", className)} ref={ref}>\n <AdsDatePicker className=\"w-[min(100%,135px)]\" {...props} />\n <AdsFieldItem className=\"w-[91px] gap-3\">\n <AdsFieldLabel>{timeLabel}</AdsFieldLabel>\n <PrimitiveInput\n className={timeInputClassName}\n onChange={onTimeChange}\n readOnly={onTimeChange ? undefined : true}\n type=\"text\"\n value={timeValue}\n />\n </AdsFieldItem>\n </div>\n ),\n);\nAdsDateTimePicker.displayName = \"AdsDateTimePicker\";\n\nexport type { DateRange };\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport {\n Popover as BasePopover,\n PopoverContent as BasePopoverContent,\n PopoverTrigger as BasePopoverTrigger,\n} from \"../../primitives/popover\";\n\nexport type AdsPopoverProps = React.ComponentPropsWithoutRef<\n typeof BasePopover\n>;\nexport type AdsPopoverTriggerProps = React.ComponentPropsWithoutRef<\n typeof BasePopoverTrigger\n>;\n\nexport interface AdsPopoverContentProps extends React.ComponentPropsWithoutRef<\n typeof BasePopoverContent\n> {\n inset?: boolean;\n}\n\nexport type AdsPopoverHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport type AdsPopoverBodyProps = React.HTMLAttributes<HTMLDivElement>;\nexport type AdsPopoverTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\nexport type AdsPopoverDescriptionProps =\n React.HTMLAttributes<HTMLParagraphElement>;\n\nconst popoverContentClassName =\n \"z-50 w-[320px] rounded-radius-lg border border-border bg-popover p-lg text-popover-foreground shadow-[0px_2px_4px_-2px_rgba(0,0,0,0.1),0px_4px_6px_-1px_rgba(0,0,0,0.1)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\";\n\nconst AdsPopover = BasePopover;\nconst AdsPopoverTrigger = BasePopoverTrigger;\n\nconst AdsPopoverContent = React.forwardRef<\n React.ElementRef<typeof BasePopoverContent>,\n AdsPopoverContentProps\n>(\n (\n { align = \"center\", className, inset = false, sideOffset = 8, ...props },\n ref,\n ) => (\n <BasePopoverContent\n align={align}\n className={cn(\n popoverContentClassName,\n inset ? \"p-0\" : undefined,\n className,\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n ),\n);\nAdsPopoverContent.displayName = \"AdsPopoverContent\";\n\nconst AdsPopoverHeader = React.forwardRef<\n HTMLDivElement,\n AdsPopoverHeaderProps\n>(({ className, ...props }, ref) => (\n <div className={cn(\"flex flex-col gap-sm\", className)} ref={ref} {...props} />\n));\nAdsPopoverHeader.displayName = \"AdsPopoverHeader\";\n\nconst AdsPopoverBody = React.forwardRef<HTMLDivElement, AdsPopoverBodyProps>(\n ({ className, ...props }, ref) => (\n <div\n className={cn(\"mt-md flex flex-col gap-md\", className)}\n ref={ref}\n {...props}\n />\n ),\n);\nAdsPopoverBody.displayName = \"AdsPopoverBody\";\n\nconst AdsPopoverTitle = React.forwardRef<\n HTMLHeadingElement,\n AdsPopoverTitleProps\n>(({ className, ...props }, ref) => (\n <h4\n className={cn(\n \"text-base font-medium leading-6\",\n adsTextColorClassName.popover,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsPopoverTitle.displayName = \"AdsPopoverTitle\";\n\nconst AdsPopoverDescription = React.forwardRef<\n HTMLParagraphElement,\n AdsPopoverDescriptionProps\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nAdsPopoverDescription.displayName = \"AdsPopoverDescription\";\n\nexport {\n AdsPopover,\n AdsPopoverBody,\n AdsPopoverContent,\n AdsPopoverDescription,\n AdsPopoverHeader,\n AdsPopoverTitle,\n AdsPopoverTrigger,\n};\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n DayFlag,\n DayPicker as GregorianDayPicker,\n type DayPickerProps,\n type ClassNames,\n type DropdownProps,\n SelectionState,\n UI,\n useDayPicker,\n} from \"@daypicker/react\";\nimport {\n DayPicker as HijriDayPicker,\n enUS as enUSHijri,\n} from \"@daypicker/hijri\";\nimport {\n DayPicker as PersianDayPicker,\n enUS as enUSJalali,\n} from \"@daypicker/persian\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/primitives/select\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport type CalendarSystem = \"gregorian\" | \"persian\" | \"hijri\";\nexport type CalendarCellSize = \"md\" | \"lg\";\n\nexport type CalendarProps = DayPickerProps & {\n calendarSystem?: CalendarSystem;\n cellSize?: CalendarCellSize;\n};\n\nconst cellSizeClasses: Record<\n CalendarCellSize,\n {\n cell: string;\n day: string;\n weekday: string;\n }\n> = {\n md: {\n cell: \"size-8\",\n day: \"size-8 text-sm leading-5\",\n weekday: \"w-8 text-xs leading-4\",\n },\n lg: {\n cell: \"size-10\",\n day: \"size-10 text-base leading-6\",\n weekday: \"w-10 text-sm leading-5\",\n },\n};\n\nfunction getCalendarClassNames(\n cellSize: CalendarCellSize,\n hideCaptionLabel: boolean,\n): Partial<ClassNames> {\n const sizing = cellSizeClasses[cellSize];\n\n return {\n [UI.Root]: cn(\n \"w-fit rounded-radius-lg border border-border bg-card p-3 shadow-[0px_1px_3px_rgba(0,0,0,0.1)]\",\n ),\n [UI.Months]: \"flex gap-4\",\n [UI.Month]: \"relative\",\n [UI.MonthCaption]: \"relative mx-8 mb-4 flex items-center justify-center gap-3\",\n [UI.CaptionLabel]: hideCaptionLabel\n ? \"sr-only\"\n : \"flex-1 text-center text-sm font-medium leading-5 text-foreground\",\n [UI.Dropdowns]: \"flex items-center gap-1.5\",\n [UI.DropdownRoot]:\n \"relative flex h-8 items-center rounded-radius-md border border-border bg-card px-2 shadow-[0px_1px_2px_rgba(0,0,0,0.1)] [&_svg]:size-3 [&_svg]:text-icon-muted\",\n [UI.Dropdown]:\n \"h-full appearance-none bg-transparent pr-4 text-left text-sm font-medium leading-5 text-foreground outline-none\",\n [UI.Chevron]: \"shrink-0 fill-current\",\n [UI.Nav]: \"flex items-center gap-2\",\n [UI.PreviousMonthButton]:\n \"absolute left-0 top-0 inline-flex size-8 items-center justify-center rounded-radius-md text-foreground transition-colors hover:bg-secondary focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:text-foreground\",\n [UI.NextMonthButton]:\n \"absolute right-0 top-0 inline-flex size-8 items-center justify-center rounded-radius-md text-foreground transition-colors hover:bg-secondary focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:text-foreground\",\n [UI.Weekdays]: \"flex items-center\",\n [UI.Weekday]:\n cn(\"rounded-radius-md text-center font-normal text-muted-foreground\", sizing.weekday),\n [UI.MonthGrid]: \"w-full border-collapse space-y-2\",\n [UI.Weeks]: \"flex flex-col gap-2\",\n [UI.Week]: \"flex w-full\",\n [UI.Day]:\n cn(\n \"relative flex items-center justify-center p-0 text-center text-foreground\",\n sizing.cell,\n \"[&:has([aria-selected])]:bg-primary\",\n \"[&:has([aria-selected])]:text-primary-foreground\",\n \"[&:has([aria-selected].day-range-end)]:rounded-r-radius-md\",\n \"[&:has([aria-selected].day-range-start)]:rounded-l-radius-md\",\n \"[&:has([aria-selected].day-range-middle)]:bg-accent\",\n \"[&:has([aria-selected].day-range-middle)]:text-accent-foreground\",\n ),\n [UI.DayButton]:\n cn(\n \"inline-flex items-center justify-center rounded-radius-md font-normal text-foreground outline-none transition-colors hover:bg-secondary focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n sizing.day,\n ),\n [SelectionState.selected]:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n [SelectionState.range_start]:\n \"day-range-start bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n [SelectionState.range_middle]:\n \"day-range-middle rounded-none !bg-accent !text-accent-foreground hover:!bg-accent\",\n [SelectionState.range_end]:\n \"day-range-end bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n [DayFlag.outside]: \"text-foreground/50 aria-selected:text-primary-foreground/80\",\n [DayFlag.disabled]: \"text-muted-foreground opacity-40\",\n [DayFlag.today]: \"font-medium\",\n };\n}\n\nfunction CalendarDropdown({\n \"aria-label\": ariaLabel,\n className,\n disabled,\n onChange,\n options,\n style,\n value,\n}: DropdownProps) {\n const { classNames, styles } = useDayPicker();\n const selectedValue = value?.toString();\n\n return (\n <span\n className={classNames[UI.DropdownRoot]}\n data-disabled={disabled}\n style={styles?.[UI.DropdownRoot]}\n >\n <Select\n disabled={disabled}\n onValueChange={(nextValue) => {\n onChange?.({\n target: { value: nextValue },\n } as React.ChangeEvent<HTMLSelectElement>);\n }}\n value={selectedValue}\n >\n <SelectTrigger\n aria-label={ariaLabel}\n className={cn(\n classNames[UI.Dropdown],\n \"h-8 w-auto gap-1 border-0 bg-transparent px-0 py-0 shadow-none focus:ring-0 focus:ring-offset-0 [&>span]:line-clamp-none\",\n className,\n )}\n style={style}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent className=\"rounded-radius-md border-border bg-popover text-popover-foreground shadow-[0px_8px_24px_rgba(0,0,0,0.22)]\">\n {options?.map((option) => (\n <SelectItem\n disabled={option.disabled}\n key={option.value}\n value={option.value.toString()}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </span>\n );\n}\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n captionLayout,\n calendarSystem = \"gregorian\",\n cellSize = \"md\",\n className,\n classNames,\n fixedWeeks = true,\n navLayout = \"around\",\n showOutsideDays = true,\n ...props\n },\n ref,\n ) => {\n const mergedClassNames = React.useMemo(\n () => ({\n ...getCalendarClassNames(cellSize, captionLayout?.startsWith(\"dropdown\") ?? false),\n ...classNames,\n }),\n [captionLayout, cellSize, classNames],\n );\n\n const sharedProps: DayPickerProps = {\n ...props,\n captionLayout,\n className: cn(\"w-fit\", className),\n classNames: mergedClassNames,\n components: {\n Dropdown: CalendarDropdown,\n ...props.components,\n },\n fixedWeeks,\n navLayout,\n showOutsideDays,\n };\n\n if (calendarSystem === \"persian\") {\n return (\n <div ref={ref}>\n <PersianDayPicker\n {...sharedProps}\n dir={props.dir ?? \"ltr\"}\n locale={(props.locale as typeof enUSJalali | undefined) ?? enUSJalali}\n numerals={props.numerals ?? \"latn\"}\n />\n </div>\n );\n }\n\n if (calendarSystem === \"hijri\") {\n return (\n <div ref={ref}>\n <HijriDayPicker\n {...sharedProps}\n dir={props.dir ?? \"ltr\"}\n locale={(props.locale as typeof enUSHijri | undefined) ?? enUSHijri}\n numerals={props.numerals ?? \"latn\"}\n />\n </div>\n );\n }\n\n return (\n <div ref={ref}>\n <GregorianDayPicker {...sharedProps} />\n </div>\n );\n },\n);\nCalendar.displayName = \"Calendar\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DismissableLayerPrimitive from \"@radix-ui/react-dismissable-layer\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <DismissableLayerPrimitive.Branch asChild>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </DismissableLayerPrimitive.Branch>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\";\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"../../lib/cn\"\nimport { Input } from \"../../primitives/input\";\nimport {\n ButtonGroupSeparator as PrimitiveButtonGroupSeparator,\n buttonGroupVariants,\n} from \"../../primitives/button-group\";\nimport { AdsButton, type AdsButtonProps } from \"../AdsButton\";\nimport type { AdsSize } from \"../shared/types\";\n\nconst buttonGroupPressClassName =\n \"[&_button]:transition-[background-color,box-shadow,filter] [&_button]:active:translate-y-0 [&_button]:active:brightness-95\";\n\nconst segmentSizeClassName: Record<AdsSize, string> = {\n sm: \"h-8 px-md text-sm\",\n md: \"h-9 px-lg text-sm\",\n lg: \"h-10 px-xl text-base\",\n};\n\ntype AdsButtonGroupSurface = \"default\" | \"secondary\" | \"pill\";\ntype AdsButtonGroupTextTone = \"default\" | \"muted\" | \"secondary\" | \"field\";\ntype PrimitiveInputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\nexport interface AdsButtonGroupProps\n extends Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\"> {\n attached?: boolean;\n children: React.ReactNode;\n gap?: \"none\" | \"sm\" | \"md\";\n orientation?: \"horizontal\" | \"vertical\";\n size?: AdsSize;\n surface?: AdsButtonGroupSurface;\n variant?: \"connected\" | \"default\";\n}\n\nexport interface AdsButtonGroupTextProps\n extends React.ComponentPropsWithoutRef<\"div\"> {\n align?: \"start\" | \"center\" | \"between\";\n asChild?: boolean;\n shape?: \"default\" | \"pill\";\n size?: AdsSize;\n tone?: AdsButtonGroupTextTone;\n}\n\nexport interface AdsButtonGroupInputProps\n extends Omit<PrimitiveInputProps, \"aria-invalid\" | \"prefix\" | \"size\"> {\n size?: AdsSize;\n}\n\nfunction isAdsButtonElement(\n child: React.ReactNode,\n): child is React.ReactElement<AdsButtonProps, typeof AdsButton> {\n return React.isValidElement(child) && child.type === AdsButton;\n}\n\nfunction enhanceChildren(\n children: React.ReactNode,\n attached: boolean,\n size: AdsSize | undefined,\n surface: AdsButtonGroupSurface,\n) {\n return React.Children.map(children, (child) => {\n if (!isAdsButtonElement(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n className: cn(\n attached &&\n \"rounded-none shadow-none\",\n attached &&\n surface === \"secondary\" &&\n \"bg-secondary hover:bg-secondary/90\",\n child.props.className,\n ),\n size: child.props.size ?? size,\n });\n });\n}\n\nconst AdsButtonGroup = React.forwardRef<\n HTMLDivElement,\n AdsButtonGroupProps\n>(\n (\n {\n attached = true,\n children,\n className,\n gap,\n orientation = \"horizontal\",\n size,\n surface = \"default\",\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n const isVertical = orientation === \"vertical\";\n const resolvedAttached = attached || variant === \"connected\";\n const resolvedGapClassName =\n gap === \"none\"\n ? \"gap-0\"\n : gap === \"sm\"\n ? \"gap-sm\"\n : gap === \"md\"\n ? \"gap-md\"\n : resolvedAttached && isVertical\n ? \"gap-0\"\n : \"gap-2\";\n const attachedClassName = cn(\n buttonGroupVariants({ orientation }),\n surface === \"pill\" ? \"rounded-full\" : \"rounded-radius-md\",\n );\n\n return (\n <div\n aria-orientation={orientation}\n className={cn(\n \"inline-flex w-fit items-stretch\",\n isVertical ? \"flex-col\" : \"flex-row\",\n resolvedGapClassName,\n resolvedAttached && attachedClassName,\n buttonGroupPressClassName,\n className,\n )}\n data-attached={resolvedAttached ? \"true\" : \"false\"}\n data-orientation={orientation}\n data-surface={surface}\n data-slot=\"button-group\"\n data-variant={variant}\n role=\"group\"\n ref={ref}\n {...props}\n >\n {enhanceChildren(children, resolvedAttached, size, surface)}\n </div>\n )\n});\n\nAdsButtonGroup.displayName = \"AdsButtonGroup\"\n\nconst textToneClassName: Record<AdsButtonGroupTextTone, string> = {\n default: \"bg-transparent text-foreground\",\n muted: \"bg-transparent text-muted-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n field: \"bg-transparent text-muted-foreground\",\n};\n\nconst textAlignClassName: Record<NonNullable<AdsButtonGroupTextProps[\"align\"]>, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n between: \"justify-between\",\n};\n\nconst inputSizeClassName: Record<AdsSize, string> = {\n sm: \"h-8 text-sm leading-5\",\n md: \"h-9 text-sm leading-5\",\n lg: \"h-10 text-base leading-6\",\n};\n\nconst AdsButtonGroupText = React.forwardRef<HTMLDivElement, AdsButtonGroupTextProps>(\n (\n {\n align = \"start\",\n asChild = false,\n className,\n shape = \"default\",\n size = \"md\",\n tone = \"default\",\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n className={cn(\n \"inline-flex min-w-0 items-center gap-sm border border-border font-medium leading-5 shadow-[0px_1px_2px_rgba(0,0,0,0.08)] outline-none\",\n segmentSizeClassName[size],\n textToneClassName[tone],\n textAlignClassName[align],\n shape === \"pill\" ? \"rounded-full\" : \"rounded-radius-md\",\n \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n data-slot=\"button-group-text\"\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nAdsButtonGroupText.displayName = \"AdsButtonGroupText\";\n\nconst AdsButtonGroupInput = React.forwardRef<\n HTMLInputElement,\n AdsButtonGroupInputProps\n>(({ className, size = \"md\", type = \"text\", ...props }, ref) => (\n <Input\n className={cn(\n \"min-w-0 rounded-none bg-card px-md py-0 text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50\",\n inputSizeClassName[size],\n className,\n )}\n ref={ref}\n type={type}\n {...props}\n />\n));\n\nAdsButtonGroupInput.displayName = \"AdsButtonGroupInput\";\n\nconst AdsButtonGroupSeparator = PrimitiveButtonGroupSeparator;\n\nexport { AdsButtonGroup, AdsButtonGroupInput, AdsButtonGroupSeparator, AdsButtonGroupText };\nexport type AdsButtonGroupSeparatorProps = React.ComponentProps<\n typeof PrimitiveButtonGroupSeparator\n>;\nexport { buttonGroupVariants };\n","import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/primitives/separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"pointer-events-none relative !m-0 shrink-0 self-stretch overflow-visible bg-transparent\",\n \"data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-0\",\n \"data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:w-full\",\n \"data-[orientation=vertical]:before:absolute data-[orientation=vertical]:before:inset-y-0 data-[orientation=vertical]:before:left-0 data-[orientation=vertical]:before:w-px data-[orientation=vertical]:before:bg-border\",\n \"data-[orientation=horizontal]:before:absolute data-[orientation=horizontal]:before:inset-x-0 data-[orientation=horizontal]:before:top-0 data-[orientation=horizontal]:before:h-px data-[orientation=horizontal]:before:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Separator as PrimitiveSeparator } from \"../../primitives/separator\";\n\nexport interface AdsSeparatorProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveSeparator> {\n tone?: \"default\" | \"muted\";\n}\n\nconst toneClassName: Record<NonNullable<AdsSeparatorProps[\"tone\"]>, string> = {\n default: \"bg-border\",\n muted: \"bg-border-muted\",\n};\n\nexport const AdsSeparator = React.forwardRef<\n React.ElementRef<typeof PrimitiveSeparator>,\n AdsSeparatorProps\n>(({ className, orientation = \"horizontal\", tone = \"default\", ...props }, ref) => (\n <PrimitiveSeparator\n className={cn(\n \"shrink-0\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n toneClassName[tone],\n className,\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n />\n));\nAdsSeparator.displayName = \"AdsSeparator\";\n\nexport const Separator = AdsSeparator;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Skeleton as PrimitiveSkeleton,\n type SkeletonProps as PrimitiveSkeletonProps,\n} from \"../../primitives/skeleton\";\n\nexport interface AdsSkeletonProps extends PrimitiveSkeletonProps {\n shape?: \"default\" | \"line\" | \"circle\";\n tone?: \"default\" | \"muted\";\n}\n\nconst shapeClassName: Record<NonNullable<AdsSkeletonProps[\"shape\"]>, string> = {\n default: \"rounded-radius-md\",\n line: \"h-4 w-full rounded-full\",\n circle: \"rounded-full\",\n};\n\nconst toneClassName: Record<NonNullable<AdsSkeletonProps[\"tone\"]>, string> = {\n default: \"bg-secondary\",\n muted: \"bg-accent\",\n};\n\nexport const AdsSkeleton = React.forwardRef<HTMLDivElement, AdsSkeletonProps>(\n ({ className, shape = \"default\", tone = \"default\", ...props }, ref) => (\n <PrimitiveSkeleton\n className={cn(shapeClassName[shape], toneClassName[tone], className)}\n ref={ref}\n {...props}\n />\n ),\n);\nAdsSkeleton.displayName = \"AdsSkeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ animated = true, className, ...props }, ref) => (\n <div\n className={cn(\n \"shrink-0 bg-accent\",\n animated ? \"animate-pulse\" : undefined,\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nSkeleton.displayName = \"Skeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { AdsClearButton } from \"../../lib/adsClearButton\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Input } from \"../../primitives/input\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\nimport type { AdsSize } from \"../shared/types\";\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\nconst inputBaseClassName =\n \"flex w-full rounded-md border border-border bg-card px-3 py-2 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--card-foreground)] placeholder:text-[var(--muted-foreground)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nconst inputSizeClasses: Record<AdsSize, string> = {\n sm: \"h-8 text-sm leading-5\",\n md: \"h-9 text-base leading-6\",\n lg: \"h-10 text-base leading-6\",\n};\n\ntype AdsInputChromeProps = {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n label?: React.ReactNode;\n};\n\nexport interface AdsInputProps\n extends\n Omit<InputProps, \"aria-invalid\" | \"size\" | \"prefix\">,\n AdsInputChromeProps {\n action?: React.ReactNode;\n clearable?: boolean;\n clearButtonLabel?: string;\n emptyFileLabel?: string;\n fileTriggerLabel?: string;\n onClear?: () => void;\n prefix?: React.ReactNode;\n size?: AdsSize;\n suffix?: React.ReactNode;\n}\n\nfunction assignInputRef(\n ref: React.ForwardedRef<HTMLInputElement>,\n value: HTMLInputElement | null,\n) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n if (ref) {\n ref.current = value;\n }\n}\n\nfunction getTextInputValue(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\") {\n return String(value);\n }\n return \"\";\n}\n\nfunction getInputSurfaceClassName({\n className,\n errorText,\n hasPrefix,\n hasSuffix,\n size,\n}: {\n className: string | undefined;\n errorText: React.ReactNode;\n hasPrefix: boolean;\n hasSuffix: boolean;\n size: AdsSize;\n}) {\n return cn(\n inputBaseClassName,\n inputSizeClasses[size],\n errorText\n ? \"border-destructive focus-visible:border-destructive\"\n : \"focus-visible:border-border-focus\",\n \"focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0\",\n hasPrefix ? \"pl-2xl\" : undefined,\n hasSuffix ? \"pr-2xl\" : undefined,\n className,\n );\n}\n\nexport const AdsInput = React.forwardRef<HTMLInputElement, AdsInputProps>(\n (\n {\n action,\n className,\n clearable = false,\n clearButtonLabel,\n descriptionPlacement = \"below\",\n emptyFileLabel,\n errorText,\n fileTriggerLabel,\n helperText,\n id,\n label,\n onChange,\n onClear,\n prefix,\n type = \"text\",\n size = \"md\",\n suffix,\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const [selectedFiles, setSelectedFiles] = React.useState<string[]>([]);\n const [currentValue, setCurrentValue] = React.useState(() =>\n getTextInputValue(props.value ?? props.defaultValue),\n );\n const description = useAdsFieldDescription({\n describedBy: props[\"aria-describedby\"],\n errorText,\n helperText,\n id,\n });\n React.useEffect(() => {\n if (props.value !== undefined) {\n setCurrentValue(getTextInputValue(props.value));\n }\n }, [props.value]);\n\n const isFileInput = type === \"file\";\n const canClear =\n clearable &&\n !isFileInput &&\n !props.disabled &&\n !props.readOnly &&\n currentValue.length > 0;\n const inputSurfaceClassName = getInputSurfaceClassName({\n className,\n errorText,\n hasPrefix: Boolean(prefix),\n hasSuffix: Boolean(suffix) || canClear,\n size,\n });\n const resolvedClearButtonLabel = clearButtonLabel ?? messages.input.clear;\n const resolvedFileTriggerLabel =\n fileTriggerLabel ?? messages.input.chooseFile;\n const resolvedEmptyFileLabel =\n emptyFileLabel ?? messages.input.noFileChosen;\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n if (isFileInput) {\n setSelectedFiles(\n Array.from(event.target.files ?? [], (file) => file.name),\n );\n }\n onChange?.(event);\n },\n [isFileInput, onChange],\n );\n\n const handleClear = React.useCallback(() => {\n const element = inputRef.current;\n if (!element) {\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n\n valueSetter?.call(element, \"\");\n element.dispatchEvent(new Event(\"input\", { bubbles: true }));\n element.focus();\n onClear?.();\n }, [onClear]);\n\n const fileNameText =\n selectedFiles.length > 0\n ? selectedFiles.join(\", \")\n : resolvedEmptyFileLabel;\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>\n {helperText}\n </AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n const inputNode = isFileInput ? (\n <div className=\"relative flex w-full min-w-0 flex-1 items-center\">\n <Input\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={cn(\n inputSurfaceClassName,\n \"absolute inset-0 z-10 cursor-pointer opacity-0 file:hidden\",\n props.disabled ? \"cursor-not-allowed\" : undefined,\n )}\n id={description.inputId}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n assignInputRef(ref, node);\n }}\n type=\"file\"\n {...props}\n />\n <div\n aria-hidden=\"true\"\n className={cn(\n inputSurfaceClassName,\n adsTextColorClassName.card,\n \"items-center text-sm leading-5\",\n props.disabled ? \"cursor-not-allowed opacity-50\" : undefined,\n )}\n >\n <span\n className={cn(\n \"shrink-0 pr-sm text-sm font-medium leading-5\",\n adsTextColorClassName.card,\n )}\n >\n {resolvedFileTriggerLabel}\n </span>\n <span\n className={cn(\n \"min-w-0 flex-1 truncate text-sm leading-5\",\n selectedFiles.length > 0\n ? adsTextColorClassName.card\n : adsTextColorClassName.muted,\n )}\n >\n {fileNameText}\n </span>\n </div>\n </div>\n ) : (\n <div className=\"relative flex w-full min-w-0 flex-1 items-center\">\n {prefix ? (\n <span className=\"pointer-events-none absolute left-md inline-flex text-icon-muted\">\n {prefix}\n </span>\n ) : null}\n <Input\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={inputSurfaceClassName}\n id={description.inputId}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n assignInputRef(ref, node);\n }}\n type={type}\n {...props}\n />\n {canClear || suffix ? (\n <span className=\"absolute right-md inline-flex items-center gap-xs text-icon-muted\">\n {suffix ? (\n <span className=\"inline-flex items-center\">{suffix}</span>\n ) : null}\n {canClear ? (\n <AdsClearButton\n aria-label={resolvedClearButtonLabel}\n onClick={handleClear}\n />\n ) : null}\n </span>\n ) : null}\n </div>\n );\n\n return (\n <AdsFieldItem>\n {label ? (\n <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel>\n ) : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <div className=\"flex w-full items-center gap-sm\">\n {inputNode}\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsInput.displayName = \"AdsInput\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"./cn\";\n\nconst adsClearButtonClassName =\n \"inline-flex min-w-0 shrink-0 items-center justify-center rounded-sm border-0 bg-transparent p-0 text-icon-muted shadow-none transition-colors hover:bg-transparent hover:text-foreground focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-50\";\n\nexport interface AdsClearButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\"> {\n \"aria-label\": string;\n}\n\nexport const AdsClearButton = React.forwardRef<\n HTMLButtonElement,\n AdsClearButtonProps\n>(({ className, type = \"button\", ...props }, ref) => (\n <button\n {...props}\n className={cn(adsClearButtonClassName, \"h-4 w-4\", className)}\n ref={ref}\n type={type}\n >\n <X aria-hidden className=\"h-3.5 w-3.5\" />\n </button>\n));\nAdsClearButton.displayName = \"AdsClearButton\";\n\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { AdsClearButton } from \"../../lib/adsClearButton\";\nimport { cn } from \"../../lib/cn\";\nimport { Input } from \"../../primitives/input\";\nimport { Textarea } from \"../../primitives/textarea\";\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\ntype TextareaProps = React.ComponentPropsWithoutRef<typeof Textarea>;\n\ntype AdsInputGroupChromeProps = {\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n label?: React.ReactNode;\n};\n\ntype AdsInputGroupDescription = {\n describedBy?: string;\n errorId?: string;\n helperId?: string;\n};\n\nfunction useAdsInputGroupDescription(\n describedBy: string | undefined,\n helperText: React.ReactNode,\n errorText: React.ReactNode,\n idBase: string,\n): AdsInputGroupDescription {\n const helperId = helperText ? `${idBase}-helper` : undefined;\n const errorId = errorText ? `${idBase}-error` : undefined;\n const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(\" \");\n\n return {\n describedBy: descriptionIds || undefined,\n errorId,\n helperId,\n };\n}\n\nfunction AdsInputGroupChrome({\n children,\n errorId,\n errorText,\n helperId,\n helperText,\n label,\n}: AdsInputGroupChromeProps &\n AdsInputGroupDescription & {\n children: React.ReactNode;\n }) {\n return (\n <div className=\"flex w-full flex-col gap-md\">\n {label ? <div className=\"text-sm font-medium leading-5 text-foreground\">{label}</div> : null}\n {children}\n {helperText ? (\n <p className=\"text-sm leading-5 text-muted-foreground\" id={helperId}>\n {helperText}\n </p>\n ) : null}\n {errorText ? (\n <p className=\"text-sm leading-5 text-destructive\" id={errorId}>\n {errorText}\n </p>\n ) : null}\n </div>\n );\n}\n\nconst addonBaseClassName =\n \"flex shrink-0 items-center self-stretch bg-secondary px-lg text-sm leading-5 text-foreground\";\n\nconst inputGroupControlBaseClassName =\n \"w-full min-w-0 appearance-none rounded-none !border-0 bg-transparent px-0 py-0 text-sm leading-5 text-foreground !shadow-none ring-offset-0 placeholder:text-muted-foreground focus:border-0 focus:border-transparent focus:outline-none focus:ring-0 focus:ring-offset-0 focus-visible:border-transparent focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 read-only:text-muted-foreground\";\n\nfunction assignInputGroupRef(\n ref: React.ForwardedRef<HTMLInputElement>,\n value: HTMLInputElement | null,\n) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n if (ref) {\n ref.current = value;\n }\n}\n\nfunction getInputGroupValue(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\") {\n return String(value);\n }\n return \"\";\n}\n\nexport interface AdsInputGroupProps extends AdsInputGroupChromeProps {\n children: React.ReactNode;\n className?: string;\n controlWrapperClassName?: string;\n footer?: React.ReactNode;\n header?: React.ReactNode;\n id?: string;\n leadingAddon?: React.ReactNode;\n leadingAddonClassName?: string;\n surfaceClassName?: string;\n trailingAddon?: React.ReactNode;\n trailingAddonClassName?: string;\n}\n\nexport function AdsInputGroup({\n children,\n className,\n controlWrapperClassName,\n errorText,\n footer,\n header,\n helperText,\n id,\n label,\n leadingAddon,\n leadingAddonClassName,\n surfaceClassName,\n trailingAddon,\n trailingAddonClassName,\n}: AdsInputGroupProps) {\n const generatedId = React.useId();\n const description = useAdsInputGroupDescription(\n undefined,\n helperText,\n errorText,\n id ?? generatedId,\n );\n\n return (\n <AdsInputGroupChrome\n errorText={errorText}\n helperText={helperText}\n label={label}\n {...description}\n >\n <div className={cn(\"w-full\", className)}>\n <div\n className={cn(\n \"overflow-hidden rounded-radius-md border border-border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors\",\n errorText\n ? \"border-destructive focus-within:border-destructive\"\n : \"focus-within:border-border-focus\",\n \"focus-within:ring-[3px] focus-within:ring-[rgba(161,161,161,0.5)]\",\n surfaceClassName,\n )}\n >\n {header ? (\n <div className=\"border-b border-border px-md py-md text-sm text-foreground\">\n {header}\n </div>\n ) : null}\n\n <div className=\"flex min-h-11 w-full items-stretch\">\n {leadingAddon ? (\n <div\n className={cn(\n addonBaseClassName,\n \"border-r border-border\",\n leadingAddonClassName,\n )}\n >\n {leadingAddon}\n </div>\n ) : null}\n\n <div\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-sm px-md py-[10px]\",\n controlWrapperClassName,\n )}\n >\n {children}\n </div>\n\n {trailingAddon ? (\n <div\n className={cn(\n addonBaseClassName,\n \"justify-end border-l border-border\",\n trailingAddonClassName,\n )}\n >\n {trailingAddon}\n </div>\n ) : null}\n </div>\n\n {footer ? (\n <div className=\"border-t border-border px-md py-sm text-sm text-muted-foreground\">\n {footer}\n </div>\n ) : null}\n </div>\n </div>\n </AdsInputGroupChrome>\n );\n}\n\nexport type AdsInputGroupInputProps = Omit<\n InputProps,\n \"aria-invalid\" | \"aria-describedby\"\n> & {\n clearable?: boolean;\n clearButtonLabel?: string;\n onClear?: () => void;\n};\n\nexport const AdsInputGroupInput = React.forwardRef<\n HTMLInputElement,\n AdsInputGroupInputProps\n>(({ className, clearable = false, clearButtonLabel, onChange, onClear, ...props }, ref) => {\n const { messages } = useAdsI18n();\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const [currentValue, setCurrentValue] = React.useState(() =>\n getInputGroupValue(props.value ?? props.defaultValue),\n );\n\n React.useEffect(() => {\n if (props.value !== undefined) {\n setCurrentValue(getInputGroupValue(props.value));\n }\n }, [props.value]);\n\n const canClear =\n clearable &&\n !props.disabled &&\n !props.readOnly &&\n currentValue.length > 0;\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n onChange?.(event);\n },\n [onChange],\n );\n\n const handleClear = React.useCallback(() => {\n const element = inputRef.current;\n if (!element) {\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n\n valueSetter?.call(element, \"\");\n element.dispatchEvent(new Event(\"input\", { bubbles: true }));\n element.focus();\n onClear?.();\n }, [onClear]);\n\n return (\n <div className=\"relative flex w-full min-w-0 flex-1 items-center\">\n <Input\n className={cn(\n inputGroupControlBaseClassName,\n \"h-5 text-sm leading-5\",\n canClear ? \"pr-xl\" : undefined,\n className,\n )}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n assignInputGroupRef(ref, node);\n }}\n {...props}\n />\n {canClear ? (\n <AdsClearButton\n aria-label={clearButtonLabel ?? messages.input.clear}\n className=\"absolute right-0\"\n onClick={handleClear}\n />\n ) : null}\n </div>\n );\n});\nAdsInputGroupInput.displayName = \"AdsInputGroupInput\";\n\nexport type AdsInputGroupTextareaProps = Omit<\n TextareaProps,\n \"aria-invalid\" | \"aria-describedby\"\n>;\n\nexport const AdsInputGroupTextarea = React.forwardRef<\n HTMLTextAreaElement,\n AdsInputGroupTextareaProps\n>(({ className, ...props }, ref) => (\n <Textarea\n className={cn(\n inputGroupControlBaseClassName,\n \"min-h-[64px] resize-none text-sm leading-5\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsInputGroupTextarea.displayName = \"AdsInputGroupTextarea\";\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\">\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n})\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n InputOTP,\n InputOTPGroup,\n InputOTPSeparator,\n InputOTPSlot,\n} from \"../../primitives/input-otp\";\n\ntype FieldDescription = {\n describedBy?: string;\n errorId?: string;\n helperId?: string;\n inputId: string;\n};\n\nfunction useFieldDescription(\n id: string | undefined,\n describedBy: string | undefined,\n helperText: React.ReactNode,\n errorText: React.ReactNode,\n): FieldDescription {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const helperId = helperText ? `${inputId}-helper` : undefined;\n const errorId = errorText ? `${inputId}-error` : undefined;\n const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(\" \");\n\n return {\n describedBy: descriptionIds || undefined,\n errorId,\n helperId,\n inputId,\n };\n}\n\nfunction AdsInputOTPChrome({\n children,\n errorId,\n errorText,\n helperId,\n helperText,\n inputId,\n label,\n}: {\n children: React.ReactNode;\n errorId?: string;\n errorText?: React.ReactNode;\n helperId?: string;\n helperText?: React.ReactNode;\n inputId: string;\n label?: React.ReactNode;\n}) {\n return (\n <div className=\"flex w-full flex-col gap-md\">\n {label ? (\n <label className=\"text-sm font-medium leading-5 text-foreground\" htmlFor={inputId}>\n {label}\n </label>\n ) : null}\n {children}\n {helperText ? (\n <p className=\"text-sm leading-5 text-muted-foreground\" id={helperId}>\n {helperText}\n </p>\n ) : null}\n {errorText ? (\n <p className=\"text-sm leading-5 text-destructive\" id={errorId}>\n {errorText}\n </p>\n ) : null}\n </div>\n );\n}\n\nfunction buildSeparator(node: React.ReactNode, key: string | number) {\n if (node === undefined) {\n return <AdsInputOTPSeparator key={key} />;\n }\n\n if (React.isValidElement(node)) {\n return React.cloneElement(node, { key });\n }\n\n return <span key={key}>{node}</span>;\n}\n\nfunction buildOtpChildren(groups: number[], separator?: React.ReactNode) {\n const defaultGroup = groups.length > 0 ? groups : [6];\n const items: React.ReactNode[] = [];\n let index = 0;\n\n defaultGroup.forEach((size, indexOfGroup) => {\n items.push(\n <AdsInputOTPGroup key={`group-${indexOfGroup}`}>\n {Array.from({ length: size }, (_, slotOffset) => (\n <AdsInputOTPSlot\n index={index + slotOffset}\n key={`slot-${index + slotOffset}`}\n />\n ))}\n </AdsInputOTPGroup>,\n );\n\n index += size;\n\n if (indexOfGroup < defaultGroup.length - 1) {\n items.push(buildSeparator(separator, `sep-${indexOfGroup}`));\n }\n });\n\n return items;\n}\n\ntype AdsInputOTPProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputOTP>,\n \"children\" | \"maxLength\" | \"render\"\n> & {\n action?: React.ReactNode;\n groups?: number[];\n helperText?: React.ReactNode;\n errorText?: React.ReactNode;\n label?: React.ReactNode;\n separator?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nconst AdsInputOTP = React.forwardRef<\n React.ElementRef<typeof InputOTP>,\n AdsInputOTPProps\n>(({ action, errorText, groups, helperText, label, separator, children, id, ...props }, ref) => {\n const totalSlots =\n groups && groups.length > 0 ? groups.reduce((sum, value) => sum + value, 0) : 6;\n const description = useFieldDescription(id, props[\"aria-describedby\"], helperText, errorText);\n const otpChildren = children ?? buildOtpChildren(groups ?? [], separator);\n\n return (\n <AdsInputOTPChrome\n errorText={errorText}\n errorId={description.errorId}\n helperText={helperText}\n helperId={description.helperId}\n inputId={description.inputId}\n label={label}\n >\n <div className=\"flex w-full items-center gap-sm\">\n <InputOTP\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n id={description.inputId}\n maxLength={totalSlots}\n ref={ref}\n {...props}\n >\n {otpChildren}\n </InputOTP>\n {action ? <span className=\"shrink-0\">{action}</span> : null}\n </div>\n </AdsInputOTPChrome>\n );\n});\nAdsInputOTP.displayName = \"AdsInputOTP\";\n\nconst AdsInputOTPGroup = React.forwardRef<\n React.ElementRef<typeof InputOTPGroup>,\n React.ComponentPropsWithoutRef<typeof InputOTPGroup>\n>(({ className, ...props }, ref) => (\n <InputOTPGroup className={className} ref={ref} {...props} />\n));\nAdsInputOTPGroup.displayName = \"AdsInputOTPGroup\";\n\nconst AdsInputOTPSeparator = React.forwardRef<\n React.ElementRef<typeof InputOTPSeparator>,\n React.ComponentPropsWithoutRef<typeof InputOTPSeparator>\n>(({ className, ...props }, ref) => (\n <InputOTPSeparator\n className={\n className ?? \"h-px w-6 shrink-0 bg-border text-transparent [&_svg]:hidden\"\n }\n ref={ref}\n {...props}\n />\n));\nAdsInputOTPSeparator.displayName = \"AdsInputOTPSeparator\";\n\nconst AdsInputOTPSlot = React.forwardRef<\n React.ElementRef<typeof InputOTPSlot>,\n React.ComponentPropsWithoutRef<typeof InputOTPSlot>\n>(({ className, ...props }, ref) => (\n <InputOTPSlot\n className={[\n \"border-border bg-card text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\",\n \"first:border-r-0 first:rounded-l-radius-md last:border-r last:rounded-r-radius-md\",\n \"data-[active=true]:border-border-focus data-[active=true]:shadow-[0px_0px_0px_3px_rgba(161,161,161,0.5)]\",\n \"h-9 w-9 text-sm leading-5\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n ref={ref}\n {...props}\n />\n));\nAdsInputOTPSlot.displayName = \"AdsInputOTPSlot\";\n\nexport {\n AdsInputOTP,\n AdsInputOTPGroup,\n AdsInputOTPSeparator,\n AdsInputOTPSlot,\n InputOTPGroup,\n InputOTPSeparator,\n InputOTPSlot,\n};\nexport type { AdsInputOTPProps };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Dot } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n))\nInputOTP.displayName = \"InputOTP\"\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n))\nInputOTPGroup.displayName = \"InputOTPGroup\"\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n})\nInputOTPSlot.displayName = \"InputOTPSlot\"\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n))\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../../primitives/button\";\nimport { Input } from \"../../primitives/input\";\nimport {\n AdsPagination,\n AdsPaginationContent,\n AdsPaginationEllipsis,\n AdsPaginationItem,\n} from \"../AdsPagination\";\nimport {\n SelectContent,\n SelectItem,\n Select as SelectRoot,\n SelectTrigger,\n SelectValue,\n} from \"../AdsSelect\";\n\nconst paginationButtonBaseClassName =\n \"inline-flex h-9 min-w-9 items-center justify-center rounded-radius-md border text-sm font-medium leading-5 tracking-normal transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50\";\n\nconst paginationButtonInactiveClassName =\n \"border-transparent bg-transparent px-[10px] text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nconst paginationButtonActiveClassName =\n \"border-border bg-card px-[10px] text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nconst inlineControlClassName =\n \"h-9 rounded-radius-md border border-border bg-card px-md text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:cursor-not-allowed disabled:opacity-50\";\n\ntype ShowTotalRender = (total: number, range: [number, number]) => React.ReactNode;\n\ntype PaginationToken = number | \"ellipsis\";\ntype AdsDataPaginationVariant = \"default\" | \"compact\";\n\nexport interface AdsDataPaginationClassNames {\n root?: string;\n total?: string;\n pageSizeChanger?: string;\n quickJumper?: string;\n}\n\nexport interface AdsDataPaginationProps {\n current?: number;\n defaultCurrent?: number;\n pageSize?: number;\n defaultPageSize?: number;\n total: number;\n onChange?: (page: number, pageSize: number) => void;\n showTotal?: boolean | ShowTotalRender;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n onPageSizeChange?: (pageSize: number, page: number) => void;\n showQuickJumper?: boolean;\n showFirstLast?: boolean;\n siblingCount?: number;\n boundaryCount?: number;\n variant?: AdsDataPaginationVariant;\n disabled?: boolean;\n className?: string;\n classNames?: AdsDataPaginationClassNames;\n ariaLabel?: string;\n}\n\nfunction clampPage(page: number, totalPages: number) {\n return Math.min(Math.max(1, page), totalPages);\n}\n\nfunction getPaginationRange({\n currentPage,\n totalPages,\n siblingCount,\n boundaryCount,\n}: {\n currentPage: number;\n totalPages: number;\n siblingCount: number;\n boundaryCount: number;\n}) {\n const totalPageNumbers = siblingCount * 2 + 3 + boundaryCount * 2;\n\n if (totalPages <= totalPageNumbers) {\n return Array.from({ length: totalPages }, (_, index) => index + 1);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, boundaryCount + 2);\n const rightSiblingIndex = Math.min(\n currentPage + siblingCount,\n totalPages - boundaryCount - 1,\n );\n const shouldShowLeftEllipsis = leftSiblingIndex > boundaryCount + 2;\n const shouldShowRightEllipsis = rightSiblingIndex < totalPages - boundaryCount - 1;\n\n const range: PaginationToken[] = [];\n\n for (let page = 1; page <= boundaryCount; page += 1) {\n range.push(page);\n }\n\n if (shouldShowLeftEllipsis) {\n range.push(\"ellipsis\");\n } else {\n for (let page = boundaryCount + 1; page < leftSiblingIndex; page += 1) {\n range.push(page);\n }\n }\n\n for (let page = leftSiblingIndex; page <= rightSiblingIndex; page += 1) {\n range.push(page);\n }\n\n if (shouldShowRightEllipsis) {\n range.push(\"ellipsis\");\n } else {\n for (let page = rightSiblingIndex + 1; page <= totalPages - boundaryCount; page += 1) {\n range.push(page);\n }\n }\n\n for (\n let page = Math.max(totalPages - boundaryCount + 1, boundaryCount + 1);\n page <= totalPages;\n page += 1\n ) {\n range.push(page);\n }\n\n return range;\n}\n\nfunction interpolate(\n template: string,\n values: Record<string, string | number>,\n) {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key: string) => String(values[key] ?? \"\"));\n}\n\nexport function AdsDataPagination({\n current,\n defaultCurrent = 1,\n pageSize,\n defaultPageSize = 10,\n total,\n onChange,\n showTotal = false,\n showSizeChanger = false,\n pageSizeOptions = [10, 20, 50, 100],\n onPageSizeChange,\n showQuickJumper = false,\n showFirstLast = false,\n siblingCount = 1,\n boundaryCount = 1,\n variant = \"default\",\n disabled = false,\n className,\n classNames,\n ariaLabel,\n}: AdsDataPaginationProps) {\n const { messages } = useAdsI18n();\n const [internalCurrent, setInternalCurrent] = React.useState(defaultCurrent);\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize);\n const [quickJumpValue, setQuickJumpValue] = React.useState(\"\");\n const isCurrentControlled = current !== undefined;\n const isPageSizeControlled = pageSize !== undefined;\n const mergedPageSize = Math.max(1, isPageSizeControlled ? pageSize : internalPageSize);\n const totalPages = Math.max(1, Math.ceil(Math.max(total, 0) / mergedPageSize));\n const mergedCurrent = clampPage(\n isCurrentControlled ? current : internalCurrent,\n totalPages,\n );\n const paginationRange = getPaginationRange({\n currentPage: mergedCurrent,\n totalPages,\n siblingCount,\n boundaryCount,\n });\n const rangeStart = total === 0 ? 0 : (mergedCurrent - 1) * mergedPageSize + 1;\n const rangeEnd = total === 0 ? 0 : Math.min(total, mergedCurrent * mergedPageSize);\n const pageSizeValues = Array.from(\n new Set(pageSizeOptions.filter((option) => Number.isFinite(option) && option > 0)),\n );\n const resolvedPageSizeOptions =\n pageSizeValues.length > 0\n ? pageSizeValues\n : [10, 20, 50, 100];\n\n React.useEffect(() => {\n if (!isCurrentControlled && internalCurrent !== mergedCurrent) {\n setInternalCurrent(mergedCurrent);\n }\n }, [internalCurrent, isCurrentControlled, mergedCurrent]);\n\n React.useEffect(() => {\n if (!isPageSizeControlled && internalPageSize !== mergedPageSize) {\n setInternalPageSize(mergedPageSize);\n }\n }, [internalPageSize, isPageSizeControlled, mergedPageSize]);\n\n React.useEffect(() => {\n setQuickJumpValue(String(mergedCurrent));\n }, [mergedCurrent]);\n\n const commitPageChange = React.useCallback(\n (nextPage: number, nextPageSize = mergedPageSize) => {\n const clampedPage = clampPage(nextPage, Math.max(1, Math.ceil(Math.max(total, 0) / nextPageSize)));\n\n if (!isCurrentControlled) {\n setInternalCurrent(clampedPage);\n }\n\n setQuickJumpValue(String(clampedPage));\n\n if (clampedPage !== mergedCurrent || nextPageSize !== mergedPageSize) {\n onChange?.(clampedPage, nextPageSize);\n }\n\n return clampedPage;\n },\n [isCurrentControlled, mergedCurrent, mergedPageSize, onChange, total],\n );\n\n const handlePageSizeChange = React.useCallback(\n (nextValue: string) => {\n const nextPageSize = Number(nextValue);\n\n if (!Number.isFinite(nextPageSize) || nextPageSize <= 0 || nextPageSize === mergedPageSize) {\n return;\n }\n\n if (!isPageSizeControlled) {\n setInternalPageSize(nextPageSize);\n }\n\n const nextPage = clampPage(\n mergedCurrent,\n Math.max(1, Math.ceil(Math.max(total, 0) / nextPageSize)),\n );\n\n onPageSizeChange?.(nextPageSize, nextPage);\n commitPageChange(nextPage, nextPageSize);\n },\n [\n commitPageChange,\n isPageSizeControlled,\n mergedCurrent,\n mergedPageSize,\n onPageSizeChange,\n total,\n ],\n );\n\n const handleQuickJumpSubmit = React.useCallback(() => {\n const trimmedValue = quickJumpValue.trim();\n\n if (!trimmedValue) {\n setQuickJumpValue(String(mergedCurrent));\n return;\n }\n\n const nextPage = Number(trimmedValue);\n\n if (!Number.isFinite(nextPage)) {\n setQuickJumpValue(String(mergedCurrent));\n return;\n }\n\n commitPageChange(nextPage);\n }, [commitPageChange, mergedCurrent, quickJumpValue]);\n\n const totalContent =\n typeof showTotal === \"function\"\n ? showTotal(total, [rangeStart, rangeEnd])\n : showTotal\n ? interpolate(messages.pagination.total, {\n start: rangeStart,\n end: rangeEnd,\n total,\n })\n : null;\n const compactTotalContent = interpolate(messages.pagination.compactTotal, { total });\n const pageStatus = interpolate(messages.pagination.pageStatus, {\n page: mergedCurrent,\n pages: totalPages,\n });\n const shouldShowFirstLast = variant === \"compact\" || showFirstLast;\n const navigationLabel = ariaLabel ?? messages.pagination.navigation;\n const previousDisabled = disabled || mergedCurrent <= 1;\n const nextDisabled = disabled || mergedCurrent >= totalPages;\n const navButtonClassName = cn(\n paginationButtonBaseClassName,\n paginationButtonInactiveClassName,\n \"gap-1 px-md py-sm\",\n );\n\n const renderPageNavigation = () => {\n if (variant === \"compact\") {\n return (\n <div className=\"flex flex-wrap items-center gap-sm\">\n {shouldShowFirstLast ? (\n <Button\n aria-label={messages.pagination.first}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.first}\n </Button>\n ) : null}\n <Button\n aria-label={messages.pagination.previous}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(mergedCurrent - 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.previous}\n </Button>\n <span\n aria-current=\"page\"\n className=\"inline-flex h-9 items-center rounded-radius-md border border-transparent px-sm text-sm font-medium text-foreground\"\n >\n {pageStatus}\n </span>\n <Button\n aria-label={messages.pagination.next}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(mergedCurrent + 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.next}\n </Button>\n {shouldShowFirstLast ? (\n <Button\n aria-label={messages.pagination.last}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(totalPages)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.last}\n </Button>\n ) : null}\n </div>\n );\n }\n\n return (\n <AdsPagination aria-label={navigationLabel}>\n <AdsPaginationContent>\n {shouldShowFirstLast ? (\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.first}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.first}\n </Button>\n </AdsPaginationItem>\n ) : null}\n\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.previous}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(mergedCurrent - 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.previous}\n </Button>\n </AdsPaginationItem>\n\n {paginationRange.map((token, index) =>\n token === \"ellipsis\" ? (\n <AdsPaginationItem key={`ellipsis-${index}`}>\n <AdsPaginationEllipsis label={messages.pagination.morePages} />\n </AdsPaginationItem>\n ) : (\n <AdsPaginationItem key={token}>\n <Button\n aria-current={token === mergedCurrent ? \"page\" : undefined}\n className={cn(\n paginationButtonBaseClassName,\n token === mergedCurrent\n ? paginationButtonActiveClassName\n : paginationButtonInactiveClassName,\n )}\n disabled={disabled}\n onClick={() => commitPageChange(token)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {token}\n </Button>\n </AdsPaginationItem>\n ),\n )}\n\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.next}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(mergedCurrent + 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.next}\n </Button>\n </AdsPaginationItem>\n\n {shouldShowFirstLast ? (\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.last}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(totalPages)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.last}\n </Button>\n </AdsPaginationItem>\n ) : null}\n </AdsPaginationContent>\n </AdsPagination>\n );\n };\n\n return (\n <div\n data-slot=\"ads-data-pagination\"\n className={cn(\n \"flex flex-col gap-md lg:flex-row lg:items-center lg:justify-between\",\n classNames?.root,\n className,\n )}\n >\n <div className=\"flex flex-wrap items-center gap-md text-sm leading-5 text-muted-foreground\">\n {variant === \"compact\" ? (\n <div className={classNames?.total}>{compactTotalContent}</div>\n ) : totalContent ? (\n <div className={classNames?.total}>{totalContent}</div>\n ) : null}\n\n {showSizeChanger ? (\n <div className={cn(\"flex items-center gap-sm\", classNames?.pageSizeChanger)}>\n <span>{messages.pagination.itemsPerPage}</span>\n <SelectRoot\n disabled={disabled}\n onValueChange={handlePageSizeChange}\n value={String(mergedPageSize)}\n >\n <SelectTrigger\n aria-label={messages.pagination.itemsPerPage}\n className={cn(inlineControlClassName, \"w-[132px] px-sm\")}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {resolvedPageSizeOptions.map((option) => (\n <SelectItem key={option} value={String(option)}>\n {interpolate(messages.pagination.itemsPerPageOption, { value: option })}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </div>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-md sm:flex-row sm:items-center sm:justify-end\">\n {renderPageNavigation()}\n\n {showQuickJumper ? (\n <label\n className={cn(\n \"flex items-center gap-sm text-sm leading-5 text-muted-foreground\",\n classNames?.quickJumper,\n )}\n >\n <span>{messages.pagination.jumpTo}</span>\n <Input\n aria-label={messages.pagination.jumpTo}\n className={cn(inlineControlClassName, \"w-20 px-sm text-center\")}\n disabled={disabled}\n inputMode=\"numeric\"\n onChange={(event) => setQuickJumpValue(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n handleQuickJumpSubmit();\n }\n }}\n type=\"text\"\n value={quickJumpValue}\n />\n </label>\n ) : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport {\n Pagination as PrimitivePagination,\n PaginationContent as PrimitivePaginationContent,\n PaginationItem as PrimitivePaginationItem,\n} from \"../../primitives/pagination\";\n\nconst paginationLinkBaseClassName =\n \"inline-flex h-9 min-w-9 items-center justify-center rounded-radius-md border text-sm font-medium leading-5 tracking-normal transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\";\n\nconst paginationLinkInactiveClassName =\n \"border-transparent bg-transparent px-[10px] text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nconst paginationLinkActiveClassName =\n \"border-border bg-card px-[10px] text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nexport type AdsPaginationProps = React.ComponentPropsWithoutRef<typeof PrimitivePagination>;\n\nexport type AdsPaginationContentProps = React.ComponentPropsWithoutRef<\n typeof PrimitivePaginationContent\n>;\n\nexport type AdsPaginationItemProps = React.ComponentPropsWithoutRef<\n typeof PrimitivePaginationItem\n>;\n\nexport interface AdsPaginationLinkProps extends React.ComponentPropsWithoutRef<\"a\"> {\n isActive?: boolean;\n}\n\nexport interface AdsPaginationPreviousProps\n extends Omit<AdsPaginationLinkProps, \"children\"> {\n children?: React.ReactNode;\n}\n\nexport interface AdsPaginationNextProps extends Omit<AdsPaginationLinkProps, \"children\"> {\n children?: React.ReactNode;\n}\n\nexport interface AdsPaginationEllipsisProps\n extends React.ComponentPropsWithoutRef<\"span\"> {\n label?: string;\n}\n\nfunction AdsPagination({ className, ...props }: AdsPaginationProps) {\n return (\n <PrimitivePagination\n className={cn(\"mx-0 w-auto justify-start\", className)}\n {...props}\n />\n );\n}\nAdsPagination.displayName = \"AdsPagination\";\n\nconst AdsPaginationContent = React.forwardRef<\n HTMLUListElement,\n AdsPaginationContentProps\n>(({ className, ...props }, ref) => (\n <PrimitivePaginationContent ref={ref} className={cn(\"gap-1\", className)} {...props} />\n));\nAdsPaginationContent.displayName = \"AdsPaginationContent\";\n\nconst AdsPaginationItem = React.forwardRef<HTMLLIElement, AdsPaginationItemProps>(\n ({ className, ...props }, ref) => (\n <PrimitivePaginationItem ref={ref} className={className} {...props} />\n ),\n);\nAdsPaginationItem.displayName = \"AdsPaginationItem\";\n\nconst AdsPaginationLink = React.forwardRef<HTMLAnchorElement, AdsPaginationLinkProps>(\n ({ className, isActive = false, ...props }, ref) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n paginationLinkBaseClassName,\n isActive ? paginationLinkActiveClassName : paginationLinkInactiveClassName,\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nAdsPaginationLink.displayName = \"AdsPaginationLink\";\n\nconst AdsPaginationPrevious = React.forwardRef<\n HTMLAnchorElement,\n AdsPaginationPreviousProps\n>(({ \"aria-label\": ariaLabel, children, className, ...props }, ref) => {\n const { messages } = useAdsI18n();\n const label = children ?? messages.pagination.previous;\n\n return (\n <AdsPaginationLink\n aria-label={ariaLabel ?? messages.pagination.previous}\n className={cn(\"gap-1 px-md py-sm\", className)}\n ref={ref}\n {...props}\n >\n <ChevronLeft aria-hidden className=\"h-4 w-4\" />\n <span>{label}</span>\n </AdsPaginationLink>\n );\n});\nAdsPaginationPrevious.displayName = \"AdsPaginationPrevious\";\n\nconst AdsPaginationNext = React.forwardRef<HTMLAnchorElement, AdsPaginationNextProps>(\n ({ \"aria-label\": ariaLabel, children, className, ...props }, ref) => {\n const { messages } = useAdsI18n();\n const label = children ?? messages.pagination.next;\n\n return (\n <AdsPaginationLink\n aria-label={ariaLabel ?? messages.pagination.next}\n className={cn(\"gap-1 px-md py-sm\", className)}\n ref={ref}\n {...props}\n >\n <span>{label}</span>\n <ChevronRight aria-hidden className=\"h-4 w-4\" />\n </AdsPaginationLink>\n );\n },\n);\nAdsPaginationNext.displayName = \"AdsPaginationNext\";\n\nfunction AdsPaginationEllipsis({\n className,\n label,\n ...props\n}: AdsPaginationEllipsisProps) {\n const { messages } = useAdsI18n();\n const resolvedLabel = label ?? messages.pagination.morePages;\n\n return (\n <span\n aria-hidden\n className={cn(\n \"inline-flex h-9 w-9 items-center justify-center rounded-radius-md border border-transparent text-foreground\",\n className,\n )}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">{resolvedLabel}</span>\n </span>\n );\n}\nAdsPaginationEllipsis.displayName = \"AdsPaginationEllipsis\";\n\nexport {\n AdsPagination,\n AdsPaginationContent,\n AdsPaginationEllipsis,\n AdsPaginationItem,\n AdsPaginationLink,\n AdsPaginationNext,\n AdsPaginationPrevious,\n};\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ButtonProps, buttonVariants } from \"@/primitives/button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { AdsClearButton } from \"../../lib/adsClearButton\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../../primitives/select\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\ntype SelectRootProps = React.ComponentPropsWithoutRef<typeof Select>;\n\nconst selectTriggerBaseClassName =\n \"h-9 rounded-radius-md border border-border bg-card px-md py-2 text-sm leading-5 shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus:border-border-focus focus:ring-[3px] focus:ring-[rgba(161,161,161,0.5)] focus:ring-offset-0 data-[placeholder]:text-[var(--muted-foreground)]\";\n\nconst selectContentBaseClassName =\n \"rounded-radius-md border-border bg-popover text-popover-foreground shadow-[0px_8px_24px_rgba(0,0,0,0.22)]\";\n\nexport interface AdsSelectProps extends SelectRootProps {\n clearable?: boolean;\n clearButtonLabel?: string;\n contentClassName?: string;\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n label?: React.ReactNode;\n onClear?: () => void;\n onValueChange?: (value: string | undefined) => void;\n placeholder?: React.ReactNode;\n triggerClassName?: string;\n value?: string;\n defaultValue?: string;\n}\n\nexport function AdsSelect({\n children,\n clearable = false,\n clearButtonLabel,\n contentClassName,\n defaultValue,\n descriptionPlacement = \"below\",\n disabled,\n errorText,\n helperText,\n id,\n label,\n onClear,\n onValueChange,\n placeholder,\n triggerClassName,\n value,\n ...props\n}: AdsSelectProps) {\n const { messages } = useAdsI18n();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n defaultValue,\n );\n const resolvedValue = isControlled ? value : internalValue;\n const selectKey = `${isControlled ? \"controlled\" : \"uncontrolled\"}-${resolvedValue ?? \"__empty__\"}`;\n const canClear = clearable && !disabled && resolvedValue !== undefined;\n const description = useAdsFieldDescription({\n describedBy: undefined,\n errorText,\n helperText,\n id,\n });\n const resolvedClearButtonLabel = clearButtonLabel ?? messages.select.clear;\n\n const handleValueChange = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onValueChange?.(nextValue);\n },\n [isControlled, onValueChange],\n );\n\n const handleClear = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isControlled) {\n setInternalValue(undefined);\n }\n onValueChange?.(undefined);\n onClear?.();\n },\n [isControlled, onClear, onValueChange],\n );\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>\n {helperText}\n </AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? (\n <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel>\n ) : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <Select\n key={selectKey}\n {...props}\n disabled={disabled}\n onValueChange={handleValueChange}\n {...(resolvedValue !== undefined ? { value: resolvedValue } : {})}\n >\n <div className=\"relative\">\n <SelectTrigger\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={cn(\n selectTriggerBaseClassName,\n adsTextColorClassName.card,\n canClear\n ? \"pr-16 [&>svg]:absolute [&>svg]:right-3 [&>svg]:top-1/2 [&>svg]:-translate-y-1/2\"\n : undefined,\n triggerClassName,\n )}\n id={description.inputId}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n {canClear ? (\n <AdsClearButton\n aria-label={resolvedClearButtonLabel}\n className=\"absolute right-8 top-1/2 -translate-y-1/2\"\n onClick={handleClear}\n />\n ) : null}\n </div>\n <SelectContent\n className={cn(selectContentBaseClassName, contentClassName)}\n >\n {children}\n </SelectContent>\n </Select>\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, Filter } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../../primitives/button\";\nimport { Checkbox } from \"../AdsCheckbox\";\nimport { AdsInput } from \"../AdsInput\";\nimport {\n AdsDataPagination,\n type AdsDataPaginationClassNames,\n} from \"../AdsDataPagination\";\nimport {\n AdsEmpty,\n AdsEmptyContent,\n AdsEmptyDescription,\n AdsEmptyHeader,\n AdsEmptyTitle,\n} from \"../AdsEmpty\";\nimport {\n AdsPopover,\n AdsPopoverContent,\n AdsPopoverTrigger,\n} from \"../AdsPopover\";\nimport { AdsSkeleton } from \"../AdsSkeleton\";\nimport { AdsSpinner } from \"../AdsSpinner\";\nimport {\n AdsTableBody,\n AdsTableCell,\n AdsTableCol,\n AdsTableColGroup,\n AdsTableExpandCell,\n AdsTableHead,\n AdsTableHeader,\n AdsTableRoot,\n AdsTableRow,\n AdsTableScrollArea,\n AdsTableSelectionCell,\n AdsTableSurface,\n} from \"../AdsTable\";\nimport { RadioGroup } from \"../AdsRadioGroup\";\n\ntype AdsDataTableKey = React.Key;\ntype AdsDataTableAlign = \"left\" | \"center\" | \"right\";\nexport type AdsDataTableSortOrder = \"ascend\" | \"descend\" | null;\ntype AdsDataTableSize = \"small\" | \"middle\" | \"large\";\ntype DataKey = string | number;\ntype AdsDataTablePaginationMode = \"client\" | \"server\";\ntype AdsDataTableFilterMode = \"client\" | \"server\";\nexport type AdsDataTableLoadingVariant = \"skeleton\" | \"spinner\";\nexport type AdsDataTableExpandedRowSurface = \"inset\" | \"plain\" | \"subtle\";\ntype AdsDataTableResizeState = {\n columnKey: string;\n minWidth: number;\n startWidth: number;\n startX: number;\n};\ntype AdsDataTableEllipsisConfig = {\n maxWidth?: number | string;\n showTitle?: boolean;\n};\ntype AdsDataTableCellRendererContext<RecordType extends object> = {\n value: unknown;\n formattedValue: unknown;\n record: RecordType;\n data: RecordType;\n index: number;\n column: AdsDataTableColumn<RecordType>;\n};\n\nexport interface AdsDataTableColumn<RecordType extends object> {\n title?: React.ReactNode;\n headerName?: React.ReactNode;\n dataIndex?: DataKey | readonly DataKey[];\n field?: string;\n key?: React.Key;\n width?: number | string;\n minWidth?: number | string;\n flex?: number;\n resizable?: boolean;\n align?: AdsDataTableAlign;\n className?: string;\n headerClassName?: string;\n cellClassName?: string;\n ellipsis?: boolean | AdsDataTableEllipsisConfig;\n sorter?: boolean | ((a: RecordType, b: RecordType) => number);\n sortOrder?: AdsDataTableSortOrder;\n defaultSortOrder?: AdsDataTableSortOrder;\n filter?:\n | boolean\n | ((value: string, record: RecordType, index: number, rawValue: unknown) => boolean);\n filterMode?: AdsDataTableFilterMode;\n filterPlaceholder?: string;\n filterValue?: string;\n defaultFilterValue?: string;\n onFilterChange?: (value: string) => void;\n valueGetter?: (record: RecordType, index: number) => unknown;\n valueFormatter?: (\n value: unknown,\n record: RecordType,\n index: number,\n ) => React.ReactNode;\n cellRenderer?: (\n context: AdsDataTableCellRendererContext<RecordType>,\n ) => React.ReactNode;\n render?: (\n value: unknown,\n record: RecordType,\n index: number,\n ) => React.ReactNode;\n}\n\nexport interface AdsDataTablePaginationConfig {\n mode?: AdsDataTablePaginationMode;\n current?: number;\n defaultCurrent?: number;\n pageSize?: number;\n defaultPageSize?: number;\n total?: number;\n pageSizeOptions?: number[];\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n showFirstLast?: boolean;\n showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode);\n onChange?: (page: number, pageSize: number) => void;\n onPageSizeChange?: (pageSize: number, page: number) => void;\n classNames?: AdsDataPaginationClassNames;\n variant?: React.ComponentProps<typeof AdsDataPagination>[\"variant\"];\n}\n\nexport interface AdsDataTableRowSelection<RecordType extends object> {\n type?: \"checkbox\" | \"radio\";\n selectedRowKeys?: AdsDataTableKey[];\n defaultSelectedRowKeys?: AdsDataTableKey[];\n hideSelectAll?: boolean;\n onChange?: (\n selectedRowKeys: AdsDataTableKey[],\n selectedRows: RecordType[],\n ) => void;\n columnWidth?: number | string;\n}\n\nexport interface AdsDataTableExpandable<RecordType extends object> {\n expandedRowRender?: (record: RecordType, index: number) => React.ReactNode;\n expandedRowKeys?: AdsDataTableKey[];\n defaultExpandedRowKeys?: AdsDataTableKey[];\n expandRowByClick?: boolean;\n rowExpandable?: (record: RecordType) => boolean;\n onExpand?: (expanded: boolean, record: RecordType) => void;\n}\n\nexport interface AdsDataTableSortState<RecordType extends object> {\n column: AdsDataTableColumn<RecordType> | null;\n columnKey: string;\n order: AdsDataTableSortOrder;\n}\n\nexport interface AdsDataTableProps<RecordType extends object> {\n columns: AdsDataTableColumn<RecordType>[];\n dataSource?: RecordType[];\n rowKey?:\n | DataKey\n | ((record: RecordType, index: number) => AdsDataTableKey);\n loading?: boolean;\n loadingVariant?: AdsDataTableLoadingVariant;\n expandedRowSurface?: AdsDataTableExpandedRowSurface;\n emptyText?: React.ReactNode;\n emptyState?: React.ReactNode;\n rowClassName?:\n | string\n | ((record: RecordType, index: number) => string | undefined);\n size?: AdsDataTableSize;\n pagination?: false | AdsDataTablePaginationConfig;\n rowSelection?: AdsDataTableRowSelection<RecordType>;\n expandable?: AdsDataTableExpandable<RecordType>;\n scroll?: {\n x?: number | string;\n y?: number | string;\n };\n sticky?: boolean;\n fill?: boolean;\n footer?: React.ReactNode;\n className?: string;\n tableClassName?: string;\n classNames?: {\n emptyRowCell?: string;\n expandedRowContent?: string;\n paginationContainer?: string;\n };\n onSortChange?: (sortState: AdsDataTableSortState<RecordType> | null) => void;\n onRowClick?: (\n record: RecordType,\n index: number,\n event: React.MouseEvent<HTMLTableRowElement>,\n ) => void;\n suppressRowClickSelection?: boolean;\n}\n\nconst SKELETON_ROW_COUNT = 4;\nconst FLEX_WIDTH_UNIT = 160;\n\nconst sizeClassNames: Record<AdsDataTableSize, { cell: string; head: string; bodyHeight: number; headHeight: number }> = {\n small: {\n bodyHeight: 32,\n cell: \"py-1.5 text-xs leading-4\",\n headHeight: 32,\n head: \"h-8 py-1.5 text-xs leading-4\",\n },\n middle: {\n bodyHeight: 40,\n cell: \"py-2 text-sm leading-5\",\n headHeight: 40,\n head: \"h-10 py-2 text-sm leading-5\",\n },\n large: {\n bodyHeight: 48,\n cell: \"py-3 text-base leading-6\",\n headHeight: 48,\n head: \"h-12 py-3 text-base leading-6\",\n },\n};\n\nfunction getSpinnerLoadingHeight(\n scrollY: number | string | undefined,\n density: (typeof sizeClassNames)[AdsDataTableSize],\n) {\n if (typeof scrollY === \"number\") {\n return Math.max(scrollY - density.headHeight, density.bodyHeight * SKELETON_ROW_COUNT);\n }\n\n if (typeof scrollY === \"string\") {\n return `max(calc(${scrollY} - ${density.headHeight}px), ${density.bodyHeight * SKELETON_ROW_COUNT}px)`;\n }\n\n return density.bodyHeight * SKELETON_ROW_COUNT;\n}\n\nfunction getColumnKey<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n index: number,\n) {\n if (column.key !== undefined) {\n return String(column.key);\n }\n\n if (column.field) {\n return column.field;\n }\n\n if (Array.isArray(column.dataIndex)) {\n return column.dataIndex.join(\".\");\n }\n\n if (column.dataIndex !== undefined) {\n return String(column.dataIndex);\n }\n\n return `column-${index}`;\n}\n\nfunction getValueByFieldPath<RecordType extends object>(\n record: RecordType,\n field?: string,\n) {\n if (!field) {\n return undefined;\n }\n\n return field.split(\".\").reduce<unknown>((value, key) => {\n if (value && typeof value === \"object\") {\n return (value as Record<string, unknown>)[key];\n }\n\n return undefined;\n }, record);\n}\n\nfunction getColumnValue<RecordType extends object>(\n record: RecordType,\n dataIndex?: AdsDataTableColumn<RecordType>[\"dataIndex\"],\n) {\n if (dataIndex === undefined) {\n return undefined;\n }\n\n if (Array.isArray(dataIndex)) {\n return dataIndex.reduce<unknown>((value, key) => {\n if (value && typeof value === \"object\") {\n return (value as Record<string, unknown>)[String(key)];\n }\n\n return undefined;\n }, record);\n }\n\n return (record as Record<string, unknown>)[String(dataIndex)];\n}\n\nfunction resolveRowKey<RecordType extends object>(\n record: RecordType,\n index: number,\n rowKey?:\n | DataKey\n | ((record: RecordType, index: number) => AdsDataTableKey),\n) {\n if (typeof rowKey === \"function\") {\n return rowKey(record, index);\n }\n\n if (rowKey !== undefined) {\n const value = (record as Record<string, unknown>)[String(rowKey)];\n if (value !== undefined) {\n return value as AdsDataTableKey;\n }\n }\n\n const fallbackId = (record as Record<string, unknown>).id;\n return (fallbackId as AdsDataTableKey | undefined) ?? index;\n}\n\nfunction compareValues(valueA: unknown, valueB: unknown) {\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return valueA - valueB;\n }\n\n return String(valueA ?? \"\").localeCompare(String(valueB ?? \"\"));\n}\n\nfunction toPixelWidth(value: number | string | undefined) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n const matched = Number.parseFloat(value);\n return Number.isFinite(matched) ? matched : undefined;\n }\n\n return undefined;\n}\n\nfunction normalizeFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return String(value);\n }\n\n return JSON.stringify(value);\n}\n\nfunction getResolvedColumnWidth<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n overrideWidth?: number | string,\n) {\n if (overrideWidth !== undefined) {\n return overrideWidth;\n }\n\n if (column.width !== undefined) {\n return column.width;\n }\n\n if (column.flex !== undefined && Number.isFinite(column.flex) && column.flex > 0) {\n return `${Math.max(column.flex, 1) * FLEX_WIDTH_UNIT}px`;\n }\n\n return undefined;\n}\n\nfunction getCellStyle<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n overrideWidth?: number | string,\n): React.CSSProperties | undefined {\n const style: React.CSSProperties = {};\n\n const resolvedWidth = getResolvedColumnWidth(column, overrideWidth);\n\n if (resolvedWidth !== undefined) {\n style.width = resolvedWidth;\n }\n\n if (column.minWidth !== undefined) {\n style.minWidth = column.minWidth;\n }\n\n if (column.align !== undefined) {\n style.textAlign = column.align;\n }\n\n return Object.keys(style).length > 0 ? style : undefined;\n}\n\nfunction renderCellValue(\n value: unknown,\n ellipsis?: AdsDataTableColumn<object>[\"ellipsis\"],\n) {\n if (React.isValidElement(value)) {\n return value;\n }\n\n if (value === null || value === undefined) {\n return \"\";\n }\n\n const stringValue =\n typeof value === \"string\" || typeof value === \"number\"\n ? String(value)\n : JSON.stringify(value);\n\n if (ellipsis) {\n const shouldShowTitle = typeof ellipsis === \"object\" ? ellipsis.showTitle !== false : true;\n const maxWidth = typeof ellipsis === \"object\" ? ellipsis.maxWidth : undefined;\n\n return (\n <div\n className=\"truncate\"\n style={maxWidth !== undefined ? { maxWidth } : undefined}\n title={shouldShowTitle ? stringValue : undefined}\n >\n {stringValue}\n </div>\n );\n }\n\n return stringValue;\n}\n\nfunction getColumnHeader<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n columnKey: string,\n) {\n return column.title ?? column.headerName ?? columnKey;\n}\n\nfunction getColumnRawValue<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n record: RecordType,\n index: number,\n) {\n if (column.valueGetter) {\n return column.valueGetter(record, index);\n }\n\n if (column.field) {\n return getValueByFieldPath(record, column.field);\n }\n\n return getColumnValue(record, column.dataIndex);\n}\n\nfunction resolveRenderedCellContent<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n record: RecordType,\n index: number,\n) {\n const rawValue = getColumnRawValue(column, record, index);\n const formattedValue = column.valueFormatter\n ? column.valueFormatter(rawValue, record, index)\n : rawValue;\n\n if (column.render) {\n return column.render(formattedValue, record, index);\n }\n\n if (column.cellRenderer) {\n return column.cellRenderer({\n value: rawValue,\n formattedValue,\n record,\n data: record,\n index,\n column,\n });\n }\n\n return formattedValue;\n}\n\nfunction shouldIgnoreRowClick(event: React.MouseEvent<HTMLTableRowElement>) {\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n return Boolean(\n target.closest(\n [\n \"a\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"[role='checkbox']\",\n \"[role='radio']\",\n \"[role='button']\",\n \"[data-ads-row-click-stop]\",\n ].join(\",\"),\n ),\n );\n}\n\nfunction getInitialSortState<RecordType extends object>(\n columns: AdsDataTableColumn<RecordType>[],\n) {\n const columnIndex = columns.findIndex((column) => column.defaultSortOrder !== undefined);\n\n if (columnIndex === -1) {\n return null;\n }\n\n const column = columns[columnIndex];\n const order = column.defaultSortOrder ?? null;\n\n if (order === null) {\n return null;\n }\n\n return {\n column,\n columnKey: getColumnKey(column, columnIndex),\n order,\n } satisfies AdsDataTableSortState<RecordType>;\n}\n\nfunction getInitialFilterValues<RecordType extends object>(\n columns: AdsDataTableColumn<RecordType>[],\n) {\n return columns.reduce<Record<string, string>>((accumulator, column, index) => {\n const columnKey = getColumnKey(column, index);\n const value = column.filterValue ?? column.defaultFilterValue;\n\n if (value !== undefined) {\n accumulator[columnKey] = value;\n }\n\n return accumulator;\n }, {});\n}\n\nexport function AdsDataTable<RecordType extends object>({\n className,\n columns,\n dataSource = [],\n rowKey,\n loading = false,\n loadingVariant = \"skeleton\",\n expandedRowSurface = \"inset\",\n emptyText,\n emptyState,\n rowClassName,\n size = \"middle\",\n pagination = false,\n rowSelection,\n expandable,\n scroll,\n sticky = false,\n fill = false,\n footer,\n tableClassName,\n classNames,\n onSortChange,\n onRowClick,\n suppressRowClickSelection = true,\n}: AdsDataTableProps<RecordType>) {\n const { messages } = useAdsI18n();\n const resolvedColumns = React.useMemo(() => columns.filter(Boolean), [columns]);\n const [internalSortState, setInternalSortState] = React.useState<AdsDataTableSortState<RecordType> | null>(\n () => getInitialSortState(resolvedColumns),\n );\n const [internalSelectedKeys, setInternalSelectedKeys] = React.useState<AdsDataTableKey[]>(\n rowSelection?.defaultSelectedRowKeys ?? rowSelection?.selectedRowKeys ?? [],\n );\n const [internalFilterValues, setInternalFilterValues] = React.useState<Record<string, string>>(\n () => getInitialFilterValues(resolvedColumns),\n );\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<AdsDataTableKey[]>(\n expandable?.defaultExpandedRowKeys ?? expandable?.expandedRowKeys ?? [],\n );\n const [internalColumnWidths, setInternalColumnWidths] = React.useState<Record<string, number>>({});\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(\n pagination !== false ? pagination.defaultCurrent ?? pagination.current ?? 1 : 1,\n );\n const [internalPageSize, setInternalPageSize] = React.useState(\n pagination !== false ? pagination.defaultPageSize ?? pagination.pageSize ?? 10 : 10,\n );\n const [activeResize, setActiveResize] = React.useState<AdsDataTableResizeState | null>(null);\n\n React.useEffect(() => {\n if (rowSelection?.selectedRowKeys !== undefined) {\n setInternalSelectedKeys(rowSelection.selectedRowKeys);\n }\n }, [rowSelection?.selectedRowKeys]);\n\n React.useEffect(() => {\n if (expandable?.expandedRowKeys !== undefined) {\n setInternalExpandedKeys(expandable.expandedRowKeys);\n }\n }, [expandable?.expandedRowKeys]);\n\n React.useEffect(() => {\n if (pagination !== false && pagination.current !== undefined) {\n setInternalCurrentPage(pagination.current);\n }\n }, [pagination]);\n\n React.useEffect(() => {\n if (pagination !== false && pagination.pageSize !== undefined) {\n setInternalPageSize(pagination.pageSize);\n }\n }, [pagination]);\n\n React.useEffect(() => {\n setInternalFilterValues((previous) => {\n const next = { ...previous };\n let hasChanged = false;\n\n resolvedColumns.forEach((column, index) => {\n const columnKey = getColumnKey(column, index);\n if (column.filterValue !== undefined) {\n if (next[columnKey] !== column.filterValue) {\n next[columnKey] = column.filterValue;\n hasChanged = true;\n }\n return;\n }\n\n if (!(columnKey in next) && column.defaultFilterValue !== undefined) {\n next[columnKey] = column.defaultFilterValue;\n hasChanged = true;\n }\n });\n\n return hasChanged ? next : previous;\n });\n }, [resolvedColumns]);\n\n const controlledSortState = React.useMemo(() => {\n const columnIndex = resolvedColumns.findIndex((column) => column.sortOrder !== undefined);\n\n if (columnIndex === -1) {\n return null;\n }\n\n const column = resolvedColumns[columnIndex];\n return {\n column,\n columnKey: getColumnKey(column, columnIndex),\n order: column.sortOrder ?? null,\n } satisfies AdsDataTableSortState<RecordType>;\n }, [resolvedColumns]);\n\n const sortState = controlledSortState ?? internalSortState;\n const selectedKeys = rowSelection?.selectedRowKeys ?? internalSelectedKeys;\n const expandedKeys = expandable?.expandedRowKeys ?? internalExpandedKeys;\n const hasSelectionColumn = Boolean(rowSelection);\n const hasExpandableColumn = Boolean(expandable?.expandedRowRender);\n const density = sizeClassNames[size];\n const columnCount =\n resolvedColumns.length + Number(hasSelectionColumn) + Number(hasExpandableColumn);\n const paginationMode = pagination === false ? \"client\" : (pagination.mode ?? \"client\");\n const allowsRowSelectionByClick = Boolean(rowSelection) && !suppressRowClickSelection;\n const spinnerLoadingHeight = React.useMemo(\n () => getSpinnerLoadingHeight(scroll?.y, density),\n [density, scroll?.y],\n );\n const expandedRowContentClassName =\n expandedRowSurface === \"plain\"\n ? \"bg-transparent p-4\"\n : expandedRowSurface === \"subtle\"\n ? \"mx-6 my-4 rounded-[20px] border border-border bg-transparent p-4\"\n : \"border-t border-border bg-popover/40 p-4\";\n\n const filterValues = React.useMemo(\n () =>\n resolvedColumns.reduce<Record<string, string>>((accumulator, column, index) => {\n const columnKey = getColumnKey(column, index);\n accumulator[columnKey] = column.filterValue ?? internalFilterValues[columnKey] ?? \"\";\n return accumulator;\n }, {}),\n [internalFilterValues, resolvedColumns],\n );\n\n const filteredData = React.useMemo(() => {\n const filterableColumns = resolvedColumns.filter((column) => column.filter);\n if (filterableColumns.length === 0) {\n return dataSource;\n }\n\n return dataSource.filter((record, index) =>\n filterableColumns.every((column) => {\n const columnKey = getColumnKey(column, resolvedColumns.indexOf(column));\n const filterValue = filterValues[columnKey]?.trim();\n\n if (!filterValue || column.filterMode === \"server\") {\n return true;\n }\n\n const rawValue = getColumnRawValue(column, record, index);\n\n if (typeof column.filter === \"function\") {\n return column.filter(filterValue, record, index, rawValue);\n }\n\n return normalizeFilterValue(rawValue)\n .toLowerCase()\n .includes(filterValue.toLowerCase());\n }),\n );\n }, [dataSource, filterValues, resolvedColumns]);\n\n const sortedData = React.useMemo(() => {\n if (!sortState || !sortState.column || sortState.order === null) {\n return filteredData;\n }\n\n const column = sortState.column;\n const sortable = column.sorter;\n\n if (!sortable) {\n return filteredData;\n }\n\n const sorterFn =\n typeof sortable === \"function\"\n ? sortable\n : (a: RecordType, b: RecordType) => {\n const indexA = filteredData.indexOf(a);\n const indexB = filteredData.indexOf(b);\n return compareValues(\n getColumnRawValue(column, a, indexA),\n getColumnRawValue(column, b, indexB),\n );\n };\n\n const nextData = [...filteredData].sort(sorterFn);\n return sortState.order === \"descend\" ? nextData.reverse() : nextData;\n }, [filteredData, sortState]);\n\n const resolvedTotal =\n pagination === false ? sortedData.length : (pagination.total ?? sortedData.length);\n const currentPageSize =\n pagination === false\n ? Math.max(sortedData.length, 1)\n : Math.max(1, pagination.pageSize ?? internalPageSize);\n const totalPages =\n pagination === false\n ? 1\n : Math.max(1, Math.ceil(Math.max(resolvedTotal, 0) / currentPageSize));\n const currentPage =\n pagination === false\n ? 1\n : Math.min(\n Math.max(1, pagination.current ?? internalCurrentPage),\n totalPages,\n );\n\n React.useEffect(() => {\n if (pagination === false || pagination.current !== undefined) {\n return;\n }\n\n if (internalCurrentPage !== currentPage) {\n setInternalCurrentPage(currentPage);\n }\n }, [currentPage, internalCurrentPage, pagination]);\n\n const paginatedData = React.useMemo(() => {\n if (pagination === false || paginationMode === \"server\") {\n return sortedData;\n }\n\n const start = (currentPage - 1) * currentPageSize;\n return sortedData.slice(start, start + currentPageSize);\n }, [currentPage, currentPageSize, pagination, paginationMode, sortedData]);\n\n const handleSortChange = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string, nextOrder: AdsDataTableSortOrder) => {\n const nextSortState =\n nextOrder === null\n ? null\n : ({\n column,\n columnKey,\n order: nextOrder,\n } satisfies AdsDataTableSortState<RecordType>);\n\n if (controlledSortState === null) {\n setInternalSortState(nextSortState);\n }\n\n onSortChange?.(nextSortState);\n },\n [controlledSortState, onSortChange],\n );\n\n const handleFilterChange = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string, nextValue: string) => {\n if (column.filterValue === undefined) {\n setInternalFilterValues((previous) => ({\n ...previous,\n [columnKey]: nextValue,\n }));\n }\n\n if (pagination !== false && pagination.current === undefined) {\n setInternalCurrentPage(1);\n }\n\n column.onFilterChange?.(nextValue);\n },\n [pagination],\n );\n\n const updateSelection = React.useCallback(\n (nextKeys: AdsDataTableKey[]) => {\n if (!rowSelection) {\n return;\n }\n\n if (rowSelection.selectedRowKeys === undefined) {\n setInternalSelectedKeys(nextKeys);\n }\n\n const selectedRows = dataSource.filter((record, index) =>\n nextKeys.includes(resolveRowKey(record, index, rowKey)),\n );\n rowSelection.onChange?.(nextKeys, selectedRows);\n },\n [dataSource, rowKey, rowSelection],\n );\n\n const toggleSelectionFromRowClick = React.useCallback(\n (record: RecordType, recordKey: AdsDataTableKey) => {\n if (!allowsRowSelectionByClick || !rowSelection) {\n return;\n }\n\n if (rowSelection.type === \"radio\") {\n updateSelection([recordKey]);\n return;\n }\n\n const nextKeys = selectedKeys.includes(recordKey)\n ? selectedKeys.filter((key) => key !== recordKey)\n : [...selectedKeys, recordKey];\n updateSelection(Array.from(new Set(nextKeys)));\n },\n [allowsRowSelectionByClick, rowSelection, selectedKeys, updateSelection],\n );\n\n const toggleExpanded = React.useCallback(\n (record: RecordType, recordKey: AdsDataTableKey) => {\n if (!expandable?.expandedRowRender) {\n return;\n }\n\n if (expandable.rowExpandable && !expandable.rowExpandable(record)) {\n return;\n }\n\n const isExpanded = expandedKeys.includes(recordKey);\n const nextExpandedKeys = isExpanded\n ? expandedKeys.filter((key) => key !== recordKey)\n : [...expandedKeys, recordKey];\n\n if (expandable.expandedRowKeys === undefined) {\n setInternalExpandedKeys(nextExpandedKeys);\n }\n\n expandable.onExpand?.(!isExpanded, record);\n },\n [expandable, expandedKeys],\n );\n\n const renderedEmptyState =\n emptyState ?? (\n <AdsEmpty className=\"min-h-[220px] py-12\">\n <AdsEmptyContent>\n <AdsEmptyHeader>\n <AdsEmptyTitle>{emptyText ?? messages.table.noDataAvailable}</AdsEmptyTitle>\n {typeof emptyText === \"string\" ? null : (\n <AdsEmptyDescription>{messages.table.noDataAvailable}</AdsEmptyDescription>\n )}\n </AdsEmptyHeader>\n </AdsEmptyContent>\n </AdsEmpty>\n );\n\n const handlePaginationChange = React.useCallback(\n (page: number, nextPageSize: number) => {\n if (pagination === false) {\n return;\n }\n\n if (pagination.current === undefined) {\n setInternalCurrentPage(page);\n }\n\n if (pagination.pageSize === undefined && nextPageSize !== currentPageSize) {\n setInternalPageSize(nextPageSize);\n }\n\n pagination.onChange?.(page, nextPageSize);\n },\n [currentPageSize, pagination],\n );\n\n const handlePageSizeChange = React.useCallback(\n (nextPageSize: number, page: number) => {\n if (pagination === false) {\n return;\n }\n\n if (pagination.pageSize === undefined) {\n setInternalPageSize(nextPageSize);\n }\n\n if (pagination.current === undefined) {\n setInternalCurrentPage(page);\n }\n\n pagination.onPageSizeChange?.(nextPageSize, page);\n },\n [pagination],\n );\n\n const visibleRowEntries = React.useMemo(\n () =>\n paginatedData.map((record, index) => ({\n key: resolveRowKey(record, index, rowKey),\n record,\n })),\n [paginatedData, rowKey],\n );\n const visibleSelectableKeys = React.useMemo(\n () => visibleRowEntries.map((entry) => entry.key),\n [visibleRowEntries],\n );\n const selectedVisibleCount = React.useMemo(\n () => visibleSelectableKeys.filter((key) => selectedKeys.includes(key)).length,\n [selectedKeys, visibleSelectableKeys],\n );\n const allVisibleRowsSelected =\n visibleSelectableKeys.length > 0 && selectedVisibleCount === visibleSelectableKeys.length;\n const someVisibleRowsSelected =\n selectedVisibleCount > 0 && selectedVisibleCount < visibleSelectableKeys.length;\n\n const getColumnWidthOverride = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string) =>\n internalColumnWidths[columnKey] ?? getResolvedColumnWidth(column),\n [internalColumnWidths],\n );\n\n const startColumnResize = React.useCallback(\n (\n event: React.MouseEvent<HTMLSpanElement>,\n column: AdsDataTableColumn<RecordType>,\n columnKey: string,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n\n const startWidth =\n toPixelWidth(internalColumnWidths[columnKey]) ??\n toPixelWidth(getResolvedColumnWidth(column)) ??\n toPixelWidth(column.minWidth) ??\n FLEX_WIDTH_UNIT;\n const minWidth = Math.max(toPixelWidth(column.minWidth) ?? 96, 48);\n\n const resizeState = {\n columnKey,\n minWidth,\n startWidth,\n startX: event.clientX,\n } satisfies AdsDataTableResizeState;\n\n setActiveResize(resizeState);\n\n const handleMouseMove = (nextEvent: MouseEvent) => {\n const delta = nextEvent.clientX - resizeState.startX;\n const nextWidth = Math.max(resizeState.minWidth, resizeState.startWidth + delta);\n setInternalColumnWidths((previous) => ({\n ...previous,\n [resizeState.columnKey]: nextWidth,\n }));\n };\n\n const handleMouseUp = () => {\n setActiveResize(null);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n },\n [internalColumnWidths],\n );\n\n const renderColumnHeader = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string, columnSortOrder: AdsDataTableSortOrder) => {\n const headerTitle = getColumnHeader(column, columnKey);\n const hasSorter = Boolean(column.sorter);\n const hasFilter = Boolean(column.filter);\n const hasResizeHandle = Boolean(column.resizable);\n\n if (!hasSorter && !hasFilter && !hasResizeHandle) {\n return headerTitle;\n }\n\n const nextOrder =\n columnSortOrder === null\n ? \"ascend\"\n : columnSortOrder === \"ascend\"\n ? \"descend\"\n : null;\n const actionLabel =\n nextOrder === \"ascend\"\n ? messages.table.sortAscending\n : nextOrder === \"descend\"\n ? messages.table.sortDescending\n : messages.table.clearSort;\n\n return (\n <div className=\"relative flex min-w-0 items-center gap-2 pr-3\">\n <div className=\"flex min-w-0 flex-1 items-center justify-between gap-2\">\n {hasSorter ? (\n <Button\n aria-label={`${headerTitle} ${actionLabel}`}\n className={cn(\n \"h-8 min-w-0 flex-1 justify-between rounded-radius-md border-0 bg-transparent px-0 text-left shadow-none hover:bg-transparent focus-visible:ring-0\",\n \"hover:text-[var(--card-foreground)]\",\n )}\n onClick={() => handleSortChange(column, columnKey, nextOrder)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <span className=\"truncate\">{headerTitle}</span>\n <span className=\"inline-flex h-4 w-4 items-center justify-center text-icon-muted\">\n {columnSortOrder === \"ascend\" ? (\n <ChevronDown className=\"h-4 w-4 rotate-180\" />\n ) : columnSortOrder === \"descend\" ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60\" />\n )}\n </span>\n </Button>\n ) : (\n <span className=\"truncate\">{headerTitle}</span>\n )}\n\n {hasFilter ? (\n <AdsPopover>\n <AdsPopoverTrigger asChild>\n <Button\n aria-label={`${headerTitle} ${messages.table.filterColumn}`}\n className={cn(\n \"h-6 w-6 shrink-0 rounded-[6px] border-0 bg-transparent px-0 shadow-none hover:bg-accent focus-visible:ring-0\",\n filterValues[columnKey]\n ? \"text-primary\"\n : \"text-icon-muted hover:text-[var(--card-foreground)]\",\n )}\n data-ads-column-filter-trigger=\"true\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Filter className=\"h-3.5 w-3.5\" />\n </Button>\n </AdsPopoverTrigger>\n <AdsPopoverContent align=\"end\" className=\"w-64\">\n <AdsInput\n clearable\n onChange={(event) =>\n handleFilterChange(column, columnKey, event.currentTarget.value)\n }\n onClear={() => handleFilterChange(column, columnKey, \"\")}\n placeholder={column.filterPlaceholder}\n size=\"sm\"\n value={filterValues[columnKey] ?? \"\"}\n />\n </AdsPopoverContent>\n </AdsPopover>\n ) : null}\n </div>\n\n {hasResizeHandle ? (\n <span\n aria-label={`Resize ${headerTitle} column`}\n className={cn(\n \"absolute inset-y-1 -right-1 z-20 flex w-2 cursor-col-resize items-center justify-center rounded-full transition-colors\",\n \"before:block before:h-5 before:w-px before:rounded-full before:bg-[#4A4C55]\",\n \"hover:before:bg-[#6B6E78]\",\n activeResize?.columnKey === columnKey ? \"before:bg-[#8B8E99]\" : undefined,\n )}\n onMouseDown={(event) => startColumnResize(event, column, columnKey)}\n role=\"separator\"\n />\n ) : null}\n </div>\n );\n },\n [activeResize?.columnKey, filterValues, handleFilterChange, handleSortChange, messages.table, startColumnResize],\n );\n\n const tableNode = (\n <AdsTableSurface className={cn(\"flex min-h-0 flex-1 flex-col\", className)}>\n <AdsTableScrollArea fill={fill} stickyHeader={sticky} x={scroll?.x} y={scroll?.y}>\n <AdsTableRoot className={tableClassName}>\n <AdsTableColGroup>\n {hasSelectionColumn ? (\n <AdsTableCol style={{ width: rowSelection?.columnWidth ?? 48 }} />\n ) : null}\n {hasExpandableColumn ? <AdsTableCol style={{ width: 48 }} /> : null}\n {resolvedColumns.map((column, index) => (\n <AdsTableCol\n key={getColumnKey(column, index)}\n style={getCellStyle(column, getColumnWidthOverride(column, getColumnKey(column, index)))}\n />\n ))}\n </AdsTableColGroup>\n\n <AdsTableHeader>\n <AdsTableRow>\n {hasSelectionColumn ? (\n <AdsTableHead className=\"w-12 p-2\">\n {rowSelection?.type !== \"radio\" && !rowSelection?.hideSelectAll ? (\n <div className=\"flex items-center justify-center\">\n <Checkbox\n aria-label={messages.table.selectAllRows}\n checked={allVisibleRowsSelected ? true : someVisibleRowsSelected ? \"indeterminate\" : false}\n disabled={visibleSelectableKeys.length === 0}\n onCheckedChange={(nextChecked) => {\n const shouldSelectAll = Boolean(nextChecked);\n const remainingKeys = selectedKeys.filter(\n (key) => !visibleSelectableKeys.includes(key),\n );\n const nextKeys = shouldSelectAll\n ? Array.from(new Set([...remainingKeys, ...visibleSelectableKeys]))\n : remainingKeys;\n updateSelection(nextKeys);\n }}\n onClick={(event) => event.stopPropagation()}\n />\n </div>\n ) : null}\n </AdsTableHead>\n ) : null}\n {hasExpandableColumn ? <AdsTableHead className=\"w-12 p-2\" /> : null}\n\n {resolvedColumns.map((column, index) => {\n const columnKey = getColumnKey(column, index);\n const columnSortOrder =\n sortState?.columnKey === columnKey ? sortState.order : column.sortOrder ?? null;\n\n return (\n <AdsTableHead\n className={cn(density.head, column.className, column.headerClassName)}\n key={columnKey}\n style={getCellStyle(column, getColumnWidthOverride(column, columnKey))}\n >\n {renderColumnHeader(column, columnKey, columnSortOrder)}\n </AdsTableHead>\n );\n })}\n </AdsTableRow>\n </AdsTableHeader>\n\n <AdsTableBody>\n {loading && loadingVariant === \"spinner\"\n ? [\n <AdsTableRow key=\"spinner-row\">\n <AdsTableCell\n className=\"p-0\"\n colSpan={columnCount}\n >\n <div\n aria-label={messages.table.loadingRows}\n aria-live=\"polite\"\n className=\"flex items-center justify-center px-6 py-8 text-foreground\"\n role=\"status\"\n style={{ minHeight: spinnerLoadingHeight }}\n >\n <AdsSpinner size=\"lg\" tone=\"foreground\" />\n </div>\n </AdsTableCell>\n </AdsTableRow>,\n ]\n : loading\n ? Array.from({ length: SKELETON_ROW_COUNT }, (_, skeletonIndex) => (\n <AdsTableRow key={`skeleton-${skeletonIndex}`}>\n {hasSelectionColumn ? (\n <AdsTableCell className=\"w-12 p-2\">\n <AdsSkeleton className=\"h-4 w-4 rounded-[4px]\" />\n </AdsTableCell>\n ) : null}\n {hasExpandableColumn ? (\n <AdsTableCell className=\"w-12 p-2\">\n <AdsSkeleton className=\"h-4 w-4 rounded-[4px]\" />\n </AdsTableCell>\n ) : null}\n {resolvedColumns.map((column, index) => (\n <AdsTableCell\n className={cn(density.cell, column.className)}\n key={`${getColumnKey(column, index)}-${skeletonIndex}`}\n >\n <AdsSkeleton className=\"h-4 w-full rounded\" />\n </AdsTableCell>\n ))}\n </AdsTableRow>\n ))\n : paginatedData.length > 0\n ? paginatedData.flatMap((record, index) => {\n const recordKey = resolveRowKey(record, index, rowKey);\n const isExpanded = expandedKeys.includes(recordKey);\n const canExpand =\n !!expandable?.expandedRowRender &&\n (!expandable.rowExpandable || expandable.rowExpandable(record));\n const dataRowClassName =\n typeof rowClassName === \"function\" ? rowClassName(record, index) : rowClassName;\n\n const row = (\n <AdsTableRow\n className={cn(\n dataRowClassName,\n onRowClick ? \"cursor-pointer\" : undefined,\n )}\n data-state={selectedKeys.includes(recordKey) ? \"selected\" : undefined}\n key={String(recordKey)}\n onClick={(event) => {\n if (shouldIgnoreRowClick(event)) {\n return;\n }\n\n if (onRowClick) {\n toggleSelectionFromRowClick(record, recordKey);\n onRowClick(record, index, event);\n return;\n }\n\n if (expandable?.expandRowByClick && canExpand) {\n toggleExpanded(record, recordKey);\n }\n\n toggleSelectionFromRowClick(record, recordKey);\n }}\n >\n {hasSelectionColumn ? (\n <AdsTableSelectionCell\n checked={selectedKeys.includes(recordKey)}\n onChange={(nextValue) => {\n if (rowSelection?.type === \"radio\") {\n updateSelection([recordKey]);\n return;\n }\n\n const nextKeys = nextValue\n ? [...selectedKeys, recordKey]\n : selectedKeys.filter((key) => key !== recordKey);\n updateSelection(Array.from(new Set(nextKeys)));\n }}\n type={rowSelection?.type ?? \"checkbox\"}\n value={String(recordKey)}\n />\n ) : null}\n\n {hasExpandableColumn ? (\n <AdsTableExpandCell\n disabled={!canExpand}\n expanded={isExpanded}\n onToggle={() => toggleExpanded(record, recordKey)}\n />\n ) : null}\n\n {resolvedColumns.map((column, columnIndex) => {\n const renderedValue = renderCellValue(\n resolveRenderedCellContent(column, record, index),\n column.ellipsis,\n );\n\n return (\n <AdsTableCell\n className={cn(\n density.cell,\n column.className,\n column.cellClassName,\n )}\n key={`${String(recordKey)}-${getColumnKey(column, columnIndex)}`}\n style={getCellStyle(\n column,\n getColumnWidthOverride(column, getColumnKey(column, columnIndex)),\n )}\n >\n {renderedValue}\n </AdsTableCell>\n );\n })}\n </AdsTableRow>\n );\n\n if (!canExpand || !isExpanded) {\n return [row];\n }\n\n return [\n row,\n <AdsTableRow key={`${String(recordKey)}-expanded`}>\n <AdsTableCell\n className=\"p-0\"\n colSpan={\n resolvedColumns.length + Number(hasSelectionColumn) + Number(hasExpandableColumn)\n }\n >\n <div\n className={cn(\n expandedRowContentClassName,\n classNames?.expandedRowContent,\n )}\n >\n {expandable?.expandedRowRender?.(record, index)}\n </div>\n </AdsTableCell>\n </AdsTableRow>,\n ];\n })\n : [\n <AdsTableRow key=\"empty-row\">\n <AdsTableCell\n colSpan={columnCount}\n className={cn(\"p-0\", classNames?.emptyRowCell)}\n >\n {renderedEmptyState}\n </AdsTableCell>\n </AdsTableRow>,\n ]}\n </AdsTableBody>\n </AdsTableRoot>\n </AdsTableScrollArea>\n\n {footer ? <div className=\"border-t border-border p-3\">{footer}</div> : null}\n\n {pagination !== false ? (\n <div className={cn(\"border-t border-border p-3\", classNames?.paginationContainer)}>\n <AdsDataPagination\n ariaLabel={messages.pagination.navigation}\n current={currentPage}\n classNames={pagination.classNames}\n defaultCurrent={pagination.defaultCurrent}\n defaultPageSize={pagination.defaultPageSize}\n onChange={handlePaginationChange}\n onPageSizeChange={handlePageSizeChange}\n pageSize={currentPageSize}\n pageSizeOptions={pagination.pageSizeOptions}\n showFirstLast={pagination.showFirstLast}\n showQuickJumper={pagination.showQuickJumper}\n showSizeChanger={pagination.showSizeChanger}\n showTotal={pagination.showTotal}\n total={resolvedTotal}\n variant={pagination.variant}\n />\n </div>\n ) : null}\n </AdsTableSurface>\n );\n\n if (rowSelection?.type === \"radio\") {\n return (\n <RadioGroup\n onValueChange={(value) => {\n const nextRecord = dataSource.find(\n (record, index) => String(resolveRowKey(record, index, rowKey)) === value,\n );\n if (!nextRecord) {\n return;\n }\n updateSelection([resolveRowKey(nextRecord, dataSource.indexOf(nextRecord), rowKey)]);\n }}\n value={selectedKeys[0] !== undefined ? String(selectedKeys[0]) : \"\"}\n >\n {tableNode}\n </RadioGroup>\n );\n }\n\n return tableNode;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/cn\";\n\nconst adsEmptyVariants = cva(\n \"flex w-full flex-col items-center justify-center gap-6 p-12 text-center\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"rounded-radius-lg border border-dashed border-border\",\n background: \"rounded-radius-lg bg-popover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface AdsEmptyProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof adsEmptyVariants> {}\n\nfunction AdsEmpty({ className, variant, ...props }: AdsEmptyProps) {\n return (\n <div\n data-slot=\"ads-empty\"\n className={cn(adsEmptyVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-header\"\n className={cn(\"flex w-full max-w-[384px] flex-col items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyMedia({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-media\"\n data-testid=\"ads-empty-media\"\n className={cn(\n \"flex size-10 items-center justify-center rounded-radius-lg bg-muted text-muted-foreground [&_svg]:size-6 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return (\n <div\n data-slot=\"ads-empty-title\"\n className={cn(\"text-lg font-medium leading-7 text-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p\n data-slot=\"ads-empty-description\"\n className={cn(\"max-w-[384px] text-sm leading-5 text-muted-foreground text-center\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-content\"\n className={cn(\"flex w-full max-w-[384px] flex-col items-center gap-4\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyActions({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-actions\"\n className={cn(\"flex flex-wrap items-center justify-center gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-footer\"\n className={cn(\"text-sm font-medium leading-5 text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n AdsEmpty,\n AdsEmptyActions,\n AdsEmptyContent,\n AdsEmptyDescription,\n AdsEmptyFooter,\n AdsEmptyHeader,\n AdsEmptyMedia,\n AdsEmptyTitle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Button } from \"../../primitives/button\";\nimport { Checkbox } from \"../AdsCheckbox\";\nimport { RadioGroupItem } from \"../AdsRadioGroup\";\nimport {\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableCol as PrimitiveTableCol,\n TableColGroup as PrimitiveTableColGroup,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TableScrollArea as PrimitiveTableScrollArea,\n} from \"../../primitives/table\";\n\ntype PrimitiveTableProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveTable\n>;\nconst AdsTableStickyHeaderContext = React.createContext(false);\n\nexport interface AdsTableScrollAreaProps extends React.ComponentPropsWithoutRef<\n typeof PrimitiveTableScrollArea\n> {\n fill?: boolean;\n stickyHeader?: boolean;\n x?: number | string;\n y?: number | string;\n}\n\nfunction resolveLength(value: number | string | undefined) {\n if (value === undefined) {\n return undefined;\n }\n\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nconst AdsTableSurface = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"w-full overflow-hidden rounded-radius-md border border-border bg-card\",\n className,\n )}\n {...props}\n />\n));\nAdsTableSurface.displayName = \"AdsTableSurface\";\n\nconst AdsTableRoot = React.forwardRef<HTMLTableElement, PrimitiveTableProps>(\n ({ className, ...props }, ref) => (\n <PrimitiveTable\n ref={ref}\n className={cn(\n \"w-full caption-bottom text-sm\",\n adsTextColorClassName.card,\n className,\n )}\n data-slot=\"ads-table-root\"\n {...props}\n />\n ),\n);\nAdsTableRoot.displayName = \"AdsTableRoot\";\n\nconst AdsTableScrollArea = React.forwardRef<\n HTMLDivElement,\n AdsTableScrollAreaProps\n>(\n (\n {\n children,\n className,\n fill = false,\n stickyHeader = false,\n style,\n x,\n y,\n ...props\n },\n ref,\n ) => (\n <AdsTableStickyHeaderContext.Provider value={stickyHeader}>\n <PrimitiveTableScrollArea\n ref={ref}\n className={cn(\n \"w-full overflow-auto\",\n fill ? \"min-h-0 flex-1\" : undefined,\n stickyHeader\n ? \"[&_thead_th]:sticky [&_thead_th]:top-0 [&_thead_th]:z-10 [&_thead_th]:bg-card\"\n : undefined,\n className,\n )}\n data-slot=\"ads-table-scroll-area\"\n style={{\n ...style,\n maxHeight: resolveLength(y),\n minWidth: resolveLength(x),\n }}\n {...props}\n >\n {children}\n </PrimitiveTableScrollArea>\n </AdsTableStickyHeaderContext.Provider>\n ),\n);\nAdsTableScrollArea.displayName = \"AdsTableScrollArea\";\n\nconst AdsTable = React.forwardRef<HTMLTableElement, PrimitiveTableProps>(\n ({ className, ...props }, ref) => (\n <AdsTableSurface>\n <AdsTableScrollArea>\n <AdsTableRoot ref={ref} className={className} {...props} />\n </AdsTableScrollArea>\n </AdsTableSurface>\n ),\n);\nAdsTable.displayName = \"AdsTable\";\n\nconst AdsTableColGroup = React.forwardRef<\n HTMLTableColElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableColGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableColGroup ref={ref} className={className} {...props} />\n));\nAdsTableColGroup.displayName = \"AdsTableColGroup\";\n\nconst AdsTableCol = React.forwardRef<\n HTMLTableColElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableCol>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableCol ref={ref} className={className} {...props} />\n));\nAdsTableCol.displayName = \"AdsTableCol\";\n\nconst AdsTableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableHeader>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableHeader\n ref={ref}\n className={cn(\"[&_tr]:border-border\", className)}\n {...props}\n />\n));\nAdsTableHeader.displayName = \"AdsTableHeader\";\n\nconst AdsTableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableBody>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableBody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nAdsTableBody.displayName = \"AdsTableBody\";\n\nconst AdsTableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableFooter>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableFooter\n ref={ref}\n className={cn(\n \"border-border bg-card\",\n adsTextColorClassName.card,\n className,\n )}\n {...props}\n />\n));\nAdsTableFooter.displayName = \"AdsTableFooter\";\n\nconst AdsTableRow = React.forwardRef<\n HTMLTableRowElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableRow>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableRow\n ref={ref}\n className={cn(\n \"border-border hover:bg-transparent data-[state=selected]:bg-accent/30\",\n className,\n )}\n {...props}\n />\n));\nAdsTableRow.displayName = \"AdsTableRow\";\n\nconst AdsTableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableHead>\n>(({ className, ...props }, ref) => {\n const stickyHeader = React.useContext(AdsTableStickyHeaderContext);\n\n return (\n <PrimitiveTableHead\n ref={ref}\n className={cn(\n \"h-10 px-2 align-middle text-sm font-medium leading-5 [&:has([role=checkbox])]:pr-0 [&:has([role=radio])]:pr-0\",\n adsTextColorClassName.card,\n stickyHeader ? \"sticky top-0 z-10 bg-card\" : undefined,\n className,\n )}\n {...props}\n />\n );\n});\nAdsTableHead.displayName = \"AdsTableHead\";\n\nconst AdsTableCell = React.forwardRef<\n HTMLTableCellElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableCell>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableCell\n ref={ref}\n className={cn(\n \"p-2 align-middle text-sm font-normal leading-5 [&:has([role=checkbox])]:pr-0 [&:has([role=radio])]:pr-0\",\n adsTextColorClassName.card,\n className,\n )}\n {...props}\n />\n));\nAdsTableCell.displayName = \"AdsTableCell\";\n\nconst AdsTableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableCaption>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableCaption\n ref={ref}\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n {...props}\n />\n));\nAdsTableCaption.displayName = \"AdsTableCaption\";\n\nexport interface AdsTableSortHeaderProps extends Omit<\n React.ComponentPropsWithoutRef<typeof AdsTableHead>,\n \"children\" | \"title\"\n> {\n disabled?: boolean;\n onToggleSort?: (nextOrder: \"ascend\" | \"descend\" | null) => void;\n sortOrder: \"ascend\" | \"descend\" | null;\n title: React.ReactNode;\n}\n\nconst AdsTableSortHeader = React.forwardRef<\n HTMLTableCellElement,\n AdsTableSortHeaderProps\n>(\n (\n { className, disabled = false, onToggleSort, sortOrder, title, ...props },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const nextOrder =\n sortOrder === null ? \"ascend\" : sortOrder === \"ascend\" ? \"descend\" : null;\n const actionLabel =\n nextOrder === \"ascend\"\n ? messages.table.sortAscending\n : nextOrder === \"descend\"\n ? messages.table.sortDescending\n : messages.table.clearSort;\n\n return (\n <AdsTableHead ref={ref} className={className} {...props}>\n <Button\n aria-label={`${title} ${actionLabel}`}\n className={cn(\n \"h-8 w-full justify-between rounded-radius-md border-0 bg-transparent px-0 text-left shadow-none hover:bg-transparent focus-visible:ring-0\",\n adsTextColorClassName.card,\n \"hover:text-[var(--card-foreground)]\",\n disabled ? \"cursor-not-allowed opacity-50\" : undefined,\n )}\n disabled={disabled}\n onClick={() => onToggleSort?.(nextOrder)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <span className=\"truncate\">{title}</span>\n <span className=\"inline-flex h-4 w-4 items-center justify-center text-icon-muted\">\n {sortOrder === \"ascend\" ? (\n <ChevronDown className=\"h-4 w-4 rotate-180\" />\n ) : sortOrder === \"descend\" ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60\" />\n )}\n </span>\n </Button>\n </AdsTableHead>\n );\n },\n);\nAdsTableSortHeader.displayName = \"AdsTableSortHeader\";\n\nexport interface AdsTableSelectionCellProps extends Omit<\n React.ComponentPropsWithoutRef<typeof AdsTableCell>,\n \"children\" | \"onChange\"\n> {\n checked?: boolean;\n disabled?: boolean;\n onChange?: (nextValue: boolean | string) => void;\n type?: \"checkbox\" | \"radio\";\n value?: string;\n}\n\nconst AdsTableSelectionCell = React.forwardRef<\n HTMLTableCellElement,\n AdsTableSelectionCellProps\n>(\n (\n {\n checked = false,\n className,\n disabled = false,\n onChange,\n type = \"checkbox\",\n value = \"selected\",\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n\n return (\n <AdsTableCell ref={ref} className={cn(\"w-12 p-2\", className)} {...props}>\n <div className=\"flex items-center justify-center\">\n {type === \"radio\" ? (\n <RadioGroupItem\n aria-label={messages.table.selectRow}\n className=\"h-4 w-4 border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\"\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onChange?.(value);\n }}\n value={value}\n />\n ) : (\n <Checkbox\n aria-label={messages.table.selectRow}\n checked={checked}\n className=\"h-4 w-4\"\n disabled={disabled}\n onCheckedChange={(nextChecked) =>\n onChange?.(Boolean(nextChecked))\n }\n onClick={(event) => event.stopPropagation()}\n />\n )}\n </div>\n </AdsTableCell>\n );\n },\n);\nAdsTableSelectionCell.displayName = \"AdsTableSelectionCell\";\n\nexport interface AdsTableExpandCellProps extends Omit<\n React.ComponentPropsWithoutRef<typeof AdsTableCell>,\n \"children\"\n> {\n disabled?: boolean;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n}\n\nconst AdsTableExpandCell = React.forwardRef<\n HTMLTableCellElement,\n AdsTableExpandCellProps\n>(\n (\n { className, disabled = false, expanded = false, onToggle, ...props },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n\n return (\n <AdsTableCell ref={ref} className={cn(\"w-12 p-2\", className)} {...props}>\n <div className=\"flex items-center justify-center\">\n <Button\n aria-label={\n expanded ? messages.table.collapseRow : messages.table.expandRow\n }\n className={cn(\n \"h-8 w-8 rounded-radius-md border-0 bg-transparent px-0 shadow-none hover:bg-accent\",\n adsTextColorClassName.card,\n \"hover:text-[var(--card-foreground)]\",\n )}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onToggle?.(!expanded);\n }}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {expanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n </AdsTableCell>\n );\n },\n);\nAdsTableExpandCell.displayName = \"AdsTableExpandCell\";\n\nexport {\n AdsTable,\n AdsTableBody,\n AdsTableCaption,\n AdsTableCell,\n AdsTableCol,\n AdsTableColGroup,\n AdsTableExpandCell,\n AdsTableFooter,\n AdsTableHead,\n AdsTableHeader,\n AdsTableRoot,\n AdsTableRow,\n AdsTableScrollArea,\n AdsTableSelectionCell,\n AdsTableSortHeader,\n AdsTableSurface,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n RadioGroup as PrimitiveRadioGroup,\n RadioGroupItem as PrimitiveRadioGroupItem,\n} from \"../../primitives/radio-group\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\nconst radioGroupBaseClassName = \"gap-3\";\nconst radioItemBaseClassName =\n \"h-4 w-4 border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0\";\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroup>,\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveRadioGroup className={cn(radioGroupBaseClassName, className)} ref={ref} {...props} />\n));\nRadioGroup.displayName = \"RadioGroup\";\n\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroupItem>,\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroupItem>\n>(({ className, ...props }, ref) => (\n <PrimitiveRadioGroupItem\n className={cn(radioItemBaseClassName, className)}\n ref={ref}\n {...props}\n />\n));\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\nexport interface AdsRadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroup> {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n label?: React.ReactNode;\n}\n\nexport const AdsRadioGroup = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroup>,\n AdsRadioGroupProps\n>(\n (\n {\n children,\n className,\n descriptionPlacement = \"below\",\n errorText,\n helperText,\n id,\n label,\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n errorText,\n helperText,\n id,\n });\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>{helperText}</AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? <AdsFieldLabel>{label}</AdsFieldLabel> : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <RadioGroup\n aria-describedby={description.describedBy}\n className={className}\n ref={ref}\n {...props}\n >\n {children}\n </RadioGroup>\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsRadioGroup.displayName = \"AdsRadioGroup\";\n\ntype AdsRadioGroupOptionProps = Omit<\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroupItem>,\n \"children\"\n> & {\n description?: React.ReactNode;\n label: React.ReactNode;\n};\n\nexport const AdsRadioGroupOption = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroupItem>,\n AdsRadioGroupOptionProps\n>(({ className, description, id, label, value, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n return (\n <label className=\"flex w-full cursor-pointer items-start gap-2\" htmlFor={inputId}>\n <RadioGroupItem\n className={cn(className)}\n id={inputId}\n ref={ref}\n value={value}\n {...props}\n />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div className=\"text-sm leading-5 text-foreground\">{label}</div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">{description}</AdsFieldDescription>\n ) : null}\n </div>\n </label>\n );\n});\nAdsRadioGroupOption.displayName = \"AdsRadioGroupOption\";\n\ntype AdsRadioGroupCardOptionProps = Omit<\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroupItem>,\n \"children\"\n> & {\n description?: React.ReactNode;\n label: React.ReactNode;\n};\n\nexport const AdsRadioGroupCardOption = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroupItem>,\n AdsRadioGroupCardOptionProps\n>(({ className, description, disabled, id, label, value, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const titleId = `${inputId}-label`;\n const descriptionId = description ? `${inputId}-description` : undefined;\n\n return (\n <div className=\"relative\">\n <RadioGroupItem\n aria-describedby={descriptionId}\n aria-labelledby={titleId}\n className=\"peer absolute inset-0 h-full w-full rounded-radius-md opacity-0 focus-visible:outline-none focus-visible:ring-0\"\n disabled={disabled}\n id={inputId}\n ref={ref}\n value={value}\n {...props}\n />\n <div\n className={cn(\n \"flex min-h-[72px] w-full items-center gap-3 rounded-radius-md border border-border bg-card p-md shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors [&_[data-indicator]]:border-border [&_[data-indicator-span]]:opacity-0 peer-data-[state=checked]:border-primary peer-data-[state=checked]:bg-accent peer-data-[state=checked]:[&_[data-indicator]]:border-primary peer-data-[state=checked]:[&_[data-indicator-span]]:opacity-100 peer-focus-visible:ring-[3px] peer-focus-visible:ring-[rgba(161,161,161,0.5)] peer-focus-visible:ring-offset-0\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n className,\n )}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div className=\"text-sm font-medium leading-5 text-foreground\" id={titleId}>\n {label}\n </div>\n {description ? (\n <AdsFieldDescription className=\"text-xs leading-4\" id={descriptionId}>\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n <div className=\"flex h-full shrink-0 items-start justify-center pt-px\">\n <div\n className=\"grid h-4 w-4 place-content-center rounded-full border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\"\n data-indicator\n >\n <span\n className=\"h-2 w-2 rounded-full bg-primary transition-opacity\"\n data-indicator-span\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\nAdsRadioGroupCardOption.displayName = \"AdsRadioGroupCardOption\";\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.TableHTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n))\nTable.displayName = \"Table\"\n\nconst TableScrollArea = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"relative w-full overflow-auto\", className)}\n {...props}\n />\n))\nTableScrollArea.displayName = \"TableScrollArea\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nconst TableColGroup = React.forwardRef<\n HTMLTableColElement,\n React.HTMLAttributes<HTMLTableColElement>\n>(({ className, ...props }, ref) => (\n <colgroup ref={ref} className={cn(className)} {...props} />\n))\nTableColGroup.displayName = \"TableColGroup\"\n\nconst TableCol = React.forwardRef<\n HTMLTableColElement,\n React.ColHTMLAttributes<HTMLTableColElement>\n>(({ className, ...props }, ref) => (\n <col ref={ref} className={cn(className)} {...props} />\n))\nTableCol.displayName = \"TableCol\"\n\nexport {\n Table,\n TableScrollArea,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n TableColGroup,\n TableCol,\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { AdsInput } from \"../AdsInput\";\n\nexport interface AdsDataTableToolbarProps {\n action?: React.ReactNode;\n className?: string;\n searchClassName?: string;\n searchPlaceholder?: string;\n searchValue?: string;\n title?: React.ReactNode;\n titleClassName?: string;\n onSearchChange?: (value: string) => void;\n onSearchClear?: () => void;\n}\n\nexport function AdsDataTableToolbar({\n action,\n className,\n searchClassName,\n searchPlaceholder,\n searchValue = \"\",\n title,\n titleClassName,\n onSearchChange,\n onSearchClear,\n}: AdsDataTableToolbarProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-md px-6 pb-4 pt-6 md:flex-row md:items-center md:justify-between\",\n className,\n )}\n >\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <h2 className={cn(\"truncate text-xl font-medium text-white\", titleClassName)}>\n {title}\n </h2>\n ) : null}\n </div>\n\n <div className=\"flex w-full flex-col gap-sm md:min-w-0 md:flex-1 md:flex-row md:items-center md:justify-end\">\n <div className=\"min-w-0 md:max-w-[440px] md:flex-1\">\n <AdsInput\n className={cn(\n \"border-[#27282F] bg-[#27282F] text-white placeholder:text-[#848484]\",\n searchClassName,\n )}\n clearable\n onChange={(event) => onSearchChange?.(event.target.value)}\n onClear={onSearchClear}\n placeholder={searchPlaceholder}\n value={searchValue}\n />\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { AdsButton } from \"../AdsButton\";\nimport {\n AdsDataTable,\n type AdsDataTableColumn,\n type AdsDataTablePaginationConfig,\n type AdsDataTableProps,\n} from \"../AdsDataTable\";\nimport { AdsDataTableToolbar } from \"../AdsDataTableToolbar\";\n\ntype AdsViewCustomersDataTablePagination = Omit<\n AdsDataTablePaginationConfig,\n \"variant\" | \"showFirstLast\"\n>;\n\nexport interface AdsViewCustomersDataTableProps<RecordType extends object>\n extends Omit<\n AdsDataTableProps<RecordType>,\n \"className\" | \"emptyState\" | \"pagination\"\n > {\n columns: AdsDataTableColumn<RecordType>[];\n emptyState?: React.ReactNode;\n error?: boolean;\n errorDescription?: React.ReactNode;\n errorState?: React.ReactNode;\n errorTitle?: React.ReactNode;\n height?: number | string;\n pagination?: false | AdsViewCustomersDataTablePagination;\n retryLabel?: React.ReactNode;\n searchPlaceholder?: string;\n searchValue?: string;\n title?: React.ReactNode;\n toolbarAction?: React.ReactNode;\n onRetry?: () => void;\n onSearchChange?: (value: string) => void;\n onSearchClear?: () => void;\n}\n\nfunction resolveHeight(value: number | string | undefined) {\n if (value === undefined) {\n return 500;\n }\n\n return value;\n}\n\nexport function AdsViewCustomersDataTable<RecordType extends object>({\n columns,\n dataSource = [],\n emptyState,\n error = false,\n errorDescription = \"Try again or adjust the current query.\",\n errorState,\n errorTitle = \"Unable to load records\",\n height = 500,\n loading = false,\n pagination = false,\n retryLabel = \"Retry\",\n rowKey,\n scroll,\n searchPlaceholder = \"Search customers\",\n searchValue = \"\",\n sticky = true,\n title,\n toolbarAction,\n onRetry,\n onSearchChange,\n onSearchClear,\n ...props\n}: AdsViewCustomersDataTableProps<RecordType>) {\n const tableHeight = resolveHeight(height);\n const resolvedErrorState =\n errorState ?? (\n <div className=\"flex min-h-[500px] flex-col items-center justify-center gap-3 px-6 py-12 text-center\">\n <p className=\"text-sm font-medium text-white\">{errorTitle}</p>\n <p className=\"max-w-md text-sm text-[#848484]\">{errorDescription}</p>\n {onRetry ? (\n <AdsButton intent=\"primary\" onClick={onRetry}>\n {retryLabel}\n </AdsButton>\n ) : null}\n </div>\n );\n\n return (\n <div className=\"overflow-hidden rounded-xl border border-[#27282F] bg-[#1B1C21]\">\n <AdsDataTableToolbar\n action={toolbarAction}\n onSearchChange={onSearchChange}\n onSearchClear={onSearchClear}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n title={title}\n />\n\n {error ? resolvedErrorState : null}\n\n {!error ? (\n <AdsDataTable\n {...props}\n className={cn(\n \"rounded-none border-0 bg-[#1B1C21]\",\n \"[&_thead_th]:border-b-[#27282F] [&_thead_th]:bg-[#27282F] [&_thead_th]:text-[14px] [&_thead_th]:leading-5\",\n \"[&_tbody_td]:border-b-[#27282F] [&_tbody_td]:text-[14px] [&_tbody_td]:leading-5\",\n \"[&_tbody_tr:hover]:!bg-[#333333]\",\n \"[&_[data-slot='ads-table-root']]:bg-[#1B1C21]\",\n \"[&_[data-slot='ads-table-root']]:text-white\",\n \"[&_[data-slot='ads-table-scroll-area']]:bg-[#1B1C21]\",\n )}\n columns={columns}\n dataSource={dataSource}\n emptyState={emptyState}\n loading={loading}\n pagination={\n pagination === false\n ? false\n : {\n ...pagination,\n showFirstLast: true,\n variant: \"compact\",\n }\n }\n rowKey={rowKey}\n scroll={{\n ...scroll,\n y: scroll?.y ?? tableHeight,\n }}\n sticky={sticky}\n tableClassName=\"[&_td]:text-white [&_th]:text-white\"\n />\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\nimport { Progress as PrimitiveProgress, type ProgressProps as PrimitiveProgressProps } from \"../../primitives/progress\";\n\nconst progressBaseClassName =\n \"h-2 rounded-radius-full bg-[color:color-mix(in_srgb,var(--primary)_20%,transparent)]\";\n\nconst progressIndicatorVariantClassName = {\n ai: \"bg-brand-gradient\",\n default: \"bg-primary\",\n} as const;\n\nexport type AdsProgressVariant = keyof typeof progressIndicatorVariantClassName;\n\nexport interface AdsProgressProps extends PrimitiveProgressProps {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n indicatorClassName?: string;\n label?: React.ReactNode;\n trackClassName?: string;\n variant?: AdsProgressVariant;\n}\n\nexport const Progress = React.forwardRef<\n React.ElementRef<typeof PrimitiveProgress>,\n PrimitiveProgressProps\n>(({ className, indicatorClassName, ...props }, ref) => (\n <PrimitiveProgress\n className={cn(progressBaseClassName, className)}\n indicatorClassName={cn(progressIndicatorVariantClassName.default, indicatorClassName)}\n ref={ref}\n {...props}\n />\n));\nProgress.displayName = \"Progress\";\n\nexport const AdsProgress = React.forwardRef<\n React.ElementRef<typeof PrimitiveProgress>,\n AdsProgressProps\n>(\n (\n {\n className,\n descriptionPlacement = \"above\",\n errorText,\n helperText,\n id,\n indicatorClassName,\n label,\n trackClassName,\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n errorText,\n helperText,\n id,\n });\n const labelId = label ? `${description.inputId}-label` : undefined;\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>{helperText}</AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? <AdsFieldLabel id={labelId}>{label}</AdsFieldLabel> : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <PrimitiveProgress\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n aria-labelledby={labelId}\n className={cn(progressBaseClassName, trackClassName, className)}\n id={description.inputId}\n indicatorClassName={cn(\n progressIndicatorVariantClassName[variant],\n indicatorClassName,\n )}\n ref={ref}\n {...props}\n />\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsProgress.displayName = \"AdsProgress\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface ProgressProps\n extends React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> {\n indicatorClassName?: string;\n}\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(({ className, indicatorClassName, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n className={cn(\"relative h-4 w-full overflow-hidden rounded-full bg-secondary\", className)}\n ref={ref}\n value={value}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\"h-full w-full flex-1 bg-primary transition-all\", indicatorClassName)}\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Slider as PrimitiveSlider } from \"../../primitives/slider\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\nconst sliderBaseClassName = \"py-1\";\n\nexport const Slider = React.forwardRef<\n React.ElementRef<typeof PrimitiveSlider>,\n React.ComponentPropsWithoutRef<typeof PrimitiveSlider>\n>(({ className, ...props }, ref) => (\n <PrimitiveSlider className={cn(sliderBaseClassName, className)} ref={ref} {...props} />\n));\nSlider.displayName = \"Slider\";\n\nexport interface AdsSliderProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSlider> {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n label?: React.ReactNode;\n}\n\nexport const AdsSlider = React.forwardRef<\n React.ElementRef<typeof PrimitiveSlider>,\n AdsSliderProps\n>(\n (\n {\n className,\n descriptionPlacement = \"above\",\n errorText,\n helperText,\n id,\n label,\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n errorText,\n helperText,\n id,\n });\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>{helperText}</AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? <AdsFieldLabel>{label}</AdsFieldLabel> : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <Slider\n aria-describedby={description.describedBy}\n className={className}\n ref={ref}\n {...props}\n />\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsSlider.displayName = \"AdsSlider\";\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n {Array.from({\n length: Array.isArray(props.value)\n ? props.value.length\n : Array.isArray(props.defaultValue)\n ? props.defaultValue.length\n : 1,\n }).map((_, index) => (\n <SliderPrimitive.Thumb\n className=\"block h-5 w-5 rounded-full border border-primary bg-background 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 disabled:opacity-50\"\n key={index}\n />\n ))}\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Switch as PrimitiveSwitch } from \"../../primitives/switch\";\nimport { AdsFieldDescription } from \"../AdsField\";\n\nconst switchBaseClassName =\n \"h-6 w-11 border border-transparent bg-muted shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted\";\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof PrimitiveSwitch>,\n React.ComponentPropsWithoutRef<typeof PrimitiveSwitch>\n>(({ className, ...props }, ref) => (\n <PrimitiveSwitch className={cn(switchBaseClassName, className)} ref={ref} {...props} />\n));\nSwitch.displayName = \"Switch\";\n\nexport interface AdsSwitchProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSwitch> {\n description?: React.ReactNode;\n label?: React.ReactNode;\n switchClassName?: string;\n wrapperClassName?: string;\n}\n\nexport const AdsSwitch = React.forwardRef<\n React.ElementRef<typeof PrimitiveSwitch>,\n AdsSwitchProps\n>(({ className, description, id, label, switchClassName, wrapperClassName, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n if (!label) {\n return (\n <Switch\n className={cn(className, switchClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n );\n }\n\n return (\n <label className={cn(\"block w-full cursor-pointer\", wrapperClassName)} htmlFor={inputId}>\n <div className=\"flex w-full items-start gap-3\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5 pt-0.5\">\n <div className=\"text-sm font-medium leading-5 text-foreground\">{label}</div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n <div className=\"shrink-0\">\n <Switch\n className={cn(className, switchClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n </div>\n </div>\n </label>\n );\n});\nAdsSwitch.displayName = \"AdsSwitch\";\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-[18px] w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-[0px_1px_2px_rgba(0,0,0,0.1)] ring-0 transition-transform data-[state=checked]:translate-x-[20px] data-[state=unchecked]:translate-x-[2px]\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Tabs as PrimitiveTabs,\n TabsContent as PrimitiveTabsContent,\n TabsList as PrimitiveTabsList,\n TabsTrigger as PrimitiveTabsTrigger,\n} from \"../../primitives/tabs\";\n\nexport type AdsTabsProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabs>;\nexport type AdsTabsListProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabsList>;\nexport type AdsTabsTriggerProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabsTrigger>;\nexport type AdsTabsContentProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabsContent>;\n\nconst AdsTabs = PrimitiveTabs;\n\nconst AdsTabsList = React.forwardRef<\n React.ElementRef<typeof PrimitiveTabsList>,\n AdsTabsListProps\n>(({ className, ...props }, ref) => (\n <PrimitiveTabsList\n className={cn(\n \"inline-flex items-center gap-0 rounded-radius-lg bg-muted p-[2px]\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsTabsList.displayName = \"AdsTabsList\";\n\nconst AdsTabsTrigger = React.forwardRef<\n React.ElementRef<typeof PrimitiveTabsTrigger>,\n AdsTabsTriggerProps\n>(({ className, ...props }, ref) => (\n <PrimitiveTabsTrigger\n className={cn(\n \"inline-flex h-8 items-center justify-center rounded-radius-md px-md py-xs text-sm font-medium leading-5 text-foreground transition-[background-color,border-color,box-shadow] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=active]:border data-[state=active]:border-border data-[state=active]:bg-card data-[state=active]:shadow-[0px_1px_1.5px_rgba(0,0,0,0.1)]\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsTabsTrigger.displayName = \"AdsTabsTrigger\";\n\nconst AdsTabsContent = React.forwardRef<\n React.ElementRef<typeof PrimitiveTabsContent>,\n AdsTabsContentProps\n>(({ className, ...props }, ref) => (\n <PrimitiveTabsContent\n className={cn(\n \"mt-2 rounded-[12px] border border-border bg-card shadow-[0px_1px_1.5px_rgba(0,0,0,0.1)] focus-visible:ring-0\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsTabsContent.displayName = \"AdsTabsContent\";\n\nexport {\n AdsTabs,\n AdsTabsList,\n AdsTabsTrigger,\n AdsTabsContent,\n};\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n className={cn(\"inline-flex items-center\", className)}\n ref={ref}\n {...props}\n />\n))\n\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n className={cn(\"focus-visible:outline-none\", className)}\n ref={ref}\n {...props}\n />\n))\n\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Toggle as PrimitiveToggle } from \"../../primitives/toggle\";\nimport type { AdsSize } from \"../shared/types\";\n\nconst sizeClassName: Record<AdsSize, string> = {\n sm: \"!h-8 px-[6px] text-sm\",\n md: \"!h-9 px-md text-sm\",\n lg: \"!h-10 px-[10px] text-sm\",\n};\n\nconst iconOnlySizeClassName: Record<AdsSize, string> = {\n sm: \"!w-8\",\n md: \"!w-9\",\n lg: \"!w-10\",\n};\n\nconst variantClassName = {\n default:\n \"border border-transparent bg-transparent text-foreground shadow-none hover:bg-muted/70 data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n outline:\n \"border border-border bg-transparent text-foreground shadow-none hover:bg-muted/70 data-[state=on]:border-transparent data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n} as const;\n\nexport interface AdsToggleProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveToggle> {\n size?: AdsSize;\n variant?: keyof typeof variantClassName;\n}\n\nexport const AdsToggle = React.forwardRef<\n React.ElementRef<typeof PrimitiveToggle>,\n AdsToggleProps\n>(({ children, className, size = \"md\", variant = \"default\", ...props }, ref) => {\n const childCount = React.Children.count(children);\n const isIconOnly = childCount === 1 && React.isValidElement(children);\n\n return (\n <PrimitiveToggle\n className={cn(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-radius-md font-medium leading-5 text-foreground focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:opacity-50\",\n sizeClassName[size],\n variantClassName[variant],\n isIconOnly && iconOnlySizeClassName[size],\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </PrimitiveToggle>\n );\n});\n\nAdsToggle.displayName = \"AdsToggle\";\n","import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>\n>(({ className, ...props }, ref) => (\n <TogglePrimitive.Root\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-[background-color,box-shadow,color] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n ToggleGroup as PrimitiveToggleGroup,\n ToggleGroupItem as PrimitiveToggleGroupItem,\n} from \"../../primitives/toggle-group\";\nimport type { AdsSize } from \"../shared/types\";\n\ntype AdsToggleGroupVariant = \"default\" | \"outline\";\ntype AdsToggleGroupOrientation = \"horizontal\" | \"vertical\";\n\nconst sizeClassName: Record<AdsSize, string> = {\n sm: \"h-8 min-w-7 px-[6px] text-sm\",\n md: \"h-9 min-w-[34px] px-md text-sm\",\n lg: \"h-10 min-w-9 px-[10px] text-sm\",\n};\n\nconst variantClassName: Record<AdsToggleGroupVariant, string> = {\n default:\n \"border-transparent bg-transparent text-foreground hover:bg-muted/70 data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n outline:\n \"border border-border bg-transparent text-foreground hover:bg-muted/70 data-[state=on]:border-transparent data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n};\n\nconst AdsToggleGroupContext = React.createContext<{\n orientation: AdsToggleGroupOrientation;\n size: AdsSize;\n variant: AdsToggleGroupVariant;\n} | null>(null);\n\ntype PrimitiveToggleGroupProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveToggleGroup\n>;\n\nexport type AdsToggleGroupProps = PrimitiveToggleGroupProps & {\n children?: React.ReactNode;\n size?: AdsSize;\n variant?: AdsToggleGroupVariant;\n};\n\nexport interface AdsToggleGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveToggleGroupItem> {\n size?: AdsSize;\n variant?: AdsToggleGroupVariant;\n}\n\nexport const AdsToggleGroup = React.forwardRef<\n React.ElementRef<typeof PrimitiveToggleGroup>,\n AdsToggleGroupProps\n>(\n (\n {\n children,\n className,\n orientation = \"horizontal\",\n size = \"md\",\n variant = \"default\",\n ...props\n },\n ref,\n ) => (\n <AdsToggleGroupContext.Provider value={{ orientation, size, variant }}>\n <PrimitiveToggleGroup\n className={cn(\n \"inline-flex items-start justify-start\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row\",\n className,\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n >\n {children}\n </PrimitiveToggleGroup>\n </AdsToggleGroupContext.Provider>\n ),\n);\n\nAdsToggleGroup.displayName = \"AdsToggleGroup\";\n\nexport const AdsToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof PrimitiveToggleGroupItem>,\n AdsToggleGroupItemProps\n>(({ className, size, variant, ...props }, ref) => {\n const context = React.useContext(AdsToggleGroupContext);\n const resolvedOrientation = context?.orientation ?? \"horizontal\";\n const resolvedSize = size ?? context?.size ?? \"md\";\n const resolvedVariant = variant ?? context?.variant ?? \"default\";\n\n return (\n <PrimitiveToggleGroupItem\n className={cn(\n \"inline-flex shrink-0 items-center justify-center font-medium leading-5 text-foreground focus-visible:relative focus-visible:z-10 focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:opacity-50\",\n sizeClassName[resolvedSize],\n variantClassName[resolvedVariant],\n resolvedOrientation === \"horizontal\"\n ? \"first:rounded-l-radius-md first:rounded-r-none last:rounded-l-none last:rounded-r-radius-md not-first:not-last:rounded-none\"\n : \"first:rounded-t-radius-md first:rounded-b-none last:rounded-t-none last:rounded-b-radius-md not-first:not-last:rounded-none\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\n\nAdsToggleGroupItem.displayName = \"AdsToggleGroupItem\";\n","import * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n className={cn(\"inline-flex items-center justify-start\", className)}\n ref={ref}\n {...props}\n />\n))\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <ToggleGroupPrimitive.Item\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-[background-color,box-shadow,color] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Textarea } from \"../../primitives/textarea\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\ntype TextareaProps = React.ComponentPropsWithoutRef<typeof Textarea>;\n\nconst textareaBaseClassName =\n \"w-full rounded-radius-md border border-border bg-card px-md py-md text-base leading-6 shadow-[0px_1px_2px_rgba(0,0,0,0.1)] placeholder:text-[var(--muted-foreground)] focus-visible:border-border-focus focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50\";\n\nexport interface AdsTextareaProps extends Omit<\n TextareaProps,\n \"aria-invalid\" | \"size\"\n> {\n action?: React.ReactNode;\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n label?: React.ReactNode;\n resizable?: boolean;\n}\n\nexport const AdsTextarea = React.forwardRef<\n HTMLTextAreaElement,\n AdsTextareaProps\n>(\n (\n {\n action,\n className,\n descriptionPlacement = \"below\",\n errorText,\n helperText,\n id,\n label,\n resizable = true,\n rows = 3,\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n describedBy: props[\"aria-describedby\"],\n errorText,\n helperText,\n id,\n });\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>\n {helperText}\n </AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? (\n <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel>\n ) : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <Textarea\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={cn(\n textareaBaseClassName,\n adsTextColorClassName.card,\n \"min-h-[80px]\",\n resizable ? \"resize-y\" : \"resize-none\",\n className,\n )}\n id={description.inputId}\n ref={ref}\n rows={rows}\n {...props}\n />\n {action ? <div className=\"w-full [&>*]:w-full\">{action}</div> : null}\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsTextarea.displayName = \"AdsTextarea\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Tooltip as BaseTooltip,\n TooltipArrow as BaseTooltipArrow,\n TooltipContent as BaseTooltipContent,\n TooltipProvider as BaseTooltipProvider,\n TooltipTrigger as BaseTooltipTrigger,\n} from \"../../primitives/tooltip\";\n\nexport type AdsTooltipProviderProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipProvider\n>;\nexport type AdsTooltipProps = React.ComponentPropsWithoutRef<typeof BaseTooltip>;\nexport type AdsTooltipTriggerProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipTrigger\n>;\nexport type AdsTooltipArrowProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipArrow\n>;\nexport type AdsTooltipContentProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipContent\n>;\n\nconst tooltipContentClassName =\n \"z-50 rounded-[6px] border-0 bg-[#844fff] px-3 py-2 text-sm font-normal leading-5 text-[#fdfdfd] shadow-[0px_8px_24px_rgba(0,0,0,0.22)]\";\n\nconst AdsTooltipProvider = BaseTooltipProvider;\nconst AdsTooltip = BaseTooltip;\nconst AdsTooltipTrigger = BaseTooltipTrigger;\n\nconst AdsTooltipContent = React.forwardRef<\n React.ElementRef<typeof BaseTooltipContent>,\n AdsTooltipContentProps\n>(({ align = \"center\", className, sideOffset = 10, ...props }, ref) => (\n <BaseTooltipContent\n align={align}\n className={cn(tooltipContentClassName, className)}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n));\nAdsTooltipContent.displayName = \"AdsTooltipContent\";\n\nconst AdsTooltipArrow = React.forwardRef<\n React.ElementRef<typeof BaseTooltipArrow>,\n AdsTooltipArrowProps\n>(({ className, height = 5, width = 10, ...props }, ref) => (\n <BaseTooltipArrow\n className={cn(\"fill-[#844fff]\", className)}\n height={height}\n ref={ref}\n width={width}\n {...props}\n />\n));\nAdsTooltipArrow.displayName = \"AdsTooltipArrow\";\n\nexport {\n AdsTooltip,\n AdsTooltipArrow,\n AdsTooltipContent,\n AdsTooltipProvider,\n AdsTooltipTrigger,\n};\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipArrow = TooltipPrimitive.Arrow;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\",\n className,\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport {\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n CircleCheck,\n Info,\n LoaderCircle,\n OctagonX,\n TriangleAlert,\n} from \"lucide-react\";\nimport { Toaster, toast, type ExternalToast, type ToasterProps } from \"sonner\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { AdsButton } from \"../AdsButton\";\n\nexport type AdsToastIntent =\n | \"default\"\n | \"success\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"loading\";\n\nexport type AdsToastAction = {\n label: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nexport interface AdsToastProps extends Omit<\n React.ComponentPropsWithoutRef<\"div\">,\n \"title\"\n> {\n action?: AdsToastAction;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n intent?: AdsToastIntent;\n title: React.ReactNode;\n}\n\nexport interface AdsToastOptions extends Omit<\n ExternalToast,\n | \"action\"\n | \"cancel\"\n | \"className\"\n | \"classNames\"\n | \"description\"\n | \"icon\"\n | \"unstyled\"\n> {\n action?: AdsToastAction;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n testId?: string;\n}\n\ntype AdsToastPromiseStage = {\n action?: AdsToastAction;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n title: React.ReactNode;\n};\n\nexport interface AdsToastPromiseOptions<ToastData> extends Omit<\n ExternalToast,\n | \"action\"\n | \"cancel\"\n | \"className\"\n | \"classNames\"\n | \"description\"\n | \"icon\"\n | \"unstyled\"\n> {\n error: AdsToastPromiseStage | ((error: unknown) => AdsToastPromiseStage);\n loading: AdsToastPromiseStage;\n success: AdsToastPromiseStage | ((data: ToastData) => AdsToastPromiseStage);\n}\n\nconst adsToastIconMap: Record<\n Exclude<AdsToastIntent, \"default\">,\n React.ComponentType<{ className?: string }>\n> = {\n success: CircleCheck,\n info: Info,\n warning: TriangleAlert,\n error: OctagonX,\n loading: LoaderCircle,\n};\n\nfunction resolveToastIcon(intent: AdsToastIntent, icon?: React.ReactNode) {\n if (icon) {\n return icon;\n }\n\n if (intent === \"default\") {\n return null;\n }\n\n const Icon = adsToastIconMap[intent];\n\n return (\n <Icon\n aria-hidden\n className={cn(\n \"h-4 w-4 shrink-0\",\n adsTextColorClassName.popover,\n intent === \"loading\" && \"animate-spin\",\n )}\n data-testid=\"ads-toast-icon\"\n />\n );\n}\n\nexport const AdsToast = React.forwardRef<HTMLDivElement, AdsToastProps>(\n (\n {\n action,\n className,\n description,\n icon,\n intent = \"default\",\n title,\n ...props\n },\n ref,\n ) => {\n const resolvedIcon = resolveToastIcon(intent, icon);\n\n return (\n <div\n className={cn(\n \"flex min-w-[356px] max-w-[356px] items-center rounded-radius-lg border border-border bg-popover p-4\",\n adsTextColorClassName.popover,\n \"shadow-[0px_10px_15px_-3px_rgba(0,0,0,0.1),0px_4px_6px_-4px_rgba(0,0,0,0.1)]\",\n resolvedIcon ? \"gap-1.5\" : action ? \"gap-6\" : \"gap-0\",\n className,\n )}\n data-testid=\"ads-toast\"\n ref={ref}\n {...props}\n >\n {resolvedIcon}\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <p\n className={cn(\n \"text-sm font-medium leading-5\",\n adsTextColorClassName.popover,\n )}\n >\n {title}\n </p>\n {description ? (\n <p\n className={cn(\n \"text-xs font-normal leading-4\",\n adsTextColorClassName.muted,\n )}\n >\n {description}\n </p>\n ) : null}\n </div>\n {action ? (\n <AdsButton\n className=\"shrink-0 rounded-radius-lg\"\n intent=\"primary\"\n onClick={action.onClick}\n size=\"sm\"\n >\n {action.label}\n </AdsButton>\n ) : null}\n </div>\n );\n },\n);\nAdsToast.displayName = \"AdsToast\";\n\nexport interface AdsToasterProps extends Omit<\n ToasterProps,\n \"containerAriaLabel\" | \"icons\" | \"toastOptions\"\n> {\n containerAriaLabel?: string;\n}\n\nexport function AdsToaster({\n containerAriaLabel,\n duration = 4000,\n expand = false,\n gap = 16,\n position = \"bottom-right\",\n visibleToasts = 6,\n ...props\n}: AdsToasterProps) {\n const { messages } = useAdsI18n();\n\n return (\n <Toaster\n closeButton={false}\n containerAriaLabel={containerAriaLabel ?? messages.toast.notifications}\n duration={duration}\n expand={expand}\n gap={gap}\n position={position}\n toastOptions={{\n unstyled: true,\n }}\n visibleToasts={visibleToasts}\n {...props}\n />\n );\n}\n\nfunction toStageNode(\n intent: AdsToastIntent,\n title: React.ReactNode,\n options?: Pick<AdsToastOptions, \"action\" | \"description\" | \"icon\">,\n) {\n return (\n <AdsToast\n action={options?.action}\n description={options?.description}\n icon={options?.icon}\n intent={intent}\n title={title}\n />\n );\n}\n\nfunction showAdsToast(\n intent: AdsToastIntent,\n title: React.ReactNode,\n options?: AdsToastOptions,\n) {\n const { action, description, icon, ...toastOptions } = options ?? {};\n\n return toast.custom(\n (id) => (\n <AdsToast\n action={\n action\n ? {\n ...action,\n onClick: (event) => {\n action.onClick?.(event);\n toast.dismiss(id);\n },\n }\n : undefined\n }\n description={description}\n icon={icon}\n intent={intent}\n title={title}\n />\n ),\n {\n ...toastOptions,\n unstyled: true,\n },\n );\n}\n\nfunction resolvePromiseStage<ToastData>(\n stage: AdsToastPromiseStage | ((value: ToastData) => AdsToastPromiseStage),\n value: ToastData,\n) {\n return typeof stage === \"function\" ? stage(value) : stage;\n}\n\ntype AdsToastManager = ((\n title: React.ReactNode,\n options?: AdsToastOptions,\n) => string | number) & {\n dismiss: (id?: number | string) => string | number;\n error: (title: React.ReactNode, options?: AdsToastOptions) => string | number;\n info: (title: React.ReactNode, options?: AdsToastOptions) => string | number;\n loading: (\n title: React.ReactNode,\n options?: AdsToastOptions,\n ) => string | number;\n promise: <ToastData>(\n promise: Promise<ToastData> | (() => Promise<ToastData>),\n options: AdsToastPromiseOptions<ToastData>,\n ) => ReturnType<typeof toast.promise<ToastData>>;\n success: (\n title: React.ReactNode,\n options?: AdsToastOptions,\n ) => string | number;\n warning: (\n title: React.ReactNode,\n options?: AdsToastOptions,\n ) => string | number;\n};\n\nexport const AdsToastManager: AdsToastManager = Object.assign(\n (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"default\", title, options),\n {\n success: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"success\", title, options),\n info: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"info\", title, options),\n warning: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"warning\", title, options),\n error: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"error\", title, options),\n loading: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"loading\", title, options),\n dismiss: (id?: number | string) => toast.dismiss(id),\n promise: <ToastData,>(\n promise: Promise<ToastData> | (() => Promise<ToastData>),\n options: AdsToastPromiseOptions<ToastData>,\n ) => {\n const { error, loading, success, ...toastOptions } = options;\n\n return toast.promise(promise, {\n ...toastOptions,\n unstyled: true,\n loading: toStageNode(\"loading\", loading.title, loading),\n success: (value) => {\n const stage = resolvePromiseStage(success, value);\n\n return toStageNode(\"success\", stage.title, stage);\n },\n error: (reason) => {\n const stage = resolvePromiseStage(error, reason);\n\n return toStageNode(\"error\", stage.title, stage);\n },\n });\n },\n },\n);\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\n\nexport type DialogProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Root\n>;\nexport type DialogTriggerProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Trigger\n>;\nexport type DialogPortalProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Portal\n>;\nexport type DialogOverlayProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Overlay\n>;\nexport type DialogCloseProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Close\n>;\n\nexport interface DialogContentProps extends React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> {\n closeLabel?: string;\n hideCloseButton?: boolean;\n}\n\nexport type DialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport type DialogBodyProps = React.HTMLAttributes<HTMLDivElement>;\nexport type DialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\nexport type DialogTitleProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Title\n>;\nexport type DialogDescriptionProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Description\n>;\n\nconst overlayClassName =\n \"fixed inset-0 z-50 bg-black/80 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\";\n\nconst contentClassName =\n \"fixed left-1/2 top-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-[423px] -translate-x-1/2 -translate-y-1/2 flex-col gap-lg overflow-hidden rounded-radius-md border border-border bg-card p-xl shadow-[0px_4px_6px_-4px_rgba(0,0,0,0.1),0px_10px_15px_-3px_rgba(0,0,0,0.1)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\";\n\nconst bodyClassName =\n \"min-h-0 flex-1 overflow-y-auto overscroll-contain [scrollbar-gutter:stable]\";\n\nconst closeButtonClassName =\n \"absolute right-xl top-xl inline-flex h-6 w-6 items-center justify-center rounded-sm opacity-80 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n className={cn(overlayClassName, className)}\n ref={ref}\n {...props}\n />\n));\nDialogOverlay.displayName = \"DialogOverlay\";\n\nconst DialogClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n DialogCloseProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Close\n className={cn(\n \"inline-flex items-center justify-center rounded-radius-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nDialogClose.displayName = \"DialogClose\";\n\nfunction flattenDialogChildren(children: React.ReactNode): React.ReactNode[] {\n const nodes: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === React.Fragment) {\n nodes.push(...flattenDialogChildren(child.props.children));\n return;\n }\n\n nodes.push(child);\n });\n\n return nodes;\n}\n\nfunction isDialogSlotElement<P>(\n child: React.ReactNode,\n component: React.ComponentType<P>,\n): child is React.ReactElement<P> {\n return React.isValidElement(child) && child.type === component;\n}\n\nconst DialogBody = React.forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ className, ...props }, ref) => (\n <div\n className={cn(bodyClassName, className)}\n data-slot=\"ads-dialog-body\"\n ref={ref}\n {...props}\n />\n ),\n);\nDialogBody.displayName = \"DialogBody\";\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(\n (\n { children, className, closeLabel, hideCloseButton = false, ...props },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const resolvedCloseLabel = closeLabel ?? messages.dialog.close;\n const childNodes = flattenDialogChildren(children);\n const headerIndex = childNodes.findIndex((child) =>\n isDialogSlotElement(child, DialogHeader),\n );\n let footerIndex = -1;\n\n for (let index = childNodes.length - 1; index >= 0; index -= 1) {\n if (isDialogSlotElement(childNodes[index], DialogFooter)) {\n footerIndex = index;\n break;\n }\n }\n\n const headerNode = headerIndex >= 0 ? childNodes[headerIndex] : null;\n const generatedHeaderNodes: React.ReactNode[] = [];\n\n if (headerNode === null) {\n for (let index = 0; index < childNodes.length; index += 1) {\n if (index === footerIndex) {\n break;\n }\n\n const child = childNodes[index];\n const isHeaderChild =\n isDialogSlotElement(child, DialogTitle) ||\n isDialogSlotElement(child, DialogDescription);\n\n if (!isHeaderChild) {\n break;\n }\n\n generatedHeaderNodes.push(child);\n }\n }\n const footerNode =\n footerIndex >= 0 && footerIndex !== headerIndex\n ? childNodes[footerIndex]\n : null;\n const bodyNodes = childNodes.filter(\n (child, index) => {\n if (index === headerIndex || index === footerIndex) {\n return false;\n }\n\n return !generatedHeaderNodes.includes(child);\n },\n );\n const explicitBodyNodes = bodyNodes.filter((child) =>\n isDialogSlotElement(child, DialogBody),\n );\n const looseBodyNodes = bodyNodes.filter(\n (child) => !isDialogSlotElement(child, DialogBody),\n );\n\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"ads-dialog-content\"\n className={cn(\n contentClassName,\n adsTextColorClassName.card,\n className,\n )}\n ref={ref}\n {...props}\n >\n {headerNode}\n {headerNode === null && generatedHeaderNodes.length > 0 ? (\n <DialogHeader>{generatedHeaderNodes}</DialogHeader>\n ) : null}\n {explicitBodyNodes.length > 0 ? explicitBodyNodes : null}\n {looseBodyNodes.length > 0 ? (\n <DialogBody>{looseBodyNodes}</DialogBody>\n ) : null}\n {footerNode}\n {!hideCloseButton ? (\n <DialogPrimitive.Close\n aria-label={resolvedCloseLabel}\n className={cn(closeButtonClassName, adsTextColorClassName.card)}\n >\n <X aria-hidden className=\"h-4 w-4\" />\n <span className=\"sr-only\">{resolvedCloseLabel}</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n data-slot=\"ads-dialog-header\"\n className={cn(\"flex flex-col gap-sm pr-8 text-left\", className)}\n ref={ref}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n data-slot=\"ads-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-sm sm:flex-row sm:justify-end\",\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n DialogTitleProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n className={cn(\n \"text-lg font-semibold leading-7\",\n adsTextColorClassName.card,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n DialogDescriptionProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nDialogDescription.displayName = \"DialogDescription\";\n\nconst AdsDialog = Dialog;\nconst AdsDialogTrigger = DialogTrigger;\nconst AdsDialogPortal = DialogPortal;\nconst AdsDialogOverlay = DialogOverlay;\nconst AdsDialogClose = DialogClose;\nconst AdsDialogContent = DialogContent;\nconst AdsDialogHeader = DialogHeader;\nconst AdsDialogBody = DialogBody;\nconst AdsDialogFooter = DialogFooter;\nconst AdsDialogTitle = DialogTitle;\nconst AdsDialogDescription = DialogDescription;\n\nexport type AdsDialogProps = DialogProps;\nexport type AdsDialogTriggerProps = DialogTriggerProps;\nexport type AdsDialogPortalProps = DialogPortalProps;\nexport type AdsDialogOverlayProps = DialogOverlayProps;\nexport type AdsDialogCloseProps = DialogCloseProps;\nexport type AdsDialogContentProps = DialogContentProps;\nexport type AdsDialogHeaderProps = DialogHeaderProps;\nexport type AdsDialogBodyProps = DialogBodyProps;\nexport type AdsDialogFooterProps = DialogFooterProps;\nexport type AdsDialogTitleProps = DialogTitleProps;\nexport type AdsDialogDescriptionProps = DialogDescriptionProps;\n\nexport {\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogBody,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n AdsDialog,\n AdsDialogTrigger,\n AdsDialogPortal,\n AdsDialogOverlay,\n AdsDialogClose,\n AdsDialogContent,\n AdsDialogHeader,\n AdsDialogBody,\n AdsDialogFooter,\n AdsDialogTitle,\n AdsDialogDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Masonry } from \"masonic\";\n\nimport { cn } from \"../../lib/cn\";\nimport { AdsSkeleton } from \"../AdsSkeleton\";\n\ntype AdsMasonryClassNames = {\n empty?: string;\n item?: string;\n root?: string;\n skeleton?: string;\n};\n\nexport interface AdsMasonryProps<Item> {\n items: Item[];\n renderItem: (\n item: Item,\n meta: { index: number; width: number },\n ) => React.ReactNode;\n layoutKey?: React.Key;\n getItemKey?: (item: Item, index: number) => string | number;\n columnWidth?: number;\n maxColumnCount?: number;\n gap?: number;\n itemHeightEstimate?: number;\n overscanBy?: number;\n scrollFps?: number;\n ssrWidth?: number;\n ssrHeight?: number;\n emptyState?: React.ReactNode;\n loading?: boolean;\n loadingItemCount?: number;\n className?: string;\n itemClassName?: string;\n classNames?: AdsMasonryClassNames;\n onRender?: (startIndex: number, stopIndex: number, items: Item[]) => void;\n}\n\nconst DEFAULT_COLUMN_WIDTH = 240;\nconst DEFAULT_GAP = 16;\nconst DEFAULT_ITEM_HEIGHT_ESTIMATE = 280;\nconst DEFAULT_LOADING_ITEM_COUNT = 8;\nconst DEFAULT_MAX_COLUMN_COUNT = 4;\nconst LOADING_MEDIA_HEIGHT_PATTERN = [172, 220, 184, 236, 196, 208];\nconst LOADING_TITLE_WIDTH_PATTERN = [\"54%\", \"68%\", \"58%\", \"72%\", \"62%\", \"66%\"];\nconst LOADING_BODY_WIDTH_PATTERN = [\"88%\", \"82%\", \"86%\", \"78%\", \"84%\", \"80%\"];\n\nexport function AdsMasonry<Item>({\n items,\n renderItem,\n layoutKey,\n getItemKey,\n columnWidth = DEFAULT_COLUMN_WIDTH,\n maxColumnCount = DEFAULT_MAX_COLUMN_COUNT,\n gap = DEFAULT_GAP,\n itemHeightEstimate = DEFAULT_ITEM_HEIGHT_ESTIMATE,\n overscanBy,\n scrollFps,\n ssrWidth,\n ssrHeight,\n emptyState,\n loading = false,\n loadingItemCount = DEFAULT_LOADING_ITEM_COUNT,\n className,\n itemClassName,\n classNames,\n onRender,\n}: AdsMasonryProps<Item>) {\n const rootClassName = cn(\"w-full\", classNames?.root, className);\n\n if (loading) {\n const skeletonItems = Array.from(\n { length: loadingItemCount },\n (_, index) => index,\n );\n\n return (\n <div\n className={cn(\n \"grid gap-4 sm:grid-cols-2 xl:grid-cols-3\",\n rootClassName,\n )}\n data-slot=\"ads-masonry\"\n >\n {skeletonItems.map((index) => {\n const mediaHeight =\n LOADING_MEDIA_HEIGHT_PATTERN[\n index % LOADING_MEDIA_HEIGHT_PATTERN.length\n ];\n const titleWidth =\n LOADING_TITLE_WIDTH_PATTERN[\n index % LOADING_TITLE_WIDTH_PATTERN.length\n ];\n const bodyWidth =\n LOADING_BODY_WIDTH_PATTERN[\n index % LOADING_BODY_WIDTH_PATTERN.length\n ];\n\n return (\n <article\n className=\"overflow-hidden rounded-radius-lg border border-border bg-card shadow-showcase\"\n data-slot=\"ads-masonry-loading-card\"\n data-testid=\"ads-masonry-loading-card\"\n key={index}\n >\n <div\n className=\"border-b border-border/60 bg-surface-inset/50\"\n data-slot=\"ads-masonry-skeleton-preview\"\n data-testid=\"ads-masonry-skeleton-preview\"\n >\n <AdsSkeleton\n className={cn(\"w-full rounded-none\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n style={{ height: `${mediaHeight}px` }}\n />\n </div>\n\n <div className=\"flex flex-col gap-4 p-lg\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex-1 space-y-2\">\n <AdsSkeleton\n className={cn(\"h-3 w-16 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n />\n <AdsSkeleton\n className={cn(\"h-6 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n style={{ width: titleWidth }}\n />\n </div>\n <AdsSkeleton\n className={cn(\"h-6 w-16 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n />\n </div>\n\n <AdsSkeleton\n className={cn(\"h-4 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n style={{ width: bodyWidth }}\n />\n </div>\n </article>\n );\n })}\n </div>\n );\n }\n\n if (items.length === 0) {\n return emptyState ? (\n <div\n className={cn(rootClassName, classNames?.empty)}\n data-slot=\"ads-masonry-empty\"\n >\n {emptyState}\n </div>\n ) : null;\n }\n\n return (\n <Masonry\n key={layoutKey}\n className={rootClassName}\n columnGutter={gap}\n columnWidth={columnWidth}\n itemHeightEstimate={itemHeightEstimate}\n itemKey={getItemKey}\n items={items}\n maxColumnCount={maxColumnCount}\n onRender={onRender}\n overscanBy={overscanBy}\n render={({ data, index, width }) => (\n <div\n className={cn(\"pb-0\", classNames?.item, itemClassName)}\n data-slot=\"ads-masonry-item\"\n >\n {renderItem(data, { index, width })}\n </div>\n )}\n role=\"list\"\n rowGutter={gap}\n scrollFps={scrollFps}\n ssrHeight={ssrHeight}\n ssrWidth={ssrWidth}\n />\n );\n}\n","export const designTokens = {\n background: \"#151619\",\n foreground: \"#fdfdfd\",\n card: \"#1b1c21\",\n cardForeground: \"#fdfdfd\",\n popover: \"#2a2b2f\",\n popoverForeground: \"#fdfdfd\",\n primary: \"#844fff\",\n primaryForeground: \"#fdfdfd\",\n secondary: \"#3f4043\",\n secondaryForeground: \"#fdfdfd\",\n muted: \"#3f4043\",\n mutedForeground: \"#7e7f81\",\n accent: \"#3f4043\",\n accentForeground: \"#fdfdfd\",\n destructive: \"#dc2626\",\n destructiveForeground: \"#ff9b9b\",\n border: \"#545558\",\n input: \"#151619\",\n ring: \"#a984ff\",\n brandSecondary: \"#af41ff\",\n brandSecondaryForeground: \"#151619\",\n brandGradientFrom: \"#6859ff\",\n brandGradientTo: \"#af41ff\",\n success: \"#008e61\",\n successForeground: \"#fdfdfd\",\n warning: \"#cd6c00\",\n warningForeground: \"#fdfdfd\",\n info: \"#844fff\",\n infoForeground: \"#fdfdfd\",\n borderMuted: \"#3f4043\",\n active: \"#422880\",\n activeForeground: \"#fdfdfd\",\n labelForeground: \"#a8a9aa\",\n icon: \"#939496\",\n iconMuted: \"#545558\",\n spacing: {\n xs: \"0.25rem\",\n sm: \"0.5rem\",\n md: \"0.75rem\",\n lg: \"1rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n },\n radius: {\n sm: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n size: {\n controlHeight: \"2.5rem\",\n modalWidth: \"42rem\",\n sidebarWidth: \"17.5rem\",\n },\n zIndex: {\n toolbar: 30,\n overlay: 40,\n modal: 50,\n toast: 60,\n },\n} as const;\n\nexport type DesignTokens = typeof designTokens;\n"],"mappings":"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","names":["Alert","AlertDescription","AlertTitle","React","React","import_jsx_runtime","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","React","import_jsx_runtime","import_jsx_runtime","Alert","AlertTitle","AlertDescription","React","import_class_variance_authority","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","format","React","import_jsx_runtime","React","React","import_class_variance_authority","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","sizeClassName","React","import_lucide_react","React","import_react_slot","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","Checkbox","React","import_lucide_react","React","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","import_react","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","PersianDayPicker","enUSJalali","HijriDayPicker","enUSHijri","GregorianDayPicker","import_jsx_runtime","React","import_react_slot","import_react_slot","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","toneClassName","React","React","import_jsx_runtime","import_jsx_runtime","toneClassName","React","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","contentClassName","import_jsx_runtime","React","import_lucide_react","import_class_variance_authority","import_jsx_runtime","React","import_lucide_react","React","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","RadioGroup","RadioGroupItem","React","import_jsx_runtime","import_jsx_runtime","RadioGroupItem","Checkbox","import_jsx_runtime","column","Checkbox","RadioGroup","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","Progress","React","React","import_jsx_runtime","import_jsx_runtime","Slider","React","React","import_jsx_runtime","import_jsx_runtime","Switch","React","React","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","sizeClassName","React","React","import_jsx_runtime","import_jsx_runtime","sizeClassName","variantClassName","React","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","Icon","React","import_lucide_react","import_jsx_runtime","overlayClassName","contentClassName","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/components/AdsAccordion/index.tsx","../src/i18n/AdsI18nProvider.tsx","../src/i18n/defaultMessages.ts","../src/lib/cn.ts","../src/primitives/accordion.tsx","../src/components/AdsAlert/index.tsx","../src/primitives/alert.tsx","../src/components/AdsBadge/index.tsx","../src/primitives/badge.tsx","../src/components/AdsAlertDialog/index.tsx","../src/lib/colorClassNames.ts","../src/components/AdsButton/index.tsx","../src/primitives/button.tsx","../src/components/AdsSpinner/index.tsx","../src/components/AdsBreadcrumb/index.tsx","../src/primitives/breadcrumb.tsx","../src/components/AdsCheckbox/index.tsx","../src/primitives/checkbox.tsx","../src/components/AdsField/index.tsx","../src/primitives/field.tsx","../src/primitives/label.tsx","../src/primitives/separator.tsx","../src/components/AdsCalendar/index.tsx","../src/primitives/input.tsx","../src/components/AdsPopover/index.tsx","../src/primitives/popover.tsx","../src/primitives/calendar.tsx","../src/primitives/select.tsx","../src/components/AdsButtonGroup/index.tsx","../src/primitives/button-group.tsx","../src/components/AdsSeparator/index.tsx","../src/components/AdsSkeleton/index.tsx","../src/primitives/skeleton.tsx","../src/components/AdsInput/index.tsx","../src/lib/adsClearButton.tsx","../src/components/AdsInputGroup/index.tsx","../src/primitives/textarea.tsx","../src/components/AdsInputOTP/index.tsx","../src/primitives/input-otp.tsx","../src/components/AdsDataPagination/index.tsx","../src/components/AdsPagination/index.tsx","../src/primitives/pagination.tsx","../src/components/AdsSelect/index.tsx","../src/components/AdsDataTable/index.tsx","../src/components/AdsEmpty/index.tsx","../src/components/AdsTable/index.tsx","../src/components/AdsRadioGroup/index.tsx","../src/primitives/radio-group.tsx","../src/primitives/table.tsx","../src/components/AdsDataTableToolbar/index.tsx","../src/components/AdsViewCustomersDataTable/index.tsx","../src/components/AdsProgress/index.tsx","../src/primitives/progress.tsx","../src/components/AdsSlider/index.tsx","../src/primitives/slider.tsx","../src/components/AdsSwitch/index.tsx","../src/primitives/switch.tsx","../src/components/AdsTabs/index.tsx","../src/primitives/tabs.tsx","../src/components/AdsToggle/index.tsx","../src/primitives/toggle.tsx","../src/components/AdsToggleGroup/index.tsx","../src/primitives/toggle-group.tsx","../src/components/AdsTextarea/index.tsx","../src/components/AdsTooltip/index.tsx","../src/primitives/tooltip.tsx","../src/components/AdsToast/index.tsx","../src/components/AdsDialog/index.tsx","../src/components/AdsMasonry/index.tsx","../src/tokens/designTokens.ts"],"sourcesContent":["\"use client\";\n\nexport * from \"./components\";\nexport * from \"./i18n\";\nexport * from \"./tokens/designTokens\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport {\n Accordion,\n AccordionContent,\n AccordionItem,\n AccordionTrigger,\n} from \"../../primitives/accordion\";\n\nexport type AdsAccordionMode = \"single\" | \"multiple\";\n\nexport type AdsAccordionItem = {\n content: React.ReactNode;\n disabled?: boolean;\n title: React.ReactNode;\n value: string;\n};\n\nexport interface AdsAccordionProps\n extends Omit<React.HTMLAttributes<HTMLDivElement>, \"defaultValue\" | \"dir\" | \"onChange\"> {\n defaultValue?: string | string[];\n dir?: \"ltr\" | \"rtl\";\n getToggleLabel?: (item: AdsAccordionItem, isOpen: boolean) => string;\n items: AdsAccordionItem[];\n mode?: AdsAccordionMode;\n onValueChange?: (value: string | string[]) => void;\n value?: string | string[];\n}\n\nfunction toValueSet(value: string | string[] | undefined): Set<string> {\n if (!value || value === \"\") {\n return new Set();\n }\n\n return new Set(Array.isArray(value) ? value : [value]);\n}\n\nfunction toExternalValue(value: Set<string>, mode: AdsAccordionMode) {\n if (mode === \"single\") {\n return Array.from(value)[0] ?? \"\";\n }\n\n return Array.from(value);\n}\n\nfunction toPrimitiveValue(\n value: string | string[] | undefined,\n mode: AdsAccordionMode,\n) {\n if (mode === \"single\") {\n return Array.isArray(value) ? value[0] ?? \"\" : value ?? \"\";\n }\n\n if (!value) {\n return [];\n }\n\n return Array.isArray(value) ? value : [value];\n}\n\nexport const AdsAccordion = React.forwardRef<HTMLDivElement, AdsAccordionProps>(\n (\n {\n className,\n defaultValue,\n getToggleLabel,\n items,\n mode = \"single\",\n onValueChange,\n value,\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string | string[]>(() =>\n mode === \"single\" ? toPrimitiveValue(defaultValue, \"single\") : toPrimitiveValue(defaultValue, \"multiple\"),\n );\n const resolvedValue = isControlled ? toPrimitiveValue(value, mode) : internalValue;\n const openValues = toValueSet(\n Array.isArray(resolvedValue) ? resolvedValue : resolvedValue || undefined,\n );\n\n const handleValueChange = (nextValue: string | string[]) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n\n onValueChange?.(toExternalValue(toValueSet(nextValue), mode));\n };\n\n const content = items.map((item, index) => {\n const isOpen = openValues.has(item.value);\n const isLastItem = index === items.length - 1;\n const toggleLabel =\n getToggleLabel?.(item, isOpen) ??\n (isOpen ? messages.accordion.collapse : messages.accordion.expand);\n\n return (\n <AccordionItem\n className={cn(\"w-full border-border\", (!isLastItem || isOpen) && \"border-b\")}\n disabled={item.disabled}\n key={item.value}\n value={item.value}\n >\n <AccordionTrigger\n className={cn(\n \"group flex h-[52px] w-full items-center py-lg text-left text-sm font-medium leading-5 text-foreground transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background hover:no-underline [&>svg]:ml-md [&>svg]:text-foreground\",\n item.disabled\n ? \"cursor-not-allowed opacity-50\"\n : \"cursor-pointer hover:text-foreground\",\n )}\n >\n <span className=\"min-w-0 flex-1 pr-md\">\n <span className=\"break-words group-hover:underline\">{item.title}</span>\n </span>\n <span className=\"sr-only\">{toggleLabel}</span>\n </AccordionTrigger>\n <AccordionContent className=\"grid overflow-hidden transition-[grid-template-rows,opacity] duration-200 ease-out data-[state=closed]:grid-rows-[0fr] data-[state=closed]:opacity-0 data-[state=open]:grid-rows-[1fr] data-[state=open]:opacity-100\">\n <div className=\"min-h-0 overflow-hidden\">\n <div className=\"flex w-full flex-col gap-lg pb-lg text-sm font-normal leading-5 text-foreground\">\n {item.content}\n </div>\n </div>\n </AccordionContent>\n </AccordionItem>\n );\n });\n\n if (mode === \"single\") {\n return (\n <Accordion\n className={cn(\"flex w-full max-w-[503px] flex-col\", className)}\n collapsible\n onValueChange={handleValueChange}\n ref={ref}\n type=\"single\"\n value={typeof resolvedValue === \"string\" ? resolvedValue : \"\"}\n {...props}\n >\n {content}\n </Accordion>\n );\n }\n\n return (\n <Accordion\n className={cn(\"flex w-full max-w-[503px] flex-col\", className)}\n onValueChange={handleValueChange}\n ref={ref}\n type=\"multiple\"\n value={Array.isArray(resolvedValue) ? resolvedValue : []}\n {...props}\n >\n {content}\n </Accordion>\n );\n },\n);\nAdsAccordion.displayName = \"AdsAccordion\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { adsDefaultMessages } from \"./defaultMessages\";\nimport type { AdsLocale, AdsMessages, AdsMessagesOverride } from \"./types\";\n\ntype AdsI18nContextValue = {\n locale: AdsLocale;\n messages: AdsMessages;\n};\n\nconst AdsI18nContext = React.createContext<AdsI18nContextValue>({\n locale: \"en\",\n messages: adsDefaultMessages.en,\n});\n\nfunction mergeMessages(\n locale: AdsLocale,\n messages?: AdsMessagesOverride,\n): AdsMessages {\n const baseMessages = adsDefaultMessages[locale];\n\n return {\n accordion: {\n ...baseMessages.accordion,\n ...messages?.accordion,\n },\n button: {\n ...baseMessages.button,\n ...messages?.button,\n },\n dialog: {\n ...baseMessages.dialog,\n ...messages?.dialog,\n },\n input: {\n ...baseMessages.input,\n ...messages?.input,\n },\n select: {\n ...baseMessages.select,\n ...messages?.select,\n },\n toast: {\n ...baseMessages.toast,\n ...messages?.toast,\n },\n table: {\n ...baseMessages.table,\n ...messages?.table,\n },\n pagination: {\n ...baseMessages.pagination,\n ...messages?.pagination,\n },\n };\n}\n\nexport function AdsI18nProvider({\n children,\n locale = \"en\",\n messages,\n}: {\n children: React.ReactNode;\n locale?: AdsLocale;\n messages?: AdsMessagesOverride;\n}) {\n const value = React.useMemo(\n () => ({\n locale,\n messages: mergeMessages(locale, messages),\n }),\n [locale, messages],\n );\n\n return (\n <AdsI18nContext.Provider value={value}>{children}</AdsI18nContext.Provider>\n );\n}\n\nexport function useAdsI18n() {\n return React.useContext(AdsI18nContext);\n}\n","import type { AdsMessages } from \"./types\";\n\nexport const adsDefaultMessages: Record<\"en\" | \"zh\", AdsMessages> = {\n en: {\n accordion: {\n expand: \"Expand section\",\n collapse: \"Collapse section\",\n },\n button: {\n loading: \"Loading\",\n },\n dialog: {\n close: \"Close dialog\",\n },\n input: {\n clear: \"Clear input\",\n chooseFile: \"Choose File\",\n noFileChosen: \"No file chosen\",\n optional: \"Optional\",\n },\n select: {\n clear: \"Clear selection\",\n },\n toast: {\n notifications: \"Notifications\",\n },\n table: {\n clearSort: \"Clear sort\",\n collapseRow: \"Collapse row\",\n expandRow: \"Expand row\",\n filterColumn: \"Filter column\",\n loadingRows: \"Loading table rows\",\n noDataAvailable: \"No data available\",\n selectAllRows: \"Select all rows\",\n selectRow: \"Select row\",\n sortAscending: \"Sort ascending\",\n sortDescending: \"Sort descending\",\n },\n pagination: {\n first: \"First\",\n last: \"Last\",\n previous: \"Previous\",\n next: \"Next\",\n morePages: \"More pages\",\n navigation: \"Pagination\",\n itemsPerPage: \"Items per page\",\n itemsPerPageOption: \"{{value}} / page\",\n jumpTo: \"Jump to page\",\n total: \"Showing {{start}}-{{end}} of {{total}}\",\n compactTotal: \"Total: {{total}}\",\n pageStatus: \"Page {{page}} of {{pages}}\",\n },\n },\n zh: {\n accordion: {\n expand: \"展开内容\",\n collapse: \"收起内容\",\n },\n button: {\n loading: \"加载中\",\n },\n dialog: {\n close: \"关闭弹窗\",\n },\n input: {\n clear: \"清除输入\",\n chooseFile: \"选择文件\",\n noFileChosen: \"未选择文件\",\n optional: \"可选\",\n },\n select: {\n clear: \"清除选择\",\n },\n toast: {\n notifications: \"通知\",\n },\n table: {\n clearSort: \"清除排序\",\n collapseRow: \"收起行\",\n expandRow: \"展开行\",\n filterColumn: \"筛选列\",\n loadingRows: \"正在加载表格行\",\n noDataAvailable: \"暂无数据\",\n selectAllRows: \"选择全部行\",\n selectRow: \"选择行\",\n sortAscending: \"升序排序\",\n sortDescending: \"降序排序\",\n },\n pagination: {\n first: \"第一页\",\n last: \"最后一页\",\n previous: \"上一页\",\n next: \"下一页\",\n morePages: \"更多页码\",\n navigation: \"分页\",\n itemsPerPage: \"每页条数\",\n itemsPerPageOption: \"{{value}} / 页\",\n jumpTo: \"跳转页码\",\n total: \"显示第 {{start}}-{{end}} 条,共 {{total}} 条\",\n compactTotal: \"总数: {{total}}\",\n pageStatus: \"第 {{page}} / {{pages}} 页\",\n },\n },\n};\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import * as React from \"react\"\nimport * as AccordionPrimitive from \"@radix-ui/react-accordion\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Accordion = AccordionPrimitive.Root\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn(\"border-b\", className)}\n {...props}\n />\n))\nAccordionItem.displayName = \"AccordionItem\"\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex flex-1 items-center justify-between py-4 font-medium transition-all hover:underline [&[data-state=open]>svg]:rotate-180\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronDown className=\"h-4 w-4 shrink-0 transition-transform duration-200\" />\n </AccordionPrimitive.Trigger>\n </AccordionPrimitive.Header>\n))\nAccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName\n\nconst AccordionContent = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Content>\n>(({ className, children, ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"overflow-hidden text-sm transition-all data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down\"\n {...props}\n >\n <div className={cn(\"pb-4 pt-0\", className)}>{children}</div>\n </AccordionPrimitive.Content>\n))\n\nAccordionContent.displayName = AccordionPrimitive.Content.displayName\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { CircleAlert, CircleCheck, Info, TriangleAlert } from \"lucide-react\";\n\nimport {\n Alert as BaseAlert,\n AlertDescription as BaseAlertDescription,\n AlertTitle as BaseAlertTitle,\n} from \"../../primitives/alert\";\nimport { cn } from \"../../lib/cn\";\n\nconst adsAlertVariants = cva(\n \"relative flex w-full rounded-radius-lg border border-border bg-card px-4 py-3 [&>[data-slot=alert-icon]]:!text-[inherit]\",\n {\n variants: {\n variant: {\n default: \"text-foreground\",\n destructive: \"text-destructive\",\n success: \"text-success\",\n warning: \"text-warning\",\n info: \"text-info\",\n },\n hasSupportingContent: {\n true: \"items-start gap-3\",\n false: \"items-center gap-3\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n hasSupportingContent: true,\n },\n },\n);\n\nconst descriptionVariants = cva(\n \"min-w-0 text-sm leading-5 text-current [&_p]:leading-5\",\n {\n variants: {\n variant: {\n default: \"font-light\",\n destructive: \"font-normal\",\n success: \"font-normal\",\n warning: \"font-normal\",\n info: \"font-normal\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\ntype AdsAlertProps = Omit<\n React.ComponentProps<typeof BaseAlert>,\n \"variant\" | \"className\"\n> &\n VariantProps<typeof adsAlertVariants> & {\n className?: string;\n };\n\nconst defaultVariantIcons = {\n default: CircleCheck,\n destructive: CircleAlert,\n success: CircleCheck,\n warning: TriangleAlert,\n info: Info,\n} as const;\n\nfunction isComponentElement<P>(\n child: React.ReactNode,\n component: React.ComponentType<P>,\n): child is React.ReactElement<P> {\n return React.isValidElement(child) && child.type === component;\n}\n\nfunction cloneWithClassName(\n child: React.ReactElement,\n className: string,\n dataSlot: string,\n extraProps?: {\n style?: React.CSSProperties;\n },\n) {\n const element = child as React.ReactElement<{\n className?: string;\n \"data-slot\"?: string;\n style?: React.CSSProperties;\n }>;\n\n return React.cloneElement(element, {\n className: cn(className, element.props.className),\n \"data-slot\": dataSlot,\n style: {\n ...element.props.style,\n ...extraProps?.style,\n },\n });\n}\n\nconst Alert = React.forwardRef<HTMLDivElement, AdsAlertProps>(\n ({ children, className, variant, ...props }, ref) => {\n const items = React.Children.toArray(children);\n\n let title: React.ReactElement | null = null;\n let description: React.ReactElement | null = null;\n let icon: React.ReactElement<{ className?: string }> | null = null;\n const extras: React.ReactNode[] = [];\n let hasSeenBodyContent = false;\n\n for (const child of items) {\n if (!title && isComponentElement(child, AlertTitle)) {\n title = child;\n hasSeenBodyContent = true;\n continue;\n }\n\n if (!description && isComponentElement(child, AlertDescription)) {\n description = child;\n hasSeenBodyContent = true;\n continue;\n }\n\n if (\n !icon &&\n !hasSeenBodyContent &&\n React.isValidElement<{ className?: string }>(child)\n ) {\n icon = child;\n continue;\n }\n\n extras.push(child);\n }\n\n const hasSupportingContent = Boolean(description || extras.length > 0);\n const resolvedIcon = cloneWithClassName(\n icon ??\n React.createElement(defaultVariantIcons[variant ?? \"default\"], {\n \"aria-hidden\": true,\n }),\n \"size-4 shrink-0\",\n \"alert-icon\",\n {\n style: { color: \"inherit\" },\n },\n );\n\n const resolvedTitle = title\n ? cloneWithClassName(\n title as React.ReactElement<{ className?: string }>,\n \"min-w-0 text-sm font-medium leading-5 tracking-normal text-current\",\n \"alert-title\",\n )\n : null;\n\n const supportingContent =\n description || extras.length > 0 ? (\n <div className=\"flex min-w-0 w-full flex-col gap-1\" data-slot=\"alert-supporting\">\n {description\n ? cloneWithClassName(\n description as React.ReactElement<{ className?: string }>,\n descriptionVariants({ variant }),\n \"alert-description\",\n )\n : null}\n {extras.length > 0 ? (\n <div\n className={cn(\n \"min-w-0 text-sm leading-5 text-current\",\n \"w-full\",\n \"[&_ol]:list-decimal [&_ol]:pl-[21px] [&_ol]:space-y-0\",\n \"[&_ul]:list-disc [&_ul]:pl-[21px] [&_ul]:space-y-0\",\n )}\n data-slot=\"alert-extra\"\n >\n {extras}\n </div>\n ) : null}\n </div>\n ) : null;\n\n return (\n <BaseAlert\n ref={ref}\n className={cn(\n adsAlertVariants({ variant, hasSupportingContent }),\n className,\n )}\n role=\"alert\"\n {...props}\n >\n {hasSupportingContent ? (\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\" data-slot=\"alert-body\">\n <div className=\"flex min-w-0 items-center gap-3\" data-slot=\"alert-heading-row\">\n {resolvedIcon}\n {resolvedTitle}\n </div>\n {supportingContent ? (\n <div className=\"flex min-w-0 gap-3\" data-slot=\"alert-content-row\">\n <div aria-hidden className=\"size-4 shrink-0\" />\n {supportingContent}\n </div>\n ) : null}\n </div>\n ) : (\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\" data-slot=\"alert-body\">\n <div className=\"flex min-w-0 items-center gap-3\" data-slot=\"alert-heading-row\">\n {resolvedIcon}\n {resolvedTitle ?? children}\n </div>\n </div>\n )}\n </BaseAlert>\n );\n },\n);\nAlert.displayName = \"AdsAlert\";\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <BaseAlertTitle ref={ref} className={cn(className)} {...props} />\n));\nAlertTitle.displayName = \"AlertTitle\";\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <BaseAlertDescription ref={ref} className={cn(className)} {...props} />\n));\nAlertDescription.displayName = \"AlertDescription\";\n\nexport { Alert, AlertTitle, AlertDescription };\n","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst alertVariants = cva(\n \"relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground\",\n {\n variants: {\n variant: {\n default: \"bg-background text-foreground\",\n destructive:\n \"border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nconst Alert = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & VariantProps<typeof alertVariants>\n>(({ className, variant, ...props }, ref) => (\n <div\n ref={ref}\n role=\"alert\"\n className={cn(alertVariants({ variant }), className)}\n {...props}\n />\n))\nAlert.displayName = \"Alert\"\n\nconst AlertTitle = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLHeadingElement>\n>(({ className, ...props }, ref) => (\n <h5\n ref={ref}\n className={cn(\"mb-1 font-medium leading-none tracking-tight\", className)}\n {...props}\n />\n))\nAlertTitle.displayName = \"AlertTitle\"\n\nconst AlertDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"text-sm [&_p]:leading-relaxed\", className)}\n {...props}\n />\n))\nAlertDescription.displayName = \"AlertDescription\"\n\nexport { Alert, AlertTitle, AlertDescription }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Badge as PrimitiveBadge,\n type BadgeProps as PrimitiveBadgeProps,\n} from \"../../primitives/badge\";\n\nconst adsBadgeVariants = cva(\n [\n \"h-5 min-h-5\",\n \"border text-xs font-medium leading-4 tracking-normal\",\n \"shadow-none\",\n \"focus:ring-offset-background\",\n ],\n {\n variants: {\n variant: {\n default: \"border-transparent bg-primary text-primary-foreground hover:bg-primary\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary\",\n destructive:\n \"border-transparent bg-destructive text-primary-foreground hover:bg-destructive\",\n outline: \"border-border bg-transparent text-foreground hover:bg-transparent\",\n },\n format: {\n label: \"!rounded-radius-lg px-[10px] py-[2px]\",\n icon: \"!rounded-radius-lg gap-1 px-[10px] py-[2px]\",\n number: \"!rounded-full px-[10px] py-[2px]\",\n },\n },\n compoundVariants: [\n {\n format: \"number\",\n variant: \"outline\",\n className: \"px-1 font-mono\",\n },\n ],\n defaultVariants: {\n format: \"label\",\n variant: \"default\",\n },\n },\n);\n\nexport interface AdsBadgeProps\n extends Omit<PrimitiveBadgeProps, \"variant\">,\n VariantProps<typeof adsBadgeVariants> {\n icon?: React.ReactNode;\n}\n\nfunction renderIcon(icon: React.ReactNode) {\n if (!icon) {\n return null;\n }\n\n if (React.isValidElement<{ className?: string }>(icon)) {\n return React.cloneElement(icon, {\n className: cn(\"h-3 w-3 shrink-0\", icon.props.className),\n });\n }\n\n return <span className=\"inline-flex h-3 w-3 shrink-0 items-center justify-center\">{icon}</span>;\n}\n\nfunction AdsBadge({ children, className, format, icon, variant, ...props }: AdsBadgeProps) {\n const resolvedFormat = format ?? (icon ? \"icon\" : \"label\");\n\n return (\n <PrimitiveBadge\n className={cn(adsBadgeVariants({ format: resolvedFormat, variant }), className)}\n variant={variant}\n {...props}\n >\n {renderIcon(icon)}\n {children}\n </PrimitiveBadge>\n );\n}\n\nexport { AdsBadge };\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 rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n }\n)\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return (\n <div className={cn(badgeVariants({ variant }), className)} {...props} />\n )\n}\n\nexport { Badge, badgeVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as AlertDialogPrimitive from \"@radix-ui/react-alert-dialog\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\n\nexport type AlertDialogProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Root\n>;\nexport type AlertDialogTriggerProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Trigger\n>;\nexport type AlertDialogPortalProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Portal\n>;\nexport type AlertDialogOverlayProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Overlay\n>;\nexport type AlertDialogActionProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Action\n>;\nexport type AlertDialogCancelProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Cancel\n>;\nexport type AlertDialogTitleProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Title\n>;\nexport type AlertDialogDescriptionProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Description\n>;\n\nexport type AlertDialogContentProps = React.ComponentPropsWithoutRef<\n typeof AlertDialogPrimitive.Content\n>;\n\nexport type AlertDialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport type AlertDialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst overlayClassName =\n \"fixed inset-0 z-50 bg-black/80 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\";\n\nconst contentClassName =\n \"fixed left-1/2 top-1/2 z-50 grid w-[calc(100%-2rem)] max-w-[512px] -translate-x-1/2 -translate-y-1/2 gap-lg rounded-radius-lg border-0 bg-card p-xl shadow-[0px_4px_6px_-4px_rgba(0,0,0,0.1),0px_10px_15px_-3px_rgba(0,0,0,0.1)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\";\n\nconst actionClassName =\n \"inline-flex h-9 items-center justify-center rounded-radius-md border-0 bg-brand-gradient px-lg py-sm text-sm font-medium leading-5 tracking-normal shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-opacity hover:opacity-90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none disabled:opacity-[0.65]\";\n\nconst cancelClassName =\n \"inline-flex h-9 items-center justify-center rounded-radius-md border border-border bg-card px-lg py-sm text-sm font-medium leading-5 tracking-normal shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none disabled:opacity-[0.65]\";\n\nconst AlertDialog = AlertDialogPrimitive.Root;\nconst AlertDialogTrigger = AlertDialogPrimitive.Trigger;\nconst AlertDialogPortal = AlertDialogPrimitive.Portal;\n\nconst AlertDialogOverlay = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Overlay>,\n AlertDialogOverlayProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Overlay\n className={cn(overlayClassName, className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogOverlay.displayName = \"AlertDialogOverlay\";\n\nconst AlertDialogContent = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Content>,\n AlertDialogContentProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n className={cn(contentClassName, adsTextColorClassName.card, className)}\n ref={ref}\n {...props}\n />\n </AlertDialogPortal>\n));\nAlertDialogContent.displayName = \"AlertDialogContent\";\n\nconst AlertDialogHeader = React.forwardRef<\n HTMLDivElement,\n AlertDialogHeaderProps\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\"flex flex-col gap-sm text-left\", className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogHeader.displayName = \"AlertDialogHeader\";\n\nconst AlertDialogFooter = React.forwardRef<\n HTMLDivElement,\n AlertDialogFooterProps\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\n \"flex flex-col-reverse gap-sm sm:flex-row sm:justify-end\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAlertDialogFooter.displayName = \"AlertDialogFooter\";\n\nconst AlertDialogTitle = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Title>,\n AlertDialogTitleProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Title\n className={cn(\n \"text-lg font-semibold leading-7\",\n adsTextColorClassName.card,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAlertDialogTitle.displayName = \"AlertDialogTitle\";\n\nconst AlertDialogDescription = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Description>,\n AlertDialogDescriptionProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Description\n className={cn(\n \"text-sm font-normal leading-5\",\n adsTextColorClassName.muted,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAlertDialogDescription.displayName = \"AlertDialogDescription\";\n\nconst AlertDialogAction = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Action>,\n AlertDialogActionProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Action\n className={cn(actionClassName, adsTextColorClassName.primary, className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogAction.displayName = \"AlertDialogAction\";\n\nconst AlertDialogCancel = React.forwardRef<\n React.ElementRef<typeof AlertDialogPrimitive.Cancel>,\n AlertDialogCancelProps\n>(({ className, ...props }, ref) => (\n <AlertDialogPrimitive.Cancel\n className={cn(cancelClassName, adsTextColorClassName.secondary, className)}\n ref={ref}\n {...props}\n />\n));\nAlertDialogCancel.displayName = \"AlertDialogCancel\";\n\nconst AdsAlertDialog = AlertDialog;\nconst AdsAlertDialogTrigger = AlertDialogTrigger;\nconst AdsAlertDialogPortal = AlertDialogPortal;\nconst AdsAlertDialogOverlay = AlertDialogOverlay;\nconst AdsAlertDialogContent = AlertDialogContent;\nconst AdsAlertDialogHeader = AlertDialogHeader;\nconst AdsAlertDialogFooter = AlertDialogFooter;\nconst AdsAlertDialogTitle = AlertDialogTitle;\nconst AdsAlertDialogDescription = AlertDialogDescription;\nconst AdsAlertDialogAction = AlertDialogAction;\nconst AdsAlertDialogCancel = AlertDialogCancel;\n\nexport type AdsAlertDialogProps = AlertDialogProps;\nexport type AdsAlertDialogTriggerProps = AlertDialogTriggerProps;\nexport type AdsAlertDialogPortalProps = AlertDialogPortalProps;\nexport type AdsAlertDialogOverlayProps = AlertDialogOverlayProps;\nexport type AdsAlertDialogContentProps = AlertDialogContentProps;\nexport type AdsAlertDialogHeaderProps = AlertDialogHeaderProps;\nexport type AdsAlertDialogFooterProps = AlertDialogFooterProps;\nexport type AdsAlertDialogTitleProps = AlertDialogTitleProps;\nexport type AdsAlertDialogDescriptionProps = AlertDialogDescriptionProps;\nexport type AdsAlertDialogActionProps = AlertDialogActionProps;\nexport type AdsAlertDialogCancelProps = AlertDialogCancelProps;\n\nexport {\n AlertDialog,\n AlertDialogTrigger,\n AlertDialogPortal,\n AlertDialogOverlay,\n AlertDialogContent,\n AlertDialogHeader,\n AlertDialogFooter,\n AlertDialogTitle,\n AlertDialogDescription,\n AlertDialogAction,\n AlertDialogCancel,\n AdsAlertDialog,\n AdsAlertDialogTrigger,\n AdsAlertDialogPortal,\n AdsAlertDialogOverlay,\n AdsAlertDialogContent,\n AdsAlertDialogHeader,\n AdsAlertDialogFooter,\n AdsAlertDialogTitle,\n AdsAlertDialogDescription,\n AdsAlertDialogAction,\n AdsAlertDialogCancel,\n};\n","\"use client\";\n\nexport const adsTextColorClassName = {\n card: \"text-[var(--card-foreground)]\",\n default: \"text-[var(--foreground)]\",\n muted: \"text-[var(--muted-foreground)]\",\n popover: \"text-[var(--popover-foreground)]\",\n primary: \"text-[var(--primary-foreground)]\",\n secondary: \"text-[var(--secondary-foreground)]\",\n} as const;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Button, type ButtonProps } from \"../../primitives/button\";\nimport { AdsSpinner } from \"../AdsSpinner\";\nimport type { AdsIntent, AdsSize } from \"../shared/types\";\n\nconst intentClassName: Record<AdsIntent, string> = {\n brand:\n \"border-0 bg-brand-gradient shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:opacity-90\",\n primary:\n \"border-0 bg-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-brand-primary-hover\",\n secondary:\n \"border border-border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-accent\",\n tertiary:\n \"border-0 bg-card shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\",\n ghost:\n \"border-0 bg-card shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\",\n danger:\n \"border-0 bg-destructive shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-destructive/90\",\n destructive:\n \"border-0 bg-destructive shadow-[0px_1px_2px_rgba(0,0,0,0.1)] hover:bg-destructive/90\",\n link: \"border-0 bg-transparent text-primary shadow-none underline-offset-2 hover:bg-transparent hover:text-primary hover:underline\",\n};\n\nconst intentTextClassName: Record<AdsIntent, string> = {\n brand: adsTextColorClassName.primary,\n primary: adsTextColorClassName.primary,\n secondary: adsTextColorClassName.secondary,\n tertiary: adsTextColorClassName.card,\n ghost: adsTextColorClassName.card,\n danger: adsTextColorClassName.primary,\n destructive: adsTextColorClassName.primary,\n link: \"text-primary\",\n};\n\nconst sizeClassName: Record<AdsSize, string> = {\n sm: \"!h-8 px-md py-sm\",\n md: \"!h-9 px-lg py-sm\",\n lg: \"!h-10 px-xl py-[10px]\",\n};\n\nconst focusClassName: Record<AdsIntent, string> = {\n brand:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n primary:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n secondary:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n tertiary:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n ghost:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n danger:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n destructive:\n \"focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\",\n link: \"focus-visible:border focus-visible:border-ring focus-visible:ring-0 focus-visible:ring-offset-0\",\n};\n\nexport interface AdsButtonProps extends Omit<\n ButtonProps,\n \"size\" | \"variant\" | \"disabled\"\n> {\n icon?: React.ReactNode;\n intent?: AdsIntent;\n leadingIcon?: React.ReactNode;\n size?: AdsSize;\n loading?: boolean;\n loadingLabel?: string;\n disabled?: boolean;\n}\n\nfunction renderLeadingIcon(icon: React.ReactNode) {\n if (!icon) {\n return null;\n }\n\n if (React.isValidElement<{ className?: string }>(icon)) {\n const sizedIcon = React.cloneElement(icon, {\n className: cn(\"!h-4 !w-4 h-4 w-4\", icon.props.className),\n });\n\n return (\n <span className=\"inline-flex h-4 w-4 items-center justify-center [&>svg]:!h-4 [&>svg]:!w-4\">\n {sizedIcon}\n </span>\n );\n }\n\n return (\n <span className=\"inline-flex h-4 w-4 items-center justify-center\">\n {icon}\n </span>\n );\n}\n\nexport const AdsButton = React.forwardRef<HTMLButtonElement, AdsButtonProps>(\n (\n {\n children,\n className,\n disabled = false,\n icon,\n intent = \"brand\",\n leadingIcon,\n loading = false,\n loadingLabel,\n size = \"md\",\n type = \"button\",\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const isDisabled = disabled || loading;\n const resolvedIcon = icon ?? leadingIcon;\n const resolvedLoadingLabel = loadingLabel ?? messages.button.loading;\n const hasTextContent = React.Children.count(children) > 0;\n const isIconOnly = Boolean(resolvedIcon) && !hasTextContent;\n\n return (\n <Button\n aria-busy={loading || undefined}\n className={cn(\n \"min-w-0 rounded-radius-md text-sm font-medium leading-5 tracking-normal\",\n \"active:translate-y-px\",\n \"active:not-aria-[haspopup]:translate-y-px\",\n \"focus-visible:outline-none\",\n \"disabled:pointer-events-none\",\n intentClassName[intent],\n intentTextClassName[intent],\n focusClassName[intent],\n sizeClassName[size],\n isIconOnly &&\n (size === \"sm\"\n ? \"!w-8 px-0\"\n : size === \"lg\"\n ? \"!w-10 px-0\"\n : \"!w-9 px-0\"),\n loading ? \"disabled:opacity-100\" : \"disabled:opacity-[0.65]\",\n className,\n )}\n disabled={isDisabled}\n ref={ref}\n type={type}\n variant=\"ghost\"\n {...props}\n >\n <span className=\"inline-flex items-center justify-center gap-1\">\n <span className=\"inline-flex items-center justify-center gap-sm\">\n {renderLeadingIcon(resolvedIcon)}\n {hasTextContent ? <span>{children}</span> : null}\n </span>\n {loading ? (\n <>\n <AdsSpinner\n className=\"!h-4 !w-4 h-4 w-4\"\n data-testid=\"ads-button-loading-icon\"\n size=\"sm\"\n />\n <span className=\"sr-only\">{resolvedLoadingLabel}</span>\n </>\n ) : null}\n </span>\n </Button>\n );\n },\n);\nAdsButton.displayName = \"AdsButton\";\n","import * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium 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 disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\"\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { LoaderCircle } from \"lucide-react\";\n\nimport { cn } from \"../../lib/cn\";\n\nconst sizeClassName = {\n xs: \"h-3 w-3\",\n sm: \"h-4 w-4\",\n md: \"h-6 w-6\",\n lg: \"h-8 w-8\",\n} as const;\n\nconst toneClassName = {\n current: \"text-current\",\n foreground: \"text-foreground\",\n muted: \"text-muted-foreground\",\n primary: \"text-primary\",\n success: \"text-success\",\n warning: \"text-warning\",\n info: \"text-info\",\n destructive: \"text-destructive\",\n} as const;\n\nexport type AdsSpinnerSize = keyof typeof sizeClassName;\nexport type AdsSpinnerTone = keyof typeof toneClassName;\n\nexport interface AdsSpinnerProps\n extends Omit<React.ComponentPropsWithoutRef<typeof LoaderCircle>, \"color\" | \"size\"> {\n size?: AdsSpinnerSize;\n tone?: AdsSpinnerTone;\n}\n\nexport const AdsSpinner = React.forwardRef<SVGSVGElement, AdsSpinnerProps>(\n (\n {\n \"aria-label\": ariaLabel,\n className,\n size = \"sm\",\n strokeWidth = 1.75,\n tone = \"current\",\n ...props\n },\n ref,\n ) => (\n <LoaderCircle\n aria-hidden={ariaLabel ? undefined : true}\n aria-label={ariaLabel}\n className={cn(\n \"shrink-0 animate-spin\",\n sizeClassName[size],\n toneClassName[tone],\n className,\n )}\n data-slot=\"ads-spinner\"\n ref={ref}\n strokeWidth={strokeWidth}\n {...props}\n />\n ),\n);\nAdsSpinner.displayName = \"AdsSpinner\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronRight, MoreHorizontal, Slash } from \"lucide-react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Breadcrumb as PrimitiveBreadcrumb,\n BreadcrumbEllipsis as PrimitiveBreadcrumbEllipsis,\n BreadcrumbItem as PrimitiveBreadcrumbItem,\n BreadcrumbLink as PrimitiveBreadcrumbLink,\n BreadcrumbList as PrimitiveBreadcrumbList,\n BreadcrumbPage as PrimitiveBreadcrumbPage,\n BreadcrumbSeparator as PrimitiveBreadcrumbSeparator,\n} from \"../../primitives/breadcrumb\";\n\nexport type AdsBreadcrumbSeparatorIcon = \"chevron\" | \"slash\";\n\nexport type AdsBreadcrumbProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumb\n>;\n\nexport const AdsBreadcrumb = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumb>,\n AdsBreadcrumbProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumb className={cn(\"w-full\", className)} ref={ref} {...props} />\n));\nAdsBreadcrumb.displayName = \"AdsBreadcrumb\";\n\nexport type AdsBreadcrumbListProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbList\n>;\n\nexport const AdsBreadcrumbList = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbList>,\n AdsBreadcrumbListProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbList\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm leading-5 text-muted-foreground\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbList.displayName = \"AdsBreadcrumbList\";\n\nexport type AdsBreadcrumbItemProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbItem\n>;\n\nexport const AdsBreadcrumbItem = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbItem>,\n AdsBreadcrumbItemProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbItem\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbItem.displayName = \"AdsBreadcrumbItem\";\n\nexport type AdsBreadcrumbLinkProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbLink\n>;\n\nexport const AdsBreadcrumbLink = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbLink>,\n AdsBreadcrumbLinkProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbLink\n className={cn(\n \"text-sm font-normal leading-5 text-muted-foreground transition-colors hover:text-foreground\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbLink.displayName = \"AdsBreadcrumbLink\";\n\nexport type AdsBreadcrumbPageProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbPage\n>;\n\nexport const AdsBreadcrumbPage = React.forwardRef<\n React.ElementRef<typeof PrimitiveBreadcrumbPage>,\n AdsBreadcrumbPageProps\n>(({ className, ...props }, ref) => (\n <PrimitiveBreadcrumbPage\n className={cn(\"text-sm font-normal leading-5 text-foreground\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsBreadcrumbPage.displayName = \"AdsBreadcrumbPage\";\n\nexport interface AdsBreadcrumbSeparatorProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveBreadcrumbSeparator> {\n icon?: AdsBreadcrumbSeparatorIcon;\n}\n\nconst separatorIcons: Record<AdsBreadcrumbSeparatorIcon, React.ReactNode> = {\n chevron: <ChevronRight className=\"size-3.5\" />,\n slash: <Slash className=\"size-3.5\" />,\n};\n\nexport const AdsBreadcrumbSeparator = ({\n children,\n className,\n icon = \"chevron\",\n ...props\n}: AdsBreadcrumbSeparatorProps) => (\n <PrimitiveBreadcrumbSeparator\n className={cn(\"text-muted-foreground [&_svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? separatorIcons[icon]}\n </PrimitiveBreadcrumbSeparator>\n);\nAdsBreadcrumbSeparator.displayName = \"AdsBreadcrumbSeparator\";\n\nexport type AdsBreadcrumbEllipsisProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveBreadcrumbEllipsis\n>;\n\nexport const AdsBreadcrumbEllipsis = ({\n className,\n children,\n ...props\n}: AdsBreadcrumbEllipsisProps) => (\n <PrimitiveBreadcrumbEllipsis\n className={cn(\"size-3.5 text-muted-foreground\", className)}\n {...props}\n >\n {children ?? <MoreHorizontal className=\"size-3.5\" />}\n </PrimitiveBreadcrumbEllipsis>\n);\nAdsBreadcrumbEllipsis.displayName = \"AdsBreadcrumbEllipsis\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { cn } from \"../lib/cn\";\n\nconst Breadcrumb = React.forwardRef<\n HTMLElement,\n React.ComponentPropsWithoutRef<\"nav\">\n>(({ className, ...props }, ref) => (\n <nav\n aria-label=\"breadcrumb\"\n className={cn(\"w-full\", className)}\n ref={ref}\n {...props}\n />\n));\nBreadcrumb.displayName = \"Breadcrumb\";\n\nconst BreadcrumbList = React.forwardRef<\n HTMLUListElement,\n React.ComponentPropsWithoutRef<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n className={cn(\n \"flex flex-wrap items-center gap-1.5 break-words text-sm text-muted-foreground\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nBreadcrumbList.displayName = \"BreadcrumbList\";\n\nconst BreadcrumbItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentPropsWithoutRef<\"li\">\n>(({ className, ...props }, ref) => (\n <li\n className={cn(\"inline-flex items-center gap-1.5\", className)}\n ref={ref}\n {...props}\n />\n));\nBreadcrumbItem.displayName = \"BreadcrumbItem\";\n\ntype BreadcrumbLinkProps = React.ComponentPropsWithoutRef<\"a\"> & {\n asChild?: boolean;\n};\n\nconst BreadcrumbLink = React.forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n ({ asChild = false, className, ...props }, ref) => {\n const Comp = asChild ? Slot : \"a\";\n\n return <Comp className={cn(\"transition-colors\", className)} ref={ref} {...props} />;\n },\n);\nBreadcrumbLink.displayName = \"BreadcrumbLink\";\n\nconst BreadcrumbPage = React.forwardRef<\n HTMLSpanElement,\n React.ComponentPropsWithoutRef<\"span\">\n>(({ className, ...props }, ref) => (\n <span\n aria-current=\"page\"\n aria-disabled=\"true\"\n className={cn(\"font-normal text-foreground\", className)}\n ref={ref}\n role=\"link\"\n {...props}\n />\n));\nBreadcrumbPage.displayName = \"BreadcrumbPage\";\n\nconst BreadcrumbSeparator = ({\n children,\n className,\n ...props\n}: React.ComponentPropsWithoutRef<\"li\">) => (\n <li\n aria-hidden=\"true\"\n className={cn(\"[&_svg]:size-3.5\", className)}\n role=\"presentation\"\n {...props}\n >\n {children ?? <ChevronRight />}\n </li>\n);\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\";\n\nconst BreadcrumbEllipsis = ({\n className,\n ...props\n}: React.ComponentPropsWithoutRef<\"span\">) => (\n <span\n aria-hidden=\"true\"\n className={cn(\"flex size-3.5 items-center justify-center\", className)}\n role=\"presentation\"\n {...props}\n >\n <MoreHorizontal className=\"size-3.5\" />\n <span className=\"sr-only\">More</span>\n </span>\n);\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\";\n\nexport {\n Breadcrumb,\n BreadcrumbEllipsis,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Checkbox as PrimitiveCheckbox } from \"../../primitives/checkbox\";\nimport { AdsFieldCheckboxRow } from \"../AdsField\";\n\ntype PrimitiveCheckboxProps = React.ComponentPropsWithoutRef<typeof PrimitiveCheckbox>;\n\nconst checkboxBaseClassName =\n \"h-4 w-4 rounded-[4px] border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\";\n\nexport const Checkbox = React.forwardRef<\n React.ElementRef<typeof PrimitiveCheckbox>,\n PrimitiveCheckboxProps\n>(({ className, ...props }, ref) => (\n <PrimitiveCheckbox className={cn(checkboxBaseClassName, className)} ref={ref} {...props} />\n));\nCheckbox.displayName = \"Checkbox\";\n\nexport interface AdsCheckboxProps extends PrimitiveCheckboxProps {\n checkboxClassName?: string;\n description?: React.ReactNode;\n label?: React.ReactNode;\n wrapperClassName?: string;\n}\n\nexport const AdsCheckbox = React.forwardRef<\n React.ElementRef<typeof PrimitiveCheckbox>,\n AdsCheckboxProps\n>(({ checkboxClassName, className, description, id, label, wrapperClassName, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n if (!label) {\n return (\n <Checkbox\n className={cn(className, checkboxClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n );\n }\n\n return (\n <label className={cn(\"block w-full cursor-pointer\", wrapperClassName)} htmlFor={inputId}>\n <AdsFieldCheckboxRow\n control={\n <Checkbox\n className={cn(className, checkboxClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n }\n description={description}\n label={label}\n />\n </label>\n );\n});\nAdsCheckbox.displayName = \"AdsCheckbox\";\n","import * as React from \"react\"\nimport * as CheckboxPrimitive from \"@radix-ui/react-checkbox\"\nimport { Check } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Checkbox = React.forwardRef<\n React.ElementRef<typeof CheckboxPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof CheckboxPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <CheckboxPrimitive.Root\n ref={ref}\n className={cn(\n \"grid place-content-center peer h-4 w-4 shrink-0 rounded-sm border border-primary ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground\",\n className\n )}\n {...props}\n >\n <CheckboxPrimitive.Indicator\n className={cn(\"grid place-content-center text-current\")}\n >\n <Check className=\"h-4 w-4\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n))\nCheckbox.displayName = CheckboxPrimitive.Root.displayName\n\nexport { Checkbox }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport {\n Field as PrimitiveField,\n FieldDescription as PrimitiveFieldDescription,\n FieldError as PrimitiveFieldError,\n FieldGroup as PrimitiveFieldGroup,\n FieldLabel as PrimitiveFieldLabel,\n FieldLegend as PrimitiveFieldLegend,\n FieldSeparator as PrimitiveFieldSeparator,\n FieldSet as PrimitiveFieldSet,\n FieldTitle as PrimitiveFieldTitle,\n} from \"../../primitives/field\";\n\nexport type AdsFieldDescriptionPlacement = \"above\" | \"below\";\n\ntype UseAdsFieldDescriptionParams = {\n describedBy?: string;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n};\n\nexport type AdsFieldDescriptionState = {\n describedBy?: string;\n errorId?: string;\n helperId?: string;\n inputId: string;\n};\n\nexport function useAdsFieldDescription({\n describedBy,\n errorText,\n helperText,\n id,\n}: UseAdsFieldDescriptionParams): AdsFieldDescriptionState {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const helperId = helperText ? `${inputId}-helper` : undefined;\n const errorId = errorText ? `${inputId}-error` : undefined;\n const descriptionIds = [describedBy, helperId, errorId]\n .filter(Boolean)\n .join(\" \");\n\n return {\n describedBy: descriptionIds || undefined,\n errorId,\n helperId,\n inputId,\n };\n}\n\nexport const AdsField = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldGroup\n className={cn(\"w-full gap-7\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsField.displayName = \"AdsField\";\n\ntype AdsFieldHeaderProps = React.ComponentPropsWithoutRef<\"div\"> & {\n description?: React.ReactNode;\n title: React.ReactNode;\n};\n\nexport const AdsFieldHeader = React.forwardRef<\n HTMLDivElement,\n AdsFieldHeaderProps\n>(({ className, description, title, ...props }, ref) => (\n <div\n className={cn(\"flex w-full flex-col gap-3\", className)}\n ref={ref}\n {...props}\n >\n <PrimitiveFieldTitle\n className={cn(\n \"w-full text-base font-medium leading-6\",\n adsTextColorClassName.default,\n )}\n >\n {title}\n </PrimitiveFieldTitle>\n {description ? (\n <PrimitiveFieldDescription\n className={cn(\"w-full text-sm leading-5\", adsTextColorClassName.muted)}\n >\n {description}\n </PrimitiveFieldDescription>\n ) : null}\n </div>\n));\nAdsFieldHeader.displayName = \"AdsFieldHeader\";\n\nexport const AdsFieldItem = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveField>\n>(({ className, orientation = \"vertical\", ...props }, ref) => (\n <PrimitiveField\n className={cn(\"w-full gap-3\", className)}\n orientation={orientation}\n ref={ref}\n {...props}\n />\n));\nAdsFieldItem.displayName = \"AdsFieldItem\";\n\nexport const AdsFieldLabel = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldLabel>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldLabel>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldLabel\n className={cn(\n \"w-full text-sm font-medium leading-5\",\n adsTextColorClassName.default,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsFieldLabel.displayName = \"AdsFieldLabel\";\n\nexport const AdsFieldLegend = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldLegend>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldLegend>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldLegend\n className={cn(\n \"mb-3 text-base font-medium leading-6\",\n adsTextColorClassName.default,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsFieldLegend.displayName = \"AdsFieldLegend\";\n\nexport const AdsFieldDescription = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldDescription>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldDescription>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldDescription\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldDescription.displayName = \"AdsFieldDescription\";\n\nexport const AdsFieldError = React.forwardRef<\n React.ElementRef<typeof PrimitiveFieldError>,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldError>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldError\n className={cn(\"text-sm leading-5 text-destructive\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldError.displayName = \"AdsFieldError\";\n\nexport const AdsFieldSeparator = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldSeparator>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldSeparator\n className={cn(\"py-2\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldSeparator.displayName = \"AdsFieldSeparator\";\n\nexport const AdsFieldGroup = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldGroup\n className={cn(\"w-full gap-6\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldGroup.displayName = \"AdsFieldGroup\";\n\nexport const AdsFieldSet = React.forwardRef<\n HTMLFieldSetElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveFieldSet>\n>(({ className, ...props }, ref) => (\n <PrimitiveFieldSet\n className={cn(\"w-full gap-6\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldSet.displayName = \"AdsFieldSet\";\n\ntype AdsFieldCheckboxRowProps = React.ComponentPropsWithoutRef<\"div\"> & {\n control: React.ReactNode;\n description?: React.ReactNode;\n label: React.ReactNode;\n};\n\nexport const AdsFieldCheckboxRow = React.forwardRef<\n HTMLDivElement,\n AdsFieldCheckboxRowProps\n>(({ className, control, description, label, ...props }, ref) => (\n <div\n className={cn(\n \"flex w-full items-start gap-3\",\n description ? \"min-h-5\" : \"items-center\",\n className,\n )}\n ref={ref}\n {...props}\n >\n <div className=\"shrink-0 pt-px\">{control}</div>\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div className={cn(\"text-sm leading-5\", adsTextColorClassName.default)}>\n {label}\n </div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n </div>\n));\nAdsFieldCheckboxRow.displayName = \"AdsFieldCheckboxRow\";\n\ntype AdsFieldChoiceCardProps = React.ComponentPropsWithoutRef<\"label\"> & {\n checked?: boolean;\n control?: React.ReactNode;\n description?: React.ReactNode;\n title: React.ReactNode;\n};\n\nexport const AdsFieldChoiceCard = React.forwardRef<\n HTMLLabelElement,\n AdsFieldChoiceCardProps\n>(({ checked, className, control, description, title, ...props }, ref) => (\n <label\n className={cn(\n \"flex w-full items-start gap-3 rounded-radius-md border border-border bg-card p-md shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors\",\n adsTextColorClassName.card,\n checked ? \"border-primary bg-primary/5\" : undefined,\n className,\n )}\n ref={ref}\n {...props}\n >\n {control ? <div className=\"shrink-0 pt-px\">{control}</div> : null}\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div\n className={cn(\n \"text-sm font-medium leading-5\",\n adsTextColorClassName.card,\n )}\n >\n {title}\n </div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n </label>\n));\nAdsFieldChoiceCard.displayName = \"AdsFieldChoiceCard\";\n\nexport const AdsFieldActions = React.forwardRef<\n HTMLDivElement,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div\n className={cn(\"flex w-full flex-wrap items-center gap-3\", className)}\n ref={ref}\n {...props}\n />\n));\nAdsFieldActions.displayName = \"AdsFieldActions\";\n","\"use client\"\n\nimport { useMemo } from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Label } from \"@/primitives/label\"\nimport { Separator } from \"@/primitives/separator\"\n\nfunction FieldSet({ className, ...props }: React.ComponentProps<\"fieldset\">) {\n return (\n <fieldset\n data-slot=\"field-set\"\n className={cn(\n \"flex flex-col gap-6\",\n \"has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLegend({\n className,\n variant = \"legend\",\n ...props\n}: React.ComponentProps<\"legend\"> & { variant?: \"legend\" | \"label\" }) {\n return (\n <legend\n data-slot=\"field-legend\"\n data-variant={variant}\n className={cn(\n \"mb-3 font-medium\",\n \"data-[variant=legend]:text-base\",\n \"data-[variant=label]:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-group\"\n className={cn(\n \"group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nconst fieldVariants = cva(\n \"group/field data-[invalid=true]:text-destructive flex w-full gap-3\",\n {\n variants: {\n orientation: {\n vertical: [\"flex-col [&>*]:w-full [&>.sr-only]:w-auto\"],\n horizontal: [\n \"flex-row items-center\",\n \"[&>[data-slot=field-label]]:flex-auto\",\n \"has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px has-[>[data-slot=field-content]]:items-start\",\n ],\n responsive: [\n \"@md/field-group:flex-row @md/field-group:items-center @md/field-group:[&>*]:w-auto flex-col [&>*]:w-full [&>.sr-only]:w-auto\",\n \"@md/field-group:[&>[data-slot=field-label]]:flex-auto\",\n \"@md/field-group:has-[>[data-slot=field-content]]:items-start @md/field-group:has-[>[data-slot=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px\",\n ],\n },\n },\n defaultVariants: {\n orientation: \"vertical\",\n },\n }\n)\n\nfunction Field({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof fieldVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"field\"\n data-orientation={orientation}\n className={cn(fieldVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction FieldContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-content\"\n className={cn(\n \"group/field-content flex flex-1 flex-col gap-1.5 leading-snug\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldLabel({\n className,\n ...props\n}: React.ComponentProps<typeof Label>) {\n return (\n <Label\n data-slot=\"field-label\"\n className={cn(\n \"group/field-label peer/field-label flex w-fit gap-2 leading-snug group-data-[disabled=true]/field:opacity-50\",\n \"has-[>[data-slot=field]]:w-full has-[>[data-slot=field]]:flex-col has-[>[data-slot=field]]:rounded-md has-[>[data-slot=field]]:border [&>[data-slot=field]]:p-4\",\n \"has-data-[state=checked]:bg-primary/5 has-data-[state=checked]:border-primary dark:has-data-[state=checked]:bg-primary/10\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"field-label\"\n className={cn(\n \"flex w-fit items-center gap-2 text-sm font-medium leading-snug group-data-[disabled=true]/field:opacity-50\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n return (\n <p\n data-slot=\"field-description\"\n className={cn(\n \"text-muted-foreground text-sm font-normal leading-normal group-has-[[data-orientation=horizontal]]/field:text-balance\",\n \"nth-last-2:-mt-1 last:mt-0 [[data-variant=legend]+&]:-mt-1.5\",\n \"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction FieldSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"div\"> & {\n children?: React.ReactNode\n}) {\n return (\n <div\n data-slot=\"field-separator\"\n data-content={!!children}\n className={cn(\n \"relative -my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2\",\n className\n )}\n {...props}\n >\n <Separator className=\"absolute inset-0 top-1/2\" />\n {children && (\n <span\n className=\"bg-background text-muted-foreground relative mx-auto block w-fit px-2\"\n data-slot=\"field-separator-content\"\n >\n {children}\n </span>\n )}\n </div>\n )\n}\n\nfunction FieldError({\n className,\n children,\n errors,\n ...props\n}: React.ComponentProps<\"div\"> & {\n errors?: Array<{ message?: string } | undefined>\n}) {\n const content = useMemo(() => {\n if (children) {\n return children\n }\n\n if (!errors) {\n return null\n }\n\n if (errors?.length === 1 && errors[0]?.message) {\n return errors[0].message\n }\n\n return (\n <ul className=\"ml-4 flex list-disc flex-col gap-1\">\n {errors.map(\n (error, index) =>\n error?.message && <li key={index}>{error.message}</li>\n )}\n </ul>\n )\n }, [children, errors])\n\n if (!content) {\n return null\n }\n\n return (\n <div\n role=\"alert\"\n data-slot=\"field-error\"\n className={cn(\"text-destructive text-sm font-normal\", className)}\n {...props}\n >\n {content}\n </div>\n )\n}\n\nexport {\n Field,\n FieldLabel,\n FieldDescription,\n FieldError,\n FieldGroup,\n FieldLegend,\n FieldSeparator,\n FieldSet,\n FieldContent,\n FieldTitle,\n}\n","import * as React from \"react\"\nimport * as LabelPrimitive from \"@radix-ui/react-label\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\"\n)\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n))\nLabel.displayName = LabelPrimitive.Root.displayName\n\nexport { Label }\n","import * as React from \"react\"\nimport * as SeparatorPrimitive from \"@radix-ui/react-separator\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Separator = React.forwardRef<\n React.ElementRef<typeof SeparatorPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SeparatorPrimitive.Root>\n>(\n (\n { className, orientation = \"horizontal\", decorative = true, ...props },\n ref\n ) => (\n <SeparatorPrimitive.Root\n ref={ref}\n decorative={decorative}\n orientation={orientation}\n className={cn(\n \"shrink-0 bg-border\",\n orientation === \"horizontal\" ? \"h-[1px] w-full\" : \"h-full w-[1px]\",\n className\n )}\n {...props}\n />\n )\n)\nSeparator.displayName = SeparatorPrimitive.Root.displayName\n\nexport { Separator }\n","\"use client\";\n\nimport * as React from \"react\";\nimport { format } from \"date-fns\";\nimport type { DateRange } from \"@daypicker/react\";\nimport { ChevronDown } from \"lucide-react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Button as PrimitiveButton } from \"../../primitives/button\";\nimport { Input as PrimitiveInput } from \"../../primitives/input\";\nimport {\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\nimport {\n AdsPopover,\n AdsPopoverContent,\n AdsPopoverTrigger,\n} from \"../AdsPopover\";\nimport {\n Calendar,\n type CalendarCellSize,\n type CalendarProps,\n type CalendarSystem,\n} from \"../../primitives/calendar\";\n\nexport type AdsCalendarProps = CalendarProps;\nexport type AdsCalendarSystem = CalendarSystem;\nexport type AdsCalendarCellSize = CalendarCellSize;\n\nexport interface AdsDatePickerProps\n extends Omit<\n AdsCalendarProps,\n \"mode\" | \"onSelect\" | \"required\" | \"selected\"\n > {\n defaultSelected?: Date;\n formatDateLabel?: (value: Date) => string;\n id?: string;\n label?: React.ReactNode;\n onSelect?: (value: Date | undefined) => void;\n placeholder?: string;\n selected?: Date;\n triggerClassName?: string;\n}\n\nexport interface AdsDateTimePickerProps extends AdsDatePickerProps {\n onTimeChange?: React.ChangeEventHandler<HTMLInputElement>;\n timeLabel?: React.ReactNode;\n timeValue?: string;\n}\n\nconst dateTriggerClassName =\n \"flex h-9 w-full items-center justify-between gap-2 rounded-radius-md border border-border bg-card px-md py-2 text-left text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors hover:border-border-focus focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:cursor-not-allowed disabled:opacity-50\";\n\nconst timeInputClassName =\n \"flex h-9 w-full rounded-radius-md border border-border bg-card px-md py-2 text-center text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)]\";\n\nfunction useControllableDate({\n defaultSelected,\n onSelect,\n selected,\n}: Pick<AdsDatePickerProps, \"defaultSelected\" | \"onSelect\" | \"selected\">) {\n const [internalSelected, setInternalSelected] = React.useState<Date | undefined>(\n defaultSelected,\n );\n const isControlled = selected !== undefined;\n const value = isControlled ? selected : internalSelected;\n\n const handleSelect = React.useCallback(\n (nextValue: Date | undefined) => {\n if (!isControlled) {\n setInternalSelected(nextValue);\n }\n onSelect?.(nextValue);\n },\n [isControlled, onSelect],\n );\n\n return [value, handleSelect] as const;\n}\n\nfunction getDateLabel(value: Date | undefined, formatter?: (value: Date) => string) {\n if (!value) {\n return null;\n }\n\n return formatter ? formatter(value) : format(value, \"MMM d, yyyy\");\n}\n\nexport const AdsCalendar = React.forwardRef<HTMLDivElement, AdsCalendarProps>(\n ({ className, ...props }, ref) => (\n <Calendar className={cn(className)} ref={ref} {...props} />\n ),\n);\nAdsCalendar.displayName = \"AdsCalendar\";\n\nexport const AdsDatePicker = React.forwardRef<HTMLDivElement, AdsDatePickerProps>(\n (\n {\n className,\n defaultSelected,\n formatDateLabel,\n id,\n label,\n onSelect,\n placeholder = \"Select a date\",\n selected,\n triggerClassName,\n ...calendarProps\n },\n ref,\n ) => {\n const [open, setOpen] = React.useState(false);\n const [value, handleSelect] = useControllableDate({\n defaultSelected,\n onSelect,\n selected,\n });\n const description = useAdsFieldDescription({ id });\n const labelText = getDateLabel(value, formatDateLabel) ?? placeholder;\n\n const onCalendarSelect = React.useCallback(\n (nextValue: Date | undefined) => {\n handleSelect(nextValue);\n setOpen(false);\n },\n [handleSelect],\n );\n\n return (\n <AdsFieldItem className={cn(\"gap-3\", className)} ref={ref}>\n {label ? <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel> : null}\n <AdsPopover onOpenChange={setOpen} open={open}>\n <AdsPopoverTrigger asChild>\n <PrimitiveButton\n aria-label={labelText}\n aria-expanded={open}\n className={cn(\n dateTriggerClassName,\n !value ? \"text-muted-foreground\" : undefined,\n triggerClassName,\n )}\n id={description.inputId}\n type=\"button\"\n >\n <span className=\"truncate\">{labelText}</span>\n <ChevronDown aria-hidden className=\"size-4 shrink-0 text-icon-muted\" />\n </PrimitiveButton>\n </AdsPopoverTrigger>\n <AdsPopoverContent className=\"w-auto p-0\" inset sideOffset={4}>\n <AdsCalendar\n {...calendarProps}\n mode=\"single\"\n onSelect={onCalendarSelect}\n selected={value}\n />\n </AdsPopoverContent>\n </AdsPopover>\n </AdsFieldItem>\n );\n },\n);\nAdsDatePicker.displayName = \"AdsDatePicker\";\n\nexport const AdsDateTimePicker = React.forwardRef<\n HTMLDivElement,\n AdsDateTimePickerProps\n>(\n (\n {\n className,\n timeLabel = \"Time\",\n timeValue = \"\",\n onTimeChange,\n ...props\n },\n ref,\n ) => (\n <div className={cn(\"flex flex-wrap items-start gap-4\", className)} ref={ref}>\n <AdsDatePicker className=\"w-[min(100%,135px)]\" {...props} />\n <AdsFieldItem className=\"w-[91px] gap-3\">\n <AdsFieldLabel>{timeLabel}</AdsFieldLabel>\n <PrimitiveInput\n className={timeInputClassName}\n onChange={onTimeChange}\n readOnly={onTimeChange ? undefined : true}\n type=\"text\"\n value={timeValue}\n />\n </AdsFieldItem>\n </div>\n ),\n);\nAdsDateTimePicker.displayName = \"AdsDateTimePicker\";\n\nexport type { DateRange };\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n }\n)\nInput.displayName = \"Input\"\n\nexport { Input }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport {\n Popover as BasePopover,\n PopoverContent as BasePopoverContent,\n PopoverTrigger as BasePopoverTrigger,\n} from \"../../primitives/popover\";\n\nexport type AdsPopoverProps = React.ComponentPropsWithoutRef<\n typeof BasePopover\n>;\nexport type AdsPopoverTriggerProps = React.ComponentPropsWithoutRef<\n typeof BasePopoverTrigger\n>;\n\nexport interface AdsPopoverContentProps extends React.ComponentPropsWithoutRef<\n typeof BasePopoverContent\n> {\n inset?: boolean;\n}\n\nexport type AdsPopoverHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport type AdsPopoverBodyProps = React.HTMLAttributes<HTMLDivElement>;\nexport type AdsPopoverTitleProps = React.HTMLAttributes<HTMLHeadingElement>;\nexport type AdsPopoverDescriptionProps =\n React.HTMLAttributes<HTMLParagraphElement>;\n\nconst popoverContentClassName =\n \"z-50 w-[320px] rounded-radius-lg border border-border bg-popover p-lg text-popover-foreground shadow-[0px_2px_4px_-2px_rgba(0,0,0,0.1),0px_4px_6px_-1px_rgba(0,0,0,0.1)] outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\";\n\nconst AdsPopover = BasePopover;\nconst AdsPopoverTrigger = BasePopoverTrigger;\n\nconst AdsPopoverContent = React.forwardRef<\n React.ElementRef<typeof BasePopoverContent>,\n AdsPopoverContentProps\n>(\n (\n { align = \"center\", className, inset = false, sideOffset = 8, ...props },\n ref,\n ) => (\n <BasePopoverContent\n align={align}\n className={cn(\n popoverContentClassName,\n inset ? \"p-0\" : undefined,\n className,\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n ),\n);\nAdsPopoverContent.displayName = \"AdsPopoverContent\";\n\nconst AdsPopoverHeader = React.forwardRef<\n HTMLDivElement,\n AdsPopoverHeaderProps\n>(({ className, ...props }, ref) => (\n <div className={cn(\"flex flex-col gap-sm\", className)} ref={ref} {...props} />\n));\nAdsPopoverHeader.displayName = \"AdsPopoverHeader\";\n\nconst AdsPopoverBody = React.forwardRef<HTMLDivElement, AdsPopoverBodyProps>(\n ({ className, ...props }, ref) => (\n <div\n className={cn(\"mt-md flex flex-col gap-md\", className)}\n ref={ref}\n {...props}\n />\n ),\n);\nAdsPopoverBody.displayName = \"AdsPopoverBody\";\n\nconst AdsPopoverTitle = React.forwardRef<\n HTMLHeadingElement,\n AdsPopoverTitleProps\n>(({ className, ...props }, ref) => (\n <h4\n className={cn(\n \"text-base font-medium leading-6\",\n adsTextColorClassName.popover,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsPopoverTitle.displayName = \"AdsPopoverTitle\";\n\nconst AdsPopoverDescription = React.forwardRef<\n HTMLParagraphElement,\n AdsPopoverDescriptionProps\n>(({ className, ...props }, ref) => (\n <p\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nAdsPopoverDescription.displayName = \"AdsPopoverDescription\";\n\nexport {\n AdsPopover,\n AdsPopoverBody,\n AdsPopoverContent,\n AdsPopoverDescription,\n AdsPopoverHeader,\n AdsPopoverTitle,\n AdsPopoverTrigger,\n};\n","import * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Popover = PopoverPrimitive.Root\n\nconst PopoverTrigger = PopoverPrimitive.Trigger\n\nconst PopoverContent = React.forwardRef<\n React.ElementRef<typeof PopoverPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof PopoverPrimitive.Content>\n>(({ className, align = \"center\", sideOffset = 4, ...props }, ref) => (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n ref={ref}\n align={align}\n sideOffset={sideOffset}\n className={cn(\n \"z-50 w-72 rounded-md border bg-popover p-4 text-popover-foreground shadow-md outline-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-popover-content-transform-origin]\",\n className\n )}\n {...props}\n />\n </PopoverPrimitive.Portal>\n))\nPopoverContent.displayName = PopoverPrimitive.Content.displayName\n\nexport { Popover, PopoverTrigger, PopoverContent }\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n DayFlag,\n DayPicker as GregorianDayPicker,\n type DayPickerProps,\n type ClassNames,\n type DropdownProps,\n SelectionState,\n UI,\n useDayPicker,\n} from \"@daypicker/react\";\nimport {\n DayPicker as HijriDayPicker,\n enUS as enUSHijri,\n} from \"@daypicker/hijri\";\nimport {\n DayPicker as PersianDayPicker,\n enUS as enUSJalali,\n} from \"@daypicker/persian\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"@/primitives/select\";\n\nimport { cn } from \"@/lib/utils\";\n\nexport type CalendarSystem = \"gregorian\" | \"persian\" | \"hijri\";\nexport type CalendarCellSize = \"md\" | \"lg\";\n\nexport type CalendarProps = DayPickerProps & {\n calendarSystem?: CalendarSystem;\n cellSize?: CalendarCellSize;\n};\n\nconst cellSizeClasses: Record<\n CalendarCellSize,\n {\n cell: string;\n day: string;\n weekday: string;\n }\n> = {\n md: {\n cell: \"size-8\",\n day: \"size-8 text-sm leading-5\",\n weekday: \"w-8 text-xs leading-4\",\n },\n lg: {\n cell: \"size-10\",\n day: \"size-10 text-base leading-6\",\n weekday: \"w-10 text-sm leading-5\",\n },\n};\n\nfunction getCalendarClassNames(\n cellSize: CalendarCellSize,\n hideCaptionLabel: boolean,\n): Partial<ClassNames> {\n const sizing = cellSizeClasses[cellSize];\n\n return {\n [UI.Root]: cn(\n \"w-fit rounded-radius-lg border border-border bg-card p-3 shadow-[0px_1px_3px_rgba(0,0,0,0.1)]\",\n ),\n [UI.Months]: \"flex gap-4\",\n [UI.Month]: \"relative\",\n [UI.MonthCaption]: \"relative mx-8 mb-4 flex items-center justify-center gap-3\",\n [UI.CaptionLabel]: hideCaptionLabel\n ? \"sr-only\"\n : \"flex-1 text-center text-sm font-medium leading-5 text-foreground\",\n [UI.Dropdowns]: \"flex items-center gap-1.5\",\n [UI.DropdownRoot]:\n \"relative flex h-8 items-center rounded-radius-md border border-border bg-card px-2 shadow-[0px_1px_2px_rgba(0,0,0,0.1)] [&_svg]:size-3 [&_svg]:text-icon-muted\",\n [UI.Dropdown]:\n \"h-full appearance-none bg-transparent pr-4 text-left text-sm font-medium leading-5 text-foreground outline-none\",\n [UI.Chevron]: \"shrink-0 fill-current\",\n [UI.Nav]: \"flex items-center gap-2\",\n [UI.PreviousMonthButton]:\n \"absolute left-0 top-0 inline-flex size-8 items-center justify-center rounded-radius-md text-foreground transition-colors hover:bg-secondary focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:text-foreground\",\n [UI.NextMonthButton]:\n \"absolute right-0 top-0 inline-flex size-8 items-center justify-center rounded-radius-md text-foreground transition-colors hover:bg-secondary focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:pointer-events-none disabled:opacity-50 [&_svg]:size-4 [&_svg]:text-foreground\",\n [UI.Weekdays]: \"flex items-center\",\n [UI.Weekday]:\n cn(\"rounded-radius-md text-center font-normal text-muted-foreground\", sizing.weekday),\n [UI.MonthGrid]: \"w-full border-collapse space-y-2\",\n [UI.Weeks]: \"flex flex-col gap-2\",\n [UI.Week]: \"flex w-full\",\n [UI.Day]:\n cn(\n \"relative flex items-center justify-center p-0 text-center text-foreground\",\n sizing.cell,\n \"[&:has([aria-selected])]:bg-primary\",\n \"[&:has([aria-selected])]:text-primary-foreground\",\n \"[&:has([aria-selected].day-range-end)]:rounded-r-radius-md\",\n \"[&:has([aria-selected].day-range-start)]:rounded-l-radius-md\",\n \"[&:has([aria-selected].day-range-middle)]:bg-accent\",\n \"[&:has([aria-selected].day-range-middle)]:text-accent-foreground\",\n ),\n [UI.DayButton]:\n cn(\n \"inline-flex items-center justify-center rounded-radius-md font-normal text-foreground outline-none transition-colors hover:bg-secondary focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n sizing.day,\n ),\n [SelectionState.selected]:\n \"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n [SelectionState.range_start]:\n \"day-range-start bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n [SelectionState.range_middle]:\n \"day-range-middle rounded-none !bg-accent !text-accent-foreground hover:!bg-accent\",\n [SelectionState.range_end]:\n \"day-range-end bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground\",\n [DayFlag.outside]: \"text-foreground/50 aria-selected:text-primary-foreground/80\",\n [DayFlag.disabled]: \"text-muted-foreground opacity-40\",\n [DayFlag.today]: \"font-medium\",\n };\n}\n\nfunction CalendarDropdown({\n \"aria-label\": ariaLabel,\n className,\n disabled,\n onChange,\n options,\n style,\n value,\n}: DropdownProps) {\n const { classNames, styles } = useDayPicker();\n const selectedValue = value?.toString();\n\n return (\n <span\n className={classNames[UI.DropdownRoot]}\n data-disabled={disabled}\n style={styles?.[UI.DropdownRoot]}\n >\n <Select\n disabled={disabled}\n onValueChange={(nextValue) => {\n onChange?.({\n target: { value: nextValue },\n } as React.ChangeEvent<HTMLSelectElement>);\n }}\n value={selectedValue}\n >\n <SelectTrigger\n aria-label={ariaLabel}\n className={cn(\n classNames[UI.Dropdown],\n \"h-8 w-auto gap-1 border-0 bg-transparent px-0 py-0 shadow-none focus:ring-0 focus:ring-offset-0 [&>span]:line-clamp-none\",\n className,\n )}\n style={style}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent className=\"rounded-radius-md border-border bg-popover text-popover-foreground shadow-[0px_8px_24px_rgba(0,0,0,0.22)]\">\n {options?.map((option) => (\n <SelectItem\n disabled={option.disabled}\n key={option.value}\n value={option.value.toString()}\n >\n {option.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </span>\n );\n}\n\nexport const Calendar = React.forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n captionLayout,\n calendarSystem = \"gregorian\",\n cellSize = \"md\",\n className,\n classNames,\n fixedWeeks = true,\n navLayout = \"around\",\n showOutsideDays = true,\n ...props\n },\n ref,\n ) => {\n const mergedClassNames = React.useMemo(\n () => ({\n ...getCalendarClassNames(cellSize, captionLayout?.startsWith(\"dropdown\") ?? false),\n ...classNames,\n }),\n [captionLayout, cellSize, classNames],\n );\n\n const sharedProps: DayPickerProps = {\n ...props,\n captionLayout,\n className: cn(\"w-fit\", className),\n classNames: mergedClassNames,\n components: {\n Dropdown: CalendarDropdown,\n ...props.components,\n },\n fixedWeeks,\n navLayout,\n showOutsideDays,\n };\n\n if (calendarSystem === \"persian\") {\n return (\n <div ref={ref}>\n <PersianDayPicker\n {...sharedProps}\n dir={props.dir ?? \"ltr\"}\n locale={(props.locale as typeof enUSJalali | undefined) ?? enUSJalali}\n numerals={props.numerals ?? \"latn\"}\n />\n </div>\n );\n }\n\n if (calendarSystem === \"hijri\") {\n return (\n <div ref={ref}>\n <HijriDayPicker\n {...sharedProps}\n dir={props.dir ?? \"ltr\"}\n locale={(props.locale as typeof enUSHijri | undefined) ?? enUSHijri}\n numerals={props.numerals ?? \"latn\"}\n />\n </div>\n );\n }\n\n return (\n <div ref={ref}>\n <GregorianDayPicker {...sharedProps} />\n </div>\n );\n },\n);\nCalendar.displayName = \"Calendar\";\n","\"use client\"\n\nimport * as React from \"react\"\nimport * as DismissableLayerPrimitive from \"@radix-ui/react-dismissable-layer\"\nimport * as SelectPrimitive from \"@radix-ui/react-select\"\nimport { Check, ChevronDown, ChevronUp } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Select = SelectPrimitive.Root\n\nconst SelectGroup = SelectPrimitive.Group\n\nconst SelectValue = SelectPrimitive.Value\n\nconst SelectTrigger = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Trigger>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Trigger\n ref={ref}\n className={cn(\n \"flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background data-[placeholder]:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDown className=\"h-4 w-4 opacity-50\" />\n </SelectPrimitive.Icon>\n </SelectPrimitive.Trigger>\n))\nSelectTrigger.displayName = SelectPrimitive.Trigger.displayName\n\nconst SelectScrollUpButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollUpButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollUpButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollUpButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronUp className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollUpButton>\n))\nSelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName\n\nconst SelectScrollDownButton = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.ScrollDownButton>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.ScrollDownButton>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.ScrollDownButton\n ref={ref}\n className={cn(\n \"flex cursor-default items-center justify-center py-1\",\n className\n )}\n {...props}\n >\n <ChevronDown className=\"h-4 w-4\" />\n </SelectPrimitive.ScrollDownButton>\n))\nSelectScrollDownButton.displayName =\n SelectPrimitive.ScrollDownButton.displayName\n\nconst SelectContent = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Content>\n>(({ className, children, position = \"popper\", ...props }, ref) => (\n <SelectPrimitive.Portal>\n <DismissableLayerPrimitive.Branch asChild>\n <SelectPrimitive.Content\n ref={ref}\n className={cn(\n \"relative z-50 max-h-[--radix-select-content-available-height] min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]\",\n position === \"popper\" &&\n \"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1\",\n className\n )}\n position={position}\n {...props}\n >\n <SelectScrollUpButton />\n <SelectPrimitive.Viewport\n className={cn(\n \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]\"\n )}\n >\n {children}\n </SelectPrimitive.Viewport>\n <SelectScrollDownButton />\n </SelectPrimitive.Content>\n </DismissableLayerPrimitive.Branch>\n </SelectPrimitive.Portal>\n))\nSelectContent.displayName = SelectPrimitive.Content.displayName\n\nconst SelectLabel = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Label>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Label>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Label\n ref={ref}\n className={cn(\"py-1.5 pl-8 pr-2 text-sm font-semibold\", className)}\n {...props}\n />\n))\nSelectLabel.displayName = SelectPrimitive.Label.displayName\n\nconst SelectItem = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Item>\n>(({ className, children, ...props }, ref) => (\n <SelectPrimitive.Item\n ref={ref}\n className={cn(\n \"relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n className\n )}\n {...props}\n >\n <span className=\"absolute left-2 flex h-3.5 w-3.5 items-center justify-center\">\n <SelectPrimitive.ItemIndicator>\n <Check className=\"h-4 w-4\" />\n </SelectPrimitive.ItemIndicator>\n </span>\n\n <SelectPrimitive.ItemText>{children}</SelectPrimitive.ItemText>\n </SelectPrimitive.Item>\n))\nSelectItem.displayName = SelectPrimitive.Item.displayName\n\nconst SelectSeparator = React.forwardRef<\n React.ElementRef<typeof SelectPrimitive.Separator>,\n React.ComponentPropsWithoutRef<typeof SelectPrimitive.Separator>\n>(({ className, ...props }, ref) => (\n <SelectPrimitive.Separator\n ref={ref}\n className={cn(\"-mx-1 my-1 h-px bg-muted\", className)}\n {...props}\n />\n))\nSelectSeparator.displayName = SelectPrimitive.Separator.displayName\n\nexport {\n Select,\n SelectGroup,\n SelectValue,\n SelectTrigger,\n SelectContent,\n SelectLabel,\n SelectItem,\n SelectSeparator,\n SelectScrollUpButton,\n SelectScrollDownButton,\n}\n","\"use client\";\n\nimport * as React from \"react\"\nimport { Slot } from \"@radix-ui/react-slot\"\n\nimport { cn } from \"../../lib/cn\"\nimport { Input } from \"../../primitives/input\";\nimport {\n ButtonGroupSeparator as PrimitiveButtonGroupSeparator,\n buttonGroupVariants,\n} from \"../../primitives/button-group\";\nimport { AdsButton, type AdsButtonProps } from \"../AdsButton\";\nimport type { AdsSize } from \"../shared/types\";\n\nconst buttonGroupPressClassName =\n \"[&_button]:transition-[background-color,box-shadow,filter] [&_button]:active:translate-y-0 [&_button]:active:brightness-95\";\n\nconst segmentSizeClassName: Record<AdsSize, string> = {\n sm: \"h-8 px-md text-sm\",\n md: \"h-9 px-lg text-sm\",\n lg: \"h-10 px-xl text-base\",\n};\n\ntype AdsButtonGroupSurface = \"default\" | \"secondary\" | \"pill\";\ntype AdsButtonGroupTextTone = \"default\" | \"muted\" | \"secondary\" | \"field\";\ntype PrimitiveInputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\nexport interface AdsButtonGroupProps\n extends Omit<React.ComponentPropsWithoutRef<\"div\">, \"children\"> {\n attached?: boolean;\n children: React.ReactNode;\n gap?: \"none\" | \"sm\" | \"md\";\n orientation?: \"horizontal\" | \"vertical\";\n size?: AdsSize;\n surface?: AdsButtonGroupSurface;\n variant?: \"connected\" | \"default\";\n}\n\nexport interface AdsButtonGroupTextProps\n extends React.ComponentPropsWithoutRef<\"div\"> {\n align?: \"start\" | \"center\" | \"between\";\n asChild?: boolean;\n shape?: \"default\" | \"pill\";\n size?: AdsSize;\n tone?: AdsButtonGroupTextTone;\n}\n\nexport interface AdsButtonGroupInputProps\n extends Omit<PrimitiveInputProps, \"aria-invalid\" | \"prefix\" | \"size\"> {\n size?: AdsSize;\n}\n\nfunction isAdsButtonElement(\n child: React.ReactNode,\n): child is React.ReactElement<AdsButtonProps, typeof AdsButton> {\n return React.isValidElement(child) && child.type === AdsButton;\n}\n\nfunction enhanceChildren(\n children: React.ReactNode,\n attached: boolean,\n size: AdsSize | undefined,\n surface: AdsButtonGroupSurface,\n) {\n return React.Children.map(children, (child) => {\n if (!isAdsButtonElement(child)) {\n return child;\n }\n\n return React.cloneElement(child, {\n className: cn(\n attached &&\n \"rounded-none shadow-none\",\n attached &&\n surface === \"secondary\" &&\n \"bg-secondary hover:bg-secondary/90\",\n child.props.className,\n ),\n size: child.props.size ?? size,\n });\n });\n}\n\nconst AdsButtonGroup = React.forwardRef<\n HTMLDivElement,\n AdsButtonGroupProps\n>(\n (\n {\n attached = true,\n children,\n className,\n gap,\n orientation = \"horizontal\",\n size,\n surface = \"default\",\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n const isVertical = orientation === \"vertical\";\n const resolvedAttached = attached || variant === \"connected\";\n const resolvedGapClassName =\n gap === \"none\"\n ? \"gap-0\"\n : gap === \"sm\"\n ? \"gap-sm\"\n : gap === \"md\"\n ? \"gap-md\"\n : resolvedAttached && isVertical\n ? \"gap-0\"\n : \"gap-2\";\n const attachedClassName = cn(\n buttonGroupVariants({ orientation }),\n surface === \"pill\" ? \"rounded-full\" : \"rounded-radius-md\",\n );\n\n return (\n <div\n aria-orientation={orientation}\n className={cn(\n \"inline-flex w-fit items-stretch\",\n isVertical ? \"flex-col\" : \"flex-row\",\n resolvedGapClassName,\n resolvedAttached && attachedClassName,\n buttonGroupPressClassName,\n className,\n )}\n data-attached={resolvedAttached ? \"true\" : \"false\"}\n data-orientation={orientation}\n data-surface={surface}\n data-slot=\"button-group\"\n data-variant={variant}\n role=\"group\"\n ref={ref}\n {...props}\n >\n {enhanceChildren(children, resolvedAttached, size, surface)}\n </div>\n )\n});\n\nAdsButtonGroup.displayName = \"AdsButtonGroup\"\n\nconst textToneClassName: Record<AdsButtonGroupTextTone, string> = {\n default: \"bg-transparent text-foreground\",\n muted: \"bg-transparent text-muted-foreground\",\n secondary: \"bg-secondary text-secondary-foreground\",\n field: \"bg-transparent text-muted-foreground\",\n};\n\nconst textAlignClassName: Record<NonNullable<AdsButtonGroupTextProps[\"align\"]>, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n between: \"justify-between\",\n};\n\nconst inputSizeClassName: Record<AdsSize, string> = {\n sm: \"h-8 text-sm leading-5\",\n md: \"h-9 text-sm leading-5\",\n lg: \"h-10 text-base leading-6\",\n};\n\nconst AdsButtonGroupText = React.forwardRef<HTMLDivElement, AdsButtonGroupTextProps>(\n (\n {\n align = \"start\",\n asChild = false,\n className,\n shape = \"default\",\n size = \"md\",\n tone = \"default\",\n ...props\n },\n ref,\n ) => {\n const Comp = asChild ? Slot : \"div\";\n\n return (\n <Comp\n className={cn(\n \"inline-flex min-w-0 items-center gap-sm border border-border font-medium leading-5 shadow-[0px_1px_2px_rgba(0,0,0,0.08)] outline-none\",\n segmentSizeClassName[size],\n textToneClassName[tone],\n textAlignClassName[align],\n shape === \"pill\" ? \"rounded-full\" : \"rounded-radius-md\",\n \"[&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className,\n )}\n data-slot=\"button-group-text\"\n ref={ref}\n {...props}\n />\n );\n },\n);\n\nAdsButtonGroupText.displayName = \"AdsButtonGroupText\";\n\nconst AdsButtonGroupInput = React.forwardRef<\n HTMLInputElement,\n AdsButtonGroupInputProps\n>(({ className, size = \"md\", type = \"text\", ...props }, ref) => (\n <Input\n className={cn(\n \"min-w-0 rounded-none bg-card px-md py-0 text-foreground outline-none placeholder:text-muted-foreground focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50\",\n inputSizeClassName[size],\n className,\n )}\n ref={ref}\n type={type}\n {...props}\n />\n));\n\nAdsButtonGroupInput.displayName = \"AdsButtonGroupInput\";\n\nconst AdsButtonGroupSeparator = PrimitiveButtonGroupSeparator;\n\nexport { AdsButtonGroup, AdsButtonGroupInput, AdsButtonGroupSeparator, AdsButtonGroupText };\nexport type AdsButtonGroupSeparatorProps = React.ComponentProps<\n typeof PrimitiveButtonGroupSeparator\n>;\nexport { buttonGroupVariants };\n","import { Slot } from \"@radix-ui/react-slot\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Separator } from \"@/primitives/separator\"\n\nconst buttonGroupVariants = cva(\n \"flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1\",\n {\n variants: {\n orientation: {\n horizontal:\n \"[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none\",\n vertical:\n \"flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none\",\n },\n },\n defaultVariants: {\n orientation: \"horizontal\",\n },\n }\n)\n\nfunction ButtonGroup({\n className,\n orientation,\n ...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof buttonGroupVariants>) {\n return (\n <div\n role=\"group\"\n data-slot=\"button-group\"\n data-orientation={orientation}\n className={cn(buttonGroupVariants({ orientation }), className)}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupText({\n className,\n asChild = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n asChild?: boolean\n}) {\n const Comp = asChild ? Slot : \"div\"\n\n return (\n <Comp\n className={cn(\n \"bg-muted shadow-xs flex items-center gap-2 rounded-md border px-4 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction ButtonGroupSeparator({\n className,\n orientation = \"vertical\",\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"button-group-separator\"\n orientation={orientation}\n className={cn(\n \"pointer-events-none relative !m-0 shrink-0 self-stretch overflow-visible bg-transparent\",\n \"data-[orientation=vertical]:h-auto data-[orientation=vertical]:w-0\",\n \"data-[orientation=horizontal]:h-0 data-[orientation=horizontal]:w-full\",\n \"data-[orientation=vertical]:before:absolute data-[orientation=vertical]:before:inset-y-0 data-[orientation=vertical]:before:left-0 data-[orientation=vertical]:before:w-px data-[orientation=vertical]:before:bg-border\",\n \"data-[orientation=horizontal]:before:absolute data-[orientation=horizontal]:before:inset-x-0 data-[orientation=horizontal]:before:top-0 data-[orientation=horizontal]:before:h-px data-[orientation=horizontal]:before:bg-border\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n ButtonGroup,\n ButtonGroupSeparator,\n ButtonGroupText,\n buttonGroupVariants,\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Separator as PrimitiveSeparator } from \"../../primitives/separator\";\n\nexport interface AdsSeparatorProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveSeparator> {\n tone?: \"default\" | \"muted\";\n}\n\nconst toneClassName: Record<NonNullable<AdsSeparatorProps[\"tone\"]>, string> = {\n default: \"bg-border\",\n muted: \"bg-border-muted\",\n};\n\nexport const AdsSeparator = React.forwardRef<\n React.ElementRef<typeof PrimitiveSeparator>,\n AdsSeparatorProps\n>(({ className, orientation = \"horizontal\", tone = \"default\", ...props }, ref) => (\n <PrimitiveSeparator\n className={cn(\n \"shrink-0\",\n orientation === \"horizontal\" ? \"h-px w-full\" : \"h-full w-px\",\n toneClassName[tone],\n className,\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n />\n));\nAdsSeparator.displayName = \"AdsSeparator\";\n\nexport const Separator = AdsSeparator;\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Skeleton as PrimitiveSkeleton,\n type SkeletonProps as PrimitiveSkeletonProps,\n} from \"../../primitives/skeleton\";\n\nexport interface AdsSkeletonProps extends PrimitiveSkeletonProps {\n shape?: \"default\" | \"line\" | \"circle\";\n tone?: \"default\" | \"muted\";\n}\n\nconst shapeClassName: Record<NonNullable<AdsSkeletonProps[\"shape\"]>, string> = {\n default: \"rounded-radius-md\",\n line: \"h-4 w-full rounded-full\",\n circle: \"rounded-full\",\n};\n\nconst toneClassName: Record<NonNullable<AdsSkeletonProps[\"tone\"]>, string> = {\n default: \"bg-secondary\",\n muted: \"bg-accent\",\n};\n\nexport const AdsSkeleton = React.forwardRef<HTMLDivElement, AdsSkeletonProps>(\n ({ className, shape = \"default\", tone = \"default\", ...props }, ref) => (\n <PrimitiveSkeleton\n className={cn(shapeClassName[shape], toneClassName[tone], className)}\n ref={ref}\n {...props}\n />\n ),\n);\nAdsSkeleton.displayName = \"AdsSkeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n animated?: boolean;\n}\n\nexport const Skeleton = React.forwardRef<HTMLDivElement, SkeletonProps>(\n ({ animated = true, className, ...props }, ref) => (\n <div\n className={cn(\n \"shrink-0 bg-accent\",\n animated ? \"animate-pulse\" : undefined,\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nSkeleton.displayName = \"Skeleton\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { AdsClearButton } from \"../../lib/adsClearButton\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Input } from \"../../primitives/input\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\nimport type { AdsSize } from \"../shared/types\";\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\n\nconst inputBaseClassName =\n \"flex w-full rounded-md border border-border bg-card px-3 py-2 ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-[var(--card-foreground)] placeholder:text-[var(--muted-foreground)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\";\n\nconst inputSizeClasses: Record<AdsSize, string> = {\n sm: \"h-8 text-sm leading-5\",\n md: \"h-9 text-base leading-6\",\n lg: \"h-10 text-base leading-6\",\n};\n\ntype AdsInputChromeProps = {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n label?: React.ReactNode;\n};\n\nexport interface AdsInputProps\n extends\n Omit<InputProps, \"aria-invalid\" | \"size\" | \"prefix\">,\n AdsInputChromeProps {\n action?: React.ReactNode;\n clearable?: boolean;\n clearButtonLabel?: string;\n emptyFileLabel?: string;\n fileTriggerLabel?: string;\n onClear?: () => void;\n prefix?: React.ReactNode;\n size?: AdsSize;\n suffix?: React.ReactNode;\n}\n\nfunction assignInputRef(\n ref: React.ForwardedRef<HTMLInputElement>,\n value: HTMLInputElement | null,\n) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n if (ref) {\n ref.current = value;\n }\n}\n\nfunction getTextInputValue(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\") {\n return String(value);\n }\n return \"\";\n}\n\nfunction getInputSurfaceClassName({\n className,\n errorText,\n hasPrefix,\n hasSuffix,\n size,\n}: {\n className: string | undefined;\n errorText: React.ReactNode;\n hasPrefix: boolean;\n hasSuffix: boolean;\n size: AdsSize;\n}) {\n return cn(\n inputBaseClassName,\n inputSizeClasses[size],\n errorText\n ? \"border-destructive focus-visible:border-destructive\"\n : \"focus-visible:border-border-focus\",\n \"focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0\",\n hasPrefix ? \"pl-2xl\" : undefined,\n hasSuffix ? \"pr-2xl\" : undefined,\n className,\n );\n}\n\nexport const AdsInput = React.forwardRef<HTMLInputElement, AdsInputProps>(\n (\n {\n action,\n className,\n clearable = false,\n clearButtonLabel,\n descriptionPlacement = \"below\",\n emptyFileLabel,\n errorText,\n fileTriggerLabel,\n helperText,\n id,\n label,\n onChange,\n onClear,\n prefix,\n type = \"text\",\n size = \"md\",\n suffix,\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const [selectedFiles, setSelectedFiles] = React.useState<string[]>([]);\n const [currentValue, setCurrentValue] = React.useState(() =>\n getTextInputValue(props.value ?? props.defaultValue),\n );\n const description = useAdsFieldDescription({\n describedBy: props[\"aria-describedby\"],\n errorText,\n helperText,\n id,\n });\n React.useEffect(() => {\n if (props.value !== undefined) {\n setCurrentValue(getTextInputValue(props.value));\n }\n }, [props.value]);\n\n const isFileInput = type === \"file\";\n const canClear =\n clearable &&\n !isFileInput &&\n !props.disabled &&\n !props.readOnly &&\n currentValue.length > 0;\n const inputSurfaceClassName = getInputSurfaceClassName({\n className,\n errorText,\n hasPrefix: Boolean(prefix),\n hasSuffix: Boolean(suffix) || canClear,\n size,\n });\n const resolvedClearButtonLabel = clearButtonLabel ?? messages.input.clear;\n const resolvedFileTriggerLabel =\n fileTriggerLabel ?? messages.input.chooseFile;\n const resolvedEmptyFileLabel =\n emptyFileLabel ?? messages.input.noFileChosen;\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n if (isFileInput) {\n setSelectedFiles(\n Array.from(event.target.files ?? [], (file) => file.name),\n );\n }\n onChange?.(event);\n },\n [isFileInput, onChange],\n );\n\n const handleClear = React.useCallback(() => {\n const element = inputRef.current;\n if (!element) {\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n\n valueSetter?.call(element, \"\");\n element.dispatchEvent(new Event(\"input\", { bubbles: true }));\n element.focus();\n onClear?.();\n }, [onClear]);\n\n const fileNameText =\n selectedFiles.length > 0\n ? selectedFiles.join(\", \")\n : resolvedEmptyFileLabel;\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>\n {helperText}\n </AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n const inputNode = isFileInput ? (\n <div className=\"relative flex w-full min-w-0 flex-1 items-center\">\n <Input\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={cn(\n inputSurfaceClassName,\n \"absolute inset-0 z-10 cursor-pointer opacity-0 file:hidden\",\n props.disabled ? \"cursor-not-allowed\" : undefined,\n )}\n id={description.inputId}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n assignInputRef(ref, node);\n }}\n type=\"file\"\n {...props}\n />\n <div\n aria-hidden=\"true\"\n className={cn(\n inputSurfaceClassName,\n adsTextColorClassName.card,\n \"items-center text-sm leading-5\",\n props.disabled ? \"cursor-not-allowed opacity-50\" : undefined,\n )}\n >\n <span\n className={cn(\n \"shrink-0 pr-sm text-sm font-medium leading-5\",\n adsTextColorClassName.card,\n )}\n >\n {resolvedFileTriggerLabel}\n </span>\n <span\n className={cn(\n \"min-w-0 flex-1 truncate text-sm leading-5\",\n selectedFiles.length > 0\n ? adsTextColorClassName.card\n : adsTextColorClassName.muted,\n )}\n >\n {fileNameText}\n </span>\n </div>\n </div>\n ) : (\n <div className=\"relative flex w-full min-w-0 flex-1 items-center\">\n {prefix ? (\n <span className=\"pointer-events-none absolute left-md inline-flex text-icon-muted\">\n {prefix}\n </span>\n ) : null}\n <Input\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={inputSurfaceClassName}\n id={description.inputId}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n assignInputRef(ref, node);\n }}\n type={type}\n {...props}\n />\n {canClear || suffix ? (\n <span className=\"absolute right-md inline-flex items-center gap-xs text-icon-muted\">\n {suffix ? (\n <span className=\"inline-flex items-center\">{suffix}</span>\n ) : null}\n {canClear ? (\n <AdsClearButton\n aria-label={resolvedClearButtonLabel}\n onClick={handleClear}\n />\n ) : null}\n </span>\n ) : null}\n </div>\n );\n\n return (\n <AdsFieldItem>\n {label ? (\n <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel>\n ) : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <div className=\"flex w-full items-center gap-sm\">\n {inputNode}\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsInput.displayName = \"AdsInput\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport { X } from \"lucide-react\";\n\nimport { cn } from \"./cn\";\n\nconst adsClearButtonClassName =\n \"inline-flex min-w-0 shrink-0 items-center justify-center rounded-sm border-0 bg-transparent p-0 text-icon-muted shadow-none transition-colors hover:bg-transparent hover:text-foreground focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:pointer-events-none disabled:opacity-50\";\n\nexport interface AdsClearButtonProps\n extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, \"aria-label\"> {\n \"aria-label\": string;\n}\n\nexport const AdsClearButton = React.forwardRef<\n HTMLButtonElement,\n AdsClearButtonProps\n>(({ className, type = \"button\", ...props }, ref) => (\n <button\n {...props}\n className={cn(adsClearButtonClassName, \"h-4 w-4\", className)}\n ref={ref}\n type={type}\n >\n <X aria-hidden className=\"h-3.5 w-3.5\" />\n </button>\n));\nAdsClearButton.displayName = \"AdsClearButton\";\n\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { AdsClearButton } from \"../../lib/adsClearButton\";\nimport { cn } from \"../../lib/cn\";\nimport { Input } from \"../../primitives/input\";\nimport { Textarea } from \"../../primitives/textarea\";\n\ntype InputProps = React.ComponentPropsWithoutRef<typeof Input>;\ntype TextareaProps = React.ComponentPropsWithoutRef<typeof Textarea>;\n\ntype AdsInputGroupChromeProps = {\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n label?: React.ReactNode;\n};\n\ntype AdsInputGroupDescription = {\n describedBy?: string;\n errorId?: string;\n helperId?: string;\n};\n\nfunction useAdsInputGroupDescription(\n describedBy: string | undefined,\n helperText: React.ReactNode,\n errorText: React.ReactNode,\n idBase: string,\n): AdsInputGroupDescription {\n const helperId = helperText ? `${idBase}-helper` : undefined;\n const errorId = errorText ? `${idBase}-error` : undefined;\n const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(\" \");\n\n return {\n describedBy: descriptionIds || undefined,\n errorId,\n helperId,\n };\n}\n\nfunction AdsInputGroupChrome({\n children,\n errorId,\n errorText,\n helperId,\n helperText,\n label,\n}: AdsInputGroupChromeProps &\n AdsInputGroupDescription & {\n children: React.ReactNode;\n }) {\n return (\n <div className=\"flex w-full flex-col gap-md\">\n {label ? <div className=\"text-sm font-medium leading-5 text-foreground\">{label}</div> : null}\n {children}\n {helperText ? (\n <p className=\"text-sm leading-5 text-muted-foreground\" id={helperId}>\n {helperText}\n </p>\n ) : null}\n {errorText ? (\n <p className=\"text-sm leading-5 text-destructive\" id={errorId}>\n {errorText}\n </p>\n ) : null}\n </div>\n );\n}\n\nconst addonBaseClassName =\n \"flex shrink-0 items-center self-stretch bg-secondary px-lg text-sm leading-5 text-foreground\";\n\nconst inputGroupControlBaseClassName =\n \"w-full min-w-0 appearance-none rounded-none !border-0 bg-transparent px-0 py-0 text-sm leading-5 text-foreground !shadow-none ring-offset-0 placeholder:text-muted-foreground focus:border-0 focus:border-transparent focus:outline-none focus:ring-0 focus:ring-offset-0 focus-visible:border-transparent focus-visible:outline-none focus-visible:ring-0 focus-visible:ring-transparent focus-visible:ring-offset-0 focus-visible:[box-shadow:none] disabled:cursor-not-allowed disabled:opacity-50 read-only:text-muted-foreground\";\n\nfunction assignInputGroupRef(\n ref: React.ForwardedRef<HTMLInputElement>,\n value: HTMLInputElement | null,\n) {\n if (typeof ref === \"function\") {\n ref(value);\n return;\n }\n if (ref) {\n ref.current = value;\n }\n}\n\nfunction getInputGroupValue(value: unknown) {\n if (typeof value === \"string\") {\n return value;\n }\n if (typeof value === \"number\") {\n return String(value);\n }\n return \"\";\n}\n\nexport interface AdsInputGroupProps extends AdsInputGroupChromeProps {\n children: React.ReactNode;\n className?: string;\n controlWrapperClassName?: string;\n footer?: React.ReactNode;\n header?: React.ReactNode;\n id?: string;\n leadingAddon?: React.ReactNode;\n leadingAddonClassName?: string;\n surfaceClassName?: string;\n trailingAddon?: React.ReactNode;\n trailingAddonClassName?: string;\n}\n\nexport function AdsInputGroup({\n children,\n className,\n controlWrapperClassName,\n errorText,\n footer,\n header,\n helperText,\n id,\n label,\n leadingAddon,\n leadingAddonClassName,\n surfaceClassName,\n trailingAddon,\n trailingAddonClassName,\n}: AdsInputGroupProps) {\n const generatedId = React.useId();\n const description = useAdsInputGroupDescription(\n undefined,\n helperText,\n errorText,\n id ?? generatedId,\n );\n\n return (\n <AdsInputGroupChrome\n errorText={errorText}\n helperText={helperText}\n label={label}\n {...description}\n >\n <div className={cn(\"w-full\", className)}>\n <div\n className={cn(\n \"overflow-hidden rounded-radius-md border border-border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors\",\n errorText\n ? \"border-destructive focus-within:border-destructive\"\n : \"focus-within:border-border-focus\",\n \"focus-within:ring-[3px] focus-within:ring-[rgba(161,161,161,0.5)]\",\n surfaceClassName,\n )}\n >\n {header ? (\n <div className=\"border-b border-border px-md py-md text-sm text-foreground\">\n {header}\n </div>\n ) : null}\n\n <div className=\"flex min-h-11 w-full items-stretch\">\n {leadingAddon ? (\n <div\n className={cn(\n addonBaseClassName,\n \"border-r border-border\",\n leadingAddonClassName,\n )}\n >\n {leadingAddon}\n </div>\n ) : null}\n\n <div\n className={cn(\n \"flex min-w-0 flex-1 items-center gap-sm px-md py-[10px]\",\n controlWrapperClassName,\n )}\n >\n {children}\n </div>\n\n {trailingAddon ? (\n <div\n className={cn(\n addonBaseClassName,\n \"justify-end border-l border-border\",\n trailingAddonClassName,\n )}\n >\n {trailingAddon}\n </div>\n ) : null}\n </div>\n\n {footer ? (\n <div className=\"border-t border-border px-md py-sm text-sm text-muted-foreground\">\n {footer}\n </div>\n ) : null}\n </div>\n </div>\n </AdsInputGroupChrome>\n );\n}\n\nexport type AdsInputGroupInputProps = Omit<\n InputProps,\n \"aria-invalid\" | \"aria-describedby\"\n> & {\n clearable?: boolean;\n clearButtonLabel?: string;\n onClear?: () => void;\n};\n\nexport const AdsInputGroupInput = React.forwardRef<\n HTMLInputElement,\n AdsInputGroupInputProps\n>(({ className, clearable = false, clearButtonLabel, onChange, onClear, ...props }, ref) => {\n const { messages } = useAdsI18n();\n const inputRef = React.useRef<HTMLInputElement | null>(null);\n const [currentValue, setCurrentValue] = React.useState(() =>\n getInputGroupValue(props.value ?? props.defaultValue),\n );\n\n React.useEffect(() => {\n if (props.value !== undefined) {\n setCurrentValue(getInputGroupValue(props.value));\n }\n }, [props.value]);\n\n const canClear =\n clearable &&\n !props.disabled &&\n !props.readOnly &&\n currentValue.length > 0;\n\n const handleChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n setCurrentValue(event.target.value);\n onChange?.(event);\n },\n [onChange],\n );\n\n const handleClear = React.useCallback(() => {\n const element = inputRef.current;\n if (!element) {\n return;\n }\n\n const valueSetter = Object.getOwnPropertyDescriptor(\n window.HTMLInputElement.prototype,\n \"value\",\n )?.set;\n\n valueSetter?.call(element, \"\");\n element.dispatchEvent(new Event(\"input\", { bubbles: true }));\n element.focus();\n onClear?.();\n }, [onClear]);\n\n return (\n <div className=\"relative flex w-full min-w-0 flex-1 items-center\">\n <Input\n className={cn(\n inputGroupControlBaseClassName,\n \"h-5 text-sm leading-5\",\n canClear ? \"pr-xl\" : undefined,\n className,\n )}\n onChange={handleChange}\n ref={(node) => {\n inputRef.current = node;\n assignInputGroupRef(ref, node);\n }}\n {...props}\n />\n {canClear ? (\n <AdsClearButton\n aria-label={clearButtonLabel ?? messages.input.clear}\n className=\"absolute right-0\"\n onClick={handleClear}\n />\n ) : null}\n </div>\n );\n});\nAdsInputGroupInput.displayName = \"AdsInputGroupInput\";\n\nexport type AdsInputGroupTextareaProps = Omit<\n TextareaProps,\n \"aria-invalid\" | \"aria-describedby\"\n>;\n\nexport const AdsInputGroupTextarea = React.forwardRef<\n HTMLTextAreaElement,\n AdsInputGroupTextareaProps\n>(({ className, ...props }, ref) => (\n <Textarea\n className={cn(\n inputGroupControlBaseClassName,\n \"min-h-[64px] resize-none text-sm leading-5\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsInputGroupTextarea.displayName = \"AdsInputGroupTextarea\";\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Textarea = React.forwardRef<\n HTMLTextAreaElement,\n React.ComponentProps<\"textarea\">\n>(({ className, ...props }, ref) => {\n return (\n <textarea\n className={cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className\n )}\n ref={ref}\n {...props}\n />\n )\n})\nTextarea.displayName = \"Textarea\"\n\nexport { Textarea }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport {\n InputOTP,\n InputOTPGroup,\n InputOTPSeparator,\n InputOTPSlot,\n} from \"../../primitives/input-otp\";\n\ntype FieldDescription = {\n describedBy?: string;\n errorId?: string;\n helperId?: string;\n inputId: string;\n};\n\nfunction useFieldDescription(\n id: string | undefined,\n describedBy: string | undefined,\n helperText: React.ReactNode,\n errorText: React.ReactNode,\n): FieldDescription {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const helperId = helperText ? `${inputId}-helper` : undefined;\n const errorId = errorText ? `${inputId}-error` : undefined;\n const descriptionIds = [describedBy, helperId, errorId].filter(Boolean).join(\" \");\n\n return {\n describedBy: descriptionIds || undefined,\n errorId,\n helperId,\n inputId,\n };\n}\n\nfunction AdsInputOTPChrome({\n children,\n errorId,\n errorText,\n helperId,\n helperText,\n inputId,\n label,\n}: {\n children: React.ReactNode;\n errorId?: string;\n errorText?: React.ReactNode;\n helperId?: string;\n helperText?: React.ReactNode;\n inputId: string;\n label?: React.ReactNode;\n}) {\n return (\n <div className=\"flex w-full flex-col gap-md\">\n {label ? (\n <label className=\"text-sm font-medium leading-5 text-foreground\" htmlFor={inputId}>\n {label}\n </label>\n ) : null}\n {children}\n {helperText ? (\n <p className=\"text-sm leading-5 text-muted-foreground\" id={helperId}>\n {helperText}\n </p>\n ) : null}\n {errorText ? (\n <p className=\"text-sm leading-5 text-destructive\" id={errorId}>\n {errorText}\n </p>\n ) : null}\n </div>\n );\n}\n\nfunction buildSeparator(node: React.ReactNode, key: string | number) {\n if (node === undefined) {\n return <AdsInputOTPSeparator key={key} />;\n }\n\n if (React.isValidElement(node)) {\n return React.cloneElement(node, { key });\n }\n\n return <span key={key}>{node}</span>;\n}\n\nfunction buildOtpChildren(groups: number[], separator?: React.ReactNode) {\n const defaultGroup = groups.length > 0 ? groups : [6];\n const items: React.ReactNode[] = [];\n let index = 0;\n\n defaultGroup.forEach((size, indexOfGroup) => {\n items.push(\n <AdsInputOTPGroup key={`group-${indexOfGroup}`}>\n {Array.from({ length: size }, (_, slotOffset) => (\n <AdsInputOTPSlot\n index={index + slotOffset}\n key={`slot-${index + slotOffset}`}\n />\n ))}\n </AdsInputOTPGroup>,\n );\n\n index += size;\n\n if (indexOfGroup < defaultGroup.length - 1) {\n items.push(buildSeparator(separator, `sep-${indexOfGroup}`));\n }\n });\n\n return items;\n}\n\ntype AdsInputOTPProps = Omit<\n React.ComponentPropsWithoutRef<typeof InputOTP>,\n \"children\" | \"maxLength\" | \"render\"\n> & {\n action?: React.ReactNode;\n groups?: number[];\n helperText?: React.ReactNode;\n errorText?: React.ReactNode;\n label?: React.ReactNode;\n separator?: React.ReactNode;\n children?: React.ReactNode;\n};\n\nconst AdsInputOTP = React.forwardRef<\n React.ElementRef<typeof InputOTP>,\n AdsInputOTPProps\n>(({ action, errorText, groups, helperText, label, separator, children, id, ...props }, ref) => {\n const totalSlots =\n groups && groups.length > 0 ? groups.reduce((sum, value) => sum + value, 0) : 6;\n const description = useFieldDescription(id, props[\"aria-describedby\"], helperText, errorText);\n const otpChildren = children ?? buildOtpChildren(groups ?? [], separator);\n\n return (\n <AdsInputOTPChrome\n errorText={errorText}\n errorId={description.errorId}\n helperText={helperText}\n helperId={description.helperId}\n inputId={description.inputId}\n label={label}\n >\n <div className=\"flex w-full items-center gap-sm\">\n <InputOTP\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n id={description.inputId}\n maxLength={totalSlots}\n ref={ref}\n {...props}\n >\n {otpChildren}\n </InputOTP>\n {action ? <span className=\"shrink-0\">{action}</span> : null}\n </div>\n </AdsInputOTPChrome>\n );\n});\nAdsInputOTP.displayName = \"AdsInputOTP\";\n\nconst AdsInputOTPGroup = React.forwardRef<\n React.ElementRef<typeof InputOTPGroup>,\n React.ComponentPropsWithoutRef<typeof InputOTPGroup>\n>(({ className, ...props }, ref) => (\n <InputOTPGroup className={className} ref={ref} {...props} />\n));\nAdsInputOTPGroup.displayName = \"AdsInputOTPGroup\";\n\nconst AdsInputOTPSeparator = React.forwardRef<\n React.ElementRef<typeof InputOTPSeparator>,\n React.ComponentPropsWithoutRef<typeof InputOTPSeparator>\n>(({ className, ...props }, ref) => (\n <InputOTPSeparator\n className={\n className ?? \"h-px w-6 shrink-0 bg-border text-transparent [&_svg]:hidden\"\n }\n ref={ref}\n {...props}\n />\n));\nAdsInputOTPSeparator.displayName = \"AdsInputOTPSeparator\";\n\nconst AdsInputOTPSlot = React.forwardRef<\n React.ElementRef<typeof InputOTPSlot>,\n React.ComponentPropsWithoutRef<typeof InputOTPSlot>\n>(({ className, ...props }, ref) => (\n <InputOTPSlot\n className={[\n \"border-border bg-card text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\",\n \"first:border-r-0 first:rounded-l-radius-md last:border-r last:rounded-r-radius-md\",\n \"data-[active=true]:border-border-focus data-[active=true]:shadow-[0px_0px_0px_3px_rgba(161,161,161,0.5)]\",\n \"h-9 w-9 text-sm leading-5\",\n className,\n ]\n .filter(Boolean)\n .join(\" \")}\n ref={ref}\n {...props}\n />\n));\nAdsInputOTPSlot.displayName = \"AdsInputOTPSlot\";\n\nexport {\n AdsInputOTP,\n AdsInputOTPGroup,\n AdsInputOTPSeparator,\n AdsInputOTPSlot,\n InputOTPGroup,\n InputOTPSeparator,\n InputOTPSlot,\n};\nexport type { AdsInputOTPProps };\n","\"use client\"\n\nimport * as React from \"react\"\nimport { OTPInput, OTPInputContext } from \"input-otp\"\nimport { Dot } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst InputOTP = React.forwardRef<\n React.ElementRef<typeof OTPInput>,\n React.ComponentPropsWithoutRef<typeof OTPInput>\n>(({ className, containerClassName, ...props }, ref) => (\n <OTPInput\n ref={ref}\n containerClassName={cn(\n \"flex items-center gap-2 has-[:disabled]:opacity-50\",\n containerClassName\n )}\n className={cn(\"disabled:cursor-not-allowed\", className)}\n {...props}\n />\n))\nInputOTP.displayName = \"InputOTP\"\n\nconst InputOTPGroup = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ className, ...props }, ref) => (\n <div ref={ref} className={cn(\"flex items-center\", className)} {...props} />\n))\nInputOTPGroup.displayName = \"InputOTPGroup\"\n\nconst InputOTPSlot = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\"> & { index: number }\n>(({ index, className, ...props }, ref) => {\n const inputOTPContext = React.useContext(OTPInputContext)\n const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index]\n\n return (\n <div\n ref={ref}\n className={cn(\n \"relative flex h-10 w-10 items-center justify-center border-y border-r border-input text-sm transition-all first:rounded-l-md first:border-l last:rounded-r-md\",\n isActive && \"z-10 ring-2 ring-ring ring-offset-background\",\n className\n )}\n {...props}\n >\n {char}\n {hasFakeCaret && (\n <div className=\"pointer-events-none absolute inset-0 flex items-center justify-center\">\n <div className=\"h-4 w-px animate-caret-blink bg-foreground duration-1000\" />\n </div>\n )}\n </div>\n )\n})\nInputOTPSlot.displayName = \"InputOTPSlot\"\n\nconst InputOTPSeparator = React.forwardRef<\n React.ElementRef<\"div\">,\n React.ComponentPropsWithoutRef<\"div\">\n>(({ ...props }, ref) => (\n <div ref={ref} role=\"separator\" {...props}>\n <Dot />\n </div>\n))\nInputOTPSeparator.displayName = \"InputOTPSeparator\"\n\nexport { InputOTP, InputOTPGroup, InputOTPSlot, InputOTPSeparator }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../../primitives/button\";\nimport { Input } from \"../../primitives/input\";\nimport {\n AdsPagination,\n AdsPaginationContent,\n AdsPaginationEllipsis,\n AdsPaginationItem,\n} from \"../AdsPagination\";\nimport {\n SelectContent,\n SelectItem,\n Select as SelectRoot,\n SelectTrigger,\n SelectValue,\n} from \"../AdsSelect\";\n\nconst paginationButtonBaseClassName =\n \"inline-flex h-9 min-w-9 items-center justify-center rounded-radius-md border text-sm font-medium leading-5 tracking-normal transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50\";\n\nconst paginationButtonInactiveClassName =\n \"border-transparent bg-transparent px-[10px] text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nconst paginationButtonActiveClassName =\n \"border-border bg-card px-[10px] text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nconst inlineControlClassName =\n \"h-9 rounded-radius-md border border-border bg-card px-md text-sm leading-5 text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] disabled:cursor-not-allowed disabled:opacity-50\";\n\ntype ShowTotalRender = (total: number, range: [number, number]) => React.ReactNode;\n\ntype PaginationToken = number | \"ellipsis\";\ntype AdsDataPaginationVariant = \"default\" | \"compact\";\n\nexport interface AdsDataPaginationClassNames {\n root?: string;\n total?: string;\n pageSizeChanger?: string;\n quickJumper?: string;\n}\n\nexport interface AdsDataPaginationProps {\n current?: number;\n defaultCurrent?: number;\n pageSize?: number;\n defaultPageSize?: number;\n total: number;\n onChange?: (page: number, pageSize: number) => void;\n showTotal?: boolean | ShowTotalRender;\n showSizeChanger?: boolean;\n pageSizeOptions?: number[];\n onPageSizeChange?: (pageSize: number, page: number) => void;\n showQuickJumper?: boolean;\n showFirstLast?: boolean;\n siblingCount?: number;\n boundaryCount?: number;\n variant?: AdsDataPaginationVariant;\n disabled?: boolean;\n className?: string;\n classNames?: AdsDataPaginationClassNames;\n ariaLabel?: string;\n}\n\nfunction clampPage(page: number, totalPages: number) {\n return Math.min(Math.max(1, page), totalPages);\n}\n\nfunction getPaginationRange({\n currentPage,\n totalPages,\n siblingCount,\n boundaryCount,\n}: {\n currentPage: number;\n totalPages: number;\n siblingCount: number;\n boundaryCount: number;\n}) {\n const totalPageNumbers = siblingCount * 2 + 3 + boundaryCount * 2;\n\n if (totalPages <= totalPageNumbers) {\n return Array.from({ length: totalPages }, (_, index) => index + 1);\n }\n\n const leftSiblingIndex = Math.max(currentPage - siblingCount, boundaryCount + 2);\n const rightSiblingIndex = Math.min(\n currentPage + siblingCount,\n totalPages - boundaryCount - 1,\n );\n const shouldShowLeftEllipsis = leftSiblingIndex > boundaryCount + 2;\n const shouldShowRightEllipsis = rightSiblingIndex < totalPages - boundaryCount - 1;\n\n const range: PaginationToken[] = [];\n\n for (let page = 1; page <= boundaryCount; page += 1) {\n range.push(page);\n }\n\n if (shouldShowLeftEllipsis) {\n range.push(\"ellipsis\");\n } else {\n for (let page = boundaryCount + 1; page < leftSiblingIndex; page += 1) {\n range.push(page);\n }\n }\n\n for (let page = leftSiblingIndex; page <= rightSiblingIndex; page += 1) {\n range.push(page);\n }\n\n if (shouldShowRightEllipsis) {\n range.push(\"ellipsis\");\n } else {\n for (let page = rightSiblingIndex + 1; page <= totalPages - boundaryCount; page += 1) {\n range.push(page);\n }\n }\n\n for (\n let page = Math.max(totalPages - boundaryCount + 1, boundaryCount + 1);\n page <= totalPages;\n page += 1\n ) {\n range.push(page);\n }\n\n return range;\n}\n\nfunction interpolate(\n template: string,\n values: Record<string, string | number>,\n) {\n return template.replace(/\\{\\{(\\w+)\\}\\}/g, (_, key: string) => String(values[key] ?? \"\"));\n}\n\nexport function AdsDataPagination({\n current,\n defaultCurrent = 1,\n pageSize,\n defaultPageSize = 10,\n total,\n onChange,\n showTotal = false,\n showSizeChanger = false,\n pageSizeOptions = [10, 20, 50, 100],\n onPageSizeChange,\n showQuickJumper = false,\n showFirstLast = false,\n siblingCount = 1,\n boundaryCount = 1,\n variant = \"default\",\n disabled = false,\n className,\n classNames,\n ariaLabel,\n}: AdsDataPaginationProps) {\n const { messages } = useAdsI18n();\n const [internalCurrent, setInternalCurrent] = React.useState(defaultCurrent);\n const [internalPageSize, setInternalPageSize] = React.useState(defaultPageSize);\n const [quickJumpValue, setQuickJumpValue] = React.useState(\"\");\n const isCurrentControlled = current !== undefined;\n const isPageSizeControlled = pageSize !== undefined;\n const mergedPageSize = Math.max(1, isPageSizeControlled ? pageSize : internalPageSize);\n const totalPages = Math.max(1, Math.ceil(Math.max(total, 0) / mergedPageSize));\n const mergedCurrent = clampPage(\n isCurrentControlled ? current : internalCurrent,\n totalPages,\n );\n const paginationRange = getPaginationRange({\n currentPage: mergedCurrent,\n totalPages,\n siblingCount,\n boundaryCount,\n });\n const rangeStart = total === 0 ? 0 : (mergedCurrent - 1) * mergedPageSize + 1;\n const rangeEnd = total === 0 ? 0 : Math.min(total, mergedCurrent * mergedPageSize);\n const pageSizeValues = Array.from(\n new Set(pageSizeOptions.filter((option) => Number.isFinite(option) && option > 0)),\n );\n const resolvedPageSizeOptions =\n pageSizeValues.length > 0\n ? pageSizeValues\n : [10, 20, 50, 100];\n\n React.useEffect(() => {\n if (!isCurrentControlled && internalCurrent !== mergedCurrent) {\n setInternalCurrent(mergedCurrent);\n }\n }, [internalCurrent, isCurrentControlled, mergedCurrent]);\n\n React.useEffect(() => {\n if (!isPageSizeControlled && internalPageSize !== mergedPageSize) {\n setInternalPageSize(mergedPageSize);\n }\n }, [internalPageSize, isPageSizeControlled, mergedPageSize]);\n\n React.useEffect(() => {\n setQuickJumpValue(String(mergedCurrent));\n }, [mergedCurrent]);\n\n const commitPageChange = React.useCallback(\n (nextPage: number, nextPageSize = mergedPageSize) => {\n const clampedPage = clampPage(nextPage, Math.max(1, Math.ceil(Math.max(total, 0) / nextPageSize)));\n\n if (!isCurrentControlled) {\n setInternalCurrent(clampedPage);\n }\n\n setQuickJumpValue(String(clampedPage));\n\n if (clampedPage !== mergedCurrent || nextPageSize !== mergedPageSize) {\n onChange?.(clampedPage, nextPageSize);\n }\n\n return clampedPage;\n },\n [isCurrentControlled, mergedCurrent, mergedPageSize, onChange, total],\n );\n\n const handlePageSizeChange = React.useCallback(\n (nextValue: string) => {\n const nextPageSize = Number(nextValue);\n\n if (!Number.isFinite(nextPageSize) || nextPageSize <= 0 || nextPageSize === mergedPageSize) {\n return;\n }\n\n if (!isPageSizeControlled) {\n setInternalPageSize(nextPageSize);\n }\n\n const nextPage = clampPage(\n mergedCurrent,\n Math.max(1, Math.ceil(Math.max(total, 0) / nextPageSize)),\n );\n\n onPageSizeChange?.(nextPageSize, nextPage);\n commitPageChange(nextPage, nextPageSize);\n },\n [\n commitPageChange,\n isPageSizeControlled,\n mergedCurrent,\n mergedPageSize,\n onPageSizeChange,\n total,\n ],\n );\n\n const handleQuickJumpSubmit = React.useCallback(() => {\n const trimmedValue = quickJumpValue.trim();\n\n if (!trimmedValue) {\n setQuickJumpValue(String(mergedCurrent));\n return;\n }\n\n const nextPage = Number(trimmedValue);\n\n if (!Number.isFinite(nextPage)) {\n setQuickJumpValue(String(mergedCurrent));\n return;\n }\n\n commitPageChange(nextPage);\n }, [commitPageChange, mergedCurrent, quickJumpValue]);\n\n const totalContent =\n typeof showTotal === \"function\"\n ? showTotal(total, [rangeStart, rangeEnd])\n : showTotal\n ? interpolate(messages.pagination.total, {\n start: rangeStart,\n end: rangeEnd,\n total,\n })\n : null;\n const compactTotalContent = interpolate(messages.pagination.compactTotal, { total });\n const pageStatus = interpolate(messages.pagination.pageStatus, {\n page: mergedCurrent,\n pages: totalPages,\n });\n const shouldShowFirstLast = variant === \"compact\" || showFirstLast;\n const navigationLabel = ariaLabel ?? messages.pagination.navigation;\n const previousDisabled = disabled || mergedCurrent <= 1;\n const nextDisabled = disabled || mergedCurrent >= totalPages;\n const navButtonClassName = cn(\n paginationButtonBaseClassName,\n paginationButtonInactiveClassName,\n \"gap-1 px-md py-sm\",\n );\n\n const renderPageNavigation = () => {\n if (variant === \"compact\") {\n return (\n <div className=\"flex flex-wrap items-center gap-sm\">\n {shouldShowFirstLast ? (\n <Button\n aria-label={messages.pagination.first}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.first}\n </Button>\n ) : null}\n <Button\n aria-label={messages.pagination.previous}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(mergedCurrent - 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.previous}\n </Button>\n <span\n aria-current=\"page\"\n className=\"inline-flex h-9 items-center rounded-radius-md border border-transparent px-sm text-sm font-medium text-foreground\"\n >\n {pageStatus}\n </span>\n <Button\n aria-label={messages.pagination.next}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(mergedCurrent + 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.next}\n </Button>\n {shouldShowFirstLast ? (\n <Button\n aria-label={messages.pagination.last}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(totalPages)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.last}\n </Button>\n ) : null}\n </div>\n );\n }\n\n return (\n <AdsPagination aria-label={navigationLabel}>\n <AdsPaginationContent>\n {shouldShowFirstLast ? (\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.first}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.first}\n </Button>\n </AdsPaginationItem>\n ) : null}\n\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.previous}\n className={navButtonClassName}\n disabled={previousDisabled}\n onClick={() => commitPageChange(mergedCurrent - 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.previous}\n </Button>\n </AdsPaginationItem>\n\n {paginationRange.map((token, index) =>\n token === \"ellipsis\" ? (\n <AdsPaginationItem key={`ellipsis-${index}`}>\n <AdsPaginationEllipsis label={messages.pagination.morePages} />\n </AdsPaginationItem>\n ) : (\n <AdsPaginationItem key={token}>\n <Button\n aria-current={token === mergedCurrent ? \"page\" : undefined}\n className={cn(\n paginationButtonBaseClassName,\n token === mergedCurrent\n ? paginationButtonActiveClassName\n : paginationButtonInactiveClassName,\n )}\n disabled={disabled}\n onClick={() => commitPageChange(token)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {token}\n </Button>\n </AdsPaginationItem>\n ),\n )}\n\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.next}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(mergedCurrent + 1)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.next}\n </Button>\n </AdsPaginationItem>\n\n {shouldShowFirstLast ? (\n <AdsPaginationItem>\n <Button\n aria-label={messages.pagination.last}\n className={navButtonClassName}\n disabled={nextDisabled}\n onClick={() => commitPageChange(totalPages)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {messages.pagination.last}\n </Button>\n </AdsPaginationItem>\n ) : null}\n </AdsPaginationContent>\n </AdsPagination>\n );\n };\n\n return (\n <div\n data-slot=\"ads-data-pagination\"\n className={cn(\n \"flex flex-col gap-md lg:flex-row lg:items-center lg:justify-between\",\n classNames?.root,\n className,\n )}\n >\n <div className=\"flex flex-wrap items-center gap-md text-sm leading-5 text-muted-foreground\">\n {variant === \"compact\" ? (\n <div className={classNames?.total}>{compactTotalContent}</div>\n ) : totalContent ? (\n <div className={classNames?.total}>{totalContent}</div>\n ) : null}\n\n {showSizeChanger ? (\n <div className={cn(\"flex items-center gap-sm\", classNames?.pageSizeChanger)}>\n <span>{messages.pagination.itemsPerPage}</span>\n <SelectRoot\n disabled={disabled}\n onValueChange={handlePageSizeChange}\n value={String(mergedPageSize)}\n >\n <SelectTrigger\n aria-label={messages.pagination.itemsPerPage}\n className={cn(inlineControlClassName, \"w-[132px] px-sm\")}\n >\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {resolvedPageSizeOptions.map((option) => (\n <SelectItem key={option} value={String(option)}>\n {interpolate(messages.pagination.itemsPerPageOption, { value: option })}\n </SelectItem>\n ))}\n </SelectContent>\n </SelectRoot>\n </div>\n ) : null}\n </div>\n\n <div className=\"flex flex-col gap-md sm:flex-row sm:items-center sm:justify-end\">\n {renderPageNavigation()}\n\n {showQuickJumper ? (\n <label\n className={cn(\n \"flex items-center gap-sm text-sm leading-5 text-muted-foreground\",\n classNames?.quickJumper,\n )}\n >\n <span>{messages.pagination.jumpTo}</span>\n <Input\n aria-label={messages.pagination.jumpTo}\n className={cn(inlineControlClassName, \"w-20 px-sm text-center\")}\n disabled={disabled}\n inputMode=\"numeric\"\n onChange={(event) => setQuickJumpValue(event.target.value)}\n onKeyDown={(event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n handleQuickJumpSubmit();\n }\n }}\n type=\"text\"\n value={quickJumpValue}\n />\n </label>\n ) : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport {\n Pagination as PrimitivePagination,\n PaginationContent as PrimitivePaginationContent,\n PaginationItem as PrimitivePaginationItem,\n} from \"../../primitives/pagination\";\n\nconst paginationLinkBaseClassName =\n \"inline-flex h-9 min-w-9 items-center justify-center rounded-radius-md border text-sm font-medium leading-5 tracking-normal transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background\";\n\nconst paginationLinkInactiveClassName =\n \"border-transparent bg-transparent px-[10px] text-foreground shadow-none hover:bg-accent hover:shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nconst paginationLinkActiveClassName =\n \"border-border bg-card px-[10px] text-foreground shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\";\n\nexport type AdsPaginationProps = React.ComponentPropsWithoutRef<typeof PrimitivePagination>;\n\nexport type AdsPaginationContentProps = React.ComponentPropsWithoutRef<\n typeof PrimitivePaginationContent\n>;\n\nexport type AdsPaginationItemProps = React.ComponentPropsWithoutRef<\n typeof PrimitivePaginationItem\n>;\n\nexport interface AdsPaginationLinkProps extends React.ComponentPropsWithoutRef<\"a\"> {\n isActive?: boolean;\n}\n\nexport interface AdsPaginationPreviousProps\n extends Omit<AdsPaginationLinkProps, \"children\"> {\n children?: React.ReactNode;\n}\n\nexport interface AdsPaginationNextProps extends Omit<AdsPaginationLinkProps, \"children\"> {\n children?: React.ReactNode;\n}\n\nexport interface AdsPaginationEllipsisProps\n extends React.ComponentPropsWithoutRef<\"span\"> {\n label?: string;\n}\n\nfunction AdsPagination({ className, ...props }: AdsPaginationProps) {\n return (\n <PrimitivePagination\n className={cn(\"mx-0 w-auto justify-start\", className)}\n {...props}\n />\n );\n}\nAdsPagination.displayName = \"AdsPagination\";\n\nconst AdsPaginationContent = React.forwardRef<\n HTMLUListElement,\n AdsPaginationContentProps\n>(({ className, ...props }, ref) => (\n <PrimitivePaginationContent ref={ref} className={cn(\"gap-1\", className)} {...props} />\n));\nAdsPaginationContent.displayName = \"AdsPaginationContent\";\n\nconst AdsPaginationItem = React.forwardRef<HTMLLIElement, AdsPaginationItemProps>(\n ({ className, ...props }, ref) => (\n <PrimitivePaginationItem ref={ref} className={className} {...props} />\n ),\n);\nAdsPaginationItem.displayName = \"AdsPaginationItem\";\n\nconst AdsPaginationLink = React.forwardRef<HTMLAnchorElement, AdsPaginationLinkProps>(\n ({ className, isActive = false, ...props }, ref) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n paginationLinkBaseClassName,\n isActive ? paginationLinkActiveClassName : paginationLinkInactiveClassName,\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nAdsPaginationLink.displayName = \"AdsPaginationLink\";\n\nconst AdsPaginationPrevious = React.forwardRef<\n HTMLAnchorElement,\n AdsPaginationPreviousProps\n>(({ \"aria-label\": ariaLabel, children, className, ...props }, ref) => {\n const { messages } = useAdsI18n();\n const label = children ?? messages.pagination.previous;\n\n return (\n <AdsPaginationLink\n aria-label={ariaLabel ?? messages.pagination.previous}\n className={cn(\"gap-1 px-md py-sm\", className)}\n ref={ref}\n {...props}\n >\n <ChevronLeft aria-hidden className=\"h-4 w-4\" />\n <span>{label}</span>\n </AdsPaginationLink>\n );\n});\nAdsPaginationPrevious.displayName = \"AdsPaginationPrevious\";\n\nconst AdsPaginationNext = React.forwardRef<HTMLAnchorElement, AdsPaginationNextProps>(\n ({ \"aria-label\": ariaLabel, children, className, ...props }, ref) => {\n const { messages } = useAdsI18n();\n const label = children ?? messages.pagination.next;\n\n return (\n <AdsPaginationLink\n aria-label={ariaLabel ?? messages.pagination.next}\n className={cn(\"gap-1 px-md py-sm\", className)}\n ref={ref}\n {...props}\n >\n <span>{label}</span>\n <ChevronRight aria-hidden className=\"h-4 w-4\" />\n </AdsPaginationLink>\n );\n },\n);\nAdsPaginationNext.displayName = \"AdsPaginationNext\";\n\nfunction AdsPaginationEllipsis({\n className,\n label,\n ...props\n}: AdsPaginationEllipsisProps) {\n const { messages } = useAdsI18n();\n const resolvedLabel = label ?? messages.pagination.morePages;\n\n return (\n <span\n aria-hidden\n className={cn(\n \"inline-flex h-9 w-9 items-center justify-center rounded-radius-md border border-transparent text-foreground\",\n className,\n )}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">{resolvedLabel}</span>\n </span>\n );\n}\nAdsPaginationEllipsis.displayName = \"AdsPaginationEllipsis\";\n\nexport {\n AdsPagination,\n AdsPaginationContent,\n AdsPaginationEllipsis,\n AdsPaginationItem,\n AdsPaginationLink,\n AdsPaginationNext,\n AdsPaginationPrevious,\n};\n","import * as React from \"react\"\nimport { ChevronLeft, ChevronRight, MoreHorizontal } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { ButtonProps, buttonVariants } from \"@/primitives/button\"\n\nconst Pagination = ({ className, ...props }: React.ComponentProps<\"nav\">) => (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn(\"mx-auto flex w-full justify-center\", className)}\n {...props}\n />\n)\nPagination.displayName = \"Pagination\"\n\nconst PaginationContent = React.forwardRef<\n HTMLUListElement,\n React.ComponentProps<\"ul\">\n>(({ className, ...props }, ref) => (\n <ul\n ref={ref}\n className={cn(\"flex flex-row items-center gap-1\", className)}\n {...props}\n />\n))\nPaginationContent.displayName = \"PaginationContent\"\n\nconst PaginationItem = React.forwardRef<\n HTMLLIElement,\n React.ComponentProps<\"li\">\n>(({ className, ...props }, ref) => (\n <li ref={ref} className={cn(\"\", className)} {...props} />\n))\nPaginationItem.displayName = \"PaginationItem\"\n\ntype PaginationLinkProps = {\n isActive?: boolean\n} & Pick<ButtonProps, \"size\"> &\n React.ComponentProps<\"a\">\n\nconst PaginationLink = ({\n className,\n isActive,\n size = \"icon\",\n ...props\n}: PaginationLinkProps) => (\n <a\n aria-current={isActive ? \"page\" : undefined}\n className={cn(\n buttonVariants({\n variant: isActive ? \"outline\" : \"ghost\",\n size,\n }),\n className\n )}\n {...props}\n />\n)\nPaginationLink.displayName = \"PaginationLink\"\n\nconst PaginationPrevious = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn(\"gap-1 pl-2.5\", className)}\n {...props}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n <span>Previous</span>\n </PaginationLink>\n)\nPaginationPrevious.displayName = \"PaginationPrevious\"\n\nconst PaginationNext = ({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) => (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn(\"gap-1 pr-2.5\", className)}\n {...props}\n >\n <span>Next</span>\n <ChevronRight className=\"h-4 w-4\" />\n </PaginationLink>\n)\nPaginationNext.displayName = \"PaginationNext\"\n\nconst PaginationEllipsis = ({\n className,\n ...props\n}: React.ComponentProps<\"span\">) => (\n <span\n aria-hidden\n className={cn(\"flex h-9 w-9 items-center justify-center\", className)}\n {...props}\n >\n <MoreHorizontal className=\"h-4 w-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n)\nPaginationEllipsis.displayName = \"PaginationEllipsis\"\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { AdsClearButton } from \"../../lib/adsClearButton\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n} from \"../../primitives/select\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\ntype SelectRootProps = React.ComponentPropsWithoutRef<typeof Select>;\n\nconst selectTriggerBaseClassName =\n \"h-9 rounded-radius-md border border-border bg-card px-md py-2 text-sm leading-5 shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus:border-border-focus focus:ring-[3px] focus:ring-[rgba(161,161,161,0.5)] focus:ring-offset-0 data-[placeholder]:text-[var(--muted-foreground)]\";\n\nconst selectContentBaseClassName =\n \"rounded-radius-md border-border bg-popover text-popover-foreground shadow-[0px_8px_24px_rgba(0,0,0,0.22)]\";\n\nexport interface AdsSelectProps extends SelectRootProps {\n clearable?: boolean;\n clearButtonLabel?: string;\n contentClassName?: string;\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n label?: React.ReactNode;\n onClear?: () => void;\n onValueChange?: (value: string | undefined) => void;\n placeholder?: React.ReactNode;\n triggerClassName?: string;\n value?: string;\n defaultValue?: string;\n}\n\nexport function AdsSelect({\n children,\n clearable = false,\n clearButtonLabel,\n contentClassName,\n defaultValue,\n descriptionPlacement = \"below\",\n disabled,\n errorText,\n helperText,\n id,\n label,\n onClear,\n onValueChange,\n placeholder,\n triggerClassName,\n value,\n ...props\n}: AdsSelectProps) {\n const { messages } = useAdsI18n();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = React.useState<string | undefined>(\n defaultValue,\n );\n const resolvedValue = isControlled ? value : internalValue;\n const selectKey = `${isControlled ? \"controlled\" : \"uncontrolled\"}-${resolvedValue ?? \"__empty__\"}`;\n const canClear = clearable && !disabled && resolvedValue !== undefined;\n const description = useAdsFieldDescription({\n describedBy: undefined,\n errorText,\n helperText,\n id,\n });\n const resolvedClearButtonLabel = clearButtonLabel ?? messages.select.clear;\n\n const handleValueChange = React.useCallback(\n (nextValue: string) => {\n if (!isControlled) {\n setInternalValue(nextValue);\n }\n onValueChange?.(nextValue);\n },\n [isControlled, onValueChange],\n );\n\n const handleClear = React.useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!isControlled) {\n setInternalValue(undefined);\n }\n onValueChange?.(undefined);\n onClear?.();\n },\n [isControlled, onClear, onValueChange],\n );\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>\n {helperText}\n </AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? (\n <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel>\n ) : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <Select\n key={selectKey}\n {...props}\n disabled={disabled}\n onValueChange={handleValueChange}\n {...(resolvedValue !== undefined ? { value: resolvedValue } : {})}\n >\n <div className=\"relative\">\n <SelectTrigger\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={cn(\n selectTriggerBaseClassName,\n adsTextColorClassName.card,\n canClear\n ? \"pr-16 [&>svg]:absolute [&>svg]:right-3 [&>svg]:top-1/2 [&>svg]:-translate-y-1/2\"\n : undefined,\n triggerClassName,\n )}\n id={description.inputId}\n >\n <SelectValue placeholder={placeholder} />\n </SelectTrigger>\n {canClear ? (\n <AdsClearButton\n aria-label={resolvedClearButtonLabel}\n className=\"absolute right-8 top-1/2 -translate-y-1/2\"\n onClick={handleClear}\n />\n ) : null}\n </div>\n <SelectContent\n className={cn(selectContentBaseClassName, contentClassName)}\n >\n {children}\n </SelectContent>\n </Select>\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n}\n\nexport {\n Select,\n SelectContent,\n SelectGroup,\n SelectItem,\n SelectLabel,\n SelectScrollDownButton,\n SelectScrollUpButton,\n SelectSeparator,\n SelectTrigger,\n SelectValue,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, Filter } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { Button } from \"../../primitives/button\";\nimport { Checkbox } from \"../AdsCheckbox\";\nimport { AdsInput } from \"../AdsInput\";\nimport {\n AdsDataPagination,\n type AdsDataPaginationClassNames,\n} from \"../AdsDataPagination\";\nimport {\n AdsEmpty,\n AdsEmptyContent,\n AdsEmptyDescription,\n AdsEmptyHeader,\n AdsEmptyTitle,\n} from \"../AdsEmpty\";\nimport {\n AdsPopover,\n AdsPopoverContent,\n AdsPopoverTrigger,\n} from \"../AdsPopover\";\nimport { AdsSkeleton } from \"../AdsSkeleton\";\nimport { AdsSpinner } from \"../AdsSpinner\";\nimport {\n AdsTableBody,\n AdsTableCell,\n AdsTableCol,\n AdsTableColGroup,\n AdsTableExpandCell,\n AdsTableHead,\n AdsTableHeader,\n AdsTableRoot,\n AdsTableRow,\n AdsTableScrollArea,\n AdsTableSelectionCell,\n AdsTableSurface,\n} from \"../AdsTable\";\nimport { RadioGroup } from \"../AdsRadioGroup\";\n\ntype AdsDataTableKey = React.Key;\ntype AdsDataTableAlign = \"left\" | \"center\" | \"right\";\nexport type AdsDataTableSortOrder = \"ascend\" | \"descend\" | null;\ntype AdsDataTableSize = \"small\" | \"middle\" | \"large\";\ntype DataKey = string | number;\ntype AdsDataTablePaginationMode = \"client\" | \"server\";\ntype AdsDataTableFilterMode = \"client\" | \"server\";\nexport type AdsDataTableLoadingVariant = \"skeleton\" | \"spinner\";\nexport type AdsDataTableExpandedRowSurface = \"inset\" | \"plain\" | \"subtle\";\ntype AdsDataTableResizeState = {\n columnKey: string;\n minWidth: number;\n startWidth: number;\n startX: number;\n};\ntype AdsDataTableEllipsisConfig = {\n maxWidth?: number | string;\n showTitle?: boolean;\n};\ntype AdsDataTableCellRendererContext<RecordType extends object> = {\n value: unknown;\n formattedValue: unknown;\n record: RecordType;\n data: RecordType;\n index: number;\n column: AdsDataTableColumn<RecordType>;\n};\n\nexport interface AdsDataTableColumn<RecordType extends object> {\n title?: React.ReactNode;\n headerName?: React.ReactNode;\n dataIndex?: DataKey | readonly DataKey[];\n field?: string;\n key?: React.Key;\n width?: number | string;\n minWidth?: number | string;\n flex?: number;\n resizable?: boolean;\n align?: AdsDataTableAlign;\n className?: string;\n headerClassName?: string;\n cellClassName?: string;\n ellipsis?: boolean | AdsDataTableEllipsisConfig;\n sorter?: boolean | ((a: RecordType, b: RecordType) => number);\n sortOrder?: AdsDataTableSortOrder;\n defaultSortOrder?: AdsDataTableSortOrder;\n filter?:\n | boolean\n | ((value: string, record: RecordType, index: number, rawValue: unknown) => boolean);\n filterMode?: AdsDataTableFilterMode;\n filterPlaceholder?: string;\n filterValue?: string;\n defaultFilterValue?: string;\n onFilterChange?: (value: string) => void;\n valueGetter?: (record: RecordType, index: number) => unknown;\n valueFormatter?: (\n value: unknown,\n record: RecordType,\n index: number,\n ) => React.ReactNode;\n cellRenderer?: (\n context: AdsDataTableCellRendererContext<RecordType>,\n ) => React.ReactNode;\n render?: (\n value: unknown,\n record: RecordType,\n index: number,\n ) => React.ReactNode;\n}\n\nexport interface AdsDataTablePaginationConfig {\n mode?: AdsDataTablePaginationMode;\n current?: number;\n defaultCurrent?: number;\n pageSize?: number;\n defaultPageSize?: number;\n total?: number;\n pageSizeOptions?: number[];\n showSizeChanger?: boolean;\n showQuickJumper?: boolean;\n showFirstLast?: boolean;\n showTotal?: boolean | ((total: number, range: [number, number]) => React.ReactNode);\n onChange?: (page: number, pageSize: number) => void;\n onPageSizeChange?: (pageSize: number, page: number) => void;\n classNames?: AdsDataPaginationClassNames;\n variant?: React.ComponentProps<typeof AdsDataPagination>[\"variant\"];\n}\n\nexport interface AdsDataTableRowSelection<RecordType extends object> {\n type?: \"checkbox\" | \"radio\";\n selectedRowKeys?: AdsDataTableKey[];\n defaultSelectedRowKeys?: AdsDataTableKey[];\n hideSelectAll?: boolean;\n onChange?: (\n selectedRowKeys: AdsDataTableKey[],\n selectedRows: RecordType[],\n ) => void;\n columnWidth?: number | string;\n}\n\nexport interface AdsDataTableExpandable<RecordType extends object> {\n expandedRowRender?: (record: RecordType, index: number) => React.ReactNode;\n expandedRowKeys?: AdsDataTableKey[];\n defaultExpandedRowKeys?: AdsDataTableKey[];\n expandRowByClick?: boolean;\n rowExpandable?: (record: RecordType) => boolean;\n onExpand?: (expanded: boolean, record: RecordType) => void;\n}\n\nexport interface AdsDataTableSortState<RecordType extends object> {\n column: AdsDataTableColumn<RecordType> | null;\n columnKey: string;\n order: AdsDataTableSortOrder;\n}\n\nexport interface AdsDataTableProps<RecordType extends object> {\n columns: AdsDataTableColumn<RecordType>[];\n dataSource?: RecordType[];\n rowKey?:\n | DataKey\n | ((record: RecordType, index: number) => AdsDataTableKey);\n loading?: boolean;\n loadingVariant?: AdsDataTableLoadingVariant;\n expandedRowSurface?: AdsDataTableExpandedRowSurface;\n emptyText?: React.ReactNode;\n emptyState?: React.ReactNode;\n rowClassName?:\n | string\n | ((record: RecordType, index: number) => string | undefined);\n size?: AdsDataTableSize;\n pagination?: false | AdsDataTablePaginationConfig;\n rowSelection?: AdsDataTableRowSelection<RecordType>;\n expandable?: AdsDataTableExpandable<RecordType>;\n scroll?: {\n x?: number | string;\n y?: number | string;\n };\n sticky?: boolean;\n fill?: boolean;\n footer?: React.ReactNode;\n className?: string;\n tableClassName?: string;\n classNames?: {\n emptyRowCell?: string;\n expandedRowContent?: string;\n paginationContainer?: string;\n };\n onSortChange?: (sortState: AdsDataTableSortState<RecordType> | null) => void;\n onRowClick?: (\n record: RecordType,\n index: number,\n event: React.MouseEvent<HTMLTableRowElement>,\n ) => void;\n suppressRowClickSelection?: boolean;\n}\n\nconst SKELETON_ROW_COUNT = 4;\nconst FLEX_WIDTH_UNIT = 160;\n\nconst sizeClassNames: Record<AdsDataTableSize, { cell: string; head: string; bodyHeight: number; headHeight: number }> = {\n small: {\n bodyHeight: 32,\n cell: \"py-1.5 text-xs leading-4\",\n headHeight: 32,\n head: \"h-8 py-1.5 text-xs leading-4\",\n },\n middle: {\n bodyHeight: 40,\n cell: \"py-2 text-sm leading-5\",\n headHeight: 40,\n head: \"h-10 py-2 text-sm leading-5\",\n },\n large: {\n bodyHeight: 48,\n cell: \"py-3 text-base leading-6\",\n headHeight: 48,\n head: \"h-12 py-3 text-base leading-6\",\n },\n};\n\nfunction getSpinnerLoadingHeight(\n scrollY: number | string | undefined,\n density: (typeof sizeClassNames)[AdsDataTableSize],\n) {\n if (typeof scrollY === \"number\") {\n return Math.max(scrollY - density.headHeight, density.bodyHeight * SKELETON_ROW_COUNT);\n }\n\n if (typeof scrollY === \"string\") {\n return `max(calc(${scrollY} - ${density.headHeight}px), ${density.bodyHeight * SKELETON_ROW_COUNT}px)`;\n }\n\n return density.bodyHeight * SKELETON_ROW_COUNT;\n}\n\nfunction getColumnKey<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n index: number,\n) {\n if (column.key !== undefined) {\n return String(column.key);\n }\n\n if (column.field) {\n return column.field;\n }\n\n if (Array.isArray(column.dataIndex)) {\n return column.dataIndex.join(\".\");\n }\n\n if (column.dataIndex !== undefined) {\n return String(column.dataIndex);\n }\n\n return `column-${index}`;\n}\n\nfunction getValueByFieldPath<RecordType extends object>(\n record: RecordType,\n field?: string,\n) {\n if (!field) {\n return undefined;\n }\n\n return field.split(\".\").reduce<unknown>((value, key) => {\n if (value && typeof value === \"object\") {\n return (value as Record<string, unknown>)[key];\n }\n\n return undefined;\n }, record);\n}\n\nfunction getColumnValue<RecordType extends object>(\n record: RecordType,\n dataIndex?: AdsDataTableColumn<RecordType>[\"dataIndex\"],\n) {\n if (dataIndex === undefined) {\n return undefined;\n }\n\n if (Array.isArray(dataIndex)) {\n return dataIndex.reduce<unknown>((value, key) => {\n if (value && typeof value === \"object\") {\n return (value as Record<string, unknown>)[String(key)];\n }\n\n return undefined;\n }, record);\n }\n\n return (record as Record<string, unknown>)[String(dataIndex)];\n}\n\nfunction resolveRowKey<RecordType extends object>(\n record: RecordType,\n index: number,\n rowKey?:\n | DataKey\n | ((record: RecordType, index: number) => AdsDataTableKey),\n) {\n if (typeof rowKey === \"function\") {\n return rowKey(record, index);\n }\n\n if (rowKey !== undefined) {\n const value = (record as Record<string, unknown>)[String(rowKey)];\n if (value !== undefined) {\n return value as AdsDataTableKey;\n }\n }\n\n const fallbackId = (record as Record<string, unknown>).id;\n return (fallbackId as AdsDataTableKey | undefined) ?? index;\n}\n\nfunction compareValues(valueA: unknown, valueB: unknown) {\n if (typeof valueA === \"number\" && typeof valueB === \"number\") {\n return valueA - valueB;\n }\n\n return String(valueA ?? \"\").localeCompare(String(valueB ?? \"\"));\n}\n\nfunction toPixelWidth(value: number | string | undefined) {\n if (typeof value === \"number\" && Number.isFinite(value)) {\n return value;\n }\n\n if (typeof value === \"string\") {\n const matched = Number.parseFloat(value);\n return Number.isFinite(matched) ? matched : undefined;\n }\n\n return undefined;\n}\n\nfunction normalizeFilterValue(value: unknown) {\n if (value === null || value === undefined) {\n return \"\";\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n return String(value);\n }\n\n return JSON.stringify(value);\n}\n\nfunction getResolvedColumnWidth<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n overrideWidth?: number | string,\n) {\n if (overrideWidth !== undefined) {\n return overrideWidth;\n }\n\n if (column.width !== undefined) {\n return column.width;\n }\n\n if (column.flex !== undefined && Number.isFinite(column.flex) && column.flex > 0) {\n return `${Math.max(column.flex, 1) * FLEX_WIDTH_UNIT}px`;\n }\n\n return undefined;\n}\n\nfunction getCellStyle<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n overrideWidth?: number | string,\n): React.CSSProperties | undefined {\n const style: React.CSSProperties = {};\n\n const resolvedWidth = getResolvedColumnWidth(column, overrideWidth);\n\n if (resolvedWidth !== undefined) {\n style.width = resolvedWidth;\n }\n\n if (column.minWidth !== undefined) {\n style.minWidth = column.minWidth;\n }\n\n if (column.align !== undefined) {\n style.textAlign = column.align;\n }\n\n return Object.keys(style).length > 0 ? style : undefined;\n}\n\nfunction renderCellValue(\n value: unknown,\n ellipsis?: AdsDataTableColumn<object>[\"ellipsis\"],\n) {\n if (React.isValidElement(value)) {\n return value;\n }\n\n if (value === null || value === undefined) {\n return \"\";\n }\n\n const stringValue =\n typeof value === \"string\" || typeof value === \"number\"\n ? String(value)\n : JSON.stringify(value);\n\n if (ellipsis) {\n const shouldShowTitle = typeof ellipsis === \"object\" ? ellipsis.showTitle !== false : true;\n const maxWidth = typeof ellipsis === \"object\" ? ellipsis.maxWidth : undefined;\n\n return (\n <div\n className=\"truncate\"\n style={maxWidth !== undefined ? { maxWidth } : undefined}\n title={shouldShowTitle ? stringValue : undefined}\n >\n {stringValue}\n </div>\n );\n }\n\n return stringValue;\n}\n\nfunction getColumnHeader<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n columnKey: string,\n) {\n return column.title ?? column.headerName ?? columnKey;\n}\n\nfunction getColumnRawValue<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n record: RecordType,\n index: number,\n) {\n if (column.valueGetter) {\n return column.valueGetter(record, index);\n }\n\n if (column.field) {\n return getValueByFieldPath(record, column.field);\n }\n\n return getColumnValue(record, column.dataIndex);\n}\n\nfunction resolveRenderedCellContent<RecordType extends object>(\n column: AdsDataTableColumn<RecordType>,\n record: RecordType,\n index: number,\n) {\n const rawValue = getColumnRawValue(column, record, index);\n const formattedValue = column.valueFormatter\n ? column.valueFormatter(rawValue, record, index)\n : rawValue;\n\n if (column.render) {\n return column.render(formattedValue, record, index);\n }\n\n if (column.cellRenderer) {\n return column.cellRenderer({\n value: rawValue,\n formattedValue,\n record,\n data: record,\n index,\n column,\n });\n }\n\n return formattedValue;\n}\n\nfunction shouldIgnoreRowClick(event: React.MouseEvent<HTMLTableRowElement>) {\n const target = event.target;\n if (!(target instanceof HTMLElement)) {\n return false;\n }\n\n return Boolean(\n target.closest(\n [\n \"a\",\n \"button\",\n \"input\",\n \"select\",\n \"textarea\",\n \"[role='checkbox']\",\n \"[role='radio']\",\n \"[role='button']\",\n \"[data-ads-row-click-stop]\",\n ].join(\",\"),\n ),\n );\n}\n\nfunction getInitialSortState<RecordType extends object>(\n columns: AdsDataTableColumn<RecordType>[],\n) {\n const columnIndex = columns.findIndex((column) => column.defaultSortOrder !== undefined);\n\n if (columnIndex === -1) {\n return null;\n }\n\n const column = columns[columnIndex];\n const order = column.defaultSortOrder ?? null;\n\n if (order === null) {\n return null;\n }\n\n return {\n column,\n columnKey: getColumnKey(column, columnIndex),\n order,\n } satisfies AdsDataTableSortState<RecordType>;\n}\n\nfunction getInitialFilterValues<RecordType extends object>(\n columns: AdsDataTableColumn<RecordType>[],\n) {\n return columns.reduce<Record<string, string>>((accumulator, column, index) => {\n const columnKey = getColumnKey(column, index);\n const value = column.filterValue ?? column.defaultFilterValue;\n\n if (value !== undefined) {\n accumulator[columnKey] = value;\n }\n\n return accumulator;\n }, {});\n}\n\nexport function AdsDataTable<RecordType extends object>({\n className,\n columns,\n dataSource = [],\n rowKey,\n loading = false,\n loadingVariant = \"skeleton\",\n expandedRowSurface = \"inset\",\n emptyText,\n emptyState,\n rowClassName,\n size = \"middle\",\n pagination = false,\n rowSelection,\n expandable,\n scroll,\n sticky = false,\n fill = false,\n footer,\n tableClassName,\n classNames,\n onSortChange,\n onRowClick,\n suppressRowClickSelection = true,\n}: AdsDataTableProps<RecordType>) {\n const { messages } = useAdsI18n();\n const resolvedColumns = React.useMemo(() => columns.filter(Boolean), [columns]);\n const [internalSortState, setInternalSortState] = React.useState<AdsDataTableSortState<RecordType> | null>(\n () => getInitialSortState(resolvedColumns),\n );\n const [internalSelectedKeys, setInternalSelectedKeys] = React.useState<AdsDataTableKey[]>(\n rowSelection?.defaultSelectedRowKeys ?? rowSelection?.selectedRowKeys ?? [],\n );\n const [internalFilterValues, setInternalFilterValues] = React.useState<Record<string, string>>(\n () => getInitialFilterValues(resolvedColumns),\n );\n const [internalExpandedKeys, setInternalExpandedKeys] = React.useState<AdsDataTableKey[]>(\n expandable?.defaultExpandedRowKeys ?? expandable?.expandedRowKeys ?? [],\n );\n const [internalColumnWidths, setInternalColumnWidths] = React.useState<Record<string, number>>({});\n const [internalCurrentPage, setInternalCurrentPage] = React.useState(\n pagination !== false ? pagination.defaultCurrent ?? pagination.current ?? 1 : 1,\n );\n const [internalPageSize, setInternalPageSize] = React.useState(\n pagination !== false ? pagination.defaultPageSize ?? pagination.pageSize ?? 10 : 10,\n );\n const [activeResize, setActiveResize] = React.useState<AdsDataTableResizeState | null>(null);\n\n React.useEffect(() => {\n if (rowSelection?.selectedRowKeys !== undefined) {\n setInternalSelectedKeys(rowSelection.selectedRowKeys);\n }\n }, [rowSelection?.selectedRowKeys]);\n\n React.useEffect(() => {\n if (expandable?.expandedRowKeys !== undefined) {\n setInternalExpandedKeys(expandable.expandedRowKeys);\n }\n }, [expandable?.expandedRowKeys]);\n\n React.useEffect(() => {\n if (pagination !== false && pagination.current !== undefined) {\n setInternalCurrentPage(pagination.current);\n }\n }, [pagination]);\n\n React.useEffect(() => {\n if (pagination !== false && pagination.pageSize !== undefined) {\n setInternalPageSize(pagination.pageSize);\n }\n }, [pagination]);\n\n React.useEffect(() => {\n setInternalFilterValues((previous) => {\n const next = { ...previous };\n let hasChanged = false;\n\n resolvedColumns.forEach((column, index) => {\n const columnKey = getColumnKey(column, index);\n if (column.filterValue !== undefined) {\n if (next[columnKey] !== column.filterValue) {\n next[columnKey] = column.filterValue;\n hasChanged = true;\n }\n return;\n }\n\n if (!(columnKey in next) && column.defaultFilterValue !== undefined) {\n next[columnKey] = column.defaultFilterValue;\n hasChanged = true;\n }\n });\n\n return hasChanged ? next : previous;\n });\n }, [resolvedColumns]);\n\n const controlledSortState = React.useMemo(() => {\n const columnIndex = resolvedColumns.findIndex((column) => column.sortOrder !== undefined);\n\n if (columnIndex === -1) {\n return null;\n }\n\n const column = resolvedColumns[columnIndex];\n return {\n column,\n columnKey: getColumnKey(column, columnIndex),\n order: column.sortOrder ?? null,\n } satisfies AdsDataTableSortState<RecordType>;\n }, [resolvedColumns]);\n\n const sortState = controlledSortState ?? internalSortState;\n const selectedKeys = rowSelection?.selectedRowKeys ?? internalSelectedKeys;\n const expandedKeys = expandable?.expandedRowKeys ?? internalExpandedKeys;\n const hasSelectionColumn = Boolean(rowSelection);\n const hasExpandableColumn = Boolean(expandable?.expandedRowRender);\n const density = sizeClassNames[size];\n const columnCount =\n resolvedColumns.length + Number(hasSelectionColumn) + Number(hasExpandableColumn);\n const paginationMode = pagination === false ? \"client\" : (pagination.mode ?? \"client\");\n const allowsRowSelectionByClick = Boolean(rowSelection) && !suppressRowClickSelection;\n const spinnerLoadingHeight = React.useMemo(\n () => getSpinnerLoadingHeight(scroll?.y, density),\n [density, scroll?.y],\n );\n const expandedRowContentClassName =\n expandedRowSurface === \"plain\"\n ? \"bg-transparent p-4\"\n : expandedRowSurface === \"subtle\"\n ? \"mx-6 my-4 rounded-[20px] border border-border bg-transparent p-4\"\n : \"border-t border-border bg-popover/40 p-4\";\n\n const filterValues = React.useMemo(\n () =>\n resolvedColumns.reduce<Record<string, string>>((accumulator, column, index) => {\n const columnKey = getColumnKey(column, index);\n accumulator[columnKey] = column.filterValue ?? internalFilterValues[columnKey] ?? \"\";\n return accumulator;\n }, {}),\n [internalFilterValues, resolvedColumns],\n );\n\n const filteredData = React.useMemo(() => {\n const filterableColumns = resolvedColumns.filter((column) => column.filter);\n if (filterableColumns.length === 0) {\n return dataSource;\n }\n\n return dataSource.filter((record, index) =>\n filterableColumns.every((column) => {\n const columnKey = getColumnKey(column, resolvedColumns.indexOf(column));\n const filterValue = filterValues[columnKey]?.trim();\n\n if (!filterValue || column.filterMode === \"server\") {\n return true;\n }\n\n const rawValue = getColumnRawValue(column, record, index);\n\n if (typeof column.filter === \"function\") {\n return column.filter(filterValue, record, index, rawValue);\n }\n\n return normalizeFilterValue(rawValue)\n .toLowerCase()\n .includes(filterValue.toLowerCase());\n }),\n );\n }, [dataSource, filterValues, resolvedColumns]);\n\n const sortedData = React.useMemo(() => {\n if (!sortState || !sortState.column || sortState.order === null) {\n return filteredData;\n }\n\n const column = sortState.column;\n const sortable = column.sorter;\n\n if (!sortable) {\n return filteredData;\n }\n\n const sorterFn =\n typeof sortable === \"function\"\n ? sortable\n : (a: RecordType, b: RecordType) => {\n const indexA = filteredData.indexOf(a);\n const indexB = filteredData.indexOf(b);\n return compareValues(\n getColumnRawValue(column, a, indexA),\n getColumnRawValue(column, b, indexB),\n );\n };\n\n const nextData = [...filteredData].sort(sorterFn);\n return sortState.order === \"descend\" ? nextData.reverse() : nextData;\n }, [filteredData, sortState]);\n\n const resolvedTotal =\n pagination === false ? sortedData.length : (pagination.total ?? sortedData.length);\n const currentPageSize =\n pagination === false\n ? Math.max(sortedData.length, 1)\n : Math.max(1, pagination.pageSize ?? internalPageSize);\n const totalPages =\n pagination === false\n ? 1\n : Math.max(1, Math.ceil(Math.max(resolvedTotal, 0) / currentPageSize));\n const currentPage =\n pagination === false\n ? 1\n : Math.min(\n Math.max(1, pagination.current ?? internalCurrentPage),\n totalPages,\n );\n\n React.useEffect(() => {\n if (pagination === false || pagination.current !== undefined) {\n return;\n }\n\n if (internalCurrentPage !== currentPage) {\n setInternalCurrentPage(currentPage);\n }\n }, [currentPage, internalCurrentPage, pagination]);\n\n const paginatedData = React.useMemo(() => {\n if (pagination === false || paginationMode === \"server\") {\n return sortedData;\n }\n\n const start = (currentPage - 1) * currentPageSize;\n return sortedData.slice(start, start + currentPageSize);\n }, [currentPage, currentPageSize, pagination, paginationMode, sortedData]);\n\n const handleSortChange = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string, nextOrder: AdsDataTableSortOrder) => {\n const nextSortState =\n nextOrder === null\n ? null\n : ({\n column,\n columnKey,\n order: nextOrder,\n } satisfies AdsDataTableSortState<RecordType>);\n\n if (controlledSortState === null) {\n setInternalSortState(nextSortState);\n }\n\n onSortChange?.(nextSortState);\n },\n [controlledSortState, onSortChange],\n );\n\n const handleFilterChange = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string, nextValue: string) => {\n if (column.filterValue === undefined) {\n setInternalFilterValues((previous) => ({\n ...previous,\n [columnKey]: nextValue,\n }));\n }\n\n if (pagination !== false && pagination.current === undefined) {\n setInternalCurrentPage(1);\n }\n\n column.onFilterChange?.(nextValue);\n },\n [pagination],\n );\n\n const updateSelection = React.useCallback(\n (nextKeys: AdsDataTableKey[]) => {\n if (!rowSelection) {\n return;\n }\n\n if (rowSelection.selectedRowKeys === undefined) {\n setInternalSelectedKeys(nextKeys);\n }\n\n const selectedRows = dataSource.filter((record, index) =>\n nextKeys.includes(resolveRowKey(record, index, rowKey)),\n );\n rowSelection.onChange?.(nextKeys, selectedRows);\n },\n [dataSource, rowKey, rowSelection],\n );\n\n const toggleSelectionFromRowClick = React.useCallback(\n (record: RecordType, recordKey: AdsDataTableKey) => {\n if (!allowsRowSelectionByClick || !rowSelection) {\n return;\n }\n\n if (rowSelection.type === \"radio\") {\n updateSelection([recordKey]);\n return;\n }\n\n const nextKeys = selectedKeys.includes(recordKey)\n ? selectedKeys.filter((key) => key !== recordKey)\n : [...selectedKeys, recordKey];\n updateSelection(Array.from(new Set(nextKeys)));\n },\n [allowsRowSelectionByClick, rowSelection, selectedKeys, updateSelection],\n );\n\n const toggleExpanded = React.useCallback(\n (record: RecordType, recordKey: AdsDataTableKey) => {\n if (!expandable?.expandedRowRender) {\n return;\n }\n\n if (expandable.rowExpandable && !expandable.rowExpandable(record)) {\n return;\n }\n\n const isExpanded = expandedKeys.includes(recordKey);\n const nextExpandedKeys = isExpanded\n ? expandedKeys.filter((key) => key !== recordKey)\n : [...expandedKeys, recordKey];\n\n if (expandable.expandedRowKeys === undefined) {\n setInternalExpandedKeys(nextExpandedKeys);\n }\n\n expandable.onExpand?.(!isExpanded, record);\n },\n [expandable, expandedKeys],\n );\n\n const renderedEmptyState =\n emptyState ?? (\n <AdsEmpty className=\"min-h-[220px] py-12\">\n <AdsEmptyContent>\n <AdsEmptyHeader>\n <AdsEmptyTitle>{emptyText ?? messages.table.noDataAvailable}</AdsEmptyTitle>\n {typeof emptyText === \"string\" ? null : (\n <AdsEmptyDescription>{messages.table.noDataAvailable}</AdsEmptyDescription>\n )}\n </AdsEmptyHeader>\n </AdsEmptyContent>\n </AdsEmpty>\n );\n\n const handlePaginationChange = React.useCallback(\n (page: number, nextPageSize: number) => {\n if (pagination === false) {\n return;\n }\n\n if (pagination.current === undefined) {\n setInternalCurrentPage(page);\n }\n\n if (pagination.pageSize === undefined && nextPageSize !== currentPageSize) {\n setInternalPageSize(nextPageSize);\n }\n\n pagination.onChange?.(page, nextPageSize);\n },\n [currentPageSize, pagination],\n );\n\n const handlePageSizeChange = React.useCallback(\n (nextPageSize: number, page: number) => {\n if (pagination === false) {\n return;\n }\n\n if (pagination.pageSize === undefined) {\n setInternalPageSize(nextPageSize);\n }\n\n if (pagination.current === undefined) {\n setInternalCurrentPage(page);\n }\n\n pagination.onPageSizeChange?.(nextPageSize, page);\n },\n [pagination],\n );\n\n const visibleRowEntries = React.useMemo(\n () =>\n paginatedData.map((record, index) => ({\n key: resolveRowKey(record, index, rowKey),\n record,\n })),\n [paginatedData, rowKey],\n );\n const visibleSelectableKeys = React.useMemo(\n () => visibleRowEntries.map((entry) => entry.key),\n [visibleRowEntries],\n );\n const selectedVisibleCount = React.useMemo(\n () => visibleSelectableKeys.filter((key) => selectedKeys.includes(key)).length,\n [selectedKeys, visibleSelectableKeys],\n );\n const allVisibleRowsSelected =\n visibleSelectableKeys.length > 0 && selectedVisibleCount === visibleSelectableKeys.length;\n const someVisibleRowsSelected =\n selectedVisibleCount > 0 && selectedVisibleCount < visibleSelectableKeys.length;\n\n const getColumnWidthOverride = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string) =>\n internalColumnWidths[columnKey] ?? getResolvedColumnWidth(column),\n [internalColumnWidths],\n );\n\n const startColumnResize = React.useCallback(\n (\n event: React.MouseEvent<HTMLSpanElement>,\n column: AdsDataTableColumn<RecordType>,\n columnKey: string,\n ) => {\n event.preventDefault();\n event.stopPropagation();\n\n const startWidth =\n toPixelWidth(internalColumnWidths[columnKey]) ??\n toPixelWidth(getResolvedColumnWidth(column)) ??\n toPixelWidth(column.minWidth) ??\n FLEX_WIDTH_UNIT;\n const minWidth = Math.max(toPixelWidth(column.minWidth) ?? 96, 48);\n\n const resizeState = {\n columnKey,\n minWidth,\n startWidth,\n startX: event.clientX,\n } satisfies AdsDataTableResizeState;\n\n setActiveResize(resizeState);\n\n const handleMouseMove = (nextEvent: MouseEvent) => {\n const delta = nextEvent.clientX - resizeState.startX;\n const nextWidth = Math.max(resizeState.minWidth, resizeState.startWidth + delta);\n setInternalColumnWidths((previous) => ({\n ...previous,\n [resizeState.columnKey]: nextWidth,\n }));\n };\n\n const handleMouseUp = () => {\n setActiveResize(null);\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n };\n\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n },\n [internalColumnWidths],\n );\n\n const renderColumnHeader = React.useCallback(\n (column: AdsDataTableColumn<RecordType>, columnKey: string, columnSortOrder: AdsDataTableSortOrder) => {\n const headerTitle = getColumnHeader(column, columnKey);\n const hasSorter = Boolean(column.sorter);\n const hasFilter = Boolean(column.filter);\n const hasResizeHandle = Boolean(column.resizable);\n\n if (!hasSorter && !hasFilter && !hasResizeHandle) {\n return headerTitle;\n }\n\n const nextOrder =\n columnSortOrder === null\n ? \"ascend\"\n : columnSortOrder === \"ascend\"\n ? \"descend\"\n : null;\n const actionLabel =\n nextOrder === \"ascend\"\n ? messages.table.sortAscending\n : nextOrder === \"descend\"\n ? messages.table.sortDescending\n : messages.table.clearSort;\n\n return (\n <div className=\"relative flex min-w-0 items-center gap-2 pr-3\">\n <div className=\"flex min-w-0 flex-1 items-center justify-between gap-2\">\n {hasSorter ? (\n <Button\n aria-label={`${headerTitle} ${actionLabel}`}\n className={cn(\n \"h-8 min-w-0 flex-1 justify-between rounded-radius-md border-0 bg-transparent px-0 text-left shadow-none hover:bg-transparent focus-visible:ring-0\",\n \"hover:text-[var(--card-foreground)]\",\n )}\n onClick={() => handleSortChange(column, columnKey, nextOrder)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <span className=\"truncate\">{headerTitle}</span>\n <span className=\"inline-flex h-4 w-4 items-center justify-center text-icon-muted\">\n {columnSortOrder === \"ascend\" ? (\n <ChevronDown className=\"h-4 w-4 rotate-180\" />\n ) : columnSortOrder === \"descend\" ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60\" />\n )}\n </span>\n </Button>\n ) : (\n <span className=\"truncate\">{headerTitle}</span>\n )}\n\n {hasFilter ? (\n <AdsPopover>\n <AdsPopoverTrigger asChild>\n <Button\n aria-label={`${headerTitle} ${messages.table.filterColumn}`}\n className={cn(\n \"h-6 w-6 shrink-0 rounded-[6px] border-0 bg-transparent px-0 shadow-none hover:bg-accent focus-visible:ring-0\",\n filterValues[columnKey]\n ? \"text-primary\"\n : \"text-icon-muted hover:text-[var(--card-foreground)]\",\n )}\n data-ads-column-filter-trigger=\"true\"\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <Filter className=\"h-3.5 w-3.5\" />\n </Button>\n </AdsPopoverTrigger>\n <AdsPopoverContent align=\"end\" className=\"w-64\">\n <AdsInput\n clearable\n onChange={(event) =>\n handleFilterChange(column, columnKey, event.currentTarget.value)\n }\n onClear={() => handleFilterChange(column, columnKey, \"\")}\n placeholder={column.filterPlaceholder}\n size=\"sm\"\n value={filterValues[columnKey] ?? \"\"}\n />\n </AdsPopoverContent>\n </AdsPopover>\n ) : null}\n </div>\n\n {hasResizeHandle ? (\n <span\n aria-label={`Resize ${headerTitle} column`}\n className={cn(\n \"absolute inset-y-1 -right-1 z-20 flex w-2 cursor-col-resize items-center justify-center rounded-full transition-colors\",\n \"before:block before:h-5 before:w-px before:rounded-full before:bg-[#4A4C55]\",\n \"hover:before:bg-[#6B6E78]\",\n activeResize?.columnKey === columnKey ? \"before:bg-[#8B8E99]\" : undefined,\n )}\n onMouseDown={(event) => startColumnResize(event, column, columnKey)}\n role=\"separator\"\n />\n ) : null}\n </div>\n );\n },\n [activeResize?.columnKey, filterValues, handleFilterChange, handleSortChange, messages.table, startColumnResize],\n );\n\n const tableNode = (\n <AdsTableSurface className={cn(\"flex min-h-0 flex-1 flex-col\", className)}>\n <AdsTableScrollArea fill={fill} stickyHeader={sticky} x={scroll?.x} y={scroll?.y}>\n <AdsTableRoot className={tableClassName}>\n <AdsTableColGroup>\n {hasSelectionColumn ? (\n <AdsTableCol style={{ width: rowSelection?.columnWidth ?? 48 }} />\n ) : null}\n {hasExpandableColumn ? <AdsTableCol style={{ width: 48 }} /> : null}\n {resolvedColumns.map((column, index) => (\n <AdsTableCol\n key={getColumnKey(column, index)}\n style={getCellStyle(column, getColumnWidthOverride(column, getColumnKey(column, index)))}\n />\n ))}\n </AdsTableColGroup>\n\n <AdsTableHeader>\n <AdsTableRow>\n {hasSelectionColumn ? (\n <AdsTableHead className=\"w-12 p-2\">\n {rowSelection?.type !== \"radio\" && !rowSelection?.hideSelectAll ? (\n <div className=\"flex items-center justify-center\">\n <Checkbox\n aria-label={messages.table.selectAllRows}\n checked={allVisibleRowsSelected ? true : someVisibleRowsSelected ? \"indeterminate\" : false}\n disabled={visibleSelectableKeys.length === 0}\n onCheckedChange={(nextChecked) => {\n const shouldSelectAll = Boolean(nextChecked);\n const remainingKeys = selectedKeys.filter(\n (key) => !visibleSelectableKeys.includes(key),\n );\n const nextKeys = shouldSelectAll\n ? Array.from(new Set([...remainingKeys, ...visibleSelectableKeys]))\n : remainingKeys;\n updateSelection(nextKeys);\n }}\n onClick={(event) => event.stopPropagation()}\n />\n </div>\n ) : null}\n </AdsTableHead>\n ) : null}\n {hasExpandableColumn ? <AdsTableHead className=\"w-12 p-2\" /> : null}\n\n {resolvedColumns.map((column, index) => {\n const columnKey = getColumnKey(column, index);\n const columnSortOrder =\n sortState?.columnKey === columnKey ? sortState.order : column.sortOrder ?? null;\n\n return (\n <AdsTableHead\n className={cn(density.head, column.className, column.headerClassName)}\n key={columnKey}\n style={getCellStyle(column, getColumnWidthOverride(column, columnKey))}\n >\n {renderColumnHeader(column, columnKey, columnSortOrder)}\n </AdsTableHead>\n );\n })}\n </AdsTableRow>\n </AdsTableHeader>\n\n <AdsTableBody>\n {loading && loadingVariant === \"spinner\"\n ? [\n <AdsTableRow key=\"spinner-row\">\n <AdsTableCell\n className=\"p-0\"\n colSpan={columnCount}\n >\n <div\n aria-label={messages.table.loadingRows}\n aria-live=\"polite\"\n className=\"flex items-center justify-center px-6 py-8 text-foreground\"\n role=\"status\"\n style={{ minHeight: spinnerLoadingHeight }}\n >\n <AdsSpinner size=\"lg\" tone=\"foreground\" />\n </div>\n </AdsTableCell>\n </AdsTableRow>,\n ]\n : loading\n ? Array.from({ length: SKELETON_ROW_COUNT }, (_, skeletonIndex) => (\n <AdsTableRow key={`skeleton-${skeletonIndex}`}>\n {hasSelectionColumn ? (\n <AdsTableCell className=\"w-12 p-2\">\n <AdsSkeleton className=\"h-4 w-4 rounded-[4px]\" />\n </AdsTableCell>\n ) : null}\n {hasExpandableColumn ? (\n <AdsTableCell className=\"w-12 p-2\">\n <AdsSkeleton className=\"h-4 w-4 rounded-[4px]\" />\n </AdsTableCell>\n ) : null}\n {resolvedColumns.map((column, index) => (\n <AdsTableCell\n className={cn(density.cell, column.className)}\n key={`${getColumnKey(column, index)}-${skeletonIndex}`}\n >\n <AdsSkeleton className=\"h-4 w-full rounded\" />\n </AdsTableCell>\n ))}\n </AdsTableRow>\n ))\n : paginatedData.length > 0\n ? paginatedData.flatMap((record, index) => {\n const recordKey = resolveRowKey(record, index, rowKey);\n const isExpanded = expandedKeys.includes(recordKey);\n const canExpand =\n !!expandable?.expandedRowRender &&\n (!expandable.rowExpandable || expandable.rowExpandable(record));\n const dataRowClassName =\n typeof rowClassName === \"function\" ? rowClassName(record, index) : rowClassName;\n\n const row = (\n <AdsTableRow\n className={cn(\n dataRowClassName,\n onRowClick ? \"cursor-pointer\" : undefined,\n )}\n data-state={selectedKeys.includes(recordKey) ? \"selected\" : undefined}\n key={String(recordKey)}\n onClick={(event) => {\n if (shouldIgnoreRowClick(event)) {\n return;\n }\n\n if (onRowClick) {\n toggleSelectionFromRowClick(record, recordKey);\n onRowClick(record, index, event);\n return;\n }\n\n if (expandable?.expandRowByClick && canExpand) {\n toggleExpanded(record, recordKey);\n }\n\n toggleSelectionFromRowClick(record, recordKey);\n }}\n >\n {hasSelectionColumn ? (\n <AdsTableSelectionCell\n checked={selectedKeys.includes(recordKey)}\n onChange={(nextValue) => {\n if (rowSelection?.type === \"radio\") {\n updateSelection([recordKey]);\n return;\n }\n\n const nextKeys = nextValue\n ? [...selectedKeys, recordKey]\n : selectedKeys.filter((key) => key !== recordKey);\n updateSelection(Array.from(new Set(nextKeys)));\n }}\n type={rowSelection?.type ?? \"checkbox\"}\n value={String(recordKey)}\n />\n ) : null}\n\n {hasExpandableColumn ? (\n <AdsTableExpandCell\n disabled={!canExpand}\n expanded={isExpanded}\n onToggle={() => toggleExpanded(record, recordKey)}\n />\n ) : null}\n\n {resolvedColumns.map((column, columnIndex) => {\n const renderedValue = renderCellValue(\n resolveRenderedCellContent(column, record, index),\n column.ellipsis,\n );\n\n return (\n <AdsTableCell\n className={cn(\n density.cell,\n column.className,\n column.cellClassName,\n )}\n key={`${String(recordKey)}-${getColumnKey(column, columnIndex)}`}\n style={getCellStyle(\n column,\n getColumnWidthOverride(column, getColumnKey(column, columnIndex)),\n )}\n >\n {renderedValue}\n </AdsTableCell>\n );\n })}\n </AdsTableRow>\n );\n\n if (!canExpand || !isExpanded) {\n return [row];\n }\n\n return [\n row,\n <AdsTableRow key={`${String(recordKey)}-expanded`}>\n <AdsTableCell\n className=\"p-0\"\n colSpan={\n resolvedColumns.length + Number(hasSelectionColumn) + Number(hasExpandableColumn)\n }\n >\n <div\n className={cn(\n expandedRowContentClassName,\n classNames?.expandedRowContent,\n )}\n >\n {expandable?.expandedRowRender?.(record, index)}\n </div>\n </AdsTableCell>\n </AdsTableRow>,\n ];\n })\n : [\n <AdsTableRow key=\"empty-row\">\n <AdsTableCell\n colSpan={columnCount}\n className={cn(\"p-0\", classNames?.emptyRowCell)}\n >\n {renderedEmptyState}\n </AdsTableCell>\n </AdsTableRow>,\n ]}\n </AdsTableBody>\n </AdsTableRoot>\n </AdsTableScrollArea>\n\n {footer ? <div className=\"border-t border-border p-3\">{footer}</div> : null}\n\n {pagination !== false ? (\n <div className={cn(\"border-t border-border p-3\", classNames?.paginationContainer)}>\n <AdsDataPagination\n ariaLabel={messages.pagination.navigation}\n current={currentPage}\n classNames={pagination.classNames}\n defaultCurrent={pagination.defaultCurrent}\n defaultPageSize={pagination.defaultPageSize}\n onChange={handlePaginationChange}\n onPageSizeChange={handlePageSizeChange}\n pageSize={currentPageSize}\n pageSizeOptions={pagination.pageSizeOptions}\n showFirstLast={pagination.showFirstLast}\n showQuickJumper={pagination.showQuickJumper}\n showSizeChanger={pagination.showSizeChanger}\n showTotal={pagination.showTotal}\n total={resolvedTotal}\n variant={pagination.variant}\n />\n </div>\n ) : null}\n </AdsTableSurface>\n );\n\n if (rowSelection?.type === \"radio\") {\n return (\n <RadioGroup\n onValueChange={(value) => {\n const nextRecord = dataSource.find(\n (record, index) => String(resolveRowKey(record, index, rowKey)) === value,\n );\n if (!nextRecord) {\n return;\n }\n updateSelection([resolveRowKey(nextRecord, dataSource.indexOf(nextRecord), rowKey)]);\n }}\n value={selectedKeys[0] !== undefined ? String(selectedKeys[0]) : \"\"}\n >\n {tableNode}\n </RadioGroup>\n );\n }\n\n return tableNode;\n}\n","\"use client\";\n\nimport * as React from \"react\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\n\nimport { cn } from \"../../lib/cn\";\n\nconst adsEmptyVariants = cva(\n \"flex w-full flex-col items-center justify-center gap-6 p-12 text-center\",\n {\n variants: {\n variant: {\n default: \"bg-transparent\",\n outline: \"rounded-radius-lg border border-dashed border-border\",\n background: \"rounded-radius-lg bg-popover\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface AdsEmptyProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof adsEmptyVariants> {}\n\nfunction AdsEmpty({ className, variant, ...props }: AdsEmptyProps) {\n return (\n <div\n data-slot=\"ads-empty\"\n className={cn(adsEmptyVariants({ variant }), className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyHeader({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-header\"\n className={cn(\"flex w-full max-w-[384px] flex-col items-center gap-2\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyMedia({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-media\"\n data-testid=\"ads-empty-media\"\n className={cn(\n \"flex size-10 items-center justify-center rounded-radius-lg bg-muted text-muted-foreground [&_svg]:size-6 [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyTitle({ className, ...props }: React.HTMLAttributes<HTMLHeadingElement>) {\n return (\n <div\n data-slot=\"ads-empty-title\"\n className={cn(\"text-lg font-medium leading-7 text-foreground\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyDescription({ className, ...props }: React.HTMLAttributes<HTMLParagraphElement>) {\n return (\n <p\n data-slot=\"ads-empty-description\"\n className={cn(\"max-w-[384px] text-sm leading-5 text-muted-foreground text-center\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyContent({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-content\"\n className={cn(\"flex w-full max-w-[384px] flex-col items-center gap-4\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyActions({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-actions\"\n className={cn(\"flex flex-wrap items-center justify-center gap-3\", className)}\n {...props}\n />\n );\n}\n\nfunction AdsEmptyFooter({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return (\n <div\n data-slot=\"ads-empty-footer\"\n className={cn(\"text-sm font-medium leading-5 text-muted-foreground\", className)}\n {...props}\n />\n );\n}\n\nexport {\n AdsEmpty,\n AdsEmptyActions,\n AdsEmptyContent,\n AdsEmptyDescription,\n AdsEmptyFooter,\n AdsEmptyHeader,\n AdsEmptyMedia,\n AdsEmptyTitle,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { ChevronDown, ChevronRight } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Button } from \"../../primitives/button\";\nimport { Checkbox } from \"../AdsCheckbox\";\nimport { RadioGroupItem } from \"../AdsRadioGroup\";\nimport {\n Table as PrimitiveTable,\n TableBody as PrimitiveTableBody,\n TableCaption as PrimitiveTableCaption,\n TableCell as PrimitiveTableCell,\n TableCol as PrimitiveTableCol,\n TableColGroup as PrimitiveTableColGroup,\n TableFooter as PrimitiveTableFooter,\n TableHead as PrimitiveTableHead,\n TableHeader as PrimitiveTableHeader,\n TableRow as PrimitiveTableRow,\n TableScrollArea as PrimitiveTableScrollArea,\n} from \"../../primitives/table\";\n\ntype PrimitiveTableProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveTable\n>;\nconst AdsTableStickyHeaderContext = React.createContext(false);\n\nexport interface AdsTableScrollAreaProps extends React.ComponentPropsWithoutRef<\n typeof PrimitiveTableScrollArea\n> {\n fill?: boolean;\n stickyHeader?: boolean;\n x?: number | string;\n y?: number | string;\n}\n\nfunction resolveLength(value: number | string | undefined) {\n if (value === undefined) {\n return undefined;\n }\n\n return typeof value === \"number\" ? `${value}px` : value;\n}\n\nconst AdsTableSurface = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\n \"w-full overflow-hidden rounded-radius-md border border-border bg-card\",\n className,\n )}\n {...props}\n />\n));\nAdsTableSurface.displayName = \"AdsTableSurface\";\n\nconst AdsTableRoot = React.forwardRef<HTMLTableElement, PrimitiveTableProps>(\n ({ className, ...props }, ref) => (\n <PrimitiveTable\n ref={ref}\n className={cn(\n \"w-full caption-bottom text-sm\",\n adsTextColorClassName.card,\n className,\n )}\n data-slot=\"ads-table-root\"\n {...props}\n />\n ),\n);\nAdsTableRoot.displayName = \"AdsTableRoot\";\n\nconst AdsTableScrollArea = React.forwardRef<\n HTMLDivElement,\n AdsTableScrollAreaProps\n>(\n (\n {\n children,\n className,\n fill = false,\n stickyHeader = false,\n style,\n x,\n y,\n ...props\n },\n ref,\n ) => (\n <AdsTableStickyHeaderContext.Provider value={stickyHeader}>\n <PrimitiveTableScrollArea\n ref={ref}\n className={cn(\n \"w-full overflow-auto\",\n fill ? \"min-h-0 flex-1\" : undefined,\n stickyHeader\n ? \"[&_thead_th]:sticky [&_thead_th]:top-0 [&_thead_th]:z-10 [&_thead_th]:bg-card\"\n : undefined,\n className,\n )}\n data-slot=\"ads-table-scroll-area\"\n style={{\n ...style,\n maxHeight: resolveLength(y),\n minWidth: resolveLength(x),\n }}\n {...props}\n >\n {children}\n </PrimitiveTableScrollArea>\n </AdsTableStickyHeaderContext.Provider>\n ),\n);\nAdsTableScrollArea.displayName = \"AdsTableScrollArea\";\n\nconst AdsTable = React.forwardRef<HTMLTableElement, PrimitiveTableProps>(\n ({ className, ...props }, ref) => (\n <AdsTableSurface>\n <AdsTableScrollArea>\n <AdsTableRoot ref={ref} className={className} {...props} />\n </AdsTableScrollArea>\n </AdsTableSurface>\n ),\n);\nAdsTable.displayName = \"AdsTable\";\n\nconst AdsTableColGroup = React.forwardRef<\n HTMLTableColElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableColGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableColGroup ref={ref} className={className} {...props} />\n));\nAdsTableColGroup.displayName = \"AdsTableColGroup\";\n\nconst AdsTableCol = React.forwardRef<\n HTMLTableColElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableCol>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableCol ref={ref} className={className} {...props} />\n));\nAdsTableCol.displayName = \"AdsTableCol\";\n\nconst AdsTableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableHeader>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableHeader\n ref={ref}\n className={cn(\"[&_tr]:border-border\", className)}\n {...props}\n />\n));\nAdsTableHeader.displayName = \"AdsTableHeader\";\n\nconst AdsTableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableBody>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableBody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n));\nAdsTableBody.displayName = \"AdsTableBody\";\n\nconst AdsTableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableFooter>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableFooter\n ref={ref}\n className={cn(\n \"border-border bg-card\",\n adsTextColorClassName.card,\n className,\n )}\n {...props}\n />\n));\nAdsTableFooter.displayName = \"AdsTableFooter\";\n\nconst AdsTableRow = React.forwardRef<\n HTMLTableRowElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableRow>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableRow\n ref={ref}\n className={cn(\n \"border-border hover:bg-transparent data-[state=selected]:bg-accent/30\",\n className,\n )}\n {...props}\n />\n));\nAdsTableRow.displayName = \"AdsTableRow\";\n\nconst AdsTableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableHead>\n>(({ className, ...props }, ref) => {\n const stickyHeader = React.useContext(AdsTableStickyHeaderContext);\n\n return (\n <PrimitiveTableHead\n ref={ref}\n className={cn(\n \"h-10 px-2 align-middle text-sm font-medium leading-5 [&:has([role=checkbox])]:pr-0 [&:has([role=radio])]:pr-0\",\n adsTextColorClassName.card,\n stickyHeader ? \"sticky top-0 z-10 bg-card\" : undefined,\n className,\n )}\n {...props}\n />\n );\n});\nAdsTableHead.displayName = \"AdsTableHead\";\n\nconst AdsTableCell = React.forwardRef<\n HTMLTableCellElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableCell>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableCell\n ref={ref}\n className={cn(\n \"p-2 align-middle text-sm font-normal leading-5 [&:has([role=checkbox])]:pr-0 [&:has([role=radio])]:pr-0\",\n adsTextColorClassName.card,\n className,\n )}\n {...props}\n />\n));\nAdsTableCell.displayName = \"AdsTableCell\";\n\nconst AdsTableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.ComponentPropsWithoutRef<typeof PrimitiveTableCaption>\n>(({ className, ...props }, ref) => (\n <PrimitiveTableCaption\n ref={ref}\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n {...props}\n />\n));\nAdsTableCaption.displayName = \"AdsTableCaption\";\n\nexport interface AdsTableSortHeaderProps extends Omit<\n React.ComponentPropsWithoutRef<typeof AdsTableHead>,\n \"children\" | \"title\"\n> {\n disabled?: boolean;\n onToggleSort?: (nextOrder: \"ascend\" | \"descend\" | null) => void;\n sortOrder: \"ascend\" | \"descend\" | null;\n title: React.ReactNode;\n}\n\nconst AdsTableSortHeader = React.forwardRef<\n HTMLTableCellElement,\n AdsTableSortHeaderProps\n>(\n (\n { className, disabled = false, onToggleSort, sortOrder, title, ...props },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const nextOrder =\n sortOrder === null ? \"ascend\" : sortOrder === \"ascend\" ? \"descend\" : null;\n const actionLabel =\n nextOrder === \"ascend\"\n ? messages.table.sortAscending\n : nextOrder === \"descend\"\n ? messages.table.sortDescending\n : messages.table.clearSort;\n\n return (\n <AdsTableHead ref={ref} className={className} {...props}>\n <Button\n aria-label={`${title} ${actionLabel}`}\n className={cn(\n \"h-8 w-full justify-between rounded-radius-md border-0 bg-transparent px-0 text-left shadow-none hover:bg-transparent focus-visible:ring-0\",\n adsTextColorClassName.card,\n \"hover:text-[var(--card-foreground)]\",\n disabled ? \"cursor-not-allowed opacity-50\" : undefined,\n )}\n disabled={disabled}\n onClick={() => onToggleSort?.(nextOrder)}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n <span className=\"truncate\">{title}</span>\n <span className=\"inline-flex h-4 w-4 items-center justify-center text-icon-muted\">\n {sortOrder === \"ascend\" ? (\n <ChevronDown className=\"h-4 w-4 rotate-180\" />\n ) : sortOrder === \"descend\" ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronDown className=\"h-4 w-4 opacity-60\" />\n )}\n </span>\n </Button>\n </AdsTableHead>\n );\n },\n);\nAdsTableSortHeader.displayName = \"AdsTableSortHeader\";\n\nexport interface AdsTableSelectionCellProps extends Omit<\n React.ComponentPropsWithoutRef<typeof AdsTableCell>,\n \"children\" | \"onChange\"\n> {\n checked?: boolean;\n disabled?: boolean;\n onChange?: (nextValue: boolean | string) => void;\n type?: \"checkbox\" | \"radio\";\n value?: string;\n}\n\nconst AdsTableSelectionCell = React.forwardRef<\n HTMLTableCellElement,\n AdsTableSelectionCellProps\n>(\n (\n {\n checked = false,\n className,\n disabled = false,\n onChange,\n type = \"checkbox\",\n value = \"selected\",\n ...props\n },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n\n return (\n <AdsTableCell ref={ref} className={cn(\"w-12 p-2\", className)} {...props}>\n <div className=\"flex items-center justify-center\">\n {type === \"radio\" ? (\n <RadioGroupItem\n aria-label={messages.table.selectRow}\n className=\"h-4 w-4 border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\"\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onChange?.(value);\n }}\n value={value}\n />\n ) : (\n <Checkbox\n aria-label={messages.table.selectRow}\n checked={checked}\n className=\"h-4 w-4\"\n disabled={disabled}\n onCheckedChange={(nextChecked) =>\n onChange?.(Boolean(nextChecked))\n }\n onClick={(event) => event.stopPropagation()}\n />\n )}\n </div>\n </AdsTableCell>\n );\n },\n);\nAdsTableSelectionCell.displayName = \"AdsTableSelectionCell\";\n\nexport interface AdsTableExpandCellProps extends Omit<\n React.ComponentPropsWithoutRef<typeof AdsTableCell>,\n \"children\"\n> {\n disabled?: boolean;\n expanded?: boolean;\n onToggle?: (expanded: boolean) => void;\n}\n\nconst AdsTableExpandCell = React.forwardRef<\n HTMLTableCellElement,\n AdsTableExpandCellProps\n>(\n (\n { className, disabled = false, expanded = false, onToggle, ...props },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n\n return (\n <AdsTableCell ref={ref} className={cn(\"w-12 p-2\", className)} {...props}>\n <div className=\"flex items-center justify-center\">\n <Button\n aria-label={\n expanded ? messages.table.collapseRow : messages.table.expandRow\n }\n className={cn(\n \"h-8 w-8 rounded-radius-md border-0 bg-transparent px-0 shadow-none hover:bg-accent\",\n adsTextColorClassName.card,\n \"hover:text-[var(--card-foreground)]\",\n )}\n disabled={disabled}\n onClick={(event) => {\n event.stopPropagation();\n onToggle?.(!expanded);\n }}\n size=\"sm\"\n type=\"button\"\n variant=\"ghost\"\n >\n {expanded ? (\n <ChevronDown className=\"h-4 w-4\" />\n ) : (\n <ChevronRight className=\"h-4 w-4\" />\n )}\n </Button>\n </div>\n </AdsTableCell>\n );\n },\n);\nAdsTableExpandCell.displayName = \"AdsTableExpandCell\";\n\nexport {\n AdsTable,\n AdsTableBody,\n AdsTableCaption,\n AdsTableCell,\n AdsTableCol,\n AdsTableColGroup,\n AdsTableExpandCell,\n AdsTableFooter,\n AdsTableHead,\n AdsTableHeader,\n AdsTableRoot,\n AdsTableRow,\n AdsTableScrollArea,\n AdsTableSelectionCell,\n AdsTableSortHeader,\n AdsTableSurface,\n};\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n RadioGroup as PrimitiveRadioGroup,\n RadioGroupItem as PrimitiveRadioGroupItem,\n} from \"../../primitives/radio-group\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\nconst radioGroupBaseClassName = \"gap-3\";\nconst radioItemBaseClassName =\n \"h-4 w-4 border-border bg-card text-primary shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0\";\n\nexport const RadioGroup = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroup>,\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroup>\n>(({ className, ...props }, ref) => (\n <PrimitiveRadioGroup className={cn(radioGroupBaseClassName, className)} ref={ref} {...props} />\n));\nRadioGroup.displayName = \"RadioGroup\";\n\nexport const RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroupItem>,\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroupItem>\n>(({ className, ...props }, ref) => (\n <PrimitiveRadioGroupItem\n className={cn(radioItemBaseClassName, className)}\n ref={ref}\n {...props}\n />\n));\nRadioGroupItem.displayName = \"RadioGroupItem\";\n\nexport interface AdsRadioGroupProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroup> {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n label?: React.ReactNode;\n}\n\nexport const AdsRadioGroup = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroup>,\n AdsRadioGroupProps\n>(\n (\n {\n children,\n className,\n descriptionPlacement = \"below\",\n errorText,\n helperText,\n id,\n label,\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n errorText,\n helperText,\n id,\n });\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>{helperText}</AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? <AdsFieldLabel>{label}</AdsFieldLabel> : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <RadioGroup\n aria-describedby={description.describedBy}\n className={className}\n ref={ref}\n {...props}\n >\n {children}\n </RadioGroup>\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsRadioGroup.displayName = \"AdsRadioGroup\";\n\ntype AdsRadioGroupOptionProps = Omit<\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroupItem>,\n \"children\"\n> & {\n description?: React.ReactNode;\n label: React.ReactNode;\n};\n\nexport const AdsRadioGroupOption = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroupItem>,\n AdsRadioGroupOptionProps\n>(({ className, description, id, label, value, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n return (\n <label className=\"flex w-full cursor-pointer items-start gap-2\" htmlFor={inputId}>\n <RadioGroupItem\n className={cn(className)}\n id={inputId}\n ref={ref}\n value={value}\n {...props}\n />\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div className=\"text-sm leading-5 text-foreground\">{label}</div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">{description}</AdsFieldDescription>\n ) : null}\n </div>\n </label>\n );\n});\nAdsRadioGroupOption.displayName = \"AdsRadioGroupOption\";\n\ntype AdsRadioGroupCardOptionProps = Omit<\n React.ComponentPropsWithoutRef<typeof PrimitiveRadioGroupItem>,\n \"children\"\n> & {\n description?: React.ReactNode;\n label: React.ReactNode;\n};\n\nexport const AdsRadioGroupCardOption = React.forwardRef<\n React.ElementRef<typeof PrimitiveRadioGroupItem>,\n AdsRadioGroupCardOptionProps\n>(({ className, description, disabled, id, label, value, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n const titleId = `${inputId}-label`;\n const descriptionId = description ? `${inputId}-description` : undefined;\n\n return (\n <div className=\"relative\">\n <RadioGroupItem\n aria-describedby={descriptionId}\n aria-labelledby={titleId}\n className=\"peer absolute inset-0 h-full w-full rounded-radius-md opacity-0 focus-visible:outline-none focus-visible:ring-0\"\n disabled={disabled}\n id={inputId}\n ref={ref}\n value={value}\n {...props}\n />\n <div\n className={cn(\n \"flex min-h-[72px] w-full items-center gap-3 rounded-radius-md border border-border bg-card p-md shadow-[0px_1px_2px_rgba(0,0,0,0.1)] transition-colors [&_[data-indicator]]:border-border [&_[data-indicator-span]]:opacity-0 peer-data-[state=checked]:border-primary peer-data-[state=checked]:bg-accent peer-data-[state=checked]:[&_[data-indicator]]:border-primary peer-data-[state=checked]:[&_[data-indicator-span]]:opacity-100 peer-focus-visible:ring-[3px] peer-focus-visible:ring-[rgba(161,161,161,0.5)] peer-focus-visible:ring-offset-0\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n className,\n )}\n >\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5\">\n <div className=\"text-sm font-medium leading-5 text-foreground\" id={titleId}>\n {label}\n </div>\n {description ? (\n <AdsFieldDescription className=\"text-xs leading-4\" id={descriptionId}>\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n <div className=\"flex h-full shrink-0 items-start justify-center pt-px\">\n <div\n className=\"grid h-4 w-4 place-content-center rounded-full border bg-card shadow-[0px_1px_2px_rgba(0,0,0,0.1)]\"\n data-indicator\n >\n <span\n className=\"h-2 w-2 rounded-full bg-primary transition-opacity\"\n data-indicator-span\n />\n </div>\n </div>\n </div>\n </div>\n );\n});\nAdsRadioGroupCardOption.displayName = \"AdsRadioGroupCardOption\";\n","import * as React from \"react\"\nimport * as RadioGroupPrimitive from \"@radix-ui/react-radio-group\"\nimport { Circle } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst RadioGroup = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Root>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Root\n className={cn(\"grid gap-2\", className)}\n {...props}\n ref={ref}\n />\n )\n})\nRadioGroup.displayName = RadioGroupPrimitive.Root.displayName\n\nconst RadioGroupItem = React.forwardRef<\n React.ElementRef<typeof RadioGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof RadioGroupPrimitive.Item>\n>(({ className, ...props }, ref) => {\n return (\n <RadioGroupPrimitive.Item\n ref={ref}\n className={cn(\n \"aspect-square h-4 w-4 rounded-full border border-primary text-primary ring-offset-background focus:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50\",\n className\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <Circle className=\"h-2.5 w-2.5 fill-current text-current\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n )\n})\nRadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName\n\nexport { RadioGroup, RadioGroupItem }\n","import * as React from \"react\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.TableHTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-sm\", className)}\n {...props}\n />\n))\nTable.displayName = \"Table\"\n\nconst TableScrollArea = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={cn(\"relative w-full overflow-auto\", className)}\n {...props}\n />\n))\nTableScrollArea.displayName = \"TableScrollArea\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, ...props }, ref) => (\n <tr\n ref={ref}\n className={cn(\n \"border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted\",\n className\n )}\n {...props}\n />\n))\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"p-4 align-middle [&:has([role=checkbox])]:pr-0\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nconst TableColGroup = React.forwardRef<\n HTMLTableColElement,\n React.HTMLAttributes<HTMLTableColElement>\n>(({ className, ...props }, ref) => (\n <colgroup ref={ref} className={cn(className)} {...props} />\n))\nTableColGroup.displayName = \"TableColGroup\"\n\nconst TableCol = React.forwardRef<\n HTMLTableColElement,\n React.ColHTMLAttributes<HTMLTableColElement>\n>(({ className, ...props }, ref) => (\n <col ref={ref} className={cn(className)} {...props} />\n))\nTableCol.displayName = \"TableCol\"\n\nexport {\n Table,\n TableScrollArea,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n TableColGroup,\n TableCol,\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { AdsInput } from \"../AdsInput\";\n\nexport interface AdsDataTableToolbarProps {\n action?: React.ReactNode;\n className?: string;\n searchClassName?: string;\n searchPlaceholder?: string;\n searchValue?: string;\n title?: React.ReactNode;\n titleClassName?: string;\n onSearchChange?: (value: string) => void;\n onSearchClear?: () => void;\n}\n\nexport function AdsDataTableToolbar({\n action,\n className,\n searchClassName,\n searchPlaceholder,\n searchValue = \"\",\n title,\n titleClassName,\n onSearchChange,\n onSearchClear,\n}: AdsDataTableToolbarProps) {\n return (\n <div\n className={cn(\n \"flex flex-col gap-md px-6 pb-4 pt-6 md:flex-row md:items-center md:justify-between\",\n className,\n )}\n >\n <div className=\"min-w-0 flex-1\">\n {title ? (\n <h2 className={cn(\"truncate text-xl font-medium text-white\", titleClassName)}>\n {title}\n </h2>\n ) : null}\n </div>\n\n <div className=\"flex w-full flex-col gap-sm md:min-w-0 md:flex-1 md:flex-row md:items-center md:justify-end\">\n <div className=\"min-w-0 md:max-w-[440px] md:flex-1\">\n <AdsInput\n className={cn(\n \"border-[#27282F] bg-[#27282F] text-white placeholder:text-[#848484]\",\n searchClassName,\n )}\n clearable\n onChange={(event) => onSearchChange?.(event.target.value)}\n onClear={onSearchClear}\n placeholder={searchPlaceholder}\n value={searchValue}\n />\n </div>\n {action ? <div className=\"shrink-0\">{action}</div> : null}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { AdsButton } from \"../AdsButton\";\nimport {\n AdsDataTable,\n type AdsDataTableColumn,\n type AdsDataTablePaginationConfig,\n type AdsDataTableProps,\n} from \"../AdsDataTable\";\nimport { AdsDataTableToolbar } from \"../AdsDataTableToolbar\";\n\ntype AdsViewCustomersDataTablePagination = Omit<\n AdsDataTablePaginationConfig,\n \"variant\" | \"showFirstLast\"\n>;\n\nexport interface AdsViewCustomersDataTableProps<RecordType extends object>\n extends Omit<\n AdsDataTableProps<RecordType>,\n \"className\" | \"emptyState\" | \"pagination\"\n > {\n columns: AdsDataTableColumn<RecordType>[];\n emptyState?: React.ReactNode;\n error?: boolean;\n errorDescription?: React.ReactNode;\n errorState?: React.ReactNode;\n errorTitle?: React.ReactNode;\n height?: number | string;\n pagination?: false | AdsViewCustomersDataTablePagination;\n retryLabel?: React.ReactNode;\n searchPlaceholder?: string;\n searchValue?: string;\n title?: React.ReactNode;\n toolbarAction?: React.ReactNode;\n onRetry?: () => void;\n onSearchChange?: (value: string) => void;\n onSearchClear?: () => void;\n}\n\nfunction resolveHeight(value: number | string | undefined) {\n if (value === undefined) {\n return 500;\n }\n\n return value;\n}\n\nexport function AdsViewCustomersDataTable<RecordType extends object>({\n columns,\n dataSource = [],\n emptyState,\n error = false,\n errorDescription = \"Try again or adjust the current query.\",\n errorState,\n errorTitle = \"Unable to load records\",\n height = 500,\n loading = false,\n pagination = false,\n retryLabel = \"Retry\",\n rowKey,\n scroll,\n searchPlaceholder = \"Search customers\",\n searchValue = \"\",\n sticky = true,\n title,\n toolbarAction,\n onRetry,\n onSearchChange,\n onSearchClear,\n ...props\n}: AdsViewCustomersDataTableProps<RecordType>) {\n const tableHeight = resolveHeight(height);\n const resolvedErrorState =\n errorState ?? (\n <div className=\"flex min-h-[500px] flex-col items-center justify-center gap-3 px-6 py-12 text-center\">\n <p className=\"text-sm font-medium text-white\">{errorTitle}</p>\n <p className=\"max-w-md text-sm text-[#848484]\">{errorDescription}</p>\n {onRetry ? (\n <AdsButton intent=\"primary\" onClick={onRetry}>\n {retryLabel}\n </AdsButton>\n ) : null}\n </div>\n );\n\n return (\n <div className=\"overflow-hidden rounded-xl border border-[#27282F] bg-[#1B1C21]\">\n <AdsDataTableToolbar\n action={toolbarAction}\n onSearchChange={onSearchChange}\n onSearchClear={onSearchClear}\n searchPlaceholder={searchPlaceholder}\n searchValue={searchValue}\n title={title}\n />\n\n {error ? resolvedErrorState : null}\n\n {!error ? (\n <AdsDataTable\n {...props}\n className={cn(\n \"rounded-none border-0 bg-[#1B1C21]\",\n \"[&_thead_th]:border-b-[#27282F] [&_thead_th]:bg-[#27282F] [&_thead_th]:text-[14px] [&_thead_th]:leading-5\",\n \"[&_tbody_td]:border-b-[#27282F] [&_tbody_td]:text-[14px] [&_tbody_td]:leading-5\",\n \"[&_tbody_tr:hover]:!bg-[#333333]\",\n \"[&_[data-slot='ads-table-root']]:bg-[#1B1C21]\",\n \"[&_[data-slot='ads-table-root']]:text-white\",\n \"[&_[data-slot='ads-table-scroll-area']]:bg-[#1B1C21]\",\n )}\n columns={columns}\n dataSource={dataSource}\n emptyState={emptyState}\n loading={loading}\n pagination={\n pagination === false\n ? false\n : {\n ...pagination,\n showFirstLast: true,\n variant: \"compact\",\n }\n }\n rowKey={rowKey}\n scroll={{\n ...scroll,\n y: scroll?.y ?? tableHeight,\n }}\n sticky={sticky}\n tableClassName=\"[&_td]:text-white [&_th]:text-white\"\n />\n ) : null}\n </div>\n );\n}\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\nimport { Progress as PrimitiveProgress, type ProgressProps as PrimitiveProgressProps } from \"../../primitives/progress\";\n\nconst progressBaseClassName =\n \"h-2 rounded-radius-full bg-[color:color-mix(in_srgb,var(--primary)_20%,transparent)]\";\n\nconst progressIndicatorVariantClassName = {\n ai: \"bg-brand-gradient\",\n default: \"bg-primary\",\n} as const;\n\nexport type AdsProgressVariant = keyof typeof progressIndicatorVariantClassName;\n\nexport interface AdsProgressProps extends PrimitiveProgressProps {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n indicatorClassName?: string;\n label?: React.ReactNode;\n trackClassName?: string;\n variant?: AdsProgressVariant;\n}\n\nexport const Progress = React.forwardRef<\n React.ElementRef<typeof PrimitiveProgress>,\n PrimitiveProgressProps\n>(({ className, indicatorClassName, ...props }, ref) => (\n <PrimitiveProgress\n className={cn(progressBaseClassName, className)}\n indicatorClassName={cn(progressIndicatorVariantClassName.default, indicatorClassName)}\n ref={ref}\n {...props}\n />\n));\nProgress.displayName = \"Progress\";\n\nexport const AdsProgress = React.forwardRef<\n React.ElementRef<typeof PrimitiveProgress>,\n AdsProgressProps\n>(\n (\n {\n className,\n descriptionPlacement = \"above\",\n errorText,\n helperText,\n id,\n indicatorClassName,\n label,\n trackClassName,\n variant = \"default\",\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n errorText,\n helperText,\n id,\n });\n const labelId = label ? `${description.inputId}-label` : undefined;\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>{helperText}</AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? <AdsFieldLabel id={labelId}>{label}</AdsFieldLabel> : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <PrimitiveProgress\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n aria-labelledby={labelId}\n className={cn(progressBaseClassName, trackClassName, className)}\n id={description.inputId}\n indicatorClassName={cn(\n progressIndicatorVariantClassName[variant],\n indicatorClassName,\n )}\n ref={ref}\n {...props}\n />\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsProgress.displayName = \"AdsProgress\";\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as ProgressPrimitive from \"@radix-ui/react-progress\";\n\nimport { cn } from \"../lib/cn\";\n\nexport interface ProgressProps\n extends React.ComponentPropsWithoutRef<typeof ProgressPrimitive.Root> {\n indicatorClassName?: string;\n}\n\nconst Progress = React.forwardRef<\n React.ElementRef<typeof ProgressPrimitive.Root>,\n ProgressProps\n>(({ className, indicatorClassName, value, ...props }, ref) => (\n <ProgressPrimitive.Root\n className={cn(\"relative h-4 w-full overflow-hidden rounded-full bg-secondary\", className)}\n ref={ref}\n value={value}\n {...props}\n >\n <ProgressPrimitive.Indicator\n className={cn(\"h-full w-full flex-1 bg-primary transition-all\", indicatorClassName)}\n style={{ transform: `translateX(-${100 - (value ?? 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n));\nProgress.displayName = ProgressPrimitive.Root.displayName;\n\nexport { Progress };\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Slider as PrimitiveSlider } from \"../../primitives/slider\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\nconst sliderBaseClassName = \"py-1\";\n\nexport const Slider = React.forwardRef<\n React.ElementRef<typeof PrimitiveSlider>,\n React.ComponentPropsWithoutRef<typeof PrimitiveSlider>\n>(({ className, ...props }, ref) => (\n <PrimitiveSlider className={cn(sliderBaseClassName, className)} ref={ref} {...props} />\n));\nSlider.displayName = \"Slider\";\n\nexport interface AdsSliderProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSlider> {\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n id?: string;\n label?: React.ReactNode;\n}\n\nexport const AdsSlider = React.forwardRef<\n React.ElementRef<typeof PrimitiveSlider>,\n AdsSliderProps\n>(\n (\n {\n className,\n descriptionPlacement = \"above\",\n errorText,\n helperText,\n id,\n label,\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n errorText,\n helperText,\n id,\n });\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>{helperText}</AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? <AdsFieldLabel>{label}</AdsFieldLabel> : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <Slider\n aria-describedby={description.describedBy}\n className={className}\n ref={ref}\n {...props}\n />\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsSlider.displayName = \"AdsSlider\";\n","import * as React from \"react\"\nimport * as SliderPrimitive from \"@radix-ui/react-slider\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn(\n \"relative flex w-full touch-none select-none items-center\",\n className\n )}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-1.5 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n {Array.from({\n length: Array.isArray(props.value)\n ? props.value.length\n : Array.isArray(props.defaultValue)\n ? props.defaultValue.length\n : 1,\n }).map((_, index) => (\n <SliderPrimitive.Thumb\n className=\"block h-5 w-5 rounded-full border border-primary bg-background 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 disabled:opacity-50\"\n key={index}\n />\n ))}\n </SliderPrimitive.Root>\n))\nSlider.displayName = SliderPrimitive.Root.displayName\n\nexport { Slider }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Switch as PrimitiveSwitch } from \"../../primitives/switch\";\nimport { AdsFieldDescription } from \"../AdsField\";\n\nconst switchBaseClassName =\n \"h-6 w-11 border border-transparent bg-muted shadow-[0px_1px_2px_rgba(0,0,0,0.1)] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=checked]:bg-primary data-[state=unchecked]:bg-muted\";\n\nexport const Switch = React.forwardRef<\n React.ElementRef<typeof PrimitiveSwitch>,\n React.ComponentPropsWithoutRef<typeof PrimitiveSwitch>\n>(({ className, ...props }, ref) => (\n <PrimitiveSwitch className={cn(switchBaseClassName, className)} ref={ref} {...props} />\n));\nSwitch.displayName = \"Switch\";\n\nexport interface AdsSwitchProps extends React.ComponentPropsWithoutRef<typeof PrimitiveSwitch> {\n description?: React.ReactNode;\n label?: React.ReactNode;\n switchClassName?: string;\n wrapperClassName?: string;\n}\n\nexport const AdsSwitch = React.forwardRef<\n React.ElementRef<typeof PrimitiveSwitch>,\n AdsSwitchProps\n>(({ className, description, id, label, switchClassName, wrapperClassName, ...props }, ref) => {\n const generatedId = React.useId();\n const inputId = id ?? generatedId;\n\n if (!label) {\n return (\n <Switch\n className={cn(className, switchClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n );\n }\n\n return (\n <label className={cn(\"block w-full cursor-pointer\", wrapperClassName)} htmlFor={inputId}>\n <div className=\"flex w-full items-start gap-3\">\n <div className=\"flex min-w-0 flex-1 flex-col gap-1.5 pt-0.5\">\n <div className=\"text-sm font-medium leading-5 text-foreground\">{label}</div>\n {description ? (\n <AdsFieldDescription className=\"text-sm leading-5\">\n {description}\n </AdsFieldDescription>\n ) : null}\n </div>\n <div className=\"shrink-0\">\n <Switch\n className={cn(className, switchClassName)}\n id={inputId}\n ref={ref}\n {...props}\n />\n </div>\n </div>\n </label>\n );\n});\nAdsSwitch.displayName = \"AdsSwitch\";\n","import * as React from \"react\"\nimport * as SwitchPrimitives from \"@radix-ui/react-switch\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Switch = React.forwardRef<\n React.ElementRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n \"peer inline-flex h-[18px] w-8 shrink-0 cursor-pointer items-center rounded-full border border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input\",\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n \"pointer-events-none block h-5 w-5 rounded-full bg-background shadow-[0px_1px_2px_rgba(0,0,0,0.1)] ring-0 transition-transform data-[state=checked]:translate-x-[20px] data-[state=unchecked]:translate-x-[2px]\"\n )}\n />\n </SwitchPrimitives.Root>\n))\nSwitch.displayName = SwitchPrimitives.Root.displayName\n\nexport { Switch }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Tabs as PrimitiveTabs,\n TabsContent as PrimitiveTabsContent,\n TabsList as PrimitiveTabsList,\n TabsTrigger as PrimitiveTabsTrigger,\n} from \"../../primitives/tabs\";\n\nexport type AdsTabsProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabs>;\nexport type AdsTabsListProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabsList>;\nexport type AdsTabsTriggerProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabsTrigger>;\nexport type AdsTabsContentProps = React.ComponentPropsWithoutRef<typeof PrimitiveTabsContent>;\n\nconst AdsTabs = PrimitiveTabs;\n\nconst AdsTabsList = React.forwardRef<\n React.ElementRef<typeof PrimitiveTabsList>,\n AdsTabsListProps\n>(({ className, ...props }, ref) => (\n <PrimitiveTabsList\n className={cn(\n \"inline-flex items-center gap-0 rounded-radius-lg bg-muted p-[2px]\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsTabsList.displayName = \"AdsTabsList\";\n\nconst AdsTabsTrigger = React.forwardRef<\n React.ElementRef<typeof PrimitiveTabsTrigger>,\n AdsTabsTriggerProps\n>(({ className, ...props }, ref) => (\n <PrimitiveTabsTrigger\n className={cn(\n \"inline-flex h-8 items-center justify-center rounded-radius-md px-md py-xs text-sm font-medium leading-5 text-foreground transition-[background-color,border-color,box-shadow] focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 data-[state=active]:border data-[state=active]:border-border data-[state=active]:bg-card data-[state=active]:shadow-[0px_1px_1.5px_rgba(0,0,0,0.1)]\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsTabsTrigger.displayName = \"AdsTabsTrigger\";\n\nconst AdsTabsContent = React.forwardRef<\n React.ElementRef<typeof PrimitiveTabsContent>,\n AdsTabsContentProps\n>(({ className, ...props }, ref) => (\n <PrimitiveTabsContent\n className={cn(\n \"mt-2 rounded-[12px] border border-border bg-card shadow-[0px_1px_1.5px_rgba(0,0,0,0.1)] focus-visible:ring-0\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nAdsTabsContent.displayName = \"AdsTabsContent\";\n\nexport {\n AdsTabs,\n AdsTabsList,\n AdsTabsTrigger,\n AdsTabsContent,\n};\n","import * as React from \"react\"\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Tabs = TabsPrimitive.Root\n\nconst TabsList = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.List>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.List>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.List\n className={cn(\"inline-flex items-center\", className)}\n ref={ref}\n {...props}\n />\n))\n\nTabsList.displayName = TabsPrimitive.List.displayName\n\nconst TabsTrigger = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Trigger\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50\",\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nTabsTrigger.displayName = TabsPrimitive.Trigger.displayName\n\nconst TabsContent = React.forwardRef<\n React.ElementRef<typeof TabsPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TabsPrimitive.Content>\n>(({ className, ...props }, ref) => (\n <TabsPrimitive.Content\n className={cn(\"focus-visible:outline-none\", className)}\n ref={ref}\n {...props}\n />\n))\n\nTabsContent.displayName = TabsPrimitive.Content.displayName\n\nexport { Tabs, TabsList, TabsTrigger, TabsContent }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { Toggle as PrimitiveToggle } from \"../../primitives/toggle\";\nimport type { AdsSize } from \"../shared/types\";\n\nconst sizeClassName: Record<AdsSize, string> = {\n sm: \"!h-8 px-[6px] text-sm\",\n md: \"!h-9 px-md text-sm\",\n lg: \"!h-10 px-[10px] text-sm\",\n};\n\nconst iconOnlySizeClassName: Record<AdsSize, string> = {\n sm: \"!w-8\",\n md: \"!w-9\",\n lg: \"!w-10\",\n};\n\nconst variantClassName = {\n default:\n \"border border-transparent bg-transparent text-foreground shadow-none hover:bg-muted/70 data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n outline:\n \"border border-border bg-transparent text-foreground shadow-none hover:bg-muted/70 data-[state=on]:border-transparent data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n} as const;\n\nexport interface AdsToggleProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveToggle> {\n size?: AdsSize;\n variant?: keyof typeof variantClassName;\n}\n\nexport const AdsToggle = React.forwardRef<\n React.ElementRef<typeof PrimitiveToggle>,\n AdsToggleProps\n>(({ children, className, size = \"md\", variant = \"default\", ...props }, ref) => {\n const childCount = React.Children.count(children);\n const isIconOnly = childCount === 1 && React.isValidElement(children);\n\n return (\n <PrimitiveToggle\n className={cn(\n \"inline-flex shrink-0 items-center justify-center gap-2 rounded-radius-md font-medium leading-5 text-foreground focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:opacity-50\",\n sizeClassName[size],\n variantClassName[variant],\n isIconOnly && iconOnlySizeClassName[size],\n className,\n )}\n ref={ref}\n {...props}\n >\n {children}\n </PrimitiveToggle>\n );\n});\n\nAdsToggle.displayName = \"AdsToggle\";\n","import * as React from \"react\"\nimport * as TogglePrimitive from \"@radix-ui/react-toggle\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst Toggle = React.forwardRef<\n React.ElementRef<typeof TogglePrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof TogglePrimitive.Root>\n>(({ className, ...props }, ref) => (\n <TogglePrimitive.Root\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-[background-color,box-shadow,color] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nToggle.displayName = TogglePrimitive.Root.displayName\n\nexport { Toggle }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n ToggleGroup as PrimitiveToggleGroup,\n ToggleGroupItem as PrimitiveToggleGroupItem,\n} from \"../../primitives/toggle-group\";\nimport type { AdsSize } from \"../shared/types\";\n\ntype AdsToggleGroupVariant = \"default\" | \"outline\";\ntype AdsToggleGroupOrientation = \"horizontal\" | \"vertical\";\n\nconst sizeClassName: Record<AdsSize, string> = {\n sm: \"h-8 min-w-7 px-[6px] text-sm\",\n md: \"h-9 min-w-[34px] px-md text-sm\",\n lg: \"h-10 min-w-9 px-[10px] text-sm\",\n};\n\nconst variantClassName: Record<AdsToggleGroupVariant, string> = {\n default:\n \"border-transparent bg-transparent text-foreground hover:bg-muted/70 data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n outline:\n \"border border-border bg-transparent text-foreground hover:bg-muted/70 data-[state=on]:border-transparent data-[state=on]:bg-muted data-[state=on]:shadow-[0px_1px_1px_rgba(0,0,0,0.1)]\",\n};\n\nconst AdsToggleGroupContext = React.createContext<{\n orientation: AdsToggleGroupOrientation;\n size: AdsSize;\n variant: AdsToggleGroupVariant;\n} | null>(null);\n\ntype PrimitiveToggleGroupProps = React.ComponentPropsWithoutRef<\n typeof PrimitiveToggleGroup\n>;\n\nexport type AdsToggleGroupProps = PrimitiveToggleGroupProps & {\n children?: React.ReactNode;\n size?: AdsSize;\n variant?: AdsToggleGroupVariant;\n};\n\nexport interface AdsToggleGroupItemProps\n extends React.ComponentPropsWithoutRef<typeof PrimitiveToggleGroupItem> {\n size?: AdsSize;\n variant?: AdsToggleGroupVariant;\n}\n\nexport const AdsToggleGroup = React.forwardRef<\n React.ElementRef<typeof PrimitiveToggleGroup>,\n AdsToggleGroupProps\n>(\n (\n {\n children,\n className,\n orientation = \"horizontal\",\n size = \"md\",\n variant = \"default\",\n ...props\n },\n ref,\n ) => (\n <AdsToggleGroupContext.Provider value={{ orientation, size, variant }}>\n <PrimitiveToggleGroup\n className={cn(\n \"inline-flex items-start justify-start\",\n orientation === \"vertical\" ? \"flex-col\" : \"flex-row\",\n className,\n )}\n orientation={orientation}\n ref={ref}\n {...props}\n >\n {children}\n </PrimitiveToggleGroup>\n </AdsToggleGroupContext.Provider>\n ),\n);\n\nAdsToggleGroup.displayName = \"AdsToggleGroup\";\n\nexport const AdsToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof PrimitiveToggleGroupItem>,\n AdsToggleGroupItemProps\n>(({ className, size, variant, ...props }, ref) => {\n const context = React.useContext(AdsToggleGroupContext);\n const resolvedOrientation = context?.orientation ?? \"horizontal\";\n const resolvedSize = size ?? context?.size ?? \"md\";\n const resolvedVariant = variant ?? context?.variant ?? \"default\";\n\n return (\n <PrimitiveToggleGroupItem\n className={cn(\n \"inline-flex shrink-0 items-center justify-center font-medium leading-5 text-foreground focus-visible:relative focus-visible:z-10 focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:opacity-50\",\n sizeClassName[resolvedSize],\n variantClassName[resolvedVariant],\n resolvedOrientation === \"horizontal\"\n ? \"first:rounded-l-radius-md first:rounded-r-none last:rounded-l-none last:rounded-r-radius-md not-first:not-last:rounded-none\"\n : \"first:rounded-t-radius-md first:rounded-b-none last:rounded-t-none last:rounded-b-radius-md not-first:not-last:rounded-none\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n});\n\nAdsToggleGroupItem.displayName = \"AdsToggleGroupItem\";\n","import * as React from \"react\"\nimport * as ToggleGroupPrimitive from \"@radix-ui/react-toggle-group\"\n\nimport { cn } from \"@/lib/utils\"\n\nconst ToggleGroup = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <ToggleGroupPrimitive.Root\n className={cn(\"inline-flex items-center justify-start\", className)}\n ref={ref}\n {...props}\n />\n))\n\nToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName\n\nconst ToggleGroupItem = React.forwardRef<\n React.ElementRef<typeof ToggleGroupPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>\n>(({ className, ...props }, ref) => (\n <ToggleGroupPrimitive.Item\n className={cn(\n \"inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-[background-color,box-shadow,color] focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n className,\n )}\n ref={ref}\n {...props}\n />\n))\n\nToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName\n\nexport { ToggleGroup, ToggleGroupItem }\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { Textarea } from \"../../primitives/textarea\";\nimport {\n AdsFieldDescription,\n type AdsFieldDescriptionPlacement,\n AdsFieldError,\n AdsFieldItem,\n AdsFieldLabel,\n useAdsFieldDescription,\n} from \"../AdsField\";\n\ntype TextareaProps = React.ComponentPropsWithoutRef<typeof Textarea>;\n\nconst textareaBaseClassName =\n \"w-full rounded-radius-md border border-border bg-card px-md py-md text-base leading-6 shadow-[0px_1px_2px_rgba(0,0,0,0.1)] placeholder:text-[var(--muted-foreground)] focus-visible:border-border-focus focus-visible:outline-none focus-visible:ring-[3px] focus-visible:ring-[rgba(161,161,161,0.5)] focus-visible:ring-offset-0 disabled:cursor-not-allowed disabled:opacity-50\";\n\nexport interface AdsTextareaProps extends Omit<\n TextareaProps,\n \"aria-invalid\" | \"size\"\n> {\n action?: React.ReactNode;\n descriptionPlacement?: AdsFieldDescriptionPlacement;\n errorText?: React.ReactNode;\n helperText?: React.ReactNode;\n label?: React.ReactNode;\n resizable?: boolean;\n}\n\nexport const AdsTextarea = React.forwardRef<\n HTMLTextAreaElement,\n AdsTextareaProps\n>(\n (\n {\n action,\n className,\n descriptionPlacement = \"below\",\n errorText,\n helperText,\n id,\n label,\n resizable = true,\n rows = 3,\n ...props\n },\n ref,\n ) => {\n const description = useAdsFieldDescription({\n describedBy: props[\"aria-describedby\"],\n errorText,\n helperText,\n id,\n });\n\n const helperNode = helperText ? (\n <AdsFieldDescription id={description.helperId}>\n {helperText}\n </AdsFieldDescription>\n ) : null;\n const errorNode = errorText ? (\n <AdsFieldError id={description.errorId}>{errorText}</AdsFieldError>\n ) : null;\n\n return (\n <AdsFieldItem>\n {label ? (\n <AdsFieldLabel htmlFor={description.inputId}>{label}</AdsFieldLabel>\n ) : null}\n {descriptionPlacement === \"above\" ? helperNode : null}\n <Textarea\n aria-describedby={description.describedBy}\n aria-invalid={errorText ? true : undefined}\n className={cn(\n textareaBaseClassName,\n adsTextColorClassName.card,\n \"min-h-[80px]\",\n resizable ? \"resize-y\" : \"resize-none\",\n className,\n )}\n id={description.inputId}\n ref={ref}\n rows={rows}\n {...props}\n />\n {action ? <div className=\"w-full [&>*]:w-full\">{action}</div> : null}\n {descriptionPlacement === \"below\" ? helperNode : null}\n {errorNode}\n </AdsFieldItem>\n );\n },\n);\nAdsTextarea.displayName = \"AdsTextarea\";\n","\"use client\";\n\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/cn\";\nimport {\n Tooltip as BaseTooltip,\n TooltipArrow as BaseTooltipArrow,\n TooltipContent as BaseTooltipContent,\n TooltipProvider as BaseTooltipProvider,\n TooltipTrigger as BaseTooltipTrigger,\n} from \"../../primitives/tooltip\";\n\nexport type AdsTooltipProviderProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipProvider\n>;\nexport type AdsTooltipProps = React.ComponentPropsWithoutRef<typeof BaseTooltip>;\nexport type AdsTooltipTriggerProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipTrigger\n>;\nexport type AdsTooltipArrowProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipArrow\n>;\nexport type AdsTooltipContentProps = React.ComponentPropsWithoutRef<\n typeof BaseTooltipContent\n>;\n\nconst tooltipContentClassName =\n \"z-50 rounded-[6px] border-0 bg-[#844fff] px-3 py-2 text-sm font-normal leading-5 text-[#fdfdfd] shadow-[0px_8px_24px_rgba(0,0,0,0.22)]\";\n\nconst AdsTooltipProvider = BaseTooltipProvider;\nconst AdsTooltip = BaseTooltip;\nconst AdsTooltipTrigger = BaseTooltipTrigger;\n\nconst AdsTooltipContent = React.forwardRef<\n React.ElementRef<typeof BaseTooltipContent>,\n AdsTooltipContentProps\n>(({ align = \"center\", className, sideOffset = 10, ...props }, ref) => (\n <BaseTooltipContent\n align={align}\n className={cn(tooltipContentClassName, className)}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n));\nAdsTooltipContent.displayName = \"AdsTooltipContent\";\n\nconst AdsTooltipArrow = React.forwardRef<\n React.ElementRef<typeof BaseTooltipArrow>,\n AdsTooltipArrowProps\n>(({ className, height = 5, width = 10, ...props }, ref) => (\n <BaseTooltipArrow\n className={cn(\"fill-[#844fff]\", className)}\n height={height}\n ref={ref}\n width={width}\n {...props}\n />\n));\nAdsTooltipArrow.displayName = \"AdsTooltipArrow\";\n\nexport {\n AdsTooltip,\n AdsTooltipArrow,\n AdsTooltipContent,\n AdsTooltipProvider,\n AdsTooltipTrigger,\n};\n","import * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"@/lib/utils\";\n\nconst TooltipProvider = TooltipPrimitive.Provider;\nconst Tooltip = TooltipPrimitive.Root;\nconst TooltipTrigger = TooltipPrimitive.Trigger;\nconst TooltipArrow = TooltipPrimitive.Arrow;\n\nconst TooltipContent = React.forwardRef<\n React.ElementRef<typeof TooltipPrimitive.Content>,\n React.ComponentPropsWithoutRef<typeof TooltipPrimitive.Content>\n>(({ className, sideOffset = 4, ...props }, ref) => (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n className={cn(\n \"z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md outline-none data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-tooltip-content-transform-origin]\",\n className,\n )}\n ref={ref}\n sideOffset={sideOffset}\n {...props}\n />\n </TooltipPrimitive.Portal>\n));\nTooltipContent.displayName = TooltipPrimitive.Content.displayName;\n\nexport {\n Tooltip,\n TooltipArrow,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport {\n CircleCheck,\n Info,\n LoaderCircle,\n OctagonX,\n TriangleAlert,\n} from \"lucide-react\";\nimport { Toaster, toast, type ExternalToast, type ToasterProps } from \"sonner\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\nimport { AdsButton } from \"../AdsButton\";\n\nexport type AdsToastIntent =\n | \"default\"\n | \"success\"\n | \"info\"\n | \"warning\"\n | \"error\"\n | \"loading\";\n\nexport type AdsToastAction = {\n label: React.ReactNode;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n};\n\nexport interface AdsToastProps extends Omit<\n React.ComponentPropsWithoutRef<\"div\">,\n \"title\"\n> {\n action?: AdsToastAction;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n intent?: AdsToastIntent;\n title: React.ReactNode;\n}\n\nexport interface AdsToastOptions extends Omit<\n ExternalToast,\n | \"action\"\n | \"cancel\"\n | \"className\"\n | \"classNames\"\n | \"description\"\n | \"icon\"\n | \"unstyled\"\n> {\n action?: AdsToastAction;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n testId?: string;\n}\n\ntype AdsToastPromiseStage = {\n action?: AdsToastAction;\n description?: React.ReactNode;\n icon?: React.ReactNode;\n title: React.ReactNode;\n};\n\nexport interface AdsToastPromiseOptions<ToastData> extends Omit<\n ExternalToast,\n | \"action\"\n | \"cancel\"\n | \"className\"\n | \"classNames\"\n | \"description\"\n | \"icon\"\n | \"unstyled\"\n> {\n error: AdsToastPromiseStage | ((error: unknown) => AdsToastPromiseStage);\n loading: AdsToastPromiseStage;\n success: AdsToastPromiseStage | ((data: ToastData) => AdsToastPromiseStage);\n}\n\nconst adsToastIconMap: Record<\n Exclude<AdsToastIntent, \"default\">,\n React.ComponentType<{ className?: string }>\n> = {\n success: CircleCheck,\n info: Info,\n warning: TriangleAlert,\n error: OctagonX,\n loading: LoaderCircle,\n};\n\nfunction resolveToastIcon(intent: AdsToastIntent, icon?: React.ReactNode) {\n if (icon) {\n return icon;\n }\n\n if (intent === \"default\") {\n return null;\n }\n\n const Icon = adsToastIconMap[intent];\n\n return (\n <Icon\n aria-hidden\n className={cn(\n \"h-4 w-4 shrink-0\",\n adsTextColorClassName.popover,\n intent === \"loading\" && \"animate-spin\",\n )}\n data-testid=\"ads-toast-icon\"\n />\n );\n}\n\nexport const AdsToast = React.forwardRef<HTMLDivElement, AdsToastProps>(\n (\n {\n action,\n className,\n description,\n icon,\n intent = \"default\",\n title,\n ...props\n },\n ref,\n ) => {\n const resolvedIcon = resolveToastIcon(intent, icon);\n\n return (\n <div\n className={cn(\n \"flex min-w-[356px] max-w-[356px] items-center rounded-radius-lg border border-border bg-popover p-4\",\n adsTextColorClassName.popover,\n \"shadow-[0px_10px_15px_-3px_rgba(0,0,0,0.1),0px_4px_6px_-4px_rgba(0,0,0,0.1)]\",\n resolvedIcon ? \"gap-1.5\" : action ? \"gap-6\" : \"gap-0\",\n className,\n )}\n data-testid=\"ads-toast\"\n ref={ref}\n {...props}\n >\n {resolvedIcon}\n <div className=\"flex min-w-0 flex-1 flex-col gap-0.5\">\n <p\n className={cn(\n \"text-sm font-medium leading-5\",\n adsTextColorClassName.popover,\n )}\n >\n {title}\n </p>\n {description ? (\n <p\n className={cn(\n \"text-xs font-normal leading-4\",\n adsTextColorClassName.muted,\n )}\n >\n {description}\n </p>\n ) : null}\n </div>\n {action ? (\n <AdsButton\n className=\"shrink-0 rounded-radius-lg\"\n intent=\"primary\"\n onClick={action.onClick}\n size=\"sm\"\n >\n {action.label}\n </AdsButton>\n ) : null}\n </div>\n );\n },\n);\nAdsToast.displayName = \"AdsToast\";\n\nexport interface AdsToasterProps extends Omit<\n ToasterProps,\n \"containerAriaLabel\" | \"icons\" | \"toastOptions\"\n> {\n containerAriaLabel?: string;\n}\n\nexport function AdsToaster({\n containerAriaLabel,\n duration = 4000,\n expand = false,\n gap = 16,\n position = \"bottom-right\",\n visibleToasts = 6,\n ...props\n}: AdsToasterProps) {\n const { messages } = useAdsI18n();\n\n return (\n <Toaster\n closeButton={false}\n containerAriaLabel={containerAriaLabel ?? messages.toast.notifications}\n duration={duration}\n expand={expand}\n gap={gap}\n position={position}\n toastOptions={{\n unstyled: true,\n }}\n visibleToasts={visibleToasts}\n {...props}\n />\n );\n}\n\nfunction toStageNode(\n intent: AdsToastIntent,\n title: React.ReactNode,\n options?: Pick<AdsToastOptions, \"action\" | \"description\" | \"icon\">,\n) {\n return (\n <AdsToast\n action={options?.action}\n description={options?.description}\n icon={options?.icon}\n intent={intent}\n title={title}\n />\n );\n}\n\nfunction showAdsToast(\n intent: AdsToastIntent,\n title: React.ReactNode,\n options?: AdsToastOptions,\n) {\n const { action, description, icon, ...toastOptions } = options ?? {};\n\n return toast.custom(\n (id) => (\n <AdsToast\n action={\n action\n ? {\n ...action,\n onClick: (event) => {\n action.onClick?.(event);\n toast.dismiss(id);\n },\n }\n : undefined\n }\n description={description}\n icon={icon}\n intent={intent}\n title={title}\n />\n ),\n {\n ...toastOptions,\n unstyled: true,\n },\n );\n}\n\nfunction resolvePromiseStage<ToastData>(\n stage: AdsToastPromiseStage | ((value: ToastData) => AdsToastPromiseStage),\n value: ToastData,\n) {\n return typeof stage === \"function\" ? stage(value) : stage;\n}\n\ntype AdsToastManager = ((\n title: React.ReactNode,\n options?: AdsToastOptions,\n) => string | number) & {\n dismiss: (id?: number | string) => string | number;\n error: (title: React.ReactNode, options?: AdsToastOptions) => string | number;\n info: (title: React.ReactNode, options?: AdsToastOptions) => string | number;\n loading: (\n title: React.ReactNode,\n options?: AdsToastOptions,\n ) => string | number;\n promise: <ToastData>(\n promise: Promise<ToastData> | (() => Promise<ToastData>),\n options: AdsToastPromiseOptions<ToastData>,\n ) => ReturnType<typeof toast.promise<ToastData>>;\n success: (\n title: React.ReactNode,\n options?: AdsToastOptions,\n ) => string | number;\n warning: (\n title: React.ReactNode,\n options?: AdsToastOptions,\n ) => string | number;\n};\n\nexport const AdsToastManager: AdsToastManager = Object.assign(\n (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"default\", title, options),\n {\n success: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"success\", title, options),\n info: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"info\", title, options),\n warning: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"warning\", title, options),\n error: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"error\", title, options),\n loading: (title: React.ReactNode, options?: AdsToastOptions) =>\n showAdsToast(\"loading\", title, options),\n dismiss: (id?: number | string) => toast.dismiss(id),\n promise: <ToastData,>(\n promise: Promise<ToastData> | (() => Promise<ToastData>),\n options: AdsToastPromiseOptions<ToastData>,\n ) => {\n const { error, loading, success, ...toastOptions } = options;\n\n return toast.promise(promise, {\n ...toastOptions,\n unstyled: true,\n loading: toStageNode(\"loading\", loading.title, loading),\n success: (value) => {\n const stage = resolvePromiseStage(success, value);\n\n return toStageNode(\"success\", stage.title, stage);\n },\n error: (reason) => {\n const stage = resolvePromiseStage(error, reason);\n\n return toStageNode(\"error\", stage.title, stage);\n },\n });\n },\n },\n);\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X } from \"lucide-react\";\n\nimport { useAdsI18n } from \"../../i18n\";\nimport { cn } from \"../../lib/cn\";\nimport { adsTextColorClassName } from \"../../lib/colorClassNames\";\n\nexport type DialogProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Root\n>;\nexport type DialogTriggerProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Trigger\n>;\nexport type DialogPortalProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Portal\n>;\nexport type DialogOverlayProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Overlay\n>;\nexport type DialogCloseProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Close\n>;\n\nexport interface DialogContentProps extends React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Content\n> {\n closeLabel?: string;\n hideCloseButton?: boolean;\n}\n\nexport type DialogHeaderProps = React.HTMLAttributes<HTMLDivElement>;\nexport type DialogBodyProps = React.HTMLAttributes<HTMLDivElement>;\nexport type DialogFooterProps = React.HTMLAttributes<HTMLDivElement>;\nexport type DialogTitleProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Title\n>;\nexport type DialogDescriptionProps = React.ComponentPropsWithoutRef<\n typeof DialogPrimitive.Description\n>;\n\nconst overlayClassName =\n \"fixed inset-0 z-50 bg-black/80 backdrop-blur-[2px] data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0\";\n\nconst contentClassName =\n \"fixed left-1/2 top-1/2 z-50 flex max-h-[calc(100dvh-2rem)] w-[calc(100%-2rem)] max-w-[423px] -translate-x-1/2 -translate-y-1/2 flex-col gap-lg overflow-hidden rounded-radius-md border border-border bg-card p-xl shadow-[0px_4px_6px_-4px_rgba(0,0,0,0.1),0px_10px_15px_-3px_rgba(0,0,0,0.1)] duration-200 data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]\";\n\nconst bodyClassName =\n \"min-h-0 flex-1 overflow-y-auto overscroll-contain [scrollbar-gutter:stable]\";\n\nconst closeButtonClassName =\n \"absolute right-xl top-xl inline-flex h-6 w-6 items-center justify-center rounded-sm opacity-80 transition-opacity hover:opacity-100 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none\";\n\nconst Dialog = DialogPrimitive.Root;\nconst DialogTrigger = DialogPrimitive.Trigger;\nconst DialogPortal = DialogPrimitive.Portal;\n\nconst DialogOverlay = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Overlay>,\n DialogOverlayProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Overlay\n className={cn(overlayClassName, className)}\n ref={ref}\n {...props}\n />\n));\nDialogOverlay.displayName = \"DialogOverlay\";\n\nconst DialogClose = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Close>,\n DialogCloseProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Close\n className={cn(\n \"inline-flex items-center justify-center rounded-radius-md focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-card disabled:pointer-events-none\",\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nDialogClose.displayName = \"DialogClose\";\n\nfunction flattenDialogChildren(children: React.ReactNode): React.ReactNode[] {\n const nodes: React.ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child) && child.type === React.Fragment) {\n nodes.push(...flattenDialogChildren(child.props.children));\n return;\n }\n\n nodes.push(child);\n });\n\n return nodes;\n}\n\nfunction isDialogSlotElement<P>(\n child: React.ReactNode,\n component: React.ComponentType<P>,\n): child is React.ReactElement<P> {\n return React.isValidElement(child) && child.type === component;\n}\n\nconst DialogBody = React.forwardRef<HTMLDivElement, DialogBodyProps>(\n ({ className, ...props }, ref) => (\n <div\n className={cn(bodyClassName, className)}\n data-slot=\"ads-dialog-body\"\n ref={ref}\n {...props}\n />\n ),\n);\nDialogBody.displayName = \"DialogBody\";\n\nconst DialogContent = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Content>,\n DialogContentProps\n>(\n (\n { children, className, closeLabel, hideCloseButton = false, ...props },\n ref,\n ) => {\n const { messages } = useAdsI18n();\n const resolvedCloseLabel = closeLabel ?? messages.dialog.close;\n const childNodes = flattenDialogChildren(children);\n const headerIndex = childNodes.findIndex((child) =>\n isDialogSlotElement(child, DialogHeader),\n );\n let footerIndex = -1;\n\n for (let index = childNodes.length - 1; index >= 0; index -= 1) {\n if (isDialogSlotElement(childNodes[index], DialogFooter)) {\n footerIndex = index;\n break;\n }\n }\n\n const headerNode = headerIndex >= 0 ? childNodes[headerIndex] : null;\n const generatedHeaderNodes: React.ReactNode[] = [];\n\n if (headerNode === null) {\n for (let index = 0; index < childNodes.length; index += 1) {\n if (index === footerIndex) {\n break;\n }\n\n const child = childNodes[index];\n const isHeaderChild =\n isDialogSlotElement(child, DialogTitle) ||\n isDialogSlotElement(child, DialogDescription);\n\n if (!isHeaderChild) {\n break;\n }\n\n generatedHeaderNodes.push(child);\n }\n }\n const footerNode =\n footerIndex >= 0 && footerIndex !== headerIndex\n ? childNodes[footerIndex]\n : null;\n const bodyNodes = childNodes.filter(\n (child, index) => {\n if (index === headerIndex || index === footerIndex) {\n return false;\n }\n\n return !generatedHeaderNodes.includes(child);\n },\n );\n const explicitBodyNodes = bodyNodes.filter((child) =>\n isDialogSlotElement(child, DialogBody),\n );\n const looseBodyNodes = bodyNodes.filter(\n (child) => !isDialogSlotElement(child, DialogBody),\n );\n\n return (\n <DialogPortal>\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"ads-dialog-content\"\n className={cn(\n contentClassName,\n adsTextColorClassName.card,\n className,\n )}\n ref={ref}\n {...props}\n >\n {headerNode}\n {headerNode === null && generatedHeaderNodes.length > 0 ? (\n <DialogHeader>{generatedHeaderNodes}</DialogHeader>\n ) : null}\n {explicitBodyNodes.length > 0 ? explicitBodyNodes : null}\n {looseBodyNodes.length > 0 ? (\n <DialogBody>{looseBodyNodes}</DialogBody>\n ) : null}\n {footerNode}\n {!hideCloseButton ? (\n <DialogPrimitive.Close\n aria-label={resolvedCloseLabel}\n className={cn(closeButtonClassName, adsTextColorClassName.card)}\n >\n <X aria-hidden className=\"h-4 w-4\" />\n <span className=\"sr-only\">{resolvedCloseLabel}</span>\n </DialogPrimitive.Close>\n ) : null}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n },\n);\nDialogContent.displayName = \"DialogContent\";\n\nconst DialogHeader = React.forwardRef<HTMLDivElement, DialogHeaderProps>(\n ({ className, ...props }, ref) => (\n <div\n data-slot=\"ads-dialog-header\"\n className={cn(\"flex flex-col gap-sm pr-8 text-left\", className)}\n ref={ref}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = \"DialogHeader\";\n\nconst DialogFooter = React.forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, ...props }, ref) => (\n <div\n data-slot=\"ads-dialog-footer\"\n className={cn(\n \"flex flex-col-reverse gap-sm sm:flex-row sm:justify-end\",\n className,\n )}\n ref={ref}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = \"DialogFooter\";\n\nconst DialogTitle = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Title>,\n DialogTitleProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Title\n className={cn(\n \"text-lg font-semibold leading-7\",\n adsTextColorClassName.card,\n className,\n )}\n ref={ref}\n {...props}\n />\n));\nDialogTitle.displayName = \"DialogTitle\";\n\nconst DialogDescription = React.forwardRef<\n React.ElementRef<typeof DialogPrimitive.Description>,\n DialogDescriptionProps\n>(({ className, ...props }, ref) => (\n <DialogPrimitive.Description\n className={cn(\"text-sm leading-5\", adsTextColorClassName.muted, className)}\n ref={ref}\n {...props}\n />\n));\nDialogDescription.displayName = \"DialogDescription\";\n\nconst AdsDialog = Dialog;\nconst AdsDialogTrigger = DialogTrigger;\nconst AdsDialogPortal = DialogPortal;\nconst AdsDialogOverlay = DialogOverlay;\nconst AdsDialogClose = DialogClose;\nconst AdsDialogContent = DialogContent;\nconst AdsDialogHeader = DialogHeader;\nconst AdsDialogBody = DialogBody;\nconst AdsDialogFooter = DialogFooter;\nconst AdsDialogTitle = DialogTitle;\nconst AdsDialogDescription = DialogDescription;\n\nexport type AdsDialogProps = DialogProps;\nexport type AdsDialogTriggerProps = DialogTriggerProps;\nexport type AdsDialogPortalProps = DialogPortalProps;\nexport type AdsDialogOverlayProps = DialogOverlayProps;\nexport type AdsDialogCloseProps = DialogCloseProps;\nexport type AdsDialogContentProps = DialogContentProps;\nexport type AdsDialogHeaderProps = DialogHeaderProps;\nexport type AdsDialogBodyProps = DialogBodyProps;\nexport type AdsDialogFooterProps = DialogFooterProps;\nexport type AdsDialogTitleProps = DialogTitleProps;\nexport type AdsDialogDescriptionProps = DialogDescriptionProps;\n\nexport {\n Dialog,\n DialogTrigger,\n DialogPortal,\n DialogOverlay,\n DialogClose,\n DialogContent,\n DialogHeader,\n DialogBody,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n AdsDialog,\n AdsDialogTrigger,\n AdsDialogPortal,\n AdsDialogOverlay,\n AdsDialogClose,\n AdsDialogContent,\n AdsDialogHeader,\n AdsDialogBody,\n AdsDialogFooter,\n AdsDialogTitle,\n AdsDialogDescription,\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport { Masonry } from \"masonic\";\n\nimport { cn } from \"../../lib/cn\";\nimport { AdsSkeleton } from \"../AdsSkeleton\";\n\ntype AdsMasonryClassNames = {\n empty?: string;\n item?: string;\n root?: string;\n skeleton?: string;\n};\n\nexport interface AdsMasonryProps<Item> {\n items: Item[];\n renderItem: (\n item: Item,\n meta: { index: number; width: number },\n ) => React.ReactNode;\n layoutKey?: React.Key;\n getItemKey?: (item: Item, index: number) => string | number;\n columnWidth?: number;\n maxColumnCount?: number;\n gap?: number;\n itemHeightEstimate?: number;\n overscanBy?: number;\n scrollFps?: number;\n ssrWidth?: number;\n ssrHeight?: number;\n emptyState?: React.ReactNode;\n loading?: boolean;\n loadingItemCount?: number;\n className?: string;\n itemClassName?: string;\n classNames?: AdsMasonryClassNames;\n onRender?: (startIndex: number, stopIndex: number, items: Item[]) => void;\n}\n\nconst DEFAULT_COLUMN_WIDTH = 240;\nconst DEFAULT_GAP = 16;\nconst DEFAULT_ITEM_HEIGHT_ESTIMATE = 280;\nconst DEFAULT_LOADING_ITEM_COUNT = 8;\nconst DEFAULT_MAX_COLUMN_COUNT = 4;\nconst LOADING_MEDIA_HEIGHT_PATTERN = [172, 220, 184, 236, 196, 208];\nconst LOADING_TITLE_WIDTH_PATTERN = [\"54%\", \"68%\", \"58%\", \"72%\", \"62%\", \"66%\"];\nconst LOADING_BODY_WIDTH_PATTERN = [\"88%\", \"82%\", \"86%\", \"78%\", \"84%\", \"80%\"];\n\nexport function AdsMasonry<Item>({\n items,\n renderItem,\n layoutKey,\n getItemKey,\n columnWidth = DEFAULT_COLUMN_WIDTH,\n maxColumnCount = DEFAULT_MAX_COLUMN_COUNT,\n gap = DEFAULT_GAP,\n itemHeightEstimate = DEFAULT_ITEM_HEIGHT_ESTIMATE,\n overscanBy,\n scrollFps,\n ssrWidth,\n ssrHeight,\n emptyState,\n loading = false,\n loadingItemCount = DEFAULT_LOADING_ITEM_COUNT,\n className,\n itemClassName,\n classNames,\n onRender,\n}: AdsMasonryProps<Item>) {\n const rootClassName = cn(\"w-full\", classNames?.root, className);\n\n if (loading) {\n const skeletonItems = Array.from(\n { length: loadingItemCount },\n (_, index) => index,\n );\n\n return (\n <div\n className={cn(\n \"grid gap-4 sm:grid-cols-2 xl:grid-cols-3\",\n rootClassName,\n )}\n data-slot=\"ads-masonry\"\n >\n {skeletonItems.map((index) => {\n const mediaHeight =\n LOADING_MEDIA_HEIGHT_PATTERN[\n index % LOADING_MEDIA_HEIGHT_PATTERN.length\n ];\n const titleWidth =\n LOADING_TITLE_WIDTH_PATTERN[\n index % LOADING_TITLE_WIDTH_PATTERN.length\n ];\n const bodyWidth =\n LOADING_BODY_WIDTH_PATTERN[\n index % LOADING_BODY_WIDTH_PATTERN.length\n ];\n\n return (\n <article\n className=\"overflow-hidden rounded-radius-lg border border-border bg-card shadow-showcase\"\n data-slot=\"ads-masonry-loading-card\"\n data-testid=\"ads-masonry-loading-card\"\n key={index}\n >\n <div\n className=\"border-b border-border/60 bg-surface-inset/50\"\n data-slot=\"ads-masonry-skeleton-preview\"\n data-testid=\"ads-masonry-skeleton-preview\"\n >\n <AdsSkeleton\n className={cn(\"w-full rounded-none\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n style={{ height: `${mediaHeight}px` }}\n />\n </div>\n\n <div className=\"flex flex-col gap-4 p-lg\">\n <div className=\"flex items-start justify-between gap-3\">\n <div className=\"flex-1 space-y-2\">\n <AdsSkeleton\n className={cn(\"h-3 w-16 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n />\n <AdsSkeleton\n className={cn(\"h-6 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n style={{ width: titleWidth }}\n />\n </div>\n <AdsSkeleton\n className={cn(\"h-6 w-16 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n />\n </div>\n\n <AdsSkeleton\n className={cn(\"h-4 rounded-full\", classNames?.skeleton)}\n data-slot=\"ads-masonry-skeleton\"\n data-testid=\"ads-masonry-skeleton\"\n style={{ width: bodyWidth }}\n />\n </div>\n </article>\n );\n })}\n </div>\n );\n }\n\n if (items.length === 0) {\n return emptyState ? (\n <div\n className={cn(rootClassName, classNames?.empty)}\n data-slot=\"ads-masonry-empty\"\n >\n {emptyState}\n </div>\n ) : null;\n }\n\n return (\n <Masonry\n key={layoutKey}\n className={rootClassName}\n columnGutter={gap}\n columnWidth={columnWidth}\n itemHeightEstimate={itemHeightEstimate}\n itemKey={getItemKey}\n items={items}\n maxColumnCount={maxColumnCount}\n onRender={onRender}\n overscanBy={overscanBy}\n render={({ data, index, width }) => (\n <div\n className={cn(\"pb-0\", classNames?.item, itemClassName)}\n data-slot=\"ads-masonry-item\"\n >\n {renderItem(data, { index, width })}\n </div>\n )}\n role=\"list\"\n rowGutter={gap}\n scrollFps={scrollFps}\n ssrHeight={ssrHeight}\n ssrWidth={ssrWidth}\n />\n );\n}\n","export const designTokens = {\n background: \"#151619\",\n foreground: \"#fdfdfd\",\n card: \"#1b1c21\",\n cardForeground: \"#fdfdfd\",\n popover: \"#2a2b2f\",\n popoverForeground: \"#fdfdfd\",\n primary: \"#844fff\",\n primaryForeground: \"#fdfdfd\",\n secondary: \"#3f4043\",\n secondaryForeground: \"#fdfdfd\",\n muted: \"#3f4043\",\n mutedForeground: \"#7e7f81\",\n accent: \"#3f4043\",\n accentForeground: \"#fdfdfd\",\n destructive: \"#dc2626\",\n destructiveForeground: \"#ff9b9b\",\n border: \"#545558\",\n input: \"#151619\",\n ring: \"#a984ff\",\n brandSecondary: \"#af41ff\",\n brandSecondaryForeground: \"#151619\",\n brandGradientFrom: \"#6859ff\",\n brandGradientTo: \"#af41ff\",\n success: \"#008e61\",\n successForeground: \"#fdfdfd\",\n warning: \"#cd6c00\",\n warningForeground: \"#fdfdfd\",\n info: \"#844fff\",\n infoForeground: \"#fdfdfd\",\n borderMuted: \"#3f4043\",\n active: \"#422880\",\n activeForeground: \"#fdfdfd\",\n labelForeground: \"#a8a9aa\",\n icon: \"#939496\",\n iconMuted: \"#545558\",\n spacing: {\n xs: \"0.25rem\",\n sm: \"0.5rem\",\n md: \"0.75rem\",\n lg: \"1rem\",\n xl: \"1.5rem\",\n \"2xl\": \"2rem\",\n },\n radius: {\n sm: \"0.25rem\",\n md: \"0.375rem\",\n lg: \"0.5rem\",\n xl: \"0.75rem\",\n full: \"9999px\",\n },\n size: {\n controlHeight: \"2.5rem\",\n modalWidth: \"42rem\",\n sidebarWidth: \"17.5rem\",\n },\n zIndex: {\n toolbar: 30,\n overlay: 40,\n modal: 50,\n toast: 60,\n },\n} as const;\n\nexport type DesignTokens = typeof designTokens;\n"],"mappings":"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","names":["Alert","AlertDescription","AlertTitle","React","React","import_jsx_runtime","import_jsx_runtime","React","import_class_variance_authority","import_lucide_react","React","import_jsx_runtime","import_jsx_runtime","Alert","AlertTitle","AlertDescription","React","import_class_variance_authority","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","format","React","import_jsx_runtime","React","React","import_class_variance_authority","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","sizeClassName","React","import_lucide_react","React","import_react_slot","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","import_jsx_runtime","React","import_class_variance_authority","React","import_class_variance_authority","import_jsx_runtime","React","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","Checkbox","React","import_lucide_react","React","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","import_react","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","PersianDayPicker","enUSJalali","HijriDayPicker","enUSHijri","GregorianDayPicker","import_jsx_runtime","React","import_react_slot","import_react_slot","import_class_variance_authority","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","toneClassName","React","React","import_jsx_runtime","import_jsx_runtime","toneClassName","React","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","React","import_lucide_react","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","React","import_jsx_runtime","contentClassName","import_jsx_runtime","React","import_lucide_react","import_class_variance_authority","import_jsx_runtime","React","import_lucide_react","React","React","import_lucide_react","import_jsx_runtime","import_jsx_runtime","RadioGroup","RadioGroupItem","React","import_jsx_runtime","import_jsx_runtime","RadioGroupItem","Checkbox","import_jsx_runtime","column","Checkbox","RadioGroup","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","Progress","React","React","import_jsx_runtime","import_jsx_runtime","Slider","React","React","import_jsx_runtime","import_jsx_runtime","Switch","React","React","import_jsx_runtime","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","sizeClassName","React","React","import_jsx_runtime","import_jsx_runtime","sizeClassName","variantClassName","React","import_jsx_runtime","React","React","import_jsx_runtime","import_jsx_runtime","React","import_lucide_react","import_jsx_runtime","Icon","React","import_lucide_react","import_jsx_runtime","overlayClassName","contentClassName","import_jsx_runtime"]}