@akira-io/ui 1.2.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/hooks/use-autosave.ts","../src/hooks/use-confirm-dialog.tsx","../src/components/ui/accordion.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/appearance-toggle.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/badge.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/combobox.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/data-table-faceted-filter.tsx","../src/components/ui/data-table-row-actions.tsx","../src/components/ui/empty-state.tsx","../src/components/ui/table.tsx","../src/components/ui/data-table.tsx","../src/components/ui/calendar-popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/date-range-filter.tsx","../src/components/ui/drawer.tsx","../src/components/ui/field.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/password-input.tsx","../src/components/ui/placeholder-pattern.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/save-status.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/slider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/text-link.tsx"],"names":["useState","jsx","React","AlertDialogPrimitive","jsxs","React2","AspectRatioPrimitive","api","React4","config","ContextMenuPrimitive","CheckIcon","Check","Icon","React5","useMemo","X","format","DrawerPrimitive","React6","Fragment","Slot","React7","HoverCardPrimitive","MenubarPrimitive","CircleIcon","ChevronRightIcon","cva","React8","useId","ProgressPrimitive","RadioGroupPrimitive","React9","React10","React11","SliderPrimitive","useEffect","Sonner"],"mappings":"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","file":"index.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nexport const AUTOSAVE_DELAY = 700;\n\nexport interface UseAutosaveOptions<T> {\n delay?: number;\n enabled?: boolean;\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseAutosaveResult {\n status: AutosaveStatus;\n error?: string;\n flush: () => void;\n reset: () => void;\n}\n\nfunction shallowEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) {\n return true;\n }\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false;\n }\n\n const keys = Object.keys(a as object);\n\n if (keys.length !== Object.keys(b as object).length) {\n return false;\n }\n\n return keys.every((key) =>\n Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n );\n}\n\nfunction messageOf(reason: unknown): string | undefined {\n if (reason instanceof Error) {\n return reason.message;\n }\n\n return typeof reason === 'string' ? reason : undefined;\n}\n\nexport function useAutosave<T>(\n values: T,\n onSave: (values: T) => void | Promise<void>,\n options: UseAutosaveOptions<T> = {},\n): UseAutosaveResult {\n const { delay = AUTOSAVE_DELAY, enabled = true, isEqual } = options;\n\n const [status, setStatus] = useState<AutosaveStatus>('idle');\n const [error, setError] = useState<string | undefined>(undefined);\n\n const latest = useRef(values);\n const dispatched = useRef(values);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const issued = useRef(0);\n const settled = useRef(0);\n const mounted = useRef(true);\n const save = useRef(onSave);\n const equal = useRef(isEqual ?? shallowEqual);\n\n latest.current = values;\n save.current = onSave;\n equal.current = isEqual ?? shallowEqual;\n\n const run = useCallback(async () => {\n const payload = latest.current;\n const ticket = (issued.current += 1);\n\n setStatus('saving');\n setError(undefined);\n\n try {\n await save.current(payload);\n\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setStatus('saved');\n } catch (reason) {\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setError(messageOf(reason));\n setStatus('error');\n }\n }, []);\n\n const flush = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n void run();\n }, [run]);\n\n const reset = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n setError(undefined);\n setStatus('idle');\n }, []);\n\n useEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n clearTimeout(timer.current);\n };\n }, []);\n\n useEffect(() => {\n if (!enabled || equal.current(values, dispatched.current)) {\n return;\n }\n\n dispatched.current = values;\n clearTimeout(timer.current);\n timer.current = setTimeout(() => void run(), delay);\n }, [values, delay, enabled, run]);\n\n return { status, error, flush, reset };\n}\n","import { ConfirmDialog } from '@/components/ui/confirm-dialog';\nimport { useState, type ReactNode } from 'react';\n\nexport interface UseConfirmDialogOptions {\n title?: string;\n description?: string | ReactNode;\n confirmText?: string;\n cancelText?: string;\n variant?: 'destructive' | 'default';\n}\n\nexport function useConfirmDialog() {\n const [isOpen, setIsOpen] = useState(false);\n const [options, setOptions] = useState<UseConfirmDialogOptions>({});\n const [onConfirmCallback, setOnConfirmCallback] = useState<\n (() => void) | null\n >(null);\n const [onCancelCallback, setOnCancelCallback] = useState<\n (() => void) | null\n >(null);\n\n const confirm = (\n onConfirm: () => void,\n confirmOptions?: UseConfirmDialogOptions,\n onCancel?: () => void,\n ) => {\n setOptions(confirmOptions || {});\n setOnConfirmCallback(() => onConfirm);\n setOnCancelCallback(() => onCancel ?? null);\n setIsOpen(true);\n };\n\n const handleConfirm = () => {\n onConfirmCallback?.();\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n onCancelCallback?.();\n setIsOpen(false);\n };\n\n const ConfirmDialogComponent = () => (\n <ConfirmDialog\n open={isOpen}\n onOpenChange={setIsOpen}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n {...options}\n />\n );\n\n return { confirm, ConfirmDialog: ConfirmDialogComponent };\n}\n","import * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { elevatedSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Accordion({\n className,\n slotName = 'accordion',\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & SlotNameProps) {\n return (\n <AccordionPrimitive.Root\n className={cn(elevatedSurface, 'px-5 bg-card', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> &\n SlotNameProps\n>(({ className, slotName = 'accordion-item', ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-border last:border-b-0', className)}\n {...props}\n data-slot={slotName}\n />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> &\n SlotNameProps\n>(({ className, children, slotName = 'accordion-trigger', ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n `text-base py-4 font-medium rounded-xl data-[state=open]:font-semibold flex flex-1 items-center justify-between transition-all [&[data-state=open]>svg]:rotate-180 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\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 SlotNameProps\n>(({ className, children, slotName = 'accordion-content', ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"text-md data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden transition-all\"\n {...props}\n data-slot={slotName}\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, AccordionContent, AccordionItem, AccordionTrigger };\n","'use client';\n\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { modalSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction AlertDialog({\n slotName = 'alert-dialog',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root> & SlotNameProps) {\n return <AlertDialogPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogTrigger({\n slotName = 'alert-dialog-trigger',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger> & SlotNameProps) {\n return <AlertDialogPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogPortal({\n slotName = 'alert-dialog-portal',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal> & SlotNameProps) {\n return <AlertDialogPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogOverlay({\n className,\n slotName = 'alert-dialog-overlay',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n slotName = 'alert-dialog-content',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: 'default' | 'sm';\n} & SlotNameProps) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-size={size}\n className={cn(\n `${modalSurface} group/alert-dialog-content gap-4 p-6 md:p-8 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-200`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n slotName = 'alert-dialog-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-1.5 has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr] grid grid-rows-[auto_1fr] place-items-center text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr]',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n slotName = 'alert-dialog-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-2 sm:flex-row sm:justify-end flex flex-col-reverse group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n slotName = 'alert-dialog-title',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n 'text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n slotName = 'alert-dialog-description',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description> &\n SlotNameProps) {\n return (\n <AlertDialogPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogMedia({\n className,\n slotName = 'alert-dialog-media',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n \"mb-2 size-16 sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8 rounded-2xl inline-flex items-center justify-center bg-muted\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n size = 'default',\n slotName = 'alert-dialog-action',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n slotName = 'alert-dialog-cancel',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { toggleVariants } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: 'default',\n variant: 'default',\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n slotName = 'toggle-group',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-variant={variant}\n data-size={size}\n className={cn(\n 'group/toggle-group data-[variant=outline]:shadow-xs rounded-2xl flex items-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n slotName = 'toggle-group-item',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'min-w-0 first:rounded-l-2xl last:rounded-r-2xl shrink-0 rounded-none shadow-none focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { MonitorIcon, MoonIcon, SunIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';\nimport { useAppearance, type Appearance } from '@/hooks/use-appearance';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { LucideIcon, SlotNameProps } from '@/types';\n\nexport interface AppearanceToggleLabels {\n groupLabel: string;\n lightLabel: string;\n darkLabel: string;\n systemLabel: string;\n}\n\nexport const appearanceToggleDefaultLabels: AppearanceToggleLabels = {\n groupLabel: 'Appearance',\n lightLabel: 'Light',\n darkLabel: 'Dark',\n systemLabel: 'System',\n};\n\ninterface AppearanceOption {\n value: Appearance;\n icon: LucideIcon;\n label: (labels: AppearanceToggleLabels) => string;\n}\n\nconst OPTIONS: AppearanceOption[] = [\n { value: 'light', icon: SunIcon, label: (labels) => labels.lightLabel },\n { value: 'dark', icon: MoonIcon, label: (labels) => labels.darkLabel },\n {\n value: 'system',\n icon: MonitorIcon,\n label: (labels) => labels.systemLabel,\n },\n];\n\ninterface AppearanceToggleProps extends React.ComponentProps<'div'> {\n variant?: 'segmented' | 'menu';\n labels?: Partial<AppearanceToggleLabels>;\n}\n\nfunction AppearanceToggle({\n className,\n variant = 'segmented',\n labels: labelOverrides,\n slotName = 'appearance-toggle',\n ...props\n}: AppearanceToggleProps & SlotNameProps) {\n const labels = useUiLabels(\n 'appearanceToggle',\n appearanceToggleDefaultLabels,\n labelOverrides,\n );\n const { appearance, updateAppearance } = useAppearance();\n const current = OPTIONS.find((option) => option.value === appearance);\n const CurrentIcon = current?.icon ?? MonitorIcon;\n\n if (variant === 'menu') {\n return (\n <div\n data-variant=\"menu\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n slotName=\"appearance-toggle-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={labels.groupLabel}\n >\n <CurrentIcon aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuRadioGroup\n value={appearance}\n onValueChange={(value) =>\n updateAppearance(value as Appearance)\n }\n >\n {OPTIONS.map((option) => (\n <DropdownMenuRadioItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n >\n <option.icon aria-hidden=\"true\" />\n {option.label(labels)}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n }\n\n return (\n <div\n data-variant=\"segmented\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroup\n type=\"single\"\n size=\"sm\"\n value={appearance}\n aria-label={labels.groupLabel}\n onValueChange={(value) => {\n if (value) {\n updateAppearance(value as Appearance);\n }\n }}\n >\n {OPTIONS.map((option) => (\n <ToggleGroupItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n aria-label={option.label(labels)}\n >\n <option.icon aria-hidden=\"true\" />\n <span>{option.label(labels)}</span>\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n </div>\n );\n}\n\nexport { AppearanceToggle, type AppearanceToggleProps };\n","import type { SlotNameProps } from '@/types';\nimport { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\n\nfunction AspectRatio({\n slotName = 'aspect-ratio',\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root> & SlotNameProps) {\n return <AspectRatioPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nexport { AspectRatio };\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-full border px-2.5 py-1 text-xs font-semibold w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90 focus-visible:outline-destructive',\n outline:\n 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n slotName = 'badge',\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean;\n } & SlotNameProps) {\n const Comp = asChild ? Slot : 'span';\n\n return (\n <Comp\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport { ArrowLeft, ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n elevatedSurface,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n slotName = 'carousel',\n ...props\n}: React.ComponentProps<'div'> & CarouselProps & SlotNameProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n scrollPrev();\n return;\n }\n\n scrollNext();\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation ||\n (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 relative bg-card',\n className,\n )}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n data-slot={slotName}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({\n className,\n slotName = 'carousel-content',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className={cn(nestedRadius, 'overflow-hidden')}\n data-slot={slotName}\n >\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({\n className,\n slotName = 'carousel-item',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-previous',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n slotName={slotName}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-next',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n slotName={slotName}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","'use client';\n\nimport * as React from 'react';\nimport type { TooltipValueType } from 'recharts';\nimport * as RechartsPrimitive from 'recharts';\n\nimport {\n elevatedSurface,\n menuSurface,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>;\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n slotName = 'chart',\n ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n initialDimension?: {\n width: number;\n height: number;\n };\n} & SlotNameProps) {\n const uniqueId = React.useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 bg-card',\n \"aspect-video text-xs flex justify-center [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer\n initialDimension={initialDimension}\n >\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`,\n )\n .join('\\n'),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n 'accessibilityLayer'\n >) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? (config[label]?.label ?? label)\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n `${menuSurface} gap-1.5 px-3 py-2 text-xs grid min-w-[8rem] items-start`,\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"gap-1.5 grid\">\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n const indicatorColor =\n color ?? item.payload?.fill ?? item.color;\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 flex w-full flex-wrap items-stretch [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter &&\n item?.value !== undefined &&\n item.name ? (\n formatter(\n item.value,\n item.name,\n item,\n index,\n item.payload,\n )\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)',\n {\n 'h-2.5 w-2.5':\n indicator ===\n 'dot',\n 'w-1':\n indicator ===\n 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator ===\n 'dashed',\n 'my-0.5':\n nestLabel &&\n indicator ===\n 'dashed',\n },\n )}\n style={\n {\n '--color-bg':\n indicatorColor,\n '--color-border':\n indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel\n ? 'items-end'\n : 'items-center',\n )}\n >\n <div className=\"gap-1.5 grid\">\n {nestLabel\n ? tooltipLabel\n : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ??\n item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value ===\n 'number'\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey,\n}: React.ComponentProps<'div'> & {\n hideIcon?: boolean;\n nameKey?: string;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'gap-4 flex items-center justify-center',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-1.5 [&>svg]:h-3 [&>svg]:w-3 flex items-center [&>svg]:text-muted-foreground',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n const configLabelKey = payload[key as keyof typeof payload] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n const configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n return config[key];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Checkbox({\n className,\n slotName = 'checkbox',\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root> & SlotNameProps) {\n return (\n <CheckboxPrimitive.Root\n className={cn(\n `peer size-5 shadow-xs shrink-0 rounded-md border border-border transition-all disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { fieldFocus } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { useState } from 'react';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface ComboboxLabels {\n placeholder: string;\n searchPlaceholder: string;\n emptyText: string;\n}\n\nexport const comboboxDefaultLabels: ComboboxLabels = {\n placeholder: 'Select an option',\n searchPlaceholder: 'Search...',\n emptyText: 'No results.',\n};\n\nexport interface ComboboxProps extends Omit<\n ButtonProps,\n 'value' | 'onChange' | 'children' | 'slotName'\n> {\n value: string;\n options: ComboboxOption[];\n onChange: (value: string) => void;\n placeholder?: ComboboxLabels['placeholder'];\n searchPlaceholder?: ComboboxLabels['searchPlaceholder'];\n emptyText?: ComboboxLabels['emptyText'];\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Combobox({\n value,\n options,\n onChange,\n placeholder,\n searchPlaceholder,\n emptyText,\n disabled = false,\n invalid = false,\n required,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'combobox',\n ...trigger\n}: ComboboxProps & SlotNameProps) {\n const labels = useUiLabels('combobox', comboboxDefaultLabels, {\n placeholder,\n searchPlaceholder,\n emptyText,\n });\n const [open, setOpen] = useState(false);\n const selected = options.find((option) => option.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n {...trigger}\n role=\"combobox\"\n aria-expanded={open}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n disabled={disabled}\n className={cn(\n 'h-11 rounded-2xl w-full justify-between border-border bg-muted/40 hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50',\n fieldFocus,\n !selected && 'text-muted-foreground',\n invalid && 'border-destructive ring-destructive',\n className,\n )}\n slotName={slotName}\n >\n {selected ? selected.label : labels.placeholder}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-[var(--radix-popover-trigger-width)]\"\n align=\"start\"\n >\n <Command>\n <CommandInput\n placeholder={labels.searchPlaceholder}\n className=\"h-11\"\n />\n <CommandList>\n <CommandEmpty>{labels.emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => {\n onChange(option.value);\n setOpen(false);\n }}\n className=\"h-11 rounded-xl\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected?.value === option.value\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","'use client';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ContextMenu({\n slotName = 'context-menu',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root> & SlotNameProps) {\n return <ContextMenuPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuTrigger({\n slotName = 'context-menu-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger> & SlotNameProps) {\n return <ContextMenuPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuGroup({\n slotName = 'context-menu-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group> & SlotNameProps) {\n return <ContextMenuPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuPortal({\n slotName = 'context-menu-portal',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal> & SlotNameProps) {\n return <ContextMenuPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSub({\n slotName = 'context-menu-sub',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub> & SlotNameProps) {\n return <ContextMenuPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuRadioGroup({\n slotName = 'context-menu-radio-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup> &\n SlotNameProps) {\n return <ContextMenuPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n slotName = 'context-menu-sub-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n slotName = 'context-menu-sub-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n slotName = 'context-menu-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n slotName = 'context-menu-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n slotName = 'context-menu-checkbox-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n slotName = 'context-menu-radio-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n slotName = 'context-menu-label',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8 text-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n slotName = 'context-menu-separator',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n slotName = 'context-menu-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n","import { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Column } from '@tanstack/react-table';\nimport { Check, PlusCircle } from 'lucide-react';\n\nexport interface DataTableFilter {\n columnId: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableServerFilter {\n paramKey: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableFacetedFilterLabels {\n noOptionsLabel: string;\n}\n\nexport const dataTableFacetedFilterDefaultLabels: DataTableFacetedFilterLabels =\n {\n noOptionsLabel: 'No options.',\n };\n\nfunction FilterPopover({\n label,\n options,\n selected,\n onToggle,\n width,\n noOptionsLabel,\n slotName = 'data-table-faceted-filter',\n}: {\n label: string;\n options: { label: string; value: string }[];\n selected: Set<string>;\n onToggle: (value: string) => void;\n width: string;\n noOptionsLabel: DataTableFacetedFilterLabels['noOptionsLabel'];\n} & SlotNameProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"h-11 rounded-2xl border-dashed border-border\"\n slotName={slotName}\n >\n <PlusCircle className=\"mr-2 size-4\" />\n {label}\n {selected.size > 0 && (\n <Badge\n variant=\"secondary\"\n className=\"ml-2 px-2 rounded-full tabular-nums\"\n >\n {selected.size}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className={cn('p-0', width)} align=\"start\">\n <Command>\n <CommandList>\n <CommandEmpty>{noOptionsLabel}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => onToggle(option.value)}\n className=\"h-10 rounded-xl\"\n >\n <div\n className={cn(\n 'mr-2 size-4 flex items-center justify-center rounded-md border border-border',\n selected.has(option.value)\n ? 'bg-primary text-primary-foreground'\n : 'opacity-50',\n )}\n >\n {selected.has(option.value) && (\n <Check className=\"size-3\" />\n )}\n </div>\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function FacetedFilter<TData>({\n column,\n filter,\n noOptionsLabel,\n}: {\n column?: Column<TData, unknown>;\n filter: DataTableFilter;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selected = new Set((column?.getFilterValue() as string[]) ?? []);\n\n const toggle = (value: string) => {\n const next = new Set(selected);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n const arr = Array.from(next);\n column?.setFilterValue(arr.length ? arr : undefined);\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selected}\n onToggle={toggle}\n width=\"w-[220px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n\nexport function ServerFacetedFilter({\n filter,\n selected,\n onChange,\n noOptionsLabel,\n}: {\n filter: DataTableServerFilter;\n selected: string[];\n onChange: (values: string[]) => void;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selectedSet = new Set(selected);\n\n const toggle = (value: string) => {\n const next = new Set(selectedSet);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n onChange(Array.from(next));\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selectedSet}\n onToggle={toggle}\n width=\"w-[240px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n","import { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport type { IconComponent, SlotNameProps } from '@/types';\nimport { MoreVertical } from 'lucide-react';\n\nexport interface DataTableRowAction<TData> {\n label: string;\n icon?: IconComponent;\n variant?: 'default' | 'destructive';\n onClick: (row: TData) => void;\n}\n\nexport function RowActionsMenu<TData>({\n row,\n actions,\n slotName = 'data-table-row-actions',\n}: {\n row: TData;\n actions: DataTableRowAction<TData>[];\n} & SlotNameProps) {\n return (\n <div\n className=\"flex justify-end\"\n onClick={(event) => event.stopPropagation()}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 rounded-xl text-muted-foreground hover:text-foreground\"\n >\n <MoreVertical className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"rounded-2xl\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={() => action.onClick(row)}\n className={\n action.variant === 'destructive'\n ? 'rounded-xl text-destructive focus:text-destructive'\n : 'rounded-xl'\n }\n >\n {action.icon && <action.icon className=\"size-4\" />}\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport { type LucideIcon, SearchX } from 'lucide-react';\nimport { type ReactNode } from 'react';\n\nexport interface EmptyStateLabels {\n title: string;\n}\n\nexport const emptyStateLabels: EmptyStateLabels = {\n title: 'Nothing to show',\n};\n\nexport interface EmptyStateProps {\n icon?: LucideIcon;\n title?: string;\n description?: string;\n actions?: ReactNode;\n compact?: boolean;\n className?: string;\n}\n\nexport function EmptyState({\n icon: Icon = SearchX,\n title = emptyStateLabels.title,\n description,\n actions,\n compact = false,\n className,\n slotName = 'empty-state',\n}: EmptyStateProps & SlotNameProps) {\n return (\n <div\n data-compact={compact || undefined}\n className={cn(\n 'flex h-full w-full flex-col items-center justify-center text-center',\n compact ? 'gap-2 px-4 py-6' : 'gap-3 px-6 py-12',\n className,\n )}\n data-slot={slotName}\n >\n <span\n data-slot=\"empty-state-icon\"\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full bg-surface-recessed text-muted-foreground',\n compact ? 'size-8' : 'size-10',\n )}\n >\n <Icon className={compact ? 'size-4' : 'size-5'} />\n </span>\n <div\n className={cn(\n 'max-w-md flex flex-col',\n compact ? 'gap-0.5' : 'gap-1',\n )}\n >\n <p\n data-slot=\"empty-state-title\"\n className={cn(\n 'font-semibold text-foreground',\n compact ? 'text-sm' : 'text-base',\n )}\n >\n {title}\n </p>\n {description && (\n <p\n data-slot=\"empty-state-description\"\n className=\"text-sm font-medium text-muted-foreground\"\n >\n {description}\n </p>\n )}\n </div>\n {actions && (\n <div\n data-slot=\"empty-state-actions\"\n className={cn(\n 'gap-2 flex flex-wrap items-center justify-center',\n compact ? 'mt-1' : 'mt-2',\n )}\n >\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement> & SlotNameProps\n>(({ className, slotName = 'table-container', ...props }, ref) => (\n <div\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative w-full overflow-hidden bg-card',\n )}\n data-slot={slotName}\n >\n <div\n className={cn(\n nestedRadius,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'w-full overflow-x-auto',\n )}\n >\n <table\n ref={ref}\n className={cn('text-sm w-full caption-bottom', className)}\n {...props}\n />\n </div>\n </div>\n));\nTable.displayName = 'Table';\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 'font-medium border-t bg-muted/50 [&>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-11 px-4 text-xs font-medium tracking-wider [&:has([role=checkbox])]:pr-0 text-left align-middle text-muted-foreground uppercase',\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(\n 'p-4 [&:has([role=checkbox])]:pr-0 align-middle',\n className,\n )}\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(\n 'mt-4 px-4 pb-4 text-sm text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n","import { Button } from '@/components/ui/button';\nimport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n FacetedFilter,\n ServerFacetedFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n type DataTableRowAction,\n RowActionsMenu,\n} from '@/components/ui/data-table-row-actions';\nimport { EmptyState } from '@/components/ui/empty-state';\nimport { Input } from '@/components/ui/input';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from '@/components/ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { elevatedSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport {\n ColumnDef,\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type Row,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n ArrowUpDown,\n ChevronLeft,\n ChevronRight,\n Plus,\n Search,\n X,\n} from 'lucide-react';\nimport { type ReactNode, useMemo, useState } from 'react';\n\nexport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nexport type { DataTableRowAction } from '@/components/ui/data-table-row-actions';\n\nfunction pageRange(current: number, last: number): (number | 'ellipsis')[] {\n if (last <= 7) {\n return Array.from({ length: last }, (_, i) => i + 1);\n }\n const pages: (number | 'ellipsis')[] = [1];\n const left = Math.max(2, current - 1);\n const right = Math.min(last - 1, current + 1);\n if (left > 2) pages.push('ellipsis');\n for (let i = left; i <= right; i++) pages.push(i);\n if (right < last - 1) pages.push('ellipsis');\n pages.push(last);\n return pages;\n}\n\nexport interface DataTableLabels {\n searchPlaceholder: string;\n emptyLabel: string;\n createLabel: string;\n clearFiltersLabel: string;\n paginationLabel: (page: number, pages: number) => string;\n noOptionsLabel: string;\n totalLabel: (total: number) => string;\n}\n\nexport const dataTableDefaultLabels: DataTableLabels = {\n searchPlaceholder: 'Search...',\n emptyLabel: 'No results.',\n createLabel: 'New',\n clearFiltersLabel: 'Clear filters',\n paginationLabel: (page, pages) => `Page ${page} of ${pages}`,\n noOptionsLabel: 'No options.',\n totalLabel: (total) => `${total.toLocaleString('en-US')} records`,\n};\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n searchPlaceholder?: DataTableLabels['searchPlaceholder'];\n emptyLabel?: DataTableLabels['emptyLabel'];\n createLabel?: DataTableLabels['createLabel'];\n clearFiltersLabel?: DataTableLabels['clearFiltersLabel'];\n paginationLabel?: DataTableLabels['paginationLabel'];\n noOptionsLabel?: DataTableLabels['noOptionsLabel'];\n totalLabel?: DataTableLabels['totalLabel'];\n searchKey?: string;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (size: number) => void;\n filters?: DataTableFilter[];\n serverFilters?: DataTableServerFilter[];\n filterValues?: Record<string, string[]>;\n onFilterChange?: (paramKey: string, values: string[]) => void;\n canClearFilters?: boolean;\n onClearFilters?: () => void;\n toolbarExtra?: ReactNode;\n toolbarAction?: ReactNode;\n renderRow?: (row: Row<TData>) => ReactNode;\n onRowClick?: (row: TData) => void;\n isRowActive?: (row: TData) => boolean;\n rowActions?: DataTableRowAction<TData>[];\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n manualPagination?: boolean;\n pageCount?: number;\n pageIndex?: number;\n total?: number;\n onPageChange?: (pageIndex: number) => void;\n onCreate?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder,\n pageSize = 10,\n pageSizeOptions = [10, 25, 50, 100],\n onPageSizeChange,\n filters,\n serverFilters,\n filterValues,\n onFilterChange,\n canClearFilters,\n onClearFilters,\n toolbarExtra,\n toolbarAction,\n emptyLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n renderRow,\n onRowClick,\n isRowActive,\n rowActions,\n searchValue,\n onSearchChange,\n manualPagination = false,\n pageCount,\n pageIndex = 0,\n total,\n onPageChange,\n onCreate,\n createLabel,\n slotName = 'data-table',\n}: DataTableProps<TData, TValue> & SlotNameProps) {\n const labels = useUiLabels('dataTable', dataTableDefaultLabels, {\n searchPlaceholder,\n emptyLabel,\n createLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n });\n const [sorting, setSorting] = useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = useState('');\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n const serverSearch = onSearchChange !== undefined;\n\n const tableColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n if (!rowActions || rowActions.length === 0) {\n return columns;\n }\n\n return [\n ...columns,\n {\n id: '__actions',\n header: '',\n enableSorting: false,\n cell: ({ row }) => (\n <RowActionsMenu row={row.original} actions={rowActions} />\n ),\n },\n ];\n }, [columns, rowActions]);\n\n const table = useReactTable({\n data,\n columns: tableColumns,\n state: {\n sorting,\n columnFilters,\n ...(serverSearch ? {} : { globalFilter }),\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: serverSearch ? undefined : setGlobalFilter,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n ...(manualPagination\n ? { manualPagination: true, pageCount: pageCount ?? -1 }\n : { getPaginationRowModel: getPaginationRowModel() }),\n initialState: { pagination: { pageSize } },\n });\n\n const hasServerSelection =\n serverFilters?.some(\n (filter) => (filterValues?.[filter.paramKey]?.length ?? 0) > 0,\n ) ?? false;\n const hasToolbar =\n searchKey !== undefined ||\n (filters && filters.length > 0) ||\n (serverFilters && serverFilters.length > 0) ||\n onCreate !== undefined ||\n toolbarExtra !== undefined ||\n toolbarAction !== undefined;\n const showFooter = manualPagination || table.getPageCount() > 1;\n const currentPage = manualPagination\n ? pageIndex + 1\n : table.getState().pagination.pageIndex + 1;\n const lastPage = manualPagination\n ? Math.max(1, pageCount ?? 1)\n : table.getPageCount();\n const canPrev = manualPagination\n ? pageIndex > 0\n : table.getCanPreviousPage();\n const canNext = manualPagination\n ? pageIndex + 1 < (pageCount ?? 1)\n : table.getCanNextPage();\n const prev = () =>\n manualPagination ? onPageChange?.(pageIndex - 1) : table.previousPage();\n const next = () =>\n manualPagination ? onPageChange?.(pageIndex + 1) : table.nextPage();\n const goTo = (page: number) =>\n manualPagination\n ? onPageChange?.(page - 1)\n : table.setPageIndex(page - 1);\n\n const activePageSize = manualPagination\n ? pageSize\n : table.getState().pagination.pageSize;\n const changePageSize = (size: number) =>\n onPageSizeChange ? onPageSizeChange(size) : table.setPageSize(size);\n const sizeChoices = [...new Set([...pageSizeOptions, activePageSize])].sort(\n (a, b) => a - b,\n );\n\n return (\n <div\n className={cn(elevatedSurface, 'space-y-4 p-5 bg-card')}\n data-slot={slotName}\n >\n {hasToolbar && (\n <div className=\"gap-2 flex flex-wrap items-center\">\n {searchKey !== undefined && (\n <div className=\"relative min-w-[200px] flex-1\">\n <Search className=\"left-4 size-4 pointer-events-none absolute top-1/2 z-10 -translate-y-1/2 text-muted-foreground\" />\n <Input\n value={\n serverSearch\n ? (searchValue ?? '')\n : globalFilter\n }\n onChange={(e) =>\n serverSearch\n ? onSearchChange?.(e.target.value)\n : setGlobalFilter(e.target.value)\n }\n placeholder={labels.searchPlaceholder}\n className={`h-11 rounded-2xl pl-11 font-medium border-none bg-muted/50 focus:bg-muted`}\n />\n </div>\n )}\n {filters?.map((filter) => (\n <FacetedFilter\n key={filter.columnId}\n column={table.getColumn(filter.columnId)}\n filter={filter}\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {serverFilters?.map((filter) => (\n <ServerFacetedFilter\n key={filter.paramKey}\n filter={filter}\n selected={filterValues?.[filter.paramKey] ?? []}\n onChange={(values) =>\n onFilterChange?.(filter.paramKey, values)\n }\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {toolbarExtra}\n {(columnFilters.length > 0 ||\n hasServerSelection ||\n (canClearFilters && onClearFilters)) && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n if (columnFilters.length > 0) {\n table.resetColumnFilters();\n }\n if (hasServerSelection || canClearFilters) {\n onClearFilters?.();\n }\n }}\n className=\"h-11 rounded-2xl\"\n >\n {labels.clearFiltersLabel}\n <X className=\"ml-1 size-4\" />\n </Button>\n )}\n {onCreate && (\n <Button\n onClick={onCreate}\n aria-label={labels.createLabel}\n size=\"icon\"\n className=\"size-11 rounded-2xl shrink-0 cursor-pointer bg-primary text-primary-foreground hover:bg-primary/90\"\n >\n <Plus className=\"size-5\" />\n </Button>\n )}\n {toolbarAction && (\n <div className=\"ml-auto\">{toolbarAction}</div>\n )}\n </div>\n )}\n\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-transparent\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className=\"h-11 px-4 font-medium tracking-wider text-[11px] text-muted-foreground uppercase\"\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n type=\"button\"\n onClick={header.column.getToggleSortingHandler()}\n className=\"gap-1 inline-flex items-center transition-colors hover:text-foreground\"\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n <ArrowUpDown className=\"size-3 opacity-50\" />\n </button>\n ) : (\n flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) =>\n renderRow ? (\n renderRow(row)\n ) : (\n <TableRow\n key={row.id}\n onClick={\n onRowClick\n ? () => onRowClick(row.original)\n : undefined\n }\n data-active={\n isRowActive?.(row.original) || undefined\n }\n className={cn(\n 'border-border transition-colors hover:bg-muted/50',\n onRowClick && 'cursor-pointer',\n 'data-[active=true]:bg-primary/5',\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className=\"px-4 py-3\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ),\n )\n ) : (\n <TableRow>\n <TableCell\n colSpan={tableColumns.length}\n className=\"h-24 p-0\"\n >\n <EmptyState compact title={labels.emptyLabel} />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {showFooter && (\n <div className=\"gap-3 pt-4 flex flex-wrap items-center justify-between border-t border-border\">\n <div className=\"gap-3 flex items-center\">\n <Select\n value={String(activePageSize)}\n onValueChange={(value) =>\n changePageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-9 rounded-xl w-[74px]\">\n <span>{activePageSize}</span>\n </SelectTrigger>\n <SelectContent className=\"rounded-xl\">\n {sizeChoices.map((size) => (\n <SelectItem\n key={size}\n value={String(size)}\n className=\"font-medium\"\n >\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {labels.paginationLabel(currentPage, lastPage)}\n {total !== undefined &&\n ` · ${labels.totalLabel(total)}`}\n </span>\n </div>\n <div className=\"gap-1.5 flex items-center\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={prev}\n disabled={!canPrev}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n {pageRange(currentPage, lastPage).map((page, index) =>\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"px-1 text-sm font-medium text-muted-foreground\"\n >\n …\n </span>\n ) : (\n <Button\n key={page}\n variant=\"outline\"\n onClick={() => goTo(page)}\n className={cn(\n 'h-9 min-w-9 rounded-xl px-2.5 tabular-nums',\n page === currentPage &&\n 'border-primary bg-primary text-primary-foreground hover:bg-primary/90',\n )}\n >\n {page}\n </Button>\n ),\n )}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={next}\n disabled={!canNext}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nexport interface CalendarPopoverProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n trigger: React.ReactNode;\n align?: React.ComponentProps<typeof PopoverContent>['align'];\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CalendarPopover({\n open,\n onOpenChange,\n trigger,\n align = 'start',\n className,\n children,\n slotName = 'calendar-popover',\n}: CalendarPopoverProps & SlotNameProps) {\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn('p-2 w-auto', className)}\n align={align}\n sideOffset={4}\n collisionPadding={16}\n slotName={slotName}\n >\n {children}\n </PopoverContent>\n </Popover>\n );\n}\n","import { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { fieldFocus, fieldSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarIcon, X } from 'lucide-react';\nimport { useState, type ComponentProps } from 'react';\nimport type { Matcher } from 'react-day-picker';\n\nexport interface DatePickerLabels {\n placeholder: string;\n dateFormat: string;\n clearLabel: string;\n}\n\nexport const datePickerDefaultLabels: DatePickerLabels = {\n placeholder: 'Pick a date',\n dateFormat: 'dd MMM yy',\n clearLabel: 'Clear date',\n};\n\ntype DatePickerTriggerProps = Omit<\n ComponentProps<'button'>,\n 'value' | 'defaultValue' | 'onChange' | 'type' | 'children'\n>;\n\nexport interface DatePickerProps\n extends Partial<DatePickerLabels>, DatePickerTriggerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (value: Date | undefined) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDays?: (date: Date) => boolean;\n clearable?: boolean;\n invalid?: boolean;\n required?: boolean;\n formatDate?: (value: Date) => string;\n}\n\nconst triggerClasses = `h-11 px-4 text-sm font-medium flex w-full cursor-pointer items-center gap-2 text-left transition-all disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${fieldSurface} ${fieldFocus}`;\n\nfunction boundaries(\n minDate?: Date,\n maxDate?: Date,\n disabledDays?: (date: Date) => boolean,\n): Matcher[] {\n const matchers: Matcher[] = [];\n\n if (minDate) {\n matchers.push({ before: minDate });\n }\n\n if (maxDate) {\n matchers.push({ after: maxDate });\n }\n\n if (disabledDays) {\n matchers.push(disabledDays);\n }\n\n return matchers;\n}\n\nexport function DatePicker(props: DatePickerProps & SlotNameProps) {\n const {\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDays,\n disabled = false,\n clearable = true,\n invalid = false,\n required,\n formatDate,\n placeholder,\n dateFormat,\n clearLabel,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'date-picker',\n ...trigger\n } = props;\n\n const labels = useUiLabels('datePicker', datePickerDefaultLabels, {\n placeholder,\n dateFormat,\n clearLabel,\n });\n const [open, setOpen] = useState(false);\n const [ownValue, setOwnValue] = useState<Date | undefined>(defaultValue);\n\n const isControlled = 'value' in props;\n const selected = isControlled ? value : ownValue;\n const showClear = clearable && !disabled && selected !== undefined;\n const label = selected\n ? (formatDate?.(selected) ?? format(selected, labels.dateFormat))\n : labels.placeholder;\n\n function commit(next: Date | undefined): void {\n if (!isControlled) {\n setOwnValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <div className={cn('relative w-full', className)} data-slot={slotName}>\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n trigger={\n <button\n {...trigger}\n type=\"button\"\n data-slot=\"date-picker-trigger\"\n disabled={disabled}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n className={cn(triggerClasses, showClear && 'pr-11')}\n >\n <CalendarIcon className=\"size-4 shrink-0 opacity-60\" />\n <span\n className={cn(\n 'truncate',\n !selected && 'text-muted-foreground',\n )}\n >\n {label}\n </span>\n </button>\n }\n >\n <Calendar\n mode=\"single\"\n autoFocus\n selected={selected}\n defaultMonth={selected ?? minDate}\n startMonth={minDate}\n endMonth={maxDate}\n disabled={boundaries(minDate, maxDate, disabledDays)}\n onSelect={(date) => {\n if (!date) {\n return;\n }\n\n commit(date);\n setOpen(false);\n }}\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n {showClear && (\n <button\n type=\"button\"\n data-slot=\"date-picker-clear\"\n aria-label={labels.clearLabel}\n onClick={() => commit(undefined)}\n className={`size-7 rounded-xl right-2 absolute top-1/2 inline-flex -translate-y-1/2 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground ${focusRing}`}\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n}\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarRange, X } from 'lucide-react';\nimport { useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\n\nfunction parse(value?: string): Date | undefined {\n return value ? new Date(`${value}T00:00:00`) : undefined;\n}\n\nexport interface DateRangeFilterLabels {\n emptyLabel: string;\n dateFormat: string;\n}\n\nexport const dateRangeFilterDefaultLabels: DateRangeFilterLabels = {\n emptyLabel: 'Date range',\n dateFormat: 'dd MMM yy',\n};\n\nexport interface DateRangeFilterProps\n extends\n Partial<DateRangeFilterLabels>,\n Omit<ButtonProps, 'onChange' | 'children' | 'value' | 'slotName'> {\n from?: string;\n to?: string;\n onChange: (range: { from?: string; to?: string }) => void;\n}\n\nexport function DateRangeFilter({\n from,\n to,\n onChange,\n emptyLabel,\n dateFormat,\n className,\n slotName = 'date-range-filter',\n ...trigger\n}: DateRangeFilterProps & SlotNameProps) {\n const labels = useUiLabels(\n 'dateRangeFilter',\n dateRangeFilterDefaultLabels,\n { emptyLabel, dateFormat },\n );\n const [open, setOpen] = useState(false);\n const selected: DateRange | undefined =\n from || to ? { from: parse(from), to: parse(to) } : undefined;\n const label = from\n ? to && to !== from\n ? `${format(parse(from)!, labels.dateFormat)} - ${format(parse(to)!, labels.dateFormat)}`\n : format(parse(from)!, labels.dateFormat)\n : labels.emptyLabel;\n\n return (\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n align=\"end\"\n trigger={\n <Button\n variant=\"outline\"\n {...trigger}\n className={cn(\n 'h-11 rounded-2xl cursor-pointer border-dashed border-border',\n className,\n )}\n slotName={slotName}\n >\n <CalendarRange className=\"mr-2 size-4\" />\n {label}\n {(from || to) && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(event) => {\n event.stopPropagation();\n onChange({ from: undefined, to: undefined });\n }}\n className=\"ml-2 inline-flex\"\n >\n <X className=\"size-3.5 opacity-60 hover:opacity-100\" />\n </span>\n )}\n </Button>\n }\n >\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n defaultMonth={parse(from)}\n selected={selected}\n onSelect={(range) =>\n onChange({\n from: range?.from\n ? format(range.from, 'yyyy-MM-dd')\n : undefined,\n to: range?.to\n ? format(range.to, 'yyyy-MM-dd')\n : undefined,\n })\n }\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n );\n}\n","import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { floatingSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Drawer({\n slotName = 'drawer',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root> & SlotNameProps) {\n return <DrawerPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction DrawerTrigger({\n slotName = 'drawer-trigger',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger> & SlotNameProps) {\n return <DrawerPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction DrawerPortal({\n slotName = 'drawer-portal',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal> & SlotNameProps) {\n return <DrawerPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction DrawerClose({\n slotName = 'drawer-close',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close> & SlotNameProps) {\n return <DrawerPrimitive.Close {...props} data-slot={slotName} />;\n}\n\nfunction DrawerOverlay({\n className,\n slotName = 'drawer-overlay',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay> & SlotNameProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n slotName = 'drawer-content',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & SlotNameProps) {\n return (\n <DrawerPortal slotName=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(\n `${floatingSurface} group/drawer-content fixed z-50 flex h-auto flex-col border-border`,\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:rounded-b-3xl data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:rounded-t-3xl data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:sm:max-w-sm data-[vaul-drawer-direction=right]:rounded-l-3xl data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=left]:rounded-r-3xl data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"mt-4 h-2 mx-auto hidden w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n slotName = 'drawer-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-0.5 p-4 md:gap-1.5 md:text-left flex flex-col group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerFooter({\n className,\n slotName = 'drawer-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-2 p-4 mt-auto flex flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n slotName = 'drawer-title',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title> & SlotNameProps) {\n return (\n <DrawerPrimitive.Title\n className={cn('font-semibold text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n slotName = 'drawer-description',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description> & SlotNameProps) {\n return (\n <DrawerPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport {\n FieldContext,\n useField,\n type FieldContextValue,\n type FieldOrientation,\n} from '@/components/ui/field-context';\nimport { FieldError } from '@/components/ui/field-error';\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nexport interface FieldLabels {\n requiredLabel: string;\n}\n\ninterface FieldProps extends React.ComponentProps<'div'> {\n orientation?: FieldOrientation;\n error?: string;\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Field({\n className,\n children,\n id,\n orientation = 'vertical',\n error,\n invalid,\n required = false,\n slotName = 'field',\n ...props\n}: FieldProps & SlotNameProps) {\n const generatedId = React.useId();\n const fieldId = id ?? generatedId;\n const [hasDescription, setHasDescription] = React.useState(false);\n const isInvalid = invalid ?? Boolean(error);\n\n const field = React.useMemo<FieldContextValue>(\n () => ({\n controlId: fieldId,\n descriptionId: `${fieldId}-description`,\n errorId: `${fieldId}-error`,\n orientation,\n invalid: isInvalid,\n required,\n hasDescription,\n setHasDescription,\n }),\n [fieldId, orientation, isInvalid, required, hasDescription],\n );\n\n return (\n <FieldContext.Provider value={field}>\n <div\n data-orientation={orientation}\n data-invalid={isInvalid ? 'true' : undefined}\n className={cn(\n 'group/field',\n orientation === 'horizontal'\n ? 'gap-x-4 gap-y-1 grid grid-cols-[1fr_auto] items-center'\n : 'gap-2 flex flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <FieldError message={error} />\n </div>\n </FieldContext.Provider>\n );\n}\n\nexport function FieldGroup({\n className,\n slotName = 'field-group',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-6 flex w-full flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\ninterface FieldLabelProps extends React.ComponentProps<typeof Label> {\n requiredLabel?: FieldLabels['requiredLabel'];\n}\n\nexport function FieldLabel({\n className,\n children,\n requiredLabel = 'Required',\n slotName = 'field-label',\n ...props\n}: FieldLabelProps & SlotNameProps) {\n const { controlId, invalid, required } = useField();\n\n return (\n <Label\n htmlFor={controlId}\n className={cn(\n 'gap-1 flex items-center group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-1',\n invalid && 'text-destructive',\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {children}\n {required ? (\n <>\n <span\n data-slot=\"field-required\"\n aria-hidden=\"true\"\n className=\"text-destructive\"\n >\n *\n </span>\n <span className=\"sr-only\">{requiredLabel}</span>\n </>\n ) : null}\n </Label>\n );\n}\n\nexport function FieldDescription({\n className,\n slotName = 'field-description',\n ...props\n}: React.ComponentProps<'p'> & SlotNameProps) {\n const { descriptionId, setHasDescription } = useField();\n\n React.useEffect(() => {\n setHasDescription(true);\n\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <p\n id={descriptionId}\n className={cn(\n 'ml-1 text-xs font-medium text-muted-foreground group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport function FieldControl({\n className,\n ...props\n}: React.ComponentProps<typeof Slot>) {\n const {\n controlId,\n descriptionId,\n errorId,\n invalid,\n required,\n hasDescription,\n } = useField();\n\n const requiredProps: React.InputHTMLAttributes<HTMLElement> = required\n ? { required: true }\n : {};\n\n const describedBy = [\n hasDescription ? descriptionId : null,\n invalid ? errorId : null,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Slot\n data-field-control=\"true\"\n id={controlId}\n aria-describedby={describedBy || undefined}\n aria-invalid={invalid ? true : undefined}\n {...requiredProps}\n className={cn(\n 'group-data-[orientation=horizontal]/field:col-start-2 group-data-[orientation=horizontal]/field:row-span-2 group-data-[orientation=horizontal]/field:row-start-1 group-data-[orientation=horizontal]/field:justify-self-end',\n className,\n )}\n {...props}\n />\n );\n}\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from 'react-hook-form';\n\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & SlotNameProps\n>(({ className, slotName = 'form-item', ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n className={cn('space-y-2', className)}\n {...props}\n data-slot={slotName}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = 'FormItem';\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = 'FormLabel';\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\n 'font-medium text-[0.8rem] text-destructive',\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n","'use client';\n\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction HoverCard({\n slotName = 'hover-card',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root> & SlotNameProps) {\n return <HoverCardPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardTrigger({\n slotName = 'hover-card-trigger',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger> & SlotNameProps) {\n return <HoverCardPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n sideOffset = 4,\n slotName = 'hover-card-content',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content> & SlotNameProps) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\n `${panelSurface} w-64 p-4 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 origin-(--radix-hover-card-content-transform-origin) bg-popover/90 outline-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n","import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Menubar({\n className,\n slotName = 'menubar',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root> & SlotNameProps) {\n return (\n <MenubarPrimitive.Root\n className={cn(\n 'h-9 gap-1 p-1 shadow-sm backdrop-blur-xl rounded-2xl flex items-center border border-border bg-card/60',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarMenu({\n slotName = 'menubar-menu',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu> & SlotNameProps) {\n return <MenubarPrimitive.Menu {...props} data-slot={slotName} />;\n}\n\nfunction MenubarGroup({\n slotName = 'menubar-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group> & SlotNameProps) {\n return <MenubarPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction MenubarPortal({\n slotName = 'menubar-portal',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal> & SlotNameProps) {\n return <MenubarPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction MenubarRadioGroup({\n slotName = 'menubar-radio-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup> & SlotNameProps) {\n return <MenubarPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction MenubarTrigger({\n className,\n slotName = 'menubar-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger> & SlotNameProps) {\n return (\n <MenubarPrimitive.Trigger\n className={cn(\n 'px-2 py-1 text-sm font-medium rounded-xl flex items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = 'start',\n alignOffset = -4,\n sideOffset = 8,\n slotName = 'menubar-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content> & SlotNameProps) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n slotName = 'menubar-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n slotName = 'menubar-checkbox-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.CheckboxItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n slotName = 'menubar-radio-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.RadioItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n slotName = 'menubar-label',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n slotName = 'menubar-separator',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator> & SlotNameProps) {\n return (\n <MenubarPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n slotName = 'menubar-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSub({\n slotName = 'menubar-sub',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub> & SlotNameProps) {\n return <MenubarPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n slotName = 'menubar-sub-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm data-[inset]:pl-8 rounded-xl flex cursor-default items-center outline-none select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"h-4 w-4 ml-auto\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n slotName = 'menubar-sub-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent> & SlotNameProps) {\n return (\n <MenubarPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n MenubarGroup,\n MenubarItem,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n};\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n slotName = 'navigation-menu',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n} & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Root\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n slotName = 'navigation-menu-list',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.List\n className={cn(\n 'group gap-1 flex flex-1 list-none items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n slotName = 'navigation-menu-item',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Item\n className={cn('relative', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-11 w-max items-center justify-center rounded-xl bg-background px-4 text-sm font-medium data-[state=open]:font-semibold hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-accent/50 data-[state=open]:bg-accent/50 data-[active=true]:text-accent-foreground transition-[color,box-shadow] outline-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring',\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n slotName = 'navigation-menu-trigger',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Trigger\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n data-slot={slotName}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"ml-1 size-3 relative top-[1px] transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n slotName = 'navigation-menu-content',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Content\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 p-2 pr-2.5 md:absolute md:w-auto w-full',\n 'group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:backdrop-blur-xl group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:bg-popover/90 group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n slotName = 'navigation-menu-viewport',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport> &\n SlotNameProps) {\n return (\n <div\n className={cn(\n 'left-0 absolute top-full isolate z-50 flex justify-center',\n )}\n >\n <NavigationMenuPrimitive.Viewport\n className={cn(\n `${panelSurface} origin-top-center data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 mt-1.5 md:w-[var(--radix-navigation-menu-viewport-width)] relative h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden bg-popover/90`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n slotName = 'navigation-menu-link',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Link\n className={cn(\n \"gap-1 p-2 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl data-[active=true]:font-semibold flex flex-col transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n slotName = 'navigation-menu-indicator',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Indicator\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in h-1.5 top-full z-[1] flex items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"h-2 w-2 shadow-md rounded-tl-xs relative top-[60%] rotate-45 bg-border\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n NavigationMenuViewport,\n};\n","import {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants, type Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Pagination({\n className,\n slotName = 'pagination',\n ...props\n}: React.ComponentProps<'nav'> & SlotNameProps) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n slotName = 'pagination-content',\n ...props\n}: React.ComponentProps<'ul'> & SlotNameProps) {\n return (\n <ul\n className={cn('gap-1 flex flex-row items-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationItem({\n slotName = 'pagination-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return <li {...props} data-slot={slotName} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>;\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n slotName = 'pagination-link',\n ...props\n}: PaginationLinkProps & SlotNameProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"sm:block hidden\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"sm:block hidden\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n slotName = 'pagination-ellipsis',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n aria-hidden\n className={cn(\n 'size-9 rounded-xl flex items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import { Eye, EyeOff } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\n\nexport interface PasswordInputLabels {\n showLabel: string;\n hideLabel: string;\n}\n\nexport const passwordInputDefaultLabels: PasswordInputLabels = {\n showLabel: 'Show password',\n hideLabel: 'Hide password',\n};\n\ninterface PasswordInputProps extends Omit<\n React.ComponentProps<typeof Input>,\n 'type'\n> {\n revealable?: boolean;\n showLabel?: PasswordInputLabels['showLabel'];\n hideLabel?: PasswordInputLabels['hideLabel'];\n}\n\nexport function PasswordInput({\n className,\n revealable = true,\n showLabel,\n hideLabel,\n slotName = 'password-input',\n ...props\n}: PasswordInputProps & SlotNameProps) {\n const labels = useUiLabels('passwordInput', passwordInputDefaultLabels, {\n showLabel,\n hideLabel,\n });\n const [visible, setVisible] = React.useState(false);\n\n return (\n <div className=\"relative w-full\" data-slot={slotName}>\n <Input\n type={visible ? 'text' : 'password'}\n className={cn(revealable && 'pr-12', className)}\n {...props}\n />\n {revealable ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n slotName=\"password-input-toggle\"\n aria-label={visible ? labels.hideLabel : labels.showLabel}\n aria-pressed={visible}\n disabled={props.disabled}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setVisible((current) => !current)}\n className=\"right-1 absolute top-1/2 -translate-y-1/2\"\n >\n {visible ? (\n <EyeOff aria-hidden=\"true\" />\n ) : (\n <Eye aria-hidden=\"true\" />\n )}\n </Button>\n ) : null}\n </div>\n );\n}\n","import type { SlotNameProps } from '@/types';\nimport { useId } from 'react';\n\ninterface PlaceholderPatternProps {\n className?: string;\n}\n\nexport function PlaceholderPattern({\n className,\n slotName = 'placeholder-pattern',\n}: PlaceholderPatternProps & SlotNameProps) {\n const patternId = useId();\n\n return (\n <svg className={className} fill=\"none\" data-slot={slotName}>\n <defs>\n <pattern\n id={patternId}\n x=\"0\"\n y=\"0\"\n width=\"10\"\n height=\"10\"\n patternUnits=\"userSpaceOnUse\"\n >\n <path\n d=\"M-3 13 15-5M-5 5l18-18M-1 21 17 3\"\n stroke=\"currentColor\"\n ></path>\n </pattern>\n </defs>\n <rect\n stroke=\"none\"\n fill={`url(#${patternId})`}\n width=\"100%\"\n height=\"100%\"\n ></rect>\n </svg>\n );\n}\n","'use client';\n\nimport { Progress as ProgressPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Progress({\n className,\n value,\n slotName = 'progress',\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & SlotNameProps) {\n return (\n <ProgressPrimitive.Root\n className={cn(\n 'h-2 relative w-full overflow-hidden rounded-full bg-primary/20',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","import { CircleIcon } from 'lucide-react';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction RadioGroup({\n className,\n slotName = 'radio-group',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Root\n className={cn('gap-3 grid', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n slotName = 'radio-group-item',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Item\n className={cn(\n `size-5 shadow-xs aspect-square shrink-0 rounded-full border border-border text-primary transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"size-2.5 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","'use client';\n\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { elevatedSurface, nestedSurfaceReset } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ResizablePanelGroup({\n className,\n slotName = 'resizable-panel-group',\n ...props\n}: ResizablePrimitive.GroupProps & SlotNameProps) {\n return (\n <ResizablePrimitive.Group\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'flex h-full w-full overflow-hidden bg-card aria-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ResizablePanel({\n slotName = 'resizable-panel',\n ...props\n}: ResizablePrimitive.PanelProps & SlotNameProps) {\n return <ResizablePrimitive.Panel {...props} data-slot={slotName} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n slotName = 'resizable-handle',\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean;\n} & SlotNameProps) {\n return (\n <ResizablePrimitive.Separator\n className={cn(\n 'after:inset-y-0 after:w-1 aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:translate-x-0 relative flex w-px items-center justify-center bg-border after:absolute after:left-1/2 after:-translate-x-1/2 focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {withHandle && (\n <div className=\"h-8 w-1.5 z-10 rounded-full bg-muted-foreground/40 transition-colors group-hover:bg-muted-foreground/60\" />\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","import { Spinner } from '@/components/ui/spinner';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, TriangleAlert } from 'lucide-react';\nimport * as React from 'react';\n\nexport type SaveStatusState = 'idle' | 'saving' | 'saved' | 'error';\n\nexport interface SaveStatusLabels {\n error: string;\n idle: string;\n saved: string;\n saving: string;\n}\n\nexport const saveStatusLabels: SaveStatusLabels = {\n error: 'Your changes could not be saved',\n idle: 'Changes are saved automatically',\n saved: 'Saved',\n saving: 'Saving',\n};\n\nexport const SAVED_DURATION = 2000;\n\nexport interface SaveStatusProps extends React.ComponentProps<'div'> {\n status: SaveStatusState;\n message?: string;\n showIdle?: boolean;\n savedDuration?: number;\n labels?: Partial<SaveStatusLabels>;\n}\n\nfunction SaveStatus({\n status,\n message,\n showIdle = false,\n savedDuration = SAVED_DURATION,\n labels,\n className,\n slotName = 'save-status',\n ...props\n}: SaveStatusProps & SlotNameProps) {\n const text = useUiLabels('saveStatus', saveStatusLabels, labels);\n const [faded, setFaded] = React.useState(false);\n\n React.useEffect(() => {\n if (status !== 'saved' || savedDuration <= 0) {\n setFaded(false);\n\n return;\n }\n\n setFaded(false);\n const timer = setTimeout(() => setFaded(true), savedDuration);\n\n return () => clearTimeout(timer);\n }, [status, savedDuration, message]);\n\n const hidden = status === 'saved' && faded;\n\n return (\n <div\n {...props}\n data-state={status}\n data-faded={hidden || undefined}\n role=\"status\"\n aria-live=\"polite\"\n aria-hidden={hidden || undefined}\n className={cn(\n 'gap-2 text-xs font-medium min-h-5 flex items-center transition-opacity duration-300',\n hidden ? 'opacity-0' : 'opacity-100',\n className,\n )}\n data-slot={slotName}\n >\n {status === 'idle' && showIdle && (\n <span\n data-slot=\"save-status-idle\"\n className=\"text-muted-foreground\"\n >\n {text.idle}\n </span>\n )}\n\n {status === 'saving' && (\n <span\n data-slot=\"save-status-saving\"\n className=\"gap-2 flex items-center text-muted-foreground\"\n >\n <Spinner size=\"sm\" label=\"\" aria-hidden=\"true\" />\n {text.saving}\n </span>\n )}\n\n {status === 'saved' && (\n <span\n data-slot=\"save-status-saved\"\n className=\"gap-2 flex items-center text-success\"\n >\n <Check aria-hidden=\"true\" className=\"size-3.5\" />\n {text.saved}\n </span>\n )}\n\n {status === 'error' && (\n <span\n data-slot=\"save-status-error\"\n className=\"gap-2 flex items-center text-destructive\"\n >\n <TriangleAlert aria-hidden=\"true\" className=\"size-3.5\" />\n {message ?? text.error}\n </span>\n )}\n </div>\n );\n}\n\nexport { SaveStatus };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> &\n SlotNameProps\n>(({ className, children, slotName = 'scroll-area', ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative overflow-hidden bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<\n typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n > &\n SlotNameProps\n>(\n (\n {\n className,\n orientation = 'vertical',\n slotName = 'scroll-area-scrollbar',\n ...props\n },\n ref,\n ) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' &&\n 'w-2.5 h-full border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n ),\n);\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { Slider as SliderPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n slotName = 'slider',\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & SlotNameProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n 'data-[orientation=vertical]:min-h-44 relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n 'data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full',\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n 'absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n 'size-5 shadow-sm block shrink-0 rounded-full border border-primary bg-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50',\n focusRing,\n )}\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\n\nfunction useDocumentScheme(): 'light' | 'dark' {\n const [scheme, setScheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n const read = () =>\n setScheme(root.classList.contains('dark') ? 'dark' : 'light');\n\n read();\n\n const observer = new MutationObserver(read);\n observer.observe(root, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return scheme;\n}\n\nconst Toaster = ({ theme, ...props }: ToasterProps) => {\n const scheme = useDocumentScheme();\n\n return (\n <Sonner\n theme={theme ?? scheme}\n className=\"toaster group [&_[data-sonner-toast]]:shadow-2xl [&_[data-sonner-toast]]:backdrop-blur-xl\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n '--normal-bg':\n 'color-mix(in oklab, var(--popover) 90%, transparent)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n '--border-radius': '1rem',\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst statusBadgeVariants = cva('', {\n variants: {\n status: {\n neutral: 'border-border bg-muted text-muted-foreground',\n info: 'border-info/20 bg-info/10 text-info',\n success: 'border-success/20 bg-success/10 text-success',\n warning: 'border-warning/20 bg-warning/10 text-warning',\n danger: 'border-destructive/20 bg-destructive/10 text-destructive',\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n});\n\ntype StatusBadgeStatus = NonNullable<\n VariantProps<typeof statusBadgeVariants>['status']\n>;\n\ninterface StatusBadgeProps\n extends\n Omit<React.ComponentProps<typeof Badge>, 'variant'>,\n VariantProps<typeof statusBadgeVariants> {\n dot?: boolean;\n}\n\nfunction StatusBadge({\n className,\n status = 'neutral',\n dot = false,\n children,\n slotName = 'status-badge',\n ...props\n}: StatusBadgeProps & SlotNameProps) {\n const resolvedStatus: StatusBadgeStatus = status ?? 'neutral';\n\n return (\n <Badge\n variant=\"outline\"\n data-status={resolvedStatus}\n className={cn(\n statusBadgeVariants({ status: resolvedStatus }),\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {dot && (\n <span\n aria-hidden=\"true\"\n data-slot=\"status-badge-dot\"\n className=\"size-1.5 shrink-0 rounded-full bg-current\"\n />\n )}\n {children}\n </Badge>\n );\n}\n\nexport {\n StatusBadge,\n statusBadgeVariants,\n type StatusBadgeProps,\n type StatusBadgeStatus,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst textLinkVariants = cva(\n `cursor-pointer rounded-xl underline decoration-border underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current ${focusRing}`,\n {\n variants: {\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground hover:text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ninterface TextLinkProps\n extends React.ComponentProps<'a'>, VariantProps<typeof textLinkVariants> {\n asChild?: boolean;\n}\n\nfunction TextLink({\n className,\n variant = 'default',\n asChild = false,\n slotName = 'text-link',\n ...props\n}: TextLinkProps & SlotNameProps) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-variant={variant}\n className={cn(textLinkVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { TextLink, textLinkVariants, type TextLinkProps };\n"]}
1
+ {"version":3,"sources":["../src/hooks/use-autosave.ts","../src/hooks/use-confirm-dialog.tsx","../src/components/ui/accordion.tsx","../src/components/ui/alert-dialog.tsx","../src/components/ui/toggle-group.tsx","../src/components/ui/appearance-toggle.tsx","../src/components/ui/aspect-ratio.tsx","../src/components/ui/badge.tsx","../src/components/ui/carousel.tsx","../src/components/ui/chart.tsx","../src/components/ui/checkbox.tsx","../src/components/ui/combobox.tsx","../src/components/ui/context-menu.tsx","../src/components/ui/data-table-faceted-filter.tsx","../src/components/ui/data-table-row-actions.tsx","../src/components/ui/empty-state.tsx","../src/components/ui/table.tsx","../src/components/ui/data-table.tsx","../src/components/ui/calendar-popover.tsx","../src/components/ui/date-picker.tsx","../src/components/ui/date-range-filter.tsx","../src/components/ui/drawer.tsx","../src/components/ui/field.tsx","../src/components/ui/form.tsx","../src/components/ui/hover-card.tsx","../src/components/ui/menubar.tsx","../src/components/ui/navigation-menu.tsx","../src/components/ui/pagination.tsx","../src/components/ui/password-input.tsx","../src/components/ui/placeholder-pattern.tsx","../src/components/ui/progress.tsx","../src/components/ui/radio-group.tsx","../src/components/ui/resizable.tsx","../src/components/ui/save-status.tsx","../src/components/ui/scroll-area.tsx","../src/components/ui/slider.tsx","../src/components/ui/sonner.tsx","../src/components/ui/status-badge.tsx","../src/components/ui/text-link.tsx"],"names":["useState","jsx","React","AlertDialogPrimitive","jsxs","React2","AspectRatioPrimitive","api","React4","config","ContextMenuPrimitive","CheckIcon","Check","Icon","React5","useMemo","X","format","DrawerPrimitive","React6","Fragment","Slot","React7","HoverCardPrimitive","MenubarPrimitive","CircleIcon","ChevronRightIcon","cva","React8","useId","ProgressPrimitive","RadioGroupPrimitive","React9","React10","React11","SliderPrimitive","useEffect","Sonner"],"mappings":"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","file":"index.js","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport type AutosaveStatus = 'idle' | 'saving' | 'saved' | 'error';\n\nexport const AUTOSAVE_DELAY = 700;\n\nexport interface UseAutosaveOptions<T> {\n delay?: number;\n enabled?: boolean;\n isEqual?: (a: T, b: T) => boolean;\n}\n\nexport interface UseAutosaveResult {\n status: AutosaveStatus;\n error?: string;\n flush: () => void;\n reset: () => void;\n}\n\nfunction shallowEqual<T>(a: T, b: T): boolean {\n if (Object.is(a, b)) {\n return true;\n }\n\n if (\n typeof a !== 'object' ||\n typeof b !== 'object' ||\n a === null ||\n b === null\n ) {\n return false;\n }\n\n const keys = Object.keys(a as object);\n\n if (keys.length !== Object.keys(b as object).length) {\n return false;\n }\n\n return keys.every((key) =>\n Object.is(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n ),\n );\n}\n\nfunction messageOf(reason: unknown): string | undefined {\n if (reason instanceof Error) {\n return reason.message;\n }\n\n return typeof reason === 'string' ? reason : undefined;\n}\n\nexport function useAutosave<T>(\n values: T,\n onSave: (values: T) => void | Promise<void>,\n options: UseAutosaveOptions<T> = {},\n): UseAutosaveResult {\n const { delay = AUTOSAVE_DELAY, enabled = true, isEqual } = options;\n\n const [status, setStatus] = useState<AutosaveStatus>('idle');\n const [error, setError] = useState<string | undefined>(undefined);\n\n const latest = useRef(values);\n const dispatched = useRef(values);\n const timer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\n const issued = useRef(0);\n const settled = useRef(0);\n const mounted = useRef(true);\n const save = useRef(onSave);\n const equal = useRef(isEqual ?? shallowEqual);\n\n latest.current = values;\n save.current = onSave;\n equal.current = isEqual ?? shallowEqual;\n\n const run = useCallback(async () => {\n const payload = latest.current;\n const ticket = (issued.current += 1);\n\n setStatus('saving');\n setError(undefined);\n\n try {\n await save.current(payload);\n\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setStatus('saved');\n } catch (reason) {\n if (ticket < settled.current || !mounted.current) {\n return;\n }\n\n settled.current = ticket;\n setError(messageOf(reason));\n setStatus('error');\n }\n }, []);\n\n const flush = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n void run();\n }, [run]);\n\n const reset = useCallback(() => {\n clearTimeout(timer.current);\n dispatched.current = latest.current;\n setError(undefined);\n setStatus('idle');\n }, []);\n\n useEffect(() => {\n mounted.current = true;\n\n return () => {\n mounted.current = false;\n clearTimeout(timer.current);\n };\n }, []);\n\n useEffect(() => {\n if (!enabled || equal.current(values, dispatched.current)) {\n return;\n }\n\n dispatched.current = values;\n clearTimeout(timer.current);\n timer.current = setTimeout(() => void run(), delay);\n }, [values, delay, enabled, run]);\n\n return { status, error, flush, reset };\n}\n","import { ConfirmDialog } from '@/components/ui/confirm-dialog';\nimport { useState, type ReactNode } from 'react';\n\nexport interface UseConfirmDialogOptions {\n title?: string;\n description?: string | ReactNode;\n confirmText?: string;\n cancelText?: string;\n variant?: 'destructive' | 'default';\n}\n\nexport function useConfirmDialog() {\n const [isOpen, setIsOpen] = useState(false);\n const [options, setOptions] = useState<UseConfirmDialogOptions>({});\n const [onConfirmCallback, setOnConfirmCallback] = useState<\n (() => void) | null\n >(null);\n const [onCancelCallback, setOnCancelCallback] = useState<\n (() => void) | null\n >(null);\n\n const confirm = (\n onConfirm: () => void,\n confirmOptions?: UseConfirmDialogOptions,\n onCancel?: () => void,\n ) => {\n setOptions(confirmOptions || {});\n setOnConfirmCallback(() => onConfirm);\n setOnCancelCallback(() => onCancel ?? null);\n setIsOpen(true);\n };\n\n const handleConfirm = () => {\n onConfirmCallback?.();\n setIsOpen(false);\n };\n\n const handleCancel = () => {\n onCancelCallback?.();\n setIsOpen(false);\n };\n\n const ConfirmDialogComponent = () => (\n <ConfirmDialog\n open={isOpen}\n onOpenChange={setIsOpen}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n {...options}\n />\n );\n\n return { confirm, ConfirmDialog: ConfirmDialogComponent };\n}\n","import * as AccordionPrimitive from '@radix-ui/react-accordion';\nimport { ChevronDown } from 'lucide-react';\nimport * as React from 'react';\n\nimport { elevatedSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Accordion({\n className,\n slotName = 'accordion',\n ...props\n}: React.ComponentProps<typeof AccordionPrimitive.Root> & SlotNameProps) {\n return (\n <AccordionPrimitive.Root\n className={cn(elevatedSurface, 'px-5 bg-card', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst AccordionItem = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Item>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Item> &\n SlotNameProps\n>(({ className, slotName = 'accordion-item', ...props }, ref) => (\n <AccordionPrimitive.Item\n ref={ref}\n className={cn('border-b border-border last:border-b-0', className)}\n {...props}\n data-slot={slotName}\n />\n));\nAccordionItem.displayName = 'AccordionItem';\n\nconst AccordionTrigger = React.forwardRef<\n React.ElementRef<typeof AccordionPrimitive.Trigger>,\n React.ComponentPropsWithoutRef<typeof AccordionPrimitive.Trigger> &\n SlotNameProps\n>(({ className, children, slotName = 'accordion-trigger', ...props }, ref) => (\n <AccordionPrimitive.Header className=\"flex\">\n <AccordionPrimitive.Trigger\n ref={ref}\n className={cn(\n `text-base py-4 font-medium rounded-xl data-[state=open]:font-semibold flex flex-1 items-center justify-between transition-all [&[data-state=open]>svg]:rotate-180 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\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 SlotNameProps\n>(({ className, children, slotName = 'accordion-content', ...props }, ref) => (\n <AccordionPrimitive.Content\n ref={ref}\n className=\"text-md data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden transition-all\"\n {...props}\n data-slot={slotName}\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, AccordionContent, AccordionItem, AccordionTrigger };\n","'use client';\n\nimport { AlertDialog as AlertDialogPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { modalSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction AlertDialog({\n slotName = 'alert-dialog',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Root> & SlotNameProps) {\n return <AlertDialogPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogTrigger({\n slotName = 'alert-dialog-trigger',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Trigger> & SlotNameProps) {\n return <AlertDialogPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogPortal({\n slotName = 'alert-dialog-portal',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Portal> & SlotNameProps) {\n return <AlertDialogPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction AlertDialogOverlay({\n className,\n slotName = 'alert-dialog-overlay',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Overlay> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogContent({\n className,\n size = 'default',\n slotName = 'alert-dialog-content',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Content> & {\n size?: 'default' | 'sm';\n} & SlotNameProps) {\n return (\n <AlertDialogPortal>\n <AlertDialogOverlay />\n <AlertDialogPrimitive.Content\n data-size={size}\n className={cn(\n `${modalSurface} group/alert-dialog-content gap-4 p-6 md:p-8 data-[size=sm]:max-w-xs data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 data-[size=default]:sm:max-w-lg fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] duration-200`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </AlertDialogPortal>\n );\n}\n\nfunction AlertDialogHeader({\n className,\n slotName = 'alert-dialog-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-1.5 has-data-[slot=alert-dialog-media]:gap-x-6 sm:group-data-[size=default]/alert-dialog-content:place-items-start sm:group-data-[size=default]/alert-dialog-content:text-left sm:group-data-[size=default]/alert-dialog-content:has-data-[slot=alert-dialog-media]:grid-rows-[auto_1fr] grid grid-rows-[auto_1fr] place-items-center text-center has-data-[slot=alert-dialog-media]:grid-rows-[auto_auto_1fr]',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogFooter({\n className,\n slotName = 'alert-dialog-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-2 sm:flex-row sm:justify-end flex flex-col-reverse group-data-[size=sm]/alert-dialog-content:grid group-data-[size=sm]/alert-dialog-content:grid-cols-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogTitle({\n className,\n slotName = 'alert-dialog-title',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Title> & SlotNameProps) {\n return (\n <AlertDialogPrimitive.Title\n className={cn(\n 'text-lg font-semibold sm:group-data-[size=default]/alert-dialog-content:group-has-data-[slot=alert-dialog-media]/alert-dialog-content:col-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogDescription({\n className,\n slotName = 'alert-dialog-description',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Description> &\n SlotNameProps) {\n return (\n <AlertDialogPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogMedia({\n className,\n slotName = 'alert-dialog-media',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n \"mb-2 size-16 sm:group-data-[size=default]/alert-dialog-content:row-span-2 *:[svg:not([class*='size-'])]:size-8 rounded-2xl inline-flex items-center justify-center bg-muted\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction AlertDialogAction({\n className,\n variant = 'default',\n size = 'default',\n slotName = 'alert-dialog-action',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Action> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Action\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nfunction AlertDialogCancel({\n className,\n variant = 'outline',\n size = 'default',\n slotName = 'alert-dialog-cancel',\n ...props\n}: React.ComponentProps<typeof AlertDialogPrimitive.Cancel> &\n Pick<React.ComponentProps<typeof Button>, 'variant' | 'size'> &\n SlotNameProps) {\n return (\n <Button variant={variant} size={size} asChild>\n <AlertDialogPrimitive.Cancel\n className={cn(className)}\n {...props}\n data-slot={slotName}\n />\n </Button>\n );\n}\n\nexport {\n AlertDialog,\n AlertDialogAction,\n AlertDialogCancel,\n AlertDialogContent,\n AlertDialogDescription,\n AlertDialogFooter,\n AlertDialogHeader,\n AlertDialogMedia,\n AlertDialogOverlay,\n AlertDialogPortal,\n AlertDialogTitle,\n AlertDialogTrigger,\n};\n","import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group';\nimport { type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { toggleVariants } from '@/components/ui/toggle';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ToggleGroupContext = React.createContext<\n VariantProps<typeof toggleVariants>\n>({\n size: 'default',\n variant: 'default',\n});\n\nfunction ToggleGroup({\n className,\n variant,\n size,\n children,\n slotName = 'toggle-group',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Root> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n return (\n <ToggleGroupPrimitive.Root\n data-variant={variant}\n data-size={size}\n className={cn(\n 'group/toggle-group data-[variant=outline]:shadow-xs rounded-2xl flex items-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroupContext.Provider value={{ variant, size }}>\n {children}\n </ToggleGroupContext.Provider>\n </ToggleGroupPrimitive.Root>\n );\n}\n\nfunction ToggleGroupItem({\n className,\n children,\n variant,\n size,\n slotName = 'toggle-group-item',\n ...props\n}: React.ComponentProps<typeof ToggleGroupPrimitive.Item> &\n VariantProps<typeof toggleVariants> &\n SlotNameProps) {\n const context = React.useContext(ToggleGroupContext);\n\n return (\n <ToggleGroupPrimitive.Item\n data-variant={context.variant || variant}\n data-size={context.size || size}\n className={cn(\n toggleVariants({\n variant: context.variant || variant,\n size: context.size || size,\n }),\n 'min-w-0 first:rounded-l-2xl last:rounded-r-2xl shrink-0 rounded-none shadow-none focus:z-10 focus-visible:z-10 data-[variant=outline]:border-l-0 data-[variant=outline]:first:border-l',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n </ToggleGroupPrimitive.Item>\n );\n}\n\nexport { ToggleGroup, ToggleGroupItem };\n","import { MonitorIcon, MoonIcon, SunIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport { ToggleGroup, ToggleGroupItem } from '@/components/ui/toggle-group';\nimport { useAppearance, type Appearance } from '@/hooks/use-appearance';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { LucideIcon, SlotNameProps } from '@/types';\n\nexport interface AppearanceToggleLabels {\n groupLabel: string;\n lightLabel: string;\n darkLabel: string;\n systemLabel: string;\n}\n\nexport const appearanceToggleDefaultLabels: AppearanceToggleLabels = {\n groupLabel: 'Appearance',\n lightLabel: 'Light',\n darkLabel: 'Dark',\n systemLabel: 'System',\n};\n\ninterface AppearanceOption {\n value: Appearance;\n icon: LucideIcon;\n label: (labels: AppearanceToggleLabels) => string;\n}\n\nconst OPTIONS: AppearanceOption[] = [\n { value: 'light', icon: SunIcon, label: (labels) => labels.lightLabel },\n { value: 'dark', icon: MoonIcon, label: (labels) => labels.darkLabel },\n {\n value: 'system',\n icon: MonitorIcon,\n label: (labels) => labels.systemLabel,\n },\n];\n\ninterface AppearanceToggleProps extends React.ComponentProps<'div'> {\n variant?: 'segmented' | 'menu';\n labels?: Partial<AppearanceToggleLabels>;\n}\n\nfunction AppearanceToggle({\n className,\n variant = 'segmented',\n labels: labelOverrides,\n slotName = 'appearance-toggle',\n ...props\n}: AppearanceToggleProps & SlotNameProps) {\n const labels = useUiLabels(\n 'appearanceToggle',\n appearanceToggleDefaultLabels,\n labelOverrides,\n );\n const { appearance, updateAppearance } = useAppearance();\n const current = OPTIONS.find((option) => option.value === appearance);\n const CurrentIcon = current?.icon ?? MonitorIcon;\n\n if (variant === 'menu') {\n return (\n <div\n data-variant=\"menu\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n slotName=\"appearance-toggle-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n aria-label={labels.groupLabel}\n >\n <CurrentIcon aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuRadioGroup\n value={appearance}\n onValueChange={(value) =>\n updateAppearance(value as Appearance)\n }\n >\n {OPTIONS.map((option) => (\n <DropdownMenuRadioItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n >\n <option.icon aria-hidden=\"true\" />\n {option.label(labels)}\n </DropdownMenuRadioItem>\n ))}\n </DropdownMenuRadioGroup>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n }\n\n return (\n <div\n data-variant=\"segmented\"\n className={cn('inline-flex', className)}\n {...props}\n data-slot={slotName}\n >\n <ToggleGroup\n type=\"single\"\n size=\"sm\"\n value={appearance}\n aria-label={labels.groupLabel}\n onValueChange={(value) => {\n if (value) {\n updateAppearance(value as Appearance);\n }\n }}\n >\n {OPTIONS.map((option) => (\n <ToggleGroupItem\n key={option.value}\n slotName=\"appearance-toggle-item\"\n value={option.value}\n aria-label={option.label(labels)}\n >\n <option.icon aria-hidden=\"true\" />\n <span>{option.label(labels)}</span>\n </ToggleGroupItem>\n ))}\n </ToggleGroup>\n </div>\n );\n}\n\nexport { AppearanceToggle, type AppearanceToggleProps };\n","import type { SlotNameProps } from '@/types';\nimport { AspectRatio as AspectRatioPrimitive } from 'radix-ui';\n\nfunction AspectRatio({\n slotName = 'aspect-ratio',\n ...props\n}: React.ComponentProps<typeof AspectRatioPrimitive.Root> & SlotNameProps) {\n return <AspectRatioPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nexport { AspectRatio };\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst badgeVariants = cva(\n 'inline-flex items-center justify-center rounded-full border px-2.5 py-1 text-xs font-semibold w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden',\n {\n variants: {\n variant: {\n default:\n 'border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90',\n secondary:\n 'border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90',\n destructive:\n 'border-transparent bg-destructive text-destructive-foreground [a&]:hover:bg-destructive/90 focus-visible:outline-destructive',\n outline:\n 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\nfunction Badge({\n className,\n variant,\n asChild = false,\n slotName = 'badge',\n ...props\n}: React.ComponentProps<'span'> &\n VariantProps<typeof badgeVariants> & {\n asChild?: boolean;\n } & SlotNameProps) {\n const Comp = asChild ? Slot : 'span';\n\n return (\n <Comp\n className={cn(badgeVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { Badge, badgeVariants };\n","import useEmblaCarousel, {\n type UseEmblaCarouselType,\n} from 'embla-carousel-react';\nimport { ArrowLeft, ArrowRight } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport {\n elevatedSurface,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\ntype CarouselApi = UseEmblaCarouselType[1];\ntype UseCarouselParameters = Parameters<typeof useEmblaCarousel>;\ntype CarouselOptions = UseCarouselParameters[0];\ntype CarouselPlugin = UseCarouselParameters[1];\n\ntype CarouselProps = {\n opts?: CarouselOptions;\n plugins?: CarouselPlugin;\n orientation?: 'horizontal' | 'vertical';\n setApi?: (api: CarouselApi) => void;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: ReturnType<typeof useEmblaCarousel>[1];\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n} & CarouselProps;\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n\n if (!context) {\n throw new Error('useCarousel must be used within a <Carousel />');\n }\n\n return context;\n}\n\nfunction Carousel({\n orientation = 'horizontal',\n opts,\n setApi,\n plugins,\n className,\n children,\n slotName = 'carousel',\n ...props\n}: React.ComponentProps<'div'> & CarouselProps & SlotNameProps) {\n const [carouselRef, api] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === 'horizontal' ? 'x' : 'y',\n },\n plugins,\n );\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback((api: CarouselApi) => {\n if (!api) return;\n setCanScrollPrev(api.canScrollPrev());\n setCanScrollNext(api.canScrollNext());\n }, []);\n\n const scrollPrev = React.useCallback(() => {\n api?.scrollPrev();\n }, [api]);\n\n const scrollNext = React.useCallback(() => {\n api?.scrollNext();\n }, [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key !== 'ArrowLeft' && event.key !== 'ArrowRight') {\n return;\n }\n\n event.preventDefault();\n\n if (event.key === 'ArrowLeft') {\n scrollPrev();\n return;\n }\n\n scrollNext();\n },\n [scrollPrev, scrollNext],\n );\n\n React.useEffect(() => {\n if (!api || !setApi) return;\n setApi(api);\n }, [api, setApi]);\n\n React.useEffect(() => {\n if (!api) return;\n onSelect(api);\n api.on('reInit', onSelect);\n api.on('select', onSelect);\n\n return () => {\n api?.off('select', onSelect);\n };\n }, [api, onSelect]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api: api,\n opts,\n orientation:\n orientation ||\n (opts?.axis === 'y' ? 'vertical' : 'horizontal'),\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext,\n }}\n >\n <div\n onKeyDownCapture={handleKeyDown}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 relative bg-card',\n className,\n )}\n role=\"region\"\n aria-roledescription=\"carousel\"\n {...props}\n data-slot={slotName}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n}\n\nfunction CarouselContent({\n className,\n slotName = 'carousel-content',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div\n ref={carouselRef}\n className={cn(nestedRadius, 'overflow-hidden')}\n data-slot={slotName}\n >\n <div\n className={cn(\n 'flex',\n orientation === 'horizontal' ? '-ml-4' : '-mt-4 flex-col',\n className,\n )}\n {...props}\n />\n </div>\n );\n}\n\nfunction CarouselItem({\n className,\n slotName = 'carousel-item',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n const { orientation } = useCarousel();\n\n return (\n <div\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n 'min-w-0 shrink-0 grow-0 basis-full',\n orientation === 'horizontal' ? 'pl-4' : 'pt-4',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction CarouselPrevious({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-previous',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-left-12 top-1/2 -translate-y-1/2'\n : '-top-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n slotName={slotName}\n >\n <ArrowLeft />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n}\n\nfunction CarouselNext({\n className,\n variant = 'outline',\n size = 'icon',\n slotName = 'carousel-next',\n ...props\n}: React.ComponentProps<typeof Button> & SlotNameProps) {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n variant={variant}\n size={size}\n className={cn(\n 'size-9 absolute rounded-full',\n orientation === 'horizontal'\n ? '-right-12 top-1/2 -translate-y-1/2'\n : '-bottom-12 left-1/2 -translate-x-1/2 rotate-90',\n className,\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n slotName={slotName}\n >\n <ArrowRight />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n}\n\nexport {\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselNext,\n CarouselPrevious,\n type CarouselApi,\n};\n","'use client';\n\nimport * as React from 'react';\nimport type { TooltipValueType } from 'recharts';\nimport * as RechartsPrimitive from 'recharts';\n\nimport {\n elevatedSurface,\n menuSurface,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\n// Format: { THEME_NAME: CSS_SELECTOR }\nconst THEMES = { light: '', dark: '.dark' } as const;\n\nconst INITIAL_DIMENSION = { width: 320, height: 200 } as const;\ntype TooltipNameType = number | string;\n\nexport type ChartConfig = Record<\n string,\n {\n label?: React.ReactNode;\n icon?: React.ComponentType;\n } & (\n | { color?: string; theme?: never }\n | { color?: never; theme: Record<keyof typeof THEMES, string> }\n )\n>;\n\ntype ChartContextProps = {\n config: ChartConfig;\n};\n\nconst ChartContext = React.createContext<ChartContextProps | null>(null);\n\nfunction useChart() {\n const context = React.useContext(ChartContext);\n\n if (!context) {\n throw new Error('useChart must be used within a <ChartContainer />');\n }\n\n return context;\n}\n\nfunction ChartContainer({\n id,\n className,\n children,\n config,\n initialDimension = INITIAL_DIMENSION,\n slotName = 'chart',\n ...props\n}: React.ComponentProps<'div'> & {\n config: ChartConfig;\n children: React.ComponentProps<\n typeof RechartsPrimitive.ResponsiveContainer\n >['children'];\n initialDimension?: {\n width: number;\n height: number;\n };\n} & SlotNameProps) {\n const uniqueId = React.useId();\n const chartId = `chart-${id ?? uniqueId.replace(/:/g, '')}`;\n\n return (\n <ChartContext.Provider value={{ config }}>\n <div\n data-chart={chartId}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'p-4 bg-card',\n \"aspect-video text-xs flex justify-center [&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ChartStyle id={chartId} config={config} />\n <RechartsPrimitive.ResponsiveContainer\n initialDimension={initialDimension}\n >\n {children}\n </RechartsPrimitive.ResponsiveContainer>\n </div>\n </ChartContext.Provider>\n );\n}\n\nconst ChartStyle = ({ id, config }: { id: string; config: ChartConfig }) => {\n const colorConfig = Object.entries(config).filter(\n ([, config]) => config.theme ?? config.color,\n );\n\n if (!colorConfig.length) {\n return null;\n }\n\n return (\n <style\n dangerouslySetInnerHTML={{\n __html: Object.entries(THEMES)\n .map(\n ([theme, prefix]) => `\n${prefix} [data-chart=${id}] {\n${colorConfig\n .map(([key, itemConfig]) => {\n const color =\n itemConfig.theme?.[theme as keyof typeof itemConfig.theme] ??\n itemConfig.color;\n return color ? ` --color-${key}: ${color};` : null;\n })\n .join('\\n')}\n}\n`,\n )\n .join('\\n'),\n }}\n />\n );\n};\n\nconst ChartTooltip = RechartsPrimitive.Tooltip;\n\nfunction ChartTooltipContent({\n active,\n payload,\n className,\n indicator = 'dot',\n hideLabel = false,\n hideIndicator = false,\n label,\n labelFormatter,\n labelClassName,\n formatter,\n color,\n nameKey,\n labelKey,\n}: React.ComponentProps<typeof RechartsPrimitive.Tooltip> &\n React.ComponentProps<'div'> & {\n hideLabel?: boolean;\n hideIndicator?: boolean;\n indicator?: 'line' | 'dot' | 'dashed';\n nameKey?: string;\n labelKey?: string;\n } & Omit<\n RechartsPrimitive.DefaultTooltipContentProps<\n TooltipValueType,\n TooltipNameType\n >,\n 'accessibilityLayer'\n >) {\n const { config } = useChart();\n\n const tooltipLabel = React.useMemo(() => {\n if (hideLabel || !payload?.length) {\n return null;\n }\n\n const [item] = payload;\n const key = `${labelKey ?? item?.dataKey ?? item?.name ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(config, item, key);\n const value =\n !labelKey && typeof label === 'string'\n ? (config[label]?.label ?? label)\n : itemConfig?.label;\n\n if (labelFormatter) {\n return (\n <div className={cn('font-medium', labelClassName)}>\n {labelFormatter(value, payload)}\n </div>\n );\n }\n\n if (!value) {\n return null;\n }\n\n return <div className={cn('font-medium', labelClassName)}>{value}</div>;\n }, [\n label,\n labelFormatter,\n payload,\n hideLabel,\n labelClassName,\n config,\n labelKey,\n ]);\n\n if (!active || !payload?.length) {\n return null;\n }\n\n const nestLabel = payload.length === 1 && indicator !== 'dot';\n\n return (\n <div\n className={cn(\n `${menuSurface} gap-1.5 px-3 py-2 text-xs grid min-w-[8rem] items-start`,\n className,\n )}\n >\n {!nestLabel ? tooltipLabel : null}\n <div className=\"gap-1.5 grid\">\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.name ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n const indicatorColor =\n color ?? item.payload?.fill ?? item.color;\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5 flex w-full flex-wrap items-stretch [&>svg]:text-muted-foreground',\n indicator === 'dot' && 'items-center',\n )}\n >\n {formatter &&\n item?.value !== undefined &&\n item.name ? (\n formatter(\n item.value,\n item.name,\n item,\n index,\n item.payload,\n )\n ) : (\n <>\n {itemConfig?.icon ? (\n <itemConfig.icon />\n ) : (\n !hideIndicator && (\n <div\n className={cn(\n 'shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)',\n {\n 'h-2.5 w-2.5':\n indicator ===\n 'dot',\n 'w-1':\n indicator ===\n 'line',\n 'w-0 border-[1.5px] border-dashed bg-transparent':\n indicator ===\n 'dashed',\n 'my-0.5':\n nestLabel &&\n indicator ===\n 'dashed',\n },\n )}\n style={\n {\n '--color-bg':\n indicatorColor,\n '--color-border':\n indicatorColor,\n } as React.CSSProperties\n }\n />\n )\n )}\n <div\n className={cn(\n 'flex flex-1 justify-between leading-none',\n nestLabel\n ? 'items-end'\n : 'items-center',\n )}\n >\n <div className=\"gap-1.5 grid\">\n {nestLabel\n ? tooltipLabel\n : null}\n <span className=\"text-muted-foreground\">\n {itemConfig?.label ??\n item.name}\n </span>\n </div>\n {item.value != null && (\n <span className=\"font-mono font-medium text-foreground tabular-nums\">\n {typeof item.value ===\n 'number'\n ? item.value.toLocaleString()\n : String(item.value)}\n </span>\n )}\n </div>\n </>\n )}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n\nconst ChartLegend = RechartsPrimitive.Legend;\n\nfunction ChartLegendContent({\n className,\n hideIcon = false,\n payload,\n verticalAlign = 'bottom',\n nameKey,\n}: React.ComponentProps<'div'> & {\n hideIcon?: boolean;\n nameKey?: string;\n} & RechartsPrimitive.DefaultLegendContentProps) {\n const { config } = useChart();\n\n if (!payload?.length) {\n return null;\n }\n\n return (\n <div\n className={cn(\n 'gap-4 flex items-center justify-center',\n verticalAlign === 'top' ? 'pb-3' : 'pt-3',\n className,\n )}\n >\n {payload\n .filter((item) => item.type !== 'none')\n .map((item, index) => {\n const key = `${nameKey ?? item.dataKey ?? 'value'}`;\n const itemConfig = getPayloadConfigFromPayload(\n config,\n item,\n key,\n );\n\n return (\n <div\n key={index}\n className={cn(\n 'gap-1.5 [&>svg]:h-3 [&>svg]:w-3 flex items-center [&>svg]:text-muted-foreground',\n )}\n >\n {itemConfig?.icon && !hideIcon ? (\n <itemConfig.icon />\n ) : (\n <div\n className=\"h-2 w-2 shrink-0 rounded-[2px]\"\n style={{\n backgroundColor: item.color,\n }}\n />\n )}\n {itemConfig?.label}\n </div>\n );\n })}\n </div>\n );\n}\n\n// Helper to extract item config from a payload.\nfunction getPayloadConfigFromPayload(\n config: ChartConfig,\n payload: unknown,\n key: string,\n) {\n if (typeof payload !== 'object' || payload === null) {\n return undefined;\n }\n\n const payloadPayload =\n 'payload' in payload &&\n typeof payload.payload === 'object' &&\n payload.payload !== null\n ? payload.payload\n : undefined;\n\n if (\n key in payload &&\n typeof payload[key as keyof typeof payload] === 'string'\n ) {\n const configLabelKey = payload[key as keyof typeof payload] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n if (\n payloadPayload &&\n key in payloadPayload &&\n typeof payloadPayload[key as keyof typeof payloadPayload] === 'string'\n ) {\n const configLabelKey = payloadPayload[\n key as keyof typeof payloadPayload\n ] as string;\n return configLabelKey in config ? config[configLabelKey] : config[key];\n }\n\n return config[key];\n}\n\nexport {\n ChartContainer,\n ChartLegend,\n ChartLegendContent,\n ChartStyle,\n ChartTooltip,\n ChartTooltipContent,\n};\n","import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { CheckIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Checkbox({\n className,\n slotName = 'checkbox',\n ...props\n}: React.ComponentProps<typeof CheckboxPrimitive.Root> & SlotNameProps) {\n return (\n <CheckboxPrimitive.Root\n className={cn(\n `peer size-5 shadow-xs shrink-0 rounded-md border border-border transition-all disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <CheckboxPrimitive.Indicator\n data-slot=\"checkbox-indicator\"\n className=\"flex items-center justify-center text-current transition-none\"\n >\n <CheckIcon className=\"size-3.5\" />\n </CheckboxPrimitive.Indicator>\n </CheckboxPrimitive.Root>\n );\n}\n\nexport { Checkbox };\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { fieldFocus } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, ChevronsUpDown } from 'lucide-react';\nimport { useState } from 'react';\n\nexport interface ComboboxOption {\n value: string;\n label: string;\n}\n\nexport interface ComboboxLabels {\n placeholder: string;\n searchPlaceholder: string;\n emptyText: string;\n}\n\nexport const comboboxDefaultLabels: ComboboxLabels = {\n placeholder: 'Select an option',\n searchPlaceholder: 'Search...',\n emptyText: 'No results.',\n};\n\nexport interface ComboboxProps extends Omit<\n ButtonProps,\n 'value' | 'onChange' | 'children' | 'slotName'\n> {\n value: string;\n options: ComboboxOption[];\n onChange: (value: string) => void;\n placeholder?: ComboboxLabels['placeholder'];\n searchPlaceholder?: ComboboxLabels['searchPlaceholder'];\n emptyText?: ComboboxLabels['emptyText'];\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Combobox({\n value,\n options,\n onChange,\n placeholder,\n searchPlaceholder,\n emptyText,\n disabled = false,\n invalid = false,\n required,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'combobox',\n ...trigger\n}: ComboboxProps & SlotNameProps) {\n const labels = useUiLabels('combobox', comboboxDefaultLabels, {\n placeholder,\n searchPlaceholder,\n emptyText,\n });\n const [open, setOpen] = useState(false);\n const selected = options.find((option) => option.value === value);\n\n return (\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n {...trigger}\n role=\"combobox\"\n aria-expanded={open}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n disabled={disabled}\n className={cn(\n 'h-11 rounded-2xl w-full justify-between border-border bg-muted/40 hover:bg-muted disabled:cursor-not-allowed disabled:opacity-50',\n fieldFocus,\n !selected && 'text-muted-foreground',\n invalid && 'border-destructive ring-destructive',\n className,\n )}\n slotName={slotName}\n >\n {selected ? selected.label : labels.placeholder}\n <ChevronsUpDown className=\"ml-2 h-4 w-4 shrink-0 opacity-50\" />\n </Button>\n </PopoverTrigger>\n <PopoverContent\n className=\"p-0 w-[var(--radix-popover-trigger-width)]\"\n align=\"start\"\n >\n <Command>\n <CommandInput\n placeholder={labels.searchPlaceholder}\n className=\"h-11\"\n />\n <CommandList>\n <CommandEmpty>{labels.emptyText}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => {\n onChange(option.value);\n setOpen(false);\n }}\n className=\"h-11 rounded-xl\"\n >\n <Check\n className={cn(\n 'mr-2 h-4 w-4',\n selected?.value === option.value\n ? 'opacity-100'\n : 'opacity-0',\n )}\n />\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n","'use client';\n\nimport { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { ContextMenu as ContextMenuPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ContextMenu({\n slotName = 'context-menu',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Root> & SlotNameProps) {\n return <ContextMenuPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuTrigger({\n slotName = 'context-menu-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Trigger> & SlotNameProps) {\n return <ContextMenuPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuGroup({\n slotName = 'context-menu-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Group> & SlotNameProps) {\n return <ContextMenuPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuPortal({\n slotName = 'context-menu-portal',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Portal> & SlotNameProps) {\n return <ContextMenuPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSub({\n slotName = 'context-menu-sub',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Sub> & SlotNameProps) {\n return <ContextMenuPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuRadioGroup({\n slotName = 'context-menu-radio-group',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioGroup> &\n SlotNameProps) {\n return <ContextMenuPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction ContextMenuSubTrigger({\n className,\n inset,\n children,\n slotName = 'context-menu-sub-trigger',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n \"px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"ml-auto\" />\n </ContextMenuPrimitive.SubTrigger>\n );\n}\n\nfunction ContextMenuSubContent({\n className,\n slotName = 'context-menu-sub-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.SubContent> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuContent({\n className,\n slotName = 'context-menu-content',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Content> & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Portal>\n <ContextMenuPrimitive.Content\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 max-h-(--radix-context-menu-content-available-height) min-w-[8rem] origin-(--radix-context-menu-content-transform-origin) overflow-x-hidden overflow-y-auto`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </ContextMenuPrimitive.Portal>\n );\n}\n\nfunction ContextMenuItem({\n className,\n inset,\n variant = 'default',\n slotName = 'context-menu-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuCheckboxItem({\n className,\n children,\n checked,\n slotName = 'context-menu-checkbox-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.CheckboxItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.CheckboxItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction ContextMenuRadioItem({\n className,\n children,\n slotName = 'context-menu-radio-item',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.RadioItem> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.RadioItem\n className={cn(\n \"gap-2 py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <ContextMenuPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </ContextMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </ContextMenuPrimitive.RadioItem>\n );\n}\n\nfunction ContextMenuLabel({\n className,\n inset,\n slotName = 'context-menu-label',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <ContextMenuPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8 text-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuSeparator({\n className,\n slotName = 'context-menu-separator',\n ...props\n}: React.ComponentProps<typeof ContextMenuPrimitive.Separator> &\n SlotNameProps) {\n return (\n <ContextMenuPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ContextMenuShortcut({\n className,\n slotName = 'context-menu-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n ContextMenu,\n ContextMenuCheckboxItem,\n ContextMenuContent,\n ContextMenuGroup,\n ContextMenuItem,\n ContextMenuLabel,\n ContextMenuPortal,\n ContextMenuRadioGroup,\n ContextMenuRadioItem,\n ContextMenuSeparator,\n ContextMenuShortcut,\n ContextMenuSub,\n ContextMenuSubContent,\n ContextMenuSubTrigger,\n ContextMenuTrigger,\n};\n","import { Badge } from '@/components/ui/badge';\nimport { Button } from '@/components/ui/button';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandItem,\n CommandList,\n} from '@/components/ui/command';\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Column } from '@tanstack/react-table';\nimport { Check, PlusCircle } from 'lucide-react';\n\nexport interface DataTableFilter {\n columnId: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableServerFilter {\n paramKey: string;\n label: string;\n options: { label: string; value: string }[];\n}\n\nexport interface DataTableFacetedFilterLabels {\n noOptionsLabel: string;\n}\n\nexport const dataTableFacetedFilterDefaultLabels: DataTableFacetedFilterLabels =\n {\n noOptionsLabel: 'No options.',\n };\n\nfunction FilterPopover({\n label,\n options,\n selected,\n onToggle,\n width,\n noOptionsLabel,\n slotName = 'data-table-faceted-filter',\n}: {\n label: string;\n options: { label: string; value: string }[];\n selected: Set<string>;\n onToggle: (value: string) => void;\n width: string;\n noOptionsLabel: DataTableFacetedFilterLabels['noOptionsLabel'];\n} & SlotNameProps) {\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n className=\"h-11 pr-5 rounded-2xl border-dashed border-border\"\n slotName={slotName}\n >\n <PlusCircle className=\"mr-2 size-4\" />\n {label}\n {selected.size > 0 && (\n <Badge\n variant=\"secondary\"\n className=\"ml-2 px-2 rounded-full tabular-nums\"\n >\n {selected.size}\n </Badge>\n )}\n </Button>\n </PopoverTrigger>\n <PopoverContent className={cn('p-0', width)} align=\"start\">\n <Command>\n <CommandList>\n <CommandEmpty>{noOptionsLabel}</CommandEmpty>\n <CommandGroup>\n {options.map((option) => (\n <CommandItem\n key={option.value}\n value={option.label}\n onSelect={() => onToggle(option.value)}\n className=\"h-10 rounded-xl\"\n >\n <div\n className={cn(\n 'mr-2 size-4 flex items-center justify-center rounded-md border border-border',\n selected.has(option.value)\n ? 'bg-primary text-primary-foreground'\n : 'opacity-50',\n )}\n >\n {selected.has(option.value) && (\n <Check className=\"size-3\" />\n )}\n </div>\n {option.label}\n </CommandItem>\n ))}\n </CommandGroup>\n </CommandList>\n </Command>\n </PopoverContent>\n </Popover>\n );\n}\n\nexport function FacetedFilter<TData>({\n column,\n filter,\n noOptionsLabel,\n}: {\n column?: Column<TData, unknown>;\n filter: DataTableFilter;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selected = new Set((column?.getFilterValue() as string[]) ?? []);\n\n const toggle = (value: string) => {\n const next = new Set(selected);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n const arr = Array.from(next);\n column?.setFilterValue(arr.length ? arr : undefined);\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selected}\n onToggle={toggle}\n width=\"w-[220px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n\nexport function ServerFacetedFilter({\n filter,\n selected,\n onChange,\n noOptionsLabel,\n}: {\n filter: DataTableServerFilter;\n selected: string[];\n onChange: (values: string[]) => void;\n noOptionsLabel?: DataTableFacetedFilterLabels['noOptionsLabel'];\n}) {\n const labels = useUiLabels(\n 'dataTableFacetedFilter',\n dataTableFacetedFilterDefaultLabels,\n { noOptionsLabel },\n );\n const selectedSet = new Set(selected);\n\n const toggle = (value: string) => {\n const next = new Set(selectedSet);\n if (next.has(value)) {\n next.delete(value);\n } else {\n next.add(value);\n }\n onChange(Array.from(next));\n };\n\n return (\n <FilterPopover\n label={filter.label}\n options={filter.options}\n selected={selectedSet}\n onToggle={toggle}\n width=\"w-[240px]\"\n noOptionsLabel={labels.noOptionsLabel}\n />\n );\n}\n","import { Button } from '@/components/ui/button';\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@/components/ui/dropdown-menu';\nimport type { IconComponent, SlotNameProps } from '@/types';\nimport { MoreVertical } from 'lucide-react';\n\nexport interface DataTableRowAction<TData> {\n label: string;\n icon?: IconComponent;\n variant?: 'default' | 'destructive';\n onClick: (row: TData) => void;\n}\n\nexport function RowActionsMenu<TData>({\n row,\n actions,\n slotName = 'data-table-row-actions',\n}: {\n row: TData;\n actions: DataTableRowAction<TData>[];\n} & SlotNameProps) {\n return (\n <div\n className=\"flex justify-end\"\n onClick={(event) => event.stopPropagation()}\n data-slot={slotName}\n >\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n className=\"size-8 rounded-xl text-muted-foreground hover:text-foreground\"\n >\n <MoreVertical className=\"size-4\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"rounded-2xl\">\n {actions.map((action) => (\n <DropdownMenuItem\n key={action.label}\n onClick={() => action.onClick(row)}\n className={\n action.variant === 'destructive'\n ? 'rounded-xl text-destructive focus:text-destructive'\n : 'rounded-xl'\n }\n >\n {action.icon && <action.icon className=\"size-4\" />}\n {action.label}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n );\n}\n","import { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport { type LucideIcon, SearchX } from 'lucide-react';\nimport { type ReactNode } from 'react';\n\nexport interface EmptyStateLabels {\n title: string;\n}\n\nexport const emptyStateLabels: EmptyStateLabels = {\n title: 'Nothing to show',\n};\n\nexport interface EmptyStateProps {\n icon?: LucideIcon;\n title?: string;\n description?: string;\n actions?: ReactNode;\n compact?: boolean;\n className?: string;\n}\n\nexport function EmptyState({\n icon: Icon = SearchX,\n title = emptyStateLabels.title,\n description,\n actions,\n compact = false,\n className,\n slotName = 'empty-state',\n}: EmptyStateProps & SlotNameProps) {\n return (\n <div\n data-compact={compact || undefined}\n className={cn(\n 'flex h-full w-full flex-col items-center justify-center text-center',\n compact ? 'gap-2 px-4 py-6' : 'gap-3 px-6 py-12',\n className,\n )}\n data-slot={slotName}\n >\n <span\n data-slot=\"empty-state-icon\"\n className={cn(\n 'flex shrink-0 items-center justify-center rounded-full bg-surface-recessed text-muted-foreground',\n compact ? 'size-8' : 'size-10',\n )}\n >\n <Icon className={compact ? 'size-4' : 'size-5'} />\n </span>\n <div\n className={cn(\n 'max-w-md flex flex-col',\n compact ? 'gap-0.5' : 'gap-1',\n )}\n >\n <p\n data-slot=\"empty-state-title\"\n className={cn(\n 'font-semibold text-foreground',\n compact ? 'text-sm' : 'text-base',\n )}\n >\n {title}\n </p>\n {description && (\n <p\n data-slot=\"empty-state-description\"\n className=\"text-sm font-medium text-muted-foreground\"\n >\n {description}\n </p>\n )}\n </div>\n {actions && (\n <div\n data-slot=\"empty-state-actions\"\n className={cn(\n 'gap-2 flex flex-wrap items-center justify-center',\n compact ? 'mt-1' : 'mt-2',\n )}\n >\n {actions}\n </div>\n )}\n </div>\n );\n}\n","import {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedRadius,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement> & SlotNameProps\n>(({ className, slotName = 'table-container', ...props }, ref) => (\n <div\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative w-full overflow-hidden bg-card',\n )}\n data-slot={slotName}\n >\n <div\n className={cn(\n nestedRadius,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'w-full overflow-x-auto',\n )}\n >\n <table\n ref={ref}\n className={cn('text-sm w-full caption-bottom', className)}\n {...props}\n />\n </div>\n </div>\n));\nTable.displayName = 'Table';\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 'font-medium border-t bg-muted/50 [&>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-11 px-4 text-xs font-medium tracking-wider [&:has([role=checkbox])]:pr-0 text-left align-middle text-muted-foreground uppercase',\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(\n 'p-4 [&:has([role=checkbox])]:pr-0 align-middle',\n className,\n )}\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(\n 'mt-4 px-4 pb-4 text-sm text-muted-foreground',\n className,\n )}\n {...props}\n />\n));\nTableCaption.displayName = 'TableCaption';\n\nexport {\n Table,\n TableBody,\n TableCaption,\n TableCell,\n TableFooter,\n TableHead,\n TableHeader,\n TableRow,\n};\n","import { Button } from '@/components/ui/button';\nimport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n FacetedFilter,\n ServerFacetedFilter,\n} from '@/components/ui/data-table-faceted-filter';\nimport {\n type DataTableRowAction,\n RowActionsMenu,\n} from '@/components/ui/data-table-row-actions';\nimport { EmptyState } from '@/components/ui/empty-state';\nimport { Input } from '@/components/ui/input';\nimport {\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n} from '@/components/ui/select';\nimport {\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n} from '@/components/ui/table';\nimport { elevatedSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport {\n ColumnDef,\n ColumnFiltersState,\n flexRender,\n getCoreRowModel,\n getFilteredRowModel,\n getPaginationRowModel,\n getSortedRowModel,\n type Row,\n SortingState,\n useReactTable,\n} from '@tanstack/react-table';\nimport {\n ArrowUpDown,\n ChevronLeft,\n ChevronRight,\n Plus,\n Search,\n X,\n} from 'lucide-react';\nimport { type ReactNode, useMemo, useState } from 'react';\n\nexport type {\n DataTableFilter,\n DataTableServerFilter,\n} from '@/components/ui/data-table-faceted-filter';\nexport type { DataTableRowAction } from '@/components/ui/data-table-row-actions';\n\nfunction pageRange(current: number, last: number): (number | 'ellipsis')[] {\n if (last <= 7) {\n return Array.from({ length: last }, (_, i) => i + 1);\n }\n const pages: (number | 'ellipsis')[] = [1];\n const left = Math.max(2, current - 1);\n const right = Math.min(last - 1, current + 1);\n if (left > 2) pages.push('ellipsis');\n for (let i = left; i <= right; i++) pages.push(i);\n if (right < last - 1) pages.push('ellipsis');\n pages.push(last);\n return pages;\n}\n\nexport interface DataTableLabels {\n searchPlaceholder: string;\n emptyLabel: string;\n createLabel: string;\n clearFiltersLabel: string;\n paginationLabel: (page: number, pages: number) => string;\n noOptionsLabel: string;\n totalLabel: (total: number) => string;\n}\n\nexport const dataTableDefaultLabels: DataTableLabels = {\n searchPlaceholder: 'Search...',\n emptyLabel: 'No results.',\n createLabel: 'New',\n clearFiltersLabel: 'Clear filters',\n paginationLabel: (page, pages) => `Page ${page} of ${pages}`,\n noOptionsLabel: 'No options.',\n totalLabel: (total) => `${total.toLocaleString('en-US')} records`,\n};\n\ninterface DataTableProps<TData, TValue> {\n columns: ColumnDef<TData, TValue>[];\n data: TData[];\n searchPlaceholder?: DataTableLabels['searchPlaceholder'];\n emptyLabel?: DataTableLabels['emptyLabel'];\n createLabel?: DataTableLabels['createLabel'];\n clearFiltersLabel?: DataTableLabels['clearFiltersLabel'];\n paginationLabel?: DataTableLabels['paginationLabel'];\n noOptionsLabel?: DataTableLabels['noOptionsLabel'];\n totalLabel?: DataTableLabels['totalLabel'];\n searchKey?: string;\n pageSize?: number;\n pageSizeOptions?: number[];\n onPageSizeChange?: (size: number) => void;\n filters?: DataTableFilter[];\n serverFilters?: DataTableServerFilter[];\n filterValues?: Record<string, string[]>;\n onFilterChange?: (paramKey: string, values: string[]) => void;\n canClearFilters?: boolean;\n onClearFilters?: () => void;\n toolbarExtra?: ReactNode;\n toolbarAction?: ReactNode;\n renderRow?: (row: Row<TData>) => ReactNode;\n onRowClick?: (row: TData) => void;\n isRowActive?: (row: TData) => boolean;\n rowActions?: DataTableRowAction<TData>[];\n searchValue?: string;\n onSearchChange?: (value: string) => void;\n manualPagination?: boolean;\n pageCount?: number;\n pageIndex?: number;\n total?: number;\n onPageChange?: (pageIndex: number) => void;\n onCreate?: () => void;\n}\n\nexport function DataTable<TData, TValue>({\n columns,\n data,\n searchKey,\n searchPlaceholder,\n pageSize = 10,\n pageSizeOptions = [10, 25, 50, 100],\n onPageSizeChange,\n filters,\n serverFilters,\n filterValues,\n onFilterChange,\n canClearFilters,\n onClearFilters,\n toolbarExtra,\n toolbarAction,\n emptyLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n renderRow,\n onRowClick,\n isRowActive,\n rowActions,\n searchValue,\n onSearchChange,\n manualPagination = false,\n pageCount,\n pageIndex = 0,\n total,\n onPageChange,\n onCreate,\n createLabel,\n slotName = 'data-table',\n}: DataTableProps<TData, TValue> & SlotNameProps) {\n const labels = useUiLabels('dataTable', dataTableDefaultLabels, {\n searchPlaceholder,\n emptyLabel,\n createLabel,\n clearFiltersLabel,\n paginationLabel,\n noOptionsLabel,\n totalLabel,\n });\n const [sorting, setSorting] = useState<SortingState>([]);\n const [globalFilter, setGlobalFilter] = useState('');\n const [columnFilters, setColumnFilters] = useState<ColumnFiltersState>([]);\n\n const serverSearch = onSearchChange !== undefined;\n\n const tableColumns = useMemo<ColumnDef<TData, TValue>[]>(() => {\n if (!rowActions || rowActions.length === 0) {\n return columns;\n }\n\n return [\n ...columns,\n {\n id: '__actions',\n header: '',\n enableSorting: false,\n cell: ({ row }) => (\n <RowActionsMenu row={row.original} actions={rowActions} />\n ),\n },\n ];\n }, [columns, rowActions]);\n\n const table = useReactTable({\n data,\n columns: tableColumns,\n state: {\n sorting,\n columnFilters,\n ...(serverSearch ? {} : { globalFilter }),\n },\n onSortingChange: setSorting,\n onGlobalFilterChange: serverSearch ? undefined : setGlobalFilter,\n onColumnFiltersChange: setColumnFilters,\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getFilteredRowModel: getFilteredRowModel(),\n ...(manualPagination\n ? { manualPagination: true, pageCount: pageCount ?? -1 }\n : { getPaginationRowModel: getPaginationRowModel() }),\n initialState: { pagination: { pageSize } },\n });\n\n const hasServerSelection =\n serverFilters?.some(\n (filter) => (filterValues?.[filter.paramKey]?.length ?? 0) > 0,\n ) ?? false;\n const hasToolbar =\n searchKey !== undefined ||\n (filters && filters.length > 0) ||\n (serverFilters && serverFilters.length > 0) ||\n onCreate !== undefined ||\n toolbarExtra !== undefined ||\n toolbarAction !== undefined;\n const showFooter = manualPagination || table.getPageCount() > 1;\n const currentPage = manualPagination\n ? pageIndex + 1\n : table.getState().pagination.pageIndex + 1;\n const lastPage = manualPagination\n ? Math.max(1, pageCount ?? 1)\n : table.getPageCount();\n const canPrev = manualPagination\n ? pageIndex > 0\n : table.getCanPreviousPage();\n const canNext = manualPagination\n ? pageIndex + 1 < (pageCount ?? 1)\n : table.getCanNextPage();\n const prev = () =>\n manualPagination ? onPageChange?.(pageIndex - 1) : table.previousPage();\n const next = () =>\n manualPagination ? onPageChange?.(pageIndex + 1) : table.nextPage();\n const goTo = (page: number) =>\n manualPagination\n ? onPageChange?.(page - 1)\n : table.setPageIndex(page - 1);\n\n const activePageSize = manualPagination\n ? pageSize\n : table.getState().pagination.pageSize;\n const changePageSize = (size: number) =>\n onPageSizeChange ? onPageSizeChange(size) : table.setPageSize(size);\n const sizeChoices = [...new Set([...pageSizeOptions, activePageSize])].sort(\n (a, b) => a - b,\n );\n\n return (\n <div\n className={cn(elevatedSurface, 'space-y-4 p-5 bg-card')}\n data-slot={slotName}\n >\n {hasToolbar && (\n <div className=\"gap-2 flex flex-wrap items-center\">\n {searchKey !== undefined && (\n <div className=\"relative min-w-[200px] flex-1\">\n <Search className=\"left-4 size-4 pointer-events-none absolute top-1/2 z-10 -translate-y-1/2 text-muted-foreground\" />\n <Input\n value={\n serverSearch\n ? (searchValue ?? '')\n : globalFilter\n }\n onChange={(e) =>\n serverSearch\n ? onSearchChange?.(e.target.value)\n : setGlobalFilter(e.target.value)\n }\n placeholder={labels.searchPlaceholder}\n className={`h-11 rounded-2xl pl-11 font-medium border-none bg-muted/50 focus:bg-muted`}\n />\n </div>\n )}\n {filters?.map((filter) => (\n <FacetedFilter\n key={filter.columnId}\n column={table.getColumn(filter.columnId)}\n filter={filter}\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {serverFilters?.map((filter) => (\n <ServerFacetedFilter\n key={filter.paramKey}\n filter={filter}\n selected={filterValues?.[filter.paramKey] ?? []}\n onChange={(values) =>\n onFilterChange?.(filter.paramKey, values)\n }\n noOptionsLabel={labels.noOptionsLabel}\n />\n ))}\n {toolbarExtra}\n {(columnFilters.length > 0 ||\n hasServerSelection ||\n (canClearFilters && onClearFilters)) && (\n <Button\n variant=\"ghost\"\n onClick={() => {\n if (columnFilters.length > 0) {\n table.resetColumnFilters();\n }\n if (hasServerSelection || canClearFilters) {\n onClearFilters?.();\n }\n }}\n className=\"h-11 rounded-2xl\"\n >\n {labels.clearFiltersLabel}\n <X className=\"ml-1 size-4\" />\n </Button>\n )}\n {onCreate && (\n <Button\n onClick={onCreate}\n aria-label={labels.createLabel}\n size=\"icon\"\n className=\"size-11 rounded-2xl shrink-0 cursor-pointer bg-primary text-primary-foreground hover:bg-primary/90\"\n >\n <Plus className=\"size-5\" />\n </Button>\n )}\n {toolbarAction && (\n <div className=\"ml-auto\">{toolbarAction}</div>\n )}\n </div>\n )}\n\n <Table>\n <TableHeader>\n {table.getHeaderGroups().map((headerGroup) => (\n <TableRow\n key={headerGroup.id}\n className=\"hover:bg-transparent\"\n >\n {headerGroup.headers.map((header) => (\n <TableHead\n key={header.id}\n className=\"h-11 px-4 font-medium tracking-wider text-[11px] text-muted-foreground uppercase\"\n >\n {header.isPlaceholder ? null : header.column.getCanSort() ? (\n <button\n type=\"button\"\n onClick={header.column.getToggleSortingHandler()}\n className=\"gap-1 inline-flex items-center transition-colors hover:text-foreground\"\n >\n {flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )}\n <ArrowUpDown className=\"size-3 opacity-50\" />\n </button>\n ) : (\n flexRender(\n header.column.columnDef.header,\n header.getContext(),\n )\n )}\n </TableHead>\n ))}\n </TableRow>\n ))}\n </TableHeader>\n <TableBody>\n {table.getRowModel().rows.length ? (\n table.getRowModel().rows.map((row) =>\n renderRow ? (\n renderRow(row)\n ) : (\n <TableRow\n key={row.id}\n onClick={\n onRowClick\n ? () => onRowClick(row.original)\n : undefined\n }\n data-active={\n isRowActive?.(row.original) || undefined\n }\n className={cn(\n 'border-border transition-colors hover:bg-muted/50',\n onRowClick && 'cursor-pointer',\n 'data-[active=true]:bg-primary/5',\n )}\n >\n {row.getVisibleCells().map((cell) => (\n <TableCell\n key={cell.id}\n className=\"px-4 py-3\"\n >\n {flexRender(\n cell.column.columnDef.cell,\n cell.getContext(),\n )}\n </TableCell>\n ))}\n </TableRow>\n ),\n )\n ) : (\n <TableRow>\n <TableCell\n colSpan={tableColumns.length}\n className=\"h-24 p-0\"\n >\n <EmptyState compact title={labels.emptyLabel} />\n </TableCell>\n </TableRow>\n )}\n </TableBody>\n </Table>\n\n {showFooter && (\n <div className=\"gap-3 pt-4 flex flex-wrap items-center justify-between border-t border-border\">\n <div className=\"gap-3 flex items-center\">\n <Select\n value={String(activePageSize)}\n onValueChange={(value) =>\n changePageSize(Number(value))\n }\n >\n <SelectTrigger className=\"h-9 rounded-xl w-[74px]\">\n <span>{activePageSize}</span>\n </SelectTrigger>\n <SelectContent className=\"rounded-xl\">\n {sizeChoices.map((size) => (\n <SelectItem\n key={size}\n value={String(size)}\n className=\"font-medium\"\n >\n {size}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"text-xs font-medium text-muted-foreground\">\n {labels.paginationLabel(currentPage, lastPage)}\n {total !== undefined &&\n ` · ${labels.totalLabel(total)}`}\n </span>\n </div>\n <div className=\"gap-1.5 flex items-center\">\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={prev}\n disabled={!canPrev}\n >\n <ChevronLeft className=\"size-4\" />\n </Button>\n {pageRange(currentPage, lastPage).map((page, index) =>\n page === 'ellipsis' ? (\n <span\n key={`ellipsis-${index}`}\n className=\"px-1 text-sm font-medium text-muted-foreground\"\n >\n …\n </span>\n ) : (\n <Button\n key={page}\n variant=\"outline\"\n onClick={() => goTo(page)}\n className={cn(\n 'h-9 min-w-9 rounded-xl px-2.5 tabular-nums',\n page === currentPage &&\n 'border-primary bg-primary text-primary-foreground hover:bg-primary/90',\n )}\n >\n {page}\n </Button>\n ),\n )}\n <Button\n variant=\"outline\"\n size=\"icon\"\n className=\"size-9 rounded-xl\"\n onClick={next}\n disabled={!canNext}\n >\n <ChevronRight className=\"size-4\" />\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from '@/components/ui/popover';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\nimport * as React from 'react';\n\nexport interface CalendarPopoverProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n trigger: React.ReactNode;\n align?: React.ComponentProps<typeof PopoverContent>['align'];\n className?: string;\n children: React.ReactNode;\n}\n\nexport function CalendarPopover({\n open,\n onOpenChange,\n trigger,\n align = 'start',\n className,\n children,\n slotName = 'calendar-popover',\n}: CalendarPopoverProps & SlotNameProps) {\n return (\n <Popover open={open} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverContent\n className={cn('p-2 w-auto', className)}\n align={align}\n sideOffset={4}\n collisionPadding={16}\n slotName={slotName}\n >\n {children}\n </PopoverContent>\n </Popover>\n );\n}\n","import { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { fieldFocus, fieldSurface, focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarIcon, X } from 'lucide-react';\nimport { useState, type ComponentProps } from 'react';\nimport type { Matcher } from 'react-day-picker';\n\nexport interface DatePickerLabels {\n placeholder: string;\n dateFormat: string;\n clearLabel: string;\n}\n\nexport const datePickerDefaultLabels: DatePickerLabels = {\n placeholder: 'Pick a date',\n dateFormat: 'dd MMM yy',\n clearLabel: 'Clear date',\n};\n\ntype DatePickerTriggerProps = Omit<\n ComponentProps<'button'>,\n 'value' | 'defaultValue' | 'onChange' | 'type' | 'children'\n>;\n\nexport interface DatePickerProps\n extends Partial<DatePickerLabels>, DatePickerTriggerProps {\n value?: Date;\n defaultValue?: Date;\n onChange?: (value: Date | undefined) => void;\n minDate?: Date;\n maxDate?: Date;\n disabledDays?: (date: Date) => boolean;\n clearable?: boolean;\n invalid?: boolean;\n required?: boolean;\n formatDate?: (value: Date) => string;\n}\n\nconst triggerClasses = `h-11 px-4 text-sm font-medium flex w-full cursor-pointer items-center gap-2 text-left transition-all disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${fieldSurface} ${fieldFocus}`;\n\nfunction boundaries(\n minDate?: Date,\n maxDate?: Date,\n disabledDays?: (date: Date) => boolean,\n): Matcher[] {\n const matchers: Matcher[] = [];\n\n if (minDate) {\n matchers.push({ before: minDate });\n }\n\n if (maxDate) {\n matchers.push({ after: maxDate });\n }\n\n if (disabledDays) {\n matchers.push(disabledDays);\n }\n\n return matchers;\n}\n\nexport function DatePicker(props: DatePickerProps & SlotNameProps) {\n const {\n value,\n defaultValue,\n onChange,\n minDate,\n maxDate,\n disabledDays,\n disabled = false,\n clearable = true,\n invalid = false,\n required,\n formatDate,\n placeholder,\n dateFormat,\n clearLabel,\n className,\n 'aria-invalid': ariaInvalid,\n slotName = 'date-picker',\n ...trigger\n } = props;\n\n const labels = useUiLabels('datePicker', datePickerDefaultLabels, {\n placeholder,\n dateFormat,\n clearLabel,\n });\n const [open, setOpen] = useState(false);\n const [ownValue, setOwnValue] = useState<Date | undefined>(defaultValue);\n\n const isControlled = 'value' in props;\n const selected = isControlled ? value : ownValue;\n const showClear = clearable && !disabled && selected !== undefined;\n const label = selected\n ? (formatDate?.(selected) ?? format(selected, labels.dateFormat))\n : labels.placeholder;\n\n function commit(next: Date | undefined): void {\n if (!isControlled) {\n setOwnValue(next);\n }\n\n onChange?.(next);\n }\n\n return (\n <div className={cn('relative w-full', className)} data-slot={slotName}>\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n trigger={\n <button\n {...trigger}\n type=\"button\"\n data-slot=\"date-picker-trigger\"\n disabled={disabled}\n aria-required={required || undefined}\n aria-invalid={ariaInvalid ?? (invalid || undefined)}\n className={cn(triggerClasses, showClear && 'pr-11')}\n >\n <CalendarIcon className=\"size-4 shrink-0 opacity-60\" />\n <span\n className={cn(\n 'truncate',\n !selected && 'text-muted-foreground',\n )}\n >\n {label}\n </span>\n </button>\n }\n >\n <Calendar\n mode=\"single\"\n autoFocus\n selected={selected}\n defaultMonth={selected ?? minDate}\n startMonth={minDate}\n endMonth={maxDate}\n disabled={boundaries(minDate, maxDate, disabledDays)}\n onSelect={(date) => {\n if (!date) {\n return;\n }\n\n commit(date);\n setOpen(false);\n }}\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n {showClear && (\n <button\n type=\"button\"\n data-slot=\"date-picker-clear\"\n aria-label={labels.clearLabel}\n onClick={() => commit(undefined)}\n className={`size-7 rounded-xl right-2 absolute top-1/2 inline-flex -translate-y-1/2 cursor-pointer items-center justify-center text-muted-foreground hover:text-foreground ${focusRing}`}\n >\n <X className=\"size-3.5\" />\n </button>\n )}\n </div>\n );\n}\n","import { Button, type ButtonProps } from '@/components/ui/button';\nimport { Calendar } from '@/components/ui/calendar';\nimport { CalendarPopover } from '@/components/ui/calendar-popover';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { format } from 'date-fns';\nimport { CalendarRange, X } from 'lucide-react';\nimport { useState } from 'react';\nimport { type DateRange } from 'react-day-picker';\n\nfunction parse(value?: string): Date | undefined {\n return value ? new Date(`${value}T00:00:00`) : undefined;\n}\n\nexport interface DateRangeFilterLabels {\n emptyLabel: string;\n dateFormat: string;\n}\n\nexport const dateRangeFilterDefaultLabels: DateRangeFilterLabels = {\n emptyLabel: 'Date range',\n dateFormat: 'dd MMM yy',\n};\n\nexport interface DateRangeFilterProps\n extends\n Partial<DateRangeFilterLabels>,\n Omit<ButtonProps, 'onChange' | 'children' | 'value' | 'slotName'> {\n from?: string;\n to?: string;\n onChange: (range: { from?: string; to?: string }) => void;\n}\n\nexport function DateRangeFilter({\n from,\n to,\n onChange,\n emptyLabel,\n dateFormat,\n className,\n slotName = 'date-range-filter',\n ...trigger\n}: DateRangeFilterProps & SlotNameProps) {\n const labels = useUiLabels(\n 'dateRangeFilter',\n dateRangeFilterDefaultLabels,\n { emptyLabel, dateFormat },\n );\n const [open, setOpen] = useState(false);\n const selected: DateRange | undefined =\n from || to ? { from: parse(from), to: parse(to) } : undefined;\n const label = from\n ? to && to !== from\n ? `${format(parse(from)!, labels.dateFormat)} - ${format(parse(to)!, labels.dateFormat)}`\n : format(parse(from)!, labels.dateFormat)\n : labels.emptyLabel;\n\n return (\n <CalendarPopover\n open={open}\n onOpenChange={setOpen}\n align=\"end\"\n trigger={\n <Button\n variant=\"outline\"\n {...trigger}\n className={cn(\n 'h-11 rounded-2xl cursor-pointer border-dashed border-border',\n className,\n )}\n slotName={slotName}\n >\n <CalendarRange className=\"mr-2 size-4\" />\n {label}\n {(from || to) && (\n <span\n role=\"button\"\n tabIndex={0}\n onClick={(event) => {\n event.stopPropagation();\n onChange({ from: undefined, to: undefined });\n }}\n className=\"ml-2 inline-flex\"\n >\n <X className=\"size-3.5 opacity-60 hover:opacity-100\" />\n </span>\n )}\n </Button>\n }\n >\n <Calendar\n mode=\"range\"\n numberOfMonths={2}\n defaultMonth={parse(from)}\n selected={selected}\n onSelect={(range) =>\n onChange({\n from: range?.from\n ? format(range.from, 'yyyy-MM-dd')\n : undefined,\n to: range?.to\n ? format(range.to, 'yyyy-MM-dd')\n : undefined,\n })\n }\n className=\"rounded-2xl bg-transparent\"\n />\n </CalendarPopover>\n );\n}\n","import * as React from 'react';\nimport { Drawer as DrawerPrimitive } from 'vaul';\n\nimport { floatingSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Drawer({\n slotName = 'drawer',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Root> & SlotNameProps) {\n return <DrawerPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction DrawerTrigger({\n slotName = 'drawer-trigger',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Trigger> & SlotNameProps) {\n return <DrawerPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction DrawerPortal({\n slotName = 'drawer-portal',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Portal> & SlotNameProps) {\n return <DrawerPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction DrawerClose({\n slotName = 'drawer-close',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Close> & SlotNameProps) {\n return <DrawerPrimitive.Close {...props} data-slot={slotName} />;\n}\n\nfunction DrawerOverlay({\n className,\n slotName = 'drawer-overlay',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Overlay> & SlotNameProps) {\n return (\n <DrawerPrimitive.Overlay\n className={cn(\n 'inset-0 bg-black/60 backdrop-blur-sm data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0 fixed z-50',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerContent({\n className,\n children,\n slotName = 'drawer-content',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Content> & SlotNameProps) {\n return (\n <DrawerPortal slotName=\"drawer-portal\">\n <DrawerOverlay />\n <DrawerPrimitive.Content\n className={cn(\n `${floatingSurface} group/drawer-content fixed z-50 flex h-auto flex-col border-border`,\n 'data-[vaul-drawer-direction=top]:inset-x-0 data-[vaul-drawer-direction=top]:top-0 data-[vaul-drawer-direction=top]:mb-24 data-[vaul-drawer-direction=top]:rounded-b-3xl data-[vaul-drawer-direction=top]:max-h-[80vh] data-[vaul-drawer-direction=top]:border-b',\n 'data-[vaul-drawer-direction=bottom]:inset-x-0 data-[vaul-drawer-direction=bottom]:bottom-0 data-[vaul-drawer-direction=bottom]:mt-24 data-[vaul-drawer-direction=bottom]:rounded-t-3xl data-[vaul-drawer-direction=bottom]:max-h-[80vh] data-[vaul-drawer-direction=bottom]:border-t',\n 'data-[vaul-drawer-direction=right]:inset-y-0 data-[vaul-drawer-direction=right]:right-0 data-[vaul-drawer-direction=right]:sm:max-w-sm data-[vaul-drawer-direction=right]:rounded-l-3xl data-[vaul-drawer-direction=right]:w-3/4 data-[vaul-drawer-direction=right]:border-l',\n 'data-[vaul-drawer-direction=left]:inset-y-0 data-[vaul-drawer-direction=left]:left-0 data-[vaul-drawer-direction=left]:sm:max-w-sm data-[vaul-drawer-direction=left]:rounded-r-3xl data-[vaul-drawer-direction=left]:w-3/4 data-[vaul-drawer-direction=left]:border-r',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"mt-4 h-2 mx-auto hidden w-[100px] shrink-0 rounded-full bg-muted group-data-[vaul-drawer-direction=bottom]/drawer-content:block\" />\n {children}\n </DrawerPrimitive.Content>\n </DrawerPortal>\n );\n}\n\nfunction DrawerHeader({\n className,\n slotName = 'drawer-header',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn(\n 'gap-0.5 p-4 md:gap-1.5 md:text-left flex flex-col group-data-[vaul-drawer-direction=bottom]/drawer-content:text-center group-data-[vaul-drawer-direction=top]/drawer-content:text-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerFooter({\n className,\n slotName = 'drawer-footer',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-2 p-4 mt-auto flex flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerTitle({\n className,\n slotName = 'drawer-title',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Title> & SlotNameProps) {\n return (\n <DrawerPrimitive.Title\n className={cn('font-semibold text-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction DrawerDescription({\n className,\n slotName = 'drawer-description',\n ...props\n}: React.ComponentProps<typeof DrawerPrimitive.Description> & SlotNameProps) {\n return (\n <DrawerPrimitive.Description\n className={cn('text-sm text-muted-foreground', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Drawer,\n DrawerClose,\n DrawerContent,\n DrawerDescription,\n DrawerFooter,\n DrawerHeader,\n DrawerOverlay,\n DrawerPortal,\n DrawerTitle,\n DrawerTrigger,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport {\n FieldContext,\n useField,\n type FieldContextValue,\n type FieldOrientation,\n} from '@/components/ui/field-context';\nimport { FieldError } from '@/components/ui/field-error';\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nexport interface FieldLabels {\n requiredLabel: string;\n}\n\ninterface FieldProps extends React.ComponentProps<'div'> {\n orientation?: FieldOrientation;\n error?: string;\n invalid?: boolean;\n required?: boolean;\n}\n\nexport function Field({\n className,\n children,\n id,\n orientation = 'vertical',\n error,\n invalid,\n required = false,\n slotName = 'field',\n ...props\n}: FieldProps & SlotNameProps) {\n const generatedId = React.useId();\n const fieldId = id ?? generatedId;\n const [hasDescription, setHasDescription] = React.useState(false);\n const isInvalid = invalid ?? Boolean(error);\n\n const field = React.useMemo<FieldContextValue>(\n () => ({\n controlId: fieldId,\n descriptionId: `${fieldId}-description`,\n errorId: `${fieldId}-error`,\n orientation,\n invalid: isInvalid,\n required,\n hasDescription,\n setHasDescription,\n }),\n [fieldId, orientation, isInvalid, required, hasDescription],\n );\n\n return (\n <FieldContext.Provider value={field}>\n <div\n data-orientation={orientation}\n data-invalid={isInvalid ? 'true' : undefined}\n className={cn(\n 'group/field',\n orientation === 'horizontal'\n ? 'gap-x-4 gap-y-1 grid grid-cols-[1fr_auto] items-center'\n : 'gap-2 flex flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <FieldError message={error} />\n </div>\n </FieldContext.Provider>\n );\n}\n\nexport function FieldGroup({\n className,\n slotName = 'field-group',\n ...props\n}: React.ComponentProps<'div'> & SlotNameProps) {\n return (\n <div\n className={cn('gap-6 flex w-full flex-col', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\ninterface FieldLabelProps extends React.ComponentProps<typeof Label> {\n requiredLabel?: FieldLabels['requiredLabel'];\n}\n\nexport function FieldLabel({\n className,\n children,\n requiredLabel = 'Required',\n slotName = 'field-label',\n ...props\n}: FieldLabelProps & SlotNameProps) {\n const { controlId, invalid, required } = useField();\n\n return (\n <Label\n htmlFor={controlId}\n className={cn(\n 'gap-1 flex items-center group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-1',\n invalid && 'text-destructive',\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {children}\n {required ? (\n <>\n <span\n data-slot=\"field-required\"\n aria-hidden=\"true\"\n className=\"text-destructive\"\n >\n *\n </span>\n <span className=\"sr-only\">{requiredLabel}</span>\n </>\n ) : null}\n </Label>\n );\n}\n\nexport function FieldDescription({\n className,\n slotName = 'field-description',\n ...props\n}: React.ComponentProps<'p'> & SlotNameProps) {\n const { descriptionId, setHasDescription } = useField();\n\n React.useEffect(() => {\n setHasDescription(true);\n\n return () => setHasDescription(false);\n }, [setHasDescription]);\n\n return (\n <p\n id={descriptionId}\n className={cn(\n 'ml-1 text-xs font-medium text-muted-foreground group-data-[orientation=horizontal]/field:col-start-1 group-data-[orientation=horizontal]/field:row-start-2',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport function FieldControl({\n className,\n ...props\n}: React.ComponentProps<typeof Slot>) {\n const {\n controlId,\n descriptionId,\n errorId,\n invalid,\n required,\n hasDescription,\n } = useField();\n\n const requiredProps: React.InputHTMLAttributes<HTMLElement> = required\n ? { required: true }\n : {};\n\n const describedBy = [\n hasDescription ? descriptionId : null,\n invalid ? errorId : null,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <Slot\n data-field-control=\"true\"\n id={controlId}\n aria-describedby={describedBy || undefined}\n aria-invalid={invalid ? true : undefined}\n {...requiredProps}\n className={cn(\n 'group-data-[orientation=horizontal]/field:col-start-2 group-data-[orientation=horizontal]/field:row-span-2 group-data-[orientation=horizontal]/field:row-start-1 group-data-[orientation=horizontal]/field:justify-self-end',\n className,\n )}\n {...props}\n />\n );\n}\n","'use client';\n\nimport * as LabelPrimitive from '@radix-ui/react-label';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\nimport {\n Controller,\n FormProvider,\n useFormContext,\n type ControllerProps,\n type FieldPath,\n type FieldValues,\n} from 'react-hook-form';\n\nimport { Label } from '@/components/ui/label';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst Form = FormProvider;\n\ntype FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n> = {\n name: TName;\n};\n\nconst FormFieldContext = React.createContext<FormFieldContextValue>(\n {} as FormFieldContextValue,\n);\n\nconst FormField = <\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>({\n ...props\n}: ControllerProps<TFieldValues, TName>) => {\n return (\n <FormFieldContext.Provider value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext.Provider>\n );\n};\n\nconst useFormField = () => {\n const fieldContext = React.useContext(FormFieldContext);\n const itemContext = React.useContext(FormItemContext);\n const { getFieldState, formState } = useFormContext();\n\n const fieldState = getFieldState(fieldContext.name, formState);\n\n if (!fieldContext) {\n throw new Error('useFormField should be used within <FormField>');\n }\n\n const { id } = itemContext;\n\n return {\n id,\n name: fieldContext.name,\n formItemId: `${id}-form-item`,\n formDescriptionId: `${id}-form-item-description`,\n formMessageId: `${id}-form-item-message`,\n ...fieldState,\n };\n};\n\ntype FormItemContextValue = {\n id: string;\n};\n\nconst FormItemContext = React.createContext<FormItemContextValue>(\n {} as FormItemContextValue,\n);\n\nconst FormItem = React.forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement> & SlotNameProps\n>(({ className, slotName = 'form-item', ...props }, ref) => {\n const id = React.useId();\n\n return (\n <FormItemContext.Provider value={{ id }}>\n <div\n ref={ref}\n className={cn('space-y-2', className)}\n {...props}\n data-slot={slotName}\n />\n </FormItemContext.Provider>\n );\n});\nFormItem.displayName = 'FormItem';\n\nconst FormLabel = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>\n>(({ className, ...props }, ref) => {\n const { error, formItemId } = useFormField();\n\n return (\n <Label\n ref={ref}\n className={cn(error && 'text-destructive', className)}\n htmlFor={formItemId}\n {...props}\n />\n );\n});\nFormLabel.displayName = 'FormLabel';\n\nconst FormControl = React.forwardRef<\n React.ElementRef<typeof Slot>,\n React.ComponentPropsWithoutRef<typeof Slot>\n>(({ ...props }, ref) => {\n const { error, formItemId, formDescriptionId, formMessageId } =\n useFormField();\n\n return (\n <Slot\n ref={ref}\n id={formItemId}\n aria-describedby={\n !error\n ? `${formDescriptionId}`\n : `${formDescriptionId} ${formMessageId}`\n }\n aria-invalid={!!error}\n {...props}\n />\n );\n});\nFormControl.displayName = 'FormControl';\n\nconst FormDescription = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, ...props }, ref) => {\n const { formDescriptionId } = useFormField();\n\n return (\n <p\n ref={ref}\n id={formDescriptionId}\n className={cn('text-[0.8rem] text-muted-foreground', className)}\n {...props}\n />\n );\n});\nFormDescription.displayName = 'FormDescription';\n\nconst FormMessage = React.forwardRef<\n HTMLParagraphElement,\n React.HTMLAttributes<HTMLParagraphElement>\n>(({ className, children, ...props }, ref) => {\n const { error, formMessageId } = useFormField();\n const body = error ? String(error?.message ?? '') : children;\n\n if (!body) {\n return null;\n }\n\n return (\n <p\n ref={ref}\n id={formMessageId}\n className={cn(\n 'font-medium text-[0.8rem] text-destructive',\n className,\n )}\n {...props}\n >\n {body}\n </p>\n );\n});\nFormMessage.displayName = 'FormMessage';\n\nexport {\n Form,\n FormControl,\n FormDescription,\n FormField,\n FormItem,\n FormLabel,\n FormMessage,\n useFormField,\n};\n","'use client';\n\nimport { HoverCard as HoverCardPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction HoverCard({\n slotName = 'hover-card',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Root> & SlotNameProps) {\n return <HoverCardPrimitive.Root {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardTrigger({\n slotName = 'hover-card-trigger',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Trigger> & SlotNameProps) {\n return <HoverCardPrimitive.Trigger {...props} data-slot={slotName} />;\n}\n\nfunction HoverCardContent({\n className,\n align = 'center',\n sideOffset = 4,\n slotName = 'hover-card-content',\n ...props\n}: React.ComponentProps<typeof HoverCardPrimitive.Content> & SlotNameProps) {\n return (\n <HoverCardPrimitive.Portal data-slot=\"hover-card-portal\">\n <HoverCardPrimitive.Content\n align={align}\n sideOffset={sideOffset}\n className={cn(\n `${panelSurface} w-64 p-4 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 origin-(--radix-hover-card-content-transform-origin) bg-popover/90 outline-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </HoverCardPrimitive.Portal>\n );\n}\n\nexport { HoverCard, HoverCardContent, HoverCardTrigger };\n","import { CheckIcon, ChevronRightIcon, CircleIcon } from 'lucide-react';\nimport { Menubar as MenubarPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { menuSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Menubar({\n className,\n slotName = 'menubar',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Root> & SlotNameProps) {\n return (\n <MenubarPrimitive.Root\n className={cn(\n 'h-9 gap-1 p-1 shadow-sm backdrop-blur-xl rounded-2xl flex items-center border border-border bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarMenu({\n slotName = 'menubar-menu',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Menu> & SlotNameProps) {\n return <MenubarPrimitive.Menu {...props} data-slot={slotName} />;\n}\n\nfunction MenubarGroup({\n slotName = 'menubar-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Group> & SlotNameProps) {\n return <MenubarPrimitive.Group {...props} data-slot={slotName} />;\n}\n\nfunction MenubarPortal({\n slotName = 'menubar-portal',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Portal> & SlotNameProps) {\n return <MenubarPrimitive.Portal {...props} data-slot={slotName} />;\n}\n\nfunction MenubarRadioGroup({\n slotName = 'menubar-radio-group',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioGroup> & SlotNameProps) {\n return <MenubarPrimitive.RadioGroup {...props} data-slot={slotName} />;\n}\n\nfunction MenubarTrigger({\n className,\n slotName = 'menubar-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Trigger> & SlotNameProps) {\n return (\n <MenubarPrimitive.Trigger\n className={cn(\n 'px-2 py-1 text-sm font-medium rounded-xl flex items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarContent({\n className,\n align = 'start',\n alignOffset = -4,\n sideOffset = 8,\n slotName = 'menubar-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Content> & SlotNameProps) {\n return (\n <MenubarPortal>\n <MenubarPrimitive.Content\n align={align}\n alignOffset={alignOffset}\n sideOffset={sideOffset}\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[12rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </MenubarPortal>\n );\n}\n\nfunction MenubarItem({\n className,\n inset,\n variant = 'default',\n slotName = 'menubar-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Item> & {\n inset?: boolean;\n variant?: 'default' | 'destructive';\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Item\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"gap-2 px-2 py-1.5 text-sm data-[inset]:pl-8 [&_svg:not([class*='size-'])]:size-4 rounded-xl relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground data-[variant=destructive]:*:[svg]:text-destructive!\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarCheckboxItem({\n className,\n children,\n checked,\n slotName = 'menubar-checkbox-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.CheckboxItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.CheckboxItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n checked={checked}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CheckIcon className=\"size-4\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.CheckboxItem>\n );\n}\n\nfunction MenubarRadioItem({\n className,\n children,\n slotName = 'menubar-radio-item',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.RadioItem> & SlotNameProps) {\n return (\n <MenubarPrimitive.RadioItem\n className={cn(\n \"gap-2 rounded-xl py-1.5 pr-2 pl-8 text-sm [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <span className=\"left-2 size-3.5 pointer-events-none absolute flex items-center justify-center\">\n <MenubarPrimitive.ItemIndicator>\n <CircleIcon className=\"size-2 fill-current\" />\n </MenubarPrimitive.ItemIndicator>\n </span>\n {children}\n </MenubarPrimitive.RadioItem>\n );\n}\n\nfunction MenubarLabel({\n className,\n inset,\n slotName = 'menubar-label',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Label> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.Label\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm font-medium data-[inset]:pl-8',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSeparator({\n className,\n slotName = 'menubar-separator',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Separator> & SlotNameProps) {\n return (\n <MenubarPrimitive.Separator\n className={cn('-mx-1 my-1 h-px bg-border', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarShortcut({\n className,\n slotName = 'menubar-shortcut',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n className={cn(\n 'text-xs tracking-widest ml-auto text-muted-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction MenubarSub({\n slotName = 'menubar-sub',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.Sub> & SlotNameProps) {\n return <MenubarPrimitive.Sub {...props} data-slot={slotName} />;\n}\n\nfunction MenubarSubTrigger({\n className,\n inset,\n children,\n slotName = 'menubar-sub-trigger',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubTrigger> & {\n inset?: boolean;\n} & SlotNameProps) {\n return (\n <MenubarPrimitive.SubTrigger\n data-inset={inset}\n className={cn(\n 'px-2 py-1.5 text-sm data-[inset]:pl-8 rounded-xl flex cursor-default items-center outline-none select-none focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n <ChevronRightIcon className=\"h-4 w-4 ml-auto\" />\n </MenubarPrimitive.SubTrigger>\n );\n}\n\nfunction MenubarSubContent({\n className,\n slotName = 'menubar-sub-content',\n ...props\n}: React.ComponentProps<typeof MenubarPrimitive.SubContent> & SlotNameProps) {\n return (\n <MenubarPrimitive.SubContent\n className={cn(\n `${menuSurface} p-1.5 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 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 z-50 min-w-[8rem] origin-(--radix-menubar-content-transform-origin) overflow-hidden`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport {\n Menubar,\n MenubarCheckboxItem,\n MenubarContent,\n MenubarGroup,\n MenubarItem,\n MenubarLabel,\n MenubarMenu,\n MenubarPortal,\n MenubarRadioGroup,\n MenubarRadioItem,\n MenubarSeparator,\n MenubarShortcut,\n MenubarSub,\n MenubarSubContent,\n MenubarSubTrigger,\n MenubarTrigger,\n};\n","import * as NavigationMenuPrimitive from '@radix-ui/react-navigation-menu';\nimport { cva } from 'class-variance-authority';\nimport { ChevronDownIcon } from 'lucide-react';\nimport * as React from 'react';\n\nimport { panelSurface } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction NavigationMenu({\n className,\n children,\n viewport = true,\n slotName = 'navigation-menu',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Root> & {\n viewport?: boolean;\n} & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Root\n data-viewport={viewport}\n className={cn(\n 'group/navigation-menu relative flex max-w-max flex-1 items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {children}\n {viewport && <NavigationMenuViewport />}\n </NavigationMenuPrimitive.Root>\n );\n}\n\nfunction NavigationMenuList({\n className,\n slotName = 'navigation-menu-list',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.List> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.List\n className={cn(\n 'group gap-1 flex flex-1 list-none items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuItem({\n className,\n slotName = 'navigation-menu-item',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Item> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Item\n className={cn('relative', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nconst navigationMenuTriggerStyle = cva(\n 'group inline-flex h-11 w-max items-center justify-center rounded-xl bg-background px-4 text-sm font-medium data-[state=open]:font-semibold hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[active=true]:bg-accent/50 data-[state=open]:bg-accent/50 data-[active=true]:text-accent-foreground transition-[color,box-shadow] outline-none focus-visible:outline-solid focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring',\n);\n\nfunction NavigationMenuTrigger({\n className,\n children,\n slotName = 'navigation-menu-trigger',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Trigger> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Trigger\n className={cn(navigationMenuTriggerStyle(), 'group', className)}\n {...props}\n data-slot={slotName}\n >\n {children}{' '}\n <ChevronDownIcon\n className=\"ml-1 size-3 relative top-[1px] transition duration-300 group-data-[state=open]:rotate-180\"\n aria-hidden=\"true\"\n />\n </NavigationMenuPrimitive.Trigger>\n );\n}\n\nfunction NavigationMenuContent({\n className,\n slotName = 'navigation-menu-content',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Content> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Content\n className={cn(\n 'data-[motion^=from-]:animate-in data-[motion^=to-]:animate-out data-[motion^=from-]:fade-in data-[motion^=to-]:fade-out data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 top-0 left-0 p-2 pr-2.5 md:absolute md:w-auto w-full',\n 'group-data-[viewport=false]/navigation-menu:data-[state=open]:animate-in group-data-[viewport=false]/navigation-menu:data-[state=closed]:animate-out group-data-[viewport=false]/navigation-menu:data-[state=closed]:zoom-out-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-[state=open]:fade-in-0 group-data-[viewport=false]/navigation-menu:data-[state=closed]:fade-out-0 group-data-[viewport=false]/navigation-menu:mt-1.5 group-data-[viewport=false]/navigation-menu:shadow-2xl group-data-[viewport=false]/navigation-menu:backdrop-blur-xl group-data-[viewport=false]/navigation-menu:rounded-2xl group-data-[viewport=false]/navigation-menu:top-full group-data-[viewport=false]/navigation-menu:overflow-hidden group-data-[viewport=false]/navigation-menu:border group-data-[viewport=false]/navigation-menu:border-border group-data-[viewport=false]/navigation-menu:bg-popover/90 group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:duration-200 **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuViewport({\n className,\n slotName = 'navigation-menu-viewport',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Viewport> &\n SlotNameProps) {\n return (\n <div\n className={cn(\n 'left-0 absolute top-full isolate z-50 flex justify-center',\n )}\n >\n <NavigationMenuPrimitive.Viewport\n className={cn(\n `${panelSurface} origin-top-center data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-90 mt-1.5 md:w-[var(--radix-navigation-menu-viewport-width)] relative h-[var(--radix-navigation-menu-viewport-height)] w-full overflow-hidden bg-popover/90`,\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n </div>\n );\n}\n\nfunction NavigationMenuLink({\n className,\n slotName = 'navigation-menu-link',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Link> & SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Link\n className={cn(\n \"gap-1 p-2 text-sm [&_svg:not([class*='size-'])]:size-4 rounded-xl data-[active=true]:font-semibold flex flex-col transition-[color,box-shadow] outline-none hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid data-[active=true]:bg-accent/50 data-[active=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground\",\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction NavigationMenuIndicator({\n className,\n slotName = 'navigation-menu-indicator',\n ...props\n}: React.ComponentProps<typeof NavigationMenuPrimitive.Indicator> &\n SlotNameProps) {\n return (\n <NavigationMenuPrimitive.Indicator\n className={cn(\n 'data-[state=visible]:animate-in data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:fade-in h-1.5 top-full z-[1] flex items-end justify-center overflow-hidden',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <div className=\"h-2 w-2 shadow-md rounded-tl-xs relative top-[60%] rotate-45 bg-border\" />\n </NavigationMenuPrimitive.Indicator>\n );\n}\n\nexport {\n NavigationMenu,\n NavigationMenuContent,\n NavigationMenuIndicator,\n NavigationMenuItem,\n NavigationMenuLink,\n NavigationMenuList,\n NavigationMenuTrigger,\n navigationMenuTriggerStyle,\n NavigationMenuViewport,\n};\n","import {\n ChevronLeftIcon,\n ChevronRightIcon,\n MoreHorizontalIcon,\n} from 'lucide-react';\nimport * as React from 'react';\n\nimport { buttonVariants, type Button } from '@/components/ui/button';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Pagination({\n className,\n slotName = 'pagination',\n ...props\n}: React.ComponentProps<'nav'> & SlotNameProps) {\n return (\n <nav\n role=\"navigation\"\n aria-label=\"pagination\"\n className={cn('mx-auto flex w-full justify-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationContent({\n className,\n slotName = 'pagination-content',\n ...props\n}: React.ComponentProps<'ul'> & SlotNameProps) {\n return (\n <ul\n className={cn('gap-1 flex flex-row items-center', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationItem({\n slotName = 'pagination-item',\n ...props\n}: React.ComponentProps<'li'> & SlotNameProps) {\n return <li {...props} data-slot={slotName} />;\n}\n\ntype PaginationLinkProps = {\n isActive?: boolean;\n} & Pick<React.ComponentProps<typeof Button>, 'size'> &\n React.ComponentProps<'a'>;\n\nfunction PaginationLink({\n className,\n isActive,\n size = 'icon',\n slotName = 'pagination-link',\n ...props\n}: PaginationLinkProps & SlotNameProps) {\n return (\n <a\n aria-current={isActive ? 'page' : undefined}\n data-active={isActive}\n className={cn(\n buttonVariants({\n variant: isActive ? 'outline' : 'ghost',\n size,\n }),\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction PaginationPrevious({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to previous page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pl-2.5', className)}\n {...props}\n >\n <ChevronLeftIcon />\n <span className=\"sm:block hidden\">Previous</span>\n </PaginationLink>\n );\n}\n\nfunction PaginationNext({\n className,\n ...props\n}: React.ComponentProps<typeof PaginationLink>) {\n return (\n <PaginationLink\n aria-label=\"Go to next page\"\n size=\"default\"\n className={cn('gap-1 px-2.5 sm:pr-2.5', className)}\n {...props}\n >\n <span className=\"sm:block hidden\">Next</span>\n <ChevronRightIcon />\n </PaginationLink>\n );\n}\n\nfunction PaginationEllipsis({\n className,\n slotName = 'pagination-ellipsis',\n ...props\n}: React.ComponentProps<'span'> & SlotNameProps) {\n return (\n <span\n aria-hidden\n className={cn(\n 'size-9 rounded-xl flex items-center justify-center',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <MoreHorizontalIcon className=\"size-4\" />\n <span className=\"sr-only\">More pages</span>\n </span>\n );\n}\n\nexport {\n Pagination,\n PaginationContent,\n PaginationEllipsis,\n PaginationItem,\n PaginationLink,\n PaginationNext,\n PaginationPrevious,\n};\n","import { Eye, EyeOff } from 'lucide-react';\nimport * as React from 'react';\n\nimport { Button } from '@/components/ui/button';\nimport { Input } from '@/components/ui/input';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\n\nexport interface PasswordInputLabels {\n showLabel: string;\n hideLabel: string;\n}\n\nexport const passwordInputDefaultLabels: PasswordInputLabels = {\n showLabel: 'Show password',\n hideLabel: 'Hide password',\n};\n\ninterface PasswordInputProps extends Omit<\n React.ComponentProps<typeof Input>,\n 'type'\n> {\n revealable?: boolean;\n showLabel?: PasswordInputLabels['showLabel'];\n hideLabel?: PasswordInputLabels['hideLabel'];\n}\n\nexport function PasswordInput({\n className,\n revealable = true,\n showLabel,\n hideLabel,\n slotName = 'password-input',\n ...props\n}: PasswordInputProps & SlotNameProps) {\n const labels = useUiLabels('passwordInput', passwordInputDefaultLabels, {\n showLabel,\n hideLabel,\n });\n const [visible, setVisible] = React.useState(false);\n\n return (\n <div className=\"relative w-full\" data-slot={slotName}>\n <Input\n type={visible ? 'text' : 'password'}\n className={cn(revealable && 'pr-12', className)}\n {...props}\n />\n {revealable ? (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-sm\"\n slotName=\"password-input-toggle\"\n aria-label={visible ? labels.hideLabel : labels.showLabel}\n aria-pressed={visible}\n disabled={props.disabled}\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => setVisible((current) => !current)}\n className=\"right-1 absolute top-1/2 -translate-y-1/2\"\n >\n {visible ? (\n <EyeOff aria-hidden=\"true\" />\n ) : (\n <Eye aria-hidden=\"true\" />\n )}\n </Button>\n ) : null}\n </div>\n );\n}\n","import type { SlotNameProps } from '@/types';\nimport { useId } from 'react';\n\ninterface PlaceholderPatternProps {\n className?: string;\n}\n\nexport function PlaceholderPattern({\n className,\n slotName = 'placeholder-pattern',\n}: PlaceholderPatternProps & SlotNameProps) {\n const patternId = useId();\n\n return (\n <svg className={className} fill=\"none\" data-slot={slotName}>\n <defs>\n <pattern\n id={patternId}\n x=\"0\"\n y=\"0\"\n width=\"10\"\n height=\"10\"\n patternUnits=\"userSpaceOnUse\"\n >\n <path\n d=\"M-3 13 15-5M-5 5l18-18M-1 21 17 3\"\n stroke=\"currentColor\"\n ></path>\n </pattern>\n </defs>\n <rect\n stroke=\"none\"\n fill={`url(#${patternId})`}\n width=\"100%\"\n height=\"100%\"\n ></rect>\n </svg>\n );\n}\n","'use client';\n\nimport { Progress as ProgressPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Progress({\n className,\n value,\n slotName = 'progress',\n ...props\n}: React.ComponentProps<typeof ProgressPrimitive.Root> & SlotNameProps) {\n return (\n <ProgressPrimitive.Root\n className={cn(\n 'h-2 relative w-full overflow-hidden rounded-full bg-primary/20',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ProgressPrimitive.Indicator\n data-slot=\"progress-indicator\"\n className=\"h-full w-full flex-1 bg-primary transition-all\"\n style={{ transform: `translateX(-${100 - (value || 0)}%)` }}\n />\n </ProgressPrimitive.Root>\n );\n}\n\nexport { Progress };\n","import { CircleIcon } from 'lucide-react';\nimport { RadioGroup as RadioGroupPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction RadioGroup({\n className,\n slotName = 'radio-group',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Root> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Root\n className={cn('gap-3 grid', className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction RadioGroupItem({\n className,\n slotName = 'radio-group-item',\n ...props\n}: React.ComponentProps<typeof RadioGroupPrimitive.Item> & SlotNameProps) {\n return (\n <RadioGroupPrimitive.Item\n className={cn(\n `size-5 shadow-xs aspect-square shrink-0 rounded-full border border-border text-primary transition-[color,box-shadow] disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 ${focusRing}`,\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <RadioGroupPrimitive.Indicator\n data-slot=\"radio-group-indicator\"\n className=\"relative flex items-center justify-center\"\n >\n <CircleIcon className=\"size-2.5 absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 fill-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { RadioGroup, RadioGroupItem };\n","'use client';\n\nimport * as ResizablePrimitive from 'react-resizable-panels';\n\nimport { elevatedSurface, nestedSurfaceReset } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction ResizablePanelGroup({\n className,\n slotName = 'resizable-panel-group',\n ...props\n}: ResizablePrimitive.GroupProps & SlotNameProps) {\n return (\n <ResizablePrimitive.Group\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n 'flex h-full w-full overflow-hidden bg-card aria-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nfunction ResizablePanel({\n slotName = 'resizable-panel',\n ...props\n}: ResizablePrimitive.PanelProps & SlotNameProps) {\n return <ResizablePrimitive.Panel {...props} data-slot={slotName} />;\n}\n\nfunction ResizableHandle({\n withHandle,\n className,\n slotName = 'resizable-handle',\n ...props\n}: ResizablePrimitive.SeparatorProps & {\n withHandle?: boolean;\n} & SlotNameProps) {\n return (\n <ResizablePrimitive.Separator\n className={cn(\n 'after:inset-y-0 after:w-1 aria-[orientation=horizontal]:after:left-0 aria-[orientation=horizontal]:after:h-1 aria-[orientation=horizontal]:after:translate-x-0 relative flex w-px items-center justify-center bg-border after:absolute after:left-1/2 after:-translate-x-1/2 focus-visible:outline-1 focus-visible:outline-offset-0 focus-visible:outline-ring focus-visible:outline-solid aria-[orientation=horizontal]:h-px aria-[orientation=horizontal]:w-full aria-[orientation=horizontal]:after:w-full aria-[orientation=horizontal]:after:-translate-y-1/2 [&[aria-orientation=horizontal]>div]:rotate-90',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n {withHandle && (\n <div className=\"h-8 w-1.5 z-10 rounded-full bg-muted-foreground/40 transition-colors group-hover:bg-muted-foreground/60\" />\n )}\n </ResizablePrimitive.Separator>\n );\n}\n\nexport { ResizableHandle, ResizablePanel, ResizablePanelGroup };\n","import { Spinner } from '@/components/ui/spinner';\nimport { cn } from '@/lib/utils';\nimport { useUiLabels } from '@/locales/context';\nimport type { SlotNameProps } from '@/types';\nimport { Check, TriangleAlert } from 'lucide-react';\nimport * as React from 'react';\n\nexport type SaveStatusState = 'idle' | 'saving' | 'saved' | 'error';\n\nexport interface SaveStatusLabels {\n error: string;\n idle: string;\n saved: string;\n saving: string;\n}\n\nexport const saveStatusLabels: SaveStatusLabels = {\n error: 'Your changes could not be saved',\n idle: 'Changes are saved automatically',\n saved: 'Saved',\n saving: 'Saving',\n};\n\nexport const SAVED_DURATION = 2000;\n\nexport interface SaveStatusProps extends React.ComponentProps<'div'> {\n status: SaveStatusState;\n message?: string;\n showIdle?: boolean;\n savedDuration?: number;\n labels?: Partial<SaveStatusLabels>;\n}\n\nfunction SaveStatus({\n status,\n message,\n showIdle = false,\n savedDuration = SAVED_DURATION,\n labels,\n className,\n slotName = 'save-status',\n ...props\n}: SaveStatusProps & SlotNameProps) {\n const text = useUiLabels('saveStatus', saveStatusLabels, labels);\n const [faded, setFaded] = React.useState(false);\n\n React.useEffect(() => {\n if (status !== 'saved' || savedDuration <= 0) {\n setFaded(false);\n\n return;\n }\n\n setFaded(false);\n const timer = setTimeout(() => setFaded(true), savedDuration);\n\n return () => clearTimeout(timer);\n }, [status, savedDuration, message]);\n\n const hidden = status === 'saved' && faded;\n\n return (\n <div\n {...props}\n data-state={status}\n data-faded={hidden || undefined}\n role=\"status\"\n aria-live=\"polite\"\n aria-hidden={hidden || undefined}\n className={cn(\n 'gap-2 text-xs font-medium min-h-5 flex items-center transition-opacity duration-300',\n hidden ? 'opacity-0' : 'opacity-100',\n className,\n )}\n data-slot={slotName}\n >\n {status === 'idle' && showIdle && (\n <span\n data-slot=\"save-status-idle\"\n className=\"text-muted-foreground\"\n >\n {text.idle}\n </span>\n )}\n\n {status === 'saving' && (\n <span\n data-slot=\"save-status-saving\"\n className=\"gap-2 flex items-center text-muted-foreground\"\n >\n <Spinner size=\"sm\" label=\"\" aria-hidden=\"true\" />\n {text.saving}\n </span>\n )}\n\n {status === 'saved' && (\n <span\n data-slot=\"save-status-saved\"\n className=\"gap-2 flex items-center text-success\"\n >\n <Check aria-hidden=\"true\" className=\"size-3.5\" />\n {text.saved}\n </span>\n )}\n\n {status === 'error' && (\n <span\n data-slot=\"save-status-error\"\n className=\"gap-2 flex items-center text-destructive\"\n >\n <TriangleAlert aria-hidden=\"true\" className=\"size-3.5\" />\n {message ?? text.error}\n </span>\n )}\n </div>\n );\n}\n\nexport { SaveStatus };\n","import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';\nimport * as React from 'react';\n\nimport {\n elevatedSurface,\n nestedEdgeToEdge,\n nestedSurfaceReset,\n} from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst ScrollArea = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof ScrollAreaPrimitive.Root> &\n SlotNameProps\n>(({ className, children, slotName = 'scroll-area', ...props }, ref) => (\n <ScrollAreaPrimitive.Root\n ref={ref}\n className={cn(\n elevatedSurface,\n nestedSurfaceReset,\n nestedEdgeToEdge,\n 'relative overflow-hidden bg-card',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.Viewport className=\"h-full w-full rounded-[inherit]\">\n {children}\n </ScrollAreaPrimitive.Viewport>\n <ScrollBar />\n <ScrollAreaPrimitive.Corner />\n </ScrollAreaPrimitive.Root>\n));\nScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;\n\nconst ScrollBar = React.forwardRef<\n React.ElementRef<typeof ScrollAreaPrimitive.ScrollAreaScrollbar>,\n React.ComponentPropsWithoutRef<\n typeof ScrollAreaPrimitive.ScrollAreaScrollbar\n > &\n SlotNameProps\n>(\n (\n {\n className,\n orientation = 'vertical',\n slotName = 'scroll-area-scrollbar',\n ...props\n },\n ref,\n ) => (\n <ScrollAreaPrimitive.ScrollAreaScrollbar\n ref={ref}\n orientation={orientation}\n className={cn(\n 'flex touch-none transition-colors select-none',\n orientation === 'vertical' &&\n 'w-2.5 h-full border-l border-l-transparent p-[1px]',\n orientation === 'horizontal' &&\n 'h-2.5 flex-col border-t border-t-transparent p-[1px]',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <ScrollAreaPrimitive.ScrollAreaThumb className=\"relative flex-1 rounded-full bg-border\" />\n </ScrollAreaPrimitive.ScrollAreaScrollbar>\n ),\n);\nScrollBar.displayName = ScrollAreaPrimitive.ScrollAreaScrollbar.displayName;\n\nexport { ScrollArea, ScrollBar };\n","import { Slider as SliderPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nfunction Slider({\n className,\n defaultValue,\n value,\n min = 0,\n max = 100,\n slotName = 'slider',\n ...props\n}: React.ComponentProps<typeof SliderPrimitive.Root> & SlotNameProps) {\n const _values = React.useMemo(\n () =>\n Array.isArray(value)\n ? value\n : Array.isArray(defaultValue)\n ? defaultValue\n : [min, max],\n [value, defaultValue, min, max],\n );\n\n return (\n <SliderPrimitive.Root\n defaultValue={defaultValue}\n value={value}\n min={min}\n max={max}\n className={cn(\n 'data-[orientation=vertical]:min-h-44 relative flex w-full touch-none items-center select-none data-[disabled]:opacity-50 data-[orientation=vertical]:h-full data-[orientation=vertical]:w-auto data-[orientation=vertical]:flex-col',\n className,\n )}\n {...props}\n data-slot={slotName}\n >\n <SliderPrimitive.Track\n data-slot=\"slider-track\"\n className={cn(\n 'data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 relative grow overflow-hidden rounded-full bg-muted data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full',\n )}\n >\n <SliderPrimitive.Range\n data-slot=\"slider-range\"\n className={cn(\n 'absolute bg-primary data-[orientation=horizontal]:h-full data-[orientation=vertical]:w-full',\n )}\n />\n </SliderPrimitive.Track>\n {Array.from({ length: _values.length }, (_, index) => (\n <SliderPrimitive.Thumb\n data-slot=\"slider-thumb\"\n key={index}\n className={cn(\n 'size-5 shadow-sm block shrink-0 rounded-full border border-primary bg-background transition-[color,box-shadow] disabled:pointer-events-none disabled:opacity-50',\n focusRing,\n )}\n />\n ))}\n </SliderPrimitive.Root>\n );\n}\n\nexport { Slider };\n","import {\n CircleCheckIcon,\n InfoIcon,\n Loader2Icon,\n OctagonXIcon,\n TriangleAlertIcon,\n} from 'lucide-react';\nimport { useEffect, useState } from 'react';\nimport { Toaster as Sonner, type ToasterProps } from 'sonner';\n\nfunction useDocumentScheme(): 'light' | 'dark' {\n const [scheme, setScheme] = useState<'light' | 'dark'>('light');\n\n useEffect(() => {\n const root = document.documentElement;\n const read = () =>\n setScheme(root.classList.contains('dark') ? 'dark' : 'light');\n\n read();\n\n const observer = new MutationObserver(read);\n observer.observe(root, {\n attributes: true,\n attributeFilter: ['class'],\n });\n\n return () => observer.disconnect();\n }, []);\n\n return scheme;\n}\n\nconst Toaster = ({ theme, ...props }: ToasterProps) => {\n const scheme = useDocumentScheme();\n\n return (\n <Sonner\n theme={theme ?? scheme}\n className=\"toaster group [&_[data-sonner-toast]]:shadow-2xl [&_[data-sonner-toast]]:backdrop-blur-xl\"\n icons={{\n success: <CircleCheckIcon className=\"size-4\" />,\n info: <InfoIcon className=\"size-4\" />,\n warning: <TriangleAlertIcon className=\"size-4\" />,\n error: <OctagonXIcon className=\"size-4\" />,\n loading: <Loader2Icon className=\"size-4 animate-spin\" />,\n }}\n style={\n {\n '--normal-bg':\n 'color-mix(in oklab, var(--popover) 90%, transparent)',\n '--normal-text': 'var(--popover-foreground)',\n '--normal-border': 'var(--border)',\n '--border-radius': '1rem',\n } as React.CSSProperties\n }\n {...props}\n />\n );\n};\n\nexport { Toaster };\n","import { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { Badge } from '@/components/ui/badge';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst statusBadgeVariants = cva('', {\n variants: {\n status: {\n neutral: 'border-border bg-muted text-muted-foreground',\n info: 'border-info/20 bg-info/10 text-info',\n success: 'border-success/20 bg-success/10 text-success',\n warning: 'border-warning/20 bg-warning/10 text-warning',\n danger: 'border-destructive/20 bg-destructive/10 text-destructive',\n },\n },\n defaultVariants: {\n status: 'neutral',\n },\n});\n\ntype StatusBadgeStatus = NonNullable<\n VariantProps<typeof statusBadgeVariants>['status']\n>;\n\ninterface StatusBadgeProps\n extends\n Omit<React.ComponentProps<typeof Badge>, 'variant'>,\n VariantProps<typeof statusBadgeVariants> {\n dot?: boolean;\n}\n\nfunction StatusBadge({\n className,\n status = 'neutral',\n dot = false,\n children,\n slotName = 'status-badge',\n ...props\n}: StatusBadgeProps & SlotNameProps) {\n const resolvedStatus: StatusBadgeStatus = status ?? 'neutral';\n\n return (\n <Badge\n variant=\"outline\"\n data-status={resolvedStatus}\n className={cn(\n statusBadgeVariants({ status: resolvedStatus }),\n className,\n )}\n {...props}\n slotName={slotName}\n >\n {dot && (\n <span\n aria-hidden=\"true\"\n data-slot=\"status-badge-dot\"\n className=\"size-1.5 shrink-0 rounded-full bg-current\"\n />\n )}\n {children}\n </Badge>\n );\n}\n\nexport {\n StatusBadge,\n statusBadgeVariants,\n type StatusBadgeProps,\n type StatusBadgeStatus,\n};\n","import { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport * as React from 'react';\n\nimport { focusRing } from '@/lib/language';\nimport { cn } from '@/lib/utils';\nimport type { SlotNameProps } from '@/types';\n\nconst textLinkVariants = cva(\n `cursor-pointer rounded-xl underline decoration-border underline-offset-4 transition-colors duration-300 ease-out hover:decoration-current ${focusRing}`,\n {\n variants: {\n variant: {\n default: 'text-foreground',\n muted: 'text-muted-foreground hover:text-foreground',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n },\n);\n\ninterface TextLinkProps\n extends React.ComponentProps<'a'>, VariantProps<typeof textLinkVariants> {\n asChild?: boolean;\n}\n\nfunction TextLink({\n className,\n variant = 'default',\n asChild = false,\n slotName = 'text-link',\n ...props\n}: TextLinkProps & SlotNameProps) {\n const Comp = asChild ? Slot : 'a';\n\n return (\n <Comp\n data-variant={variant}\n className={cn(textLinkVariants({ variant }), className)}\n {...props}\n data-slot={slotName}\n />\n );\n}\n\nexport { TextLink, textLinkVariants, type TextLinkProps };\n"]}